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 @@ -333,6 +333,13 @@ export class AutoConsentCMP extends AutoConsentCMPBase {
const result = await this.evaluateRuleStep(rule);
logsConfig.rulesteps && console.log('...rule result', result);
if (!result && !rule.optional) {
this.autoconsent.sendContentMessage({
type: 'autoconsentError',
details: {
msg: 'Rule step failed',
details: `${JSON.stringify(rule)}`,
},
});
return false;
}
}
Expand Down
16 changes: 15 additions & 1 deletion lib/web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export default class AutoConsent {
};
domActions: DomActions;
filtersEngine: FiltersEngine;
protected sendContentMessage: MessageSender;
sendContentMessage: MessageSender;
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe _runRulesSequentially in AutoConsentCMP should throw an error that AutoConsent catches? We're mixing concerns somewhat by having AutoConsentCMP know about the messaging channel.

protected cosmeticStyleSheet: CSSStyleSheet;

constructor(sendContentMessage: MessageSender, config: Partial<Config> = null, declarativeRules: RuleBundle = null) {
Expand Down Expand Up @@ -246,6 +246,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 @@ -447,6 +454,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
10 changes: 9 additions & 1 deletion playwright/runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { ContentScriptMessage } from '../lib/messages';
import { AutoAction } from '../lib/types';

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

Expand Down Expand Up @@ -87,6 +87,14 @@ export function generateTest(url: string, expectedCmp: string, options: TestOpti
enablePrehide: true,
detectRetries: 20,
enableCosmeticRules: true,
logs: {
lifecycle: true,
rulesteps: true,
evals: false,
errors: true,
messages: false,
waits: false,
},
})} })`,
);
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(),
};
cmp = new AutoConsentCMP(
{
Expand Down