Adblock Labs — Browser Blocking Test Suite

Internal test pages for verifying Adblock end-to-end blocking behaviour in Chrome.

Phase 1 pages

Phase 2 pages — network blocking surfaces

Phase 3 pages — cosmetic filtering (ENG-697)

Cosmetic rule tiers and element subtrees (ENG-2306)

One behaviour per page. Each page's expectation, the rule it depends on and Brave's verdict (measured, hypothesis or source-derived) are in cosmetic-fixtures.json. Shipped pages use rules both catalogs ship; staged pages need the rules the release test stages, so opened by hand they show no rule applied.

Blocked-document page (Networking #158)

Hostile cosmetic runtime pages (ENG-1578)

Phase 4 — real-site list

Curated list of real-world sites the release-tests crawler can visit. Served as JSON from /phase4-sites (parsed from pages/phase4-sites.yaml).

Social embeds — Brave $tag= unbreak (ENG-1000 / ENG-1006)

Over-blocking canaries for the social-embed $tag= set shipped in enabledFilterTags. Each loads a provider's canonical widget script and reports loaded=true only if the script actually executed (defined its global) — an empty-200 stub fires onload but can't define the global, so a silent over-block is caught. Requires a build whose proxysettings.json enables the corresponding tag.

HTTPS-filtering toggle canaries (ENG-848)

Pages whose expected verdict flips with the user's filter_encrypted_traffic setting. The runner drives them once with the toggle on and once with it off, asserting opposite verdicts.

Note: these pages are consumed by BlockingRecorder in Adblock.ReleaseTests. They report verdicts via window.__adblockTestResult and are evaluated against CDP Network.loadingFailed events. Manual visits are fine for sanity checks; meaningful pass/fail comes from the automated runner. See Linear ENG-682 (page suite), ENG-697 (cosmetic phase 3), ENG-698 (phase 4 real-site list), ENG-848 (HTTPS toggle canaries).