Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lib/cmps/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,13 @@ export class AutoConsentCMP extends AutoConsentCMPBase {
const result = await this.evaluateRuleStep(rule);
logSteps && console.log('...rule result', result);
if (!result && !rule.optional) {
this.autoconsent.sendContentMessage({
type: 'autoconsentError',
details: {
msg: 'Rule step failed',
details: `${JSON.stringify(rule)}`,
},
});
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Failed detection rules incorrectly reported as errors

The _runRulesSequentially method now sends an autoconsentError message whenever a non-optional rule step returns false. This is problematic because this method is called by detectCmp() and detectPopup() during CMP detection. When checking if a CMP is present, most CMPs' detection rules are expected to fail (since typically only one CMP is on a page). The new code treats these normal detection failures as errors, flooding the message channel with false "errors" for every CMP that isn't present and every failed detection step. This makes test output less helpful, not more, as real errors become buried in noise.


Please tell me if this was useful or not with a 👍 or 👎.

Fix in Cursor Fix in Web

return false;
}
}
Expand Down
14 changes: 14 additions & 0 deletions lib/web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,13 @@ export default class AutoConsent {
}
} catch (e) {
logsConfig.errors && console.warn(`error detecting ${cmp.name}`, e);
this.sendContentMessage({
type: 'autoconsentError',
details: {
msg: 'error detecting CMP',
details: `${cmp.name}: ${e.message}`,
},
});
}
};

Expand Down Expand Up @@ -552,6 +559,13 @@ export default class AutoConsent {
logsConfig.lifecycle && console.log('checking if popup is open...', cmp.name);
const isOpen = await cmp.detectPopup().catch((e) => {
logsConfig.errors && console.warn(`error detecting popup for ${cmp.name}`, e);
this.sendContentMessage({
type: 'autoconsentError',
details: {
msg: 'error detecting popup',
details: `${cmp.name}: ${e.message}`,
},
});
return false;
}); // ignore possible errors in one-time popup detection
if (!isOpen && retries > 0) {
Expand Down
11 changes: 10 additions & 1 deletion playwright/runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { filterCompactRules } from '../lib/encoding';
import compactRules from '../rules/compact-rules.json';

const LOG_MESSAGES: ContentScriptMessage['type'][] = process.env.CI
? []
? ['autoconsentError']
: ['optInResult', 'optOutResult', 'autoconsentDone', 'autoconsentError', 'selfTestResult'];
const LOG_PAGE_LOGS = false;

Expand Down Expand Up @@ -159,6 +159,15 @@ class TestRun {
detectRetries: 20,
enableCosmeticRules: true,
visualTest: true,
logs: {
lifecycle: true,
rulesteps: true,
detectionsteps: false,
waits: false,
evals: false,
errors: true,
messages: false,
},
})}, rules: ${JSON.stringify({ compact: filterCompactRules(compactRules, { url, mainFrame }) })} })`,
);
break;
Expand Down
1 change: 1 addition & 0 deletions tests-wtr/rules/logical-rules.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ describe('AutoConsentCMP', () => {
logs: {},
},
domActions: domActionsMock,
sendContentMessage: sinon.stub(),
// @ts-expect-error - it's a mock!
state: {},
updateState: () => Promise.resolve(),
Expand Down