@cliqz/autoconsent
Version:
This is a library of rules for navigating through common consent popups on the web. These rules can be run in a Firefox webextension, or in a puppeteer orchestrated headless browser. Using these rules, opt-in and opt-out options can be selected automatica
60 lines (51 loc) • 1.88 kB
TypeScript
import { ContentScriptMessage } from "./messages";
type Tab = {
url: string
}
type BrowserTabs = {
get(tabId: number): Promise<Tab>
update(tabId: number, options: any): Promise<void>
}
export type Browser = {
tabs: BrowserTabs,
}
export interface TabActor {
frame?: {
id: number
url: string
}
id: number
url: string
elementExists(selector: string, frameId?: number): Promise<boolean>
clickElement(selector: string, frameId?: number): Promise<boolean>
clickElements(selector: string, frameId?: number): Promise<boolean>
elementsAreVisible(selector: string, check?: 'all' | 'any' | 'none', frameId?: number): Promise<boolean>
getAttribute(selector: string, attribute: string, frameId?: number): Promise<string>
eval(script: string, frameId?: number): Promise<boolean>
waitForElement(selector: string, timeout: number, frameId?: number): Promise<boolean>
waitForThenClick(selector: string, timeout?: number, frameId?: number): Promise<boolean>
hideElements(selectors: string[], frameId?: number): Promise<boolean>
goto(url: string): Promise<void>
wait(ms: number): Promise<true>
// Consent-O-Matic methods
matches(matcherConfig: any): Promise<boolean>
executeAction(actionConfig: any, param?: any): Promise<boolean>
}
export type MessageSender<ResultType = any> = (tabId: number, message: ContentScriptMessage, options?: { frameId: number }) => Promise<ResultType>;
export interface AutoCMP {
name: string
hasSelfTest: boolean
detectCmp(tab: TabActor): Promise<boolean>
detectPopup(tab: TabActor): Promise<boolean>
optOut(tab:TabActor): Promise<boolean>
optIn(tab: TabActor): Promise<boolean>
openCmp(tab: TabActor): Promise<boolean>
test(tab: TabActor): Promise<boolean>
detectFrame(tab: TabActor, frame: { url: string }): boolean
}
type FindResult = {
parent?: any
target?: {
checked: boolean
}
}