diff --git a/lib/cmps/base.ts b/lib/cmps/base.ts index f77aa13c..1cef09ae 100644 --- a/lib/cmps/base.ts +++ b/lib/cmps/base.ts @@ -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; } } diff --git a/lib/web.ts b/lib/web.ts index 552e4d1f..06beb2da 100644 --- a/lib/web.ts +++ b/lib/web.ts @@ -43,7 +43,7 @@ export default class AutoConsent { }; domActions: DomActions; filtersEngine: FiltersEngine; - protected sendContentMessage: MessageSender; + sendContentMessage: MessageSender; protected cosmeticStyleSheet: CSSStyleSheet; constructor(sendContentMessage: MessageSender, config: Partial = null, declarativeRules: RuleBundle = null) { @@ -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}`, + }, + }); } } @@ -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) { diff --git a/playwright/runner.ts b/playwright/runner.ts index e88f6a3d..a9f921d8 100644 --- a/playwright/runner.ts +++ b/playwright/runner.ts @@ -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; @@ -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;