Internal test pages for verifying Adblock end-to-end blocking behaviour in Chrome.
googletagmanager.com/gtag/js. Expected: blocked.google-analytics.com/collect. Expected: blocked.doubleclick.net ad iframe (iframe navigation block). Expected: blocked.googletagmanager.com (CSS request block). Expected: blocked.navigator.sendBeacon POST to google-analytics.com/collect (POST beacon path). Expected: blocked.fetch with mode: 'cors' to google-analytics.com/collect (XHR/fetch path). Expected: blocked.WebSocket upgrade to stats.g.doubleclick.net (WS upgrade block). Expected: blocked.Worker sourced from googletagmanager.com (worker-script fetch). Expected: blocked.<video> source from googleads.g.doubleclick.net (video-element URL block). Expected: blocked./youtubei/v1/player fixture. Expected with the release-test staged list: ad response fields pruned, content fields preserved.preconnect/dns-prefetch to doubleclick.net with verification fetch (preconnect/DNS suppression). Expected: blocked.<meta name="referrer" content="no-referrer">; forces the proxy's ResolveTopLevelUrl heuristic to fall through to the request URL. Expected: blocked (rule has no $domain modifier), with host-level source-URL divergence in source-url-diff.summary.json.<div class="banner-ad">. EasyList's generic-hide rule ##.banner-ad should resolve the element to display: none. Expected: document loads, .banner-ad hidden.<div class="ad-wrapper"> (##.ad-wrapper). Expected: .ad-wrapper hidden.<div class="ad-slot"> (##.ad-slot). Expected: .ad-slot hidden.<div class="ad-unit"> (##.ad-unit). Expected: .ad-unit hidden.<div class="ad-zone"> (##.ad-zone). Expected: .ad-zone hidden.<div id="navAdBanner"> (###navAdBanner, EasyList generic); exercises the ID-selector branch and the Standard-mode first-party un-hide. Expected: hidden first; in Standard, visible on the settled read (≥3 s after load), as in Brave.test-adblock.org) and the label “Ad”. Expected: hidden, and still hidden on the settled read (un-hide over-fire control).<div class="article-body"> not in any filter list. Expected: stays visible ("everything is hidden" over-blocking canary).cosmetic-ad-zone element and rule, served with Content-Encoding: zstd from pre-compressed bytes (Worker route). Expected: .ad-zone hidden; visible here while cosmetic-ad-zone is hidden means the proxy passed the zstd document through unrewritten. Not a Brave-comparison fixture (transport only).:has() rule. Expected under Standard: plain marker hidden; procedural marker and real content visible.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.
##.display_ad plus uBO's generic #@#.display_ad, which adblock-rust drops. Expected: hidden.###AdRectangleBanner, no exception. Expected: hidden.@@://localhost/$generichide matched through the query. Expected: generic class and id targets visible.$generichide leaves the force engine's [id^="div-gpt-ad"]. Expected: id target hidden, class target visible.###AdTopLeader with a div-gpt-ad… child and the label “Ad”. Expected: hidden.###AdvertPanel with a first-party style="…url(…)". Expected: hidden.###AdSkyscraper inserted 2 s after load. Hypothesis: Standard hidden, then visible.###AdBillboard holding an iframe from test-adblock.org (frame page) and the label “Ad”. Expected: hidden.###navAdBanner holding an image from test-adblock.org and a sentence of significant text. Expected: Standard hidden, then visible.###navAdBanner inside a frame from other.test-adblock.com (inner page). Expected: hidden.test-adblock.com##.eng2306-domain-force. Expected: hidden.test-adblock.com##.eng2306-domain-default. Expected: Standard hidden, then visible (Brave source-derived).sub.test-adblock.com) — a force-tier #@# cancels EasyList's ###AdRectangleBanner. Expected: visible.:has(). Expected: Standard visible, Aggressive hidden (source-derived).:has-text() and :upward(). Expected: Standard visible, Aggressive hidden (source-derived).:has-text(). Expected: hidden.set-constant. Expected: marker hidden (source-derived).set-constant. Expected: marker hidden.:style() and :remove(). Expected: styled target hidden, removed target gone.DocumentBlock release test, which stages ||test-adblock.com^$document. A typed navigation gets the proxy's branded block page; after "Continue for five minutes" this page loads, its first-party image loads (a staged $important rule blocks it without the grant) and the third-party pixel stays blocked. Expected with no staged list: page loads, pixel blocked.var W after the injected runtime. Expected: page liveness sentinel executes with no page error.var CC. Expected: page liveness sentinel executes with no page error.:has-text() rule. Expected: procedural marker hidden after runtime/helper initialization.Curated list of real-world sites the release-tests crawler can visit. Served as JSON from /phase4-sites (parsed from pages/phase4-sites.yaml).
$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.
connect.facebook.net/en_US/sdk.js (fb-embeds), expects window.FB. Expected: NOT blocked.platform.twitter.com/widgets.js (twitter-embeds), expects window.twttr. Expected: NOT blocked.platform.linkedin.com/in.js (linked-in-embeds), expects window.IN. Expected: NOT blocked (ENG-1006 prod canary).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.
gtm.js subresource as third-party-script, named to signal it's the HTTPS-on/off canary. Expected: blocked when HTTPS filtering is on; loaded (and served from real upstream) when off..banner-ad (EasyList ##.banner-ad) to exercise generic-hide cosmetic filtering. Expected: hidden when HTTPS filtering is on; visible when off (proxy can't inject styles on a stream it doesn't decrypt).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).