Manifest position 980 · CrUX rank bucket 1000
https://www.boyfriendtv.com
Partial after retries
Mandatory external age verification redirects to Agerify and requires a selfie or government ID. The audit did not submit personal identity data, so listing, video detail/playback, search, account, and post-consent templates remain unexamined.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The normal and prefers-color-scheme: dark screenshots are visually identical, while the computed root color-scheme is "normal" and no preference-driven scheme is declared. F001 low: The gate uses a fixed dark palette instead of responding to the user’s color-scheme preference. |
respect-user-preferencesrespects-reduced-motion | pass | high | The gate reports zero active animations and the reduced-motion-sensitive surface is static. |
respect-user-preferencesrespects-contrast | pass | high | The forced-colors screenshot preserves all gate text, links, boundaries, and primary actions. |
implement-natural-interactionsview-transitions | blocked | high | Route, scroll, and gesture interactions exist behind mandatory external age verification, so representative interaction evidence could not be gathered. |
implement-natural-interactionsscroll-driven-animations | blocked | high | Route, scroll, and gesture interactions exist behind mandatory external age verification, so representative interaction evidence could not be gathered. |
implement-natural-interactionsphysical-gestures | blocked | high | Route, scroll, and gesture interactions exist behind mandatory external age verification, so representative interaction evidence could not be gathered. |
provide-guided-navigationscroll-state-aware-chrome | blocked | high | Navigation chrome and content routes are hidden behind mandatory external age verification; only the gate was observable. |
provide-guided-navigationanchored-positioning | blocked | high | Navigation chrome and content routes are hidden behind mandatory external age verification; only the gate was observable. |
provide-guided-navigationdirects-attention | blocked | high | Navigation chrome and content routes are hidden behind mandatory external age verification; only the gate was observable. |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | high | The blocking surface is the legally purposeful age gate, is visually restrained, and does not layer ads or unrelated interruptions over it. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | DOM evidence shows #cbDocumentViewer and the chat panel as DIV elements with role=dialog; #cbDocumentViewer is not hidden even when visually closed. F002 low: Modal surfaces are implemented as custom divs rather than native dialog/popover primitives. |
maximize-content-reduce-noisereduced-chrome | pass | high | The gate dedicates the viewport to age notice, verification, and login with minimal decorative chrome. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | pass | high | At 360x800, scrollWidth equals clientWidth (360 px), horizontal overflow is 0, and the gate reflows into one column. |
adapt-to-the-form-factorcomponent-level-responsiveness | blocked | high | Representative reusable content components are behind the age-verification wall, preventing container-level comparison. |
adapt-to-the-form-factorinput-modality-aware | issues | high | The visible LOGIN control is an <a> without href. Calling focus() leaves document.activeElement elsewhere and its computed outline is none; Lighthouse also identifies it as a non-crawlable anchor. F003 high: The existing-user Login action is not keyboard focusable. |
support-core-task-successclear-purpose-and-primary-action | pass | high | The first viewport clearly states Adults Only Website and presents Accept & Verify age as the primary action. |
support-core-task-successprimary-flow-completion | blocked | high | Attempting the primary action redirects to Agerify and requires a selfie or government ID; the audit did not submit personal identity data. |
support-core-task-successclear-system-state-and-recovery | blocked | high | Attempting the primary action redirects to Agerify and requires a selfie or government ID; the audit did not submit personal identity data. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP/FCP at 2.65 s and the CDP trace measured LCP/FCP at 2.95 s; the good LCP threshold is 2.5 s. F004 medium: Even the lightweight age gate misses the good LCP threshold. |
be-fast-and-stablevisual-stability | pass | high | The mobile layout observer recorded CLS 0 with no layout-shift entries; Lighthouse CLS was effectively 0. |
be-fast-and-stableefficient-main-thread | pass | high | The trace recorded no long tasks and 0 ms TBT; Lighthouse TBT was 3 ms. |
be-fast-and-stableefficient-resource-delivery | issues | high | Lighthouse reports the 93 KiB black-blue.min.css as render-blocking with an estimated 1,180 ms saving; the HAR also records the stylesheet as the largest transferred resource. F005 medium: A large site-wide stylesheet delays rendering of the age gate. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimates 89 KiB unused CSS and 66 KiB unused JavaScript, including about 75% of scripts.min.js and 64% of jQuery. F006 medium: The gate downloads substantial code that it does not use. |
be-inclusivenames-roles-labels | issues | high | The Login and Manage Cookies controls are <a> elements without href or an explicit button role; direct DOM inspection shows Login cannot receive programmatic focus. F007 high: Visible onclick-only anchors are not exposed with the semantics of their intended controls. |
be-inclusivesufficient-contrast | pass | high | Lighthouse accessibility scored 1.0 and the forced-colors capture retains readable text and control boundaries. |
be-inclusivestructure-and-focus | issues | high | A direct focus probe on .cb-age-login a reports isFocused=false and outline "none" because the anchor has no href. F008 high: Keyboard users cannot reach the visible Login action on the blocking gate. |
be-inclusivelegible-text | pass | high | Desktop and mobile captures show unclipped copy, comfortable line spacing, and readable wrapping on the gate. |
be-inclusivezoom-reflow-targets-and-media | blocked | high | Videos and other core media are behind mandatory external age verification, so zoom/reflow and caption equivalence could not be judged for them. |
follow-best-practicesno-console-errors | pass | high | Lighthouse did not report browser console errors or uncaught exceptions during the gate load. |
follow-best-practicessound-document-and-assets | blocked | high | The gate prevents inspection of document/assets across the actual listing, detail, search, and account templates. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse reports three deprecation warnings, including Shared Storage, persistent StorageType, and Protected Audience API usage in the Cloudflare challenge script. F009 low: The loaded Cloudflare challenge script triggers deprecated API warnings. |
be-discoverabletitle-and-description | pass | high | The server-rendered page includes a descriptive title and meta description, both present in raw HTML. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | robots.txt returns age-gate HTML rather than robots directives, producing 13 Lighthouse parse errors; Lighthouse also flags Login and Manage Cookies as non-crawlable anchors. F010 medium: robots.txt is invalid and action-like anchors lack href values. |
be-discoverablecanonical-and-indexing-signals | issues | high | The page declares index,follow and hreflang variants but has no canonical link; /robots.txt returns gate prose and /sitemap.xml produced a Cloudflare challenge/noindex response in direct retrieval. F011 medium: Indexing signals are inconsistent at the public entry point. |
be-discoverablestructured-and-shareable-metadata | issues | high | The DOM probe found zero JSON-LD blocks and zero Open Graph tags, despite the page being presented as an indexable public video service. F012 low: The public homepage exposes no structured data or social preview metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | Header evidence records Content-Security-Policy: frame-ancestors 'self' with no default-src, script-src, object-src, or base-uri directives; the page contains many inline scripts. F013 medium: The Content-Security-Policy only controls framing and does not mitigate script injection. |
be-private-and-securedata-minimisation-and-third-parties | blocked | high | Authentication and the external verifier require credentials or biometric/identity data; those flows were not entered. |
be-private-and-securein-context-permissions-and-modern-auth | blocked | high | Authentication and the external verifier require credentials or biometric/identity data; those flows were not entered. |
be-private-and-securedefensive-browser-policies | issues | high | The response uses Referrer-Policy: no-referrer-when-downgrade rather than a privacy-preserving strict-origin policy; the mandatory flow navigates to an external age-verification provider. F014 medium: The referrer policy permits full HTTPS URLs to be sent to other HTTPS origins. |
be-resilientprogressive-enhancement | issues | high | Raw HTML includes a noscript warning that the site cannot be used without JavaScript, while the visible verification button relies on onclick=startAgeVerification(); the crawler view can render gate copy but cannot enter. F015 high: The mandatory age-verification flow cannot proceed without JavaScript. |
be-resilientresilient-runtime-behaviour | blocked | high | Runtime and network-failure behavior of the core site cannot be exercised before completing external age verification. |
be-resilientoffline-and-installable | issues | high | The page links /manifest.json and declares mobile-web-app-capable, but the HAR records two 403 responses for the manifest and no controlling service worker is present. F016 medium: The site advertises an app manifest that is not reliably retrievable. |
be-resilientnetwork-and-http-failure-states | blocked | high | Runtime and network-failure behavior of the core site cannot be exercised before completing external age verification. |
be-internationalisedlang-dir-and-logical-properties | blocked | high | Localized content templates and locale-sensitive data remain behind mandatory external age verification. |
be-internationalisedlocale-aware-data | blocked | high | Localized content templates and locale-sensitive data remain behind mandatory external age verification. |
be-internationalisedtime-zone-correctness | blocked | high | Localized content templates and locale-sensitive data remain behind mandatory external age verification. |
be-trustworthyno-dark-patterns | blocked | high | Error, autofill, commercial, and account flows require external verification or credentials and could not be exercised safely. |
be-trustworthyhumane-error-handling | blocked | high | Error, autofill, commercial, and account flows require external verification or credentials and could not be exercised safely. |
be-trustworthytrustworthy-input-assistance | blocked | high | Error, autofill, commercial, and account flows require external verification or credentials and could not be exercised safely. |
be-trustworthysafe-commercial-and-account-flows | blocked | high | Error, autofill, commercial, and account flows require external verification or credentials and could not be exercised safely. |
be-sustainableoptimised-assets | blocked | high | Image/video delivery and media budgets cannot be observed before completing external age verification. |
be-sustainableno-wasteful-work | issues | high | The gate transfers 262 KiB across 14 requests while Lighthouse finds 89 KiB unused CSS and 66 KiB unused JavaScript; jQuery and the full site bundle load before access is granted. F017 medium: The pre-verification gate performs avoidable network and code work. |
be-sustainablethird-party-and-media-budget | blocked | high | Image/video delivery and media budgets cannot be observed before completing external age verification. |
be-agent-readystructured-agent-capabilities | not-applicable | high | This age-gated content site exposes no agent-facing transactional capability, and the emerging WebMCP check is contextual rather than an obligation. |
be-agent-readyon-device-inference | not-applicable | high | No on-device inference use case is necessary to complete the public age-gate task; absence is a contextual non-issue. |
be-memory-efficientno-leak-under-repeated-interaction | blocked | high | A representative core interaction cannot be repeated without completing external age verification; gate-only memory would not establish the site footprint. |
be-memory-efficientbounded-footprint | blocked | high | A representative core interaction cannot be repeated without completing external age verification; gate-only memory would not establish the site footprint. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | blocked | high | A representative core interaction cannot be repeated without completing external age verification; gate-only memory would not establish the site footprint. |
Provenance
Canonical report: results/atomic/reports/0980-www_boyfriendtv_com.json
Report SHA-256: 6812a670afdb3e25cfb416f7b1bd73c25ca7611c1c8e8ff2a69675e0c77b6da1
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_boyfriendtv_com/2026-07-28T13-16-53-500Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_boyfriendtv_com/2026-07-28T13-16-53-500Z
Catalog SHA-256: sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7
Raw screenshots, HARs, traces, heaps, and other browser artifacts are retained at the local evidence root and intentionally are not committed. Artifact paths in the canonical report are relative to that root.