{
  "url": "https://www.bfmtv.com",
  "auditedAt": "2026-07-21T10:26:43.711Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete representative audit of five page archetypes plus a 404 recovery state.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered multi-page site",
    "notes": "French national news publication with homepage, section listing, live article, live TV and newsletter templates."
  },
  "evidenceUsed": [
    "screenshot",
    "transition-video",
    "layout-metrics",
    "dom",
    "evaluate-probe",
    "trace",
    "har",
    "lighthouse",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "discoverability",
    "heap-summary",
    "HTTP fetch"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "same-document-transitions",
    "scrollytelling",
    "shrinking-header-on-scroll",
    "position-aware-tooltips",
    "navigation-drawer",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "fluid-scaling",
    "size-aware-styling",
    "forms",
    "identify-inp-causes",
    "break-up-long-tasks",
    "optimize-image-priority",
    "defer-rendering-heavy-content",
    "css",
    "html",
    "security",
    "privacy",
    "stabilize-reactive-state",
    "translator",
    "coordinate-global-events",
    "validate-input-after-interaction",
    "deliver-optimized-decorative-images",
    "webmcp",
    "manage-recurring-intervals",
    "accessible-error-announcement",
    "identify-heavy-scripts",
    "deprioritize-background-fetches"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "404 mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/article-layout-mobile.json",
      "caption": "article layout mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/article-metadata.json",
      "caption": "article metadata",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-mobile.png",
      "caption": "article mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F14",
        "F15"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-article-crawler.png",
      "caption": "discoverability article crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-article-rendered.png",
      "caption": "discoverability article rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability-article.json",
      "caption": "discoverability article",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-crawler.png",
      "caption": "discoverability home crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-rendered.png",
      "caption": "discoverability home rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability-home.json",
      "caption": "discoverability home",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-menu-post.heapsnapshot",
      "caption": "heap menu post",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-high-contrast.png",
      "caption": "home high contrast",
      "condition": "prefers-contrast: more",
      "findingIds": [
        "F08"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "home layout mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F06",
        "F15",
        "F18"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F06",
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F11",
        "F17"
      ]
    },
    {
      "type": "other",
      "path": "evidence/indexing-signals.json",
      "caption": "indexing signals",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-failures.json",
      "caption": "lighthouse failures",
      "findingIds": [
        "F06",
        "F07",
        "F08",
        "F10",
        "F11",
        "F12",
        "F13",
        "F17"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home-summary.json",
      "caption": "lighthouse home summary",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": [
        "F05",
        "F07",
        "F08",
        "F12"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/listing-mobile.png",
      "caption": "listing mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/live-mobile.png",
      "caption": "live mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/memory-metrics.json",
      "caption": "memory metrics",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/menu-open-end.png",
      "caption": "menu open end",
      "findingIds": [
        "F02",
        "F10"
      ]
    },
    {
      "type": "video",
      "path": "evidence/menu-open.mp4",
      "caption": "menu open",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/menu-semantics.json",
      "caption": "menu semantics",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/newsletter-flow.json",
      "caption": "newsletter flow",
      "findingIds": [
        "F04",
        "F09",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/newsletter-form-probe.json",
      "caption": "newsletter form probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/newsletter-validation.json",
      "caption": "newsletter validation",
      "findingIds": [
        "F04",
        "F09"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/newsletters-mobile.png",
      "caption": "newsletters mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/platform-probe-home.json",
      "caption": "platform probe home",
      "findingIds": [
        "F01",
        "F02",
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion.json",
      "caption": "reduced motion",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/token-context.json",
      "caption": "token context",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F15"
      ]
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Dark and normal screenshots are identical and body remains white under the emulated dark preference.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() returned no active animations, so no non-essential motion remained.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The prefers-contrast capture was unchanged and Lighthouse found 40 contrast failures, so essential text does not consistently survive stronger contrast needs.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Menu video shows an immediate swap and the CSS probe found no View Transition usage.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "CSS probe found no scroll timelines and the inspected templates use static scrolling rather than JS-driven parallax or reveal motion.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The mobile horizontal topic/channel strips use native scrolling and CSS scroll-snap; no custom pointermove gesture layer was observed.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The compact mobile header remains legible while long pages scroll; no brittle JS scroll-toggle or obstructive chrome was observed.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "No tooltip or edge-sensitive anchored popover is used on the representative paths; the full-screen navigation panel does not require anchor positioning.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Article breadcrumbs, active topic colour, live status, and clear heading hierarchy on article/listing pages orient the reader.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Fresh-profile captures across five templates show no modal, consent wall, or interstitial obscuring content on load.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "No modal flow was encountered; the navigation is exposed as a labelled button and navigation landmark rather than an unlabeled overlay div.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Desktop screenshot shows a large empty ad/loading reservation before the lead editorial content.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "At 360×800 both home and article layouts report scrollWidth=clientWidth=360 and horizontalOverflowPx=0; viewport meta is present.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Desktop/mobile captures show lead cards, navigation, article, live, and newsletter components recompose for their available width without clipping.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The first keyboard focus target is the labelled menu button; controls remain available without hover and mobile controls are visibly touch-sized.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The homepage foregrounds the lead story; article, live, and newsletter pages each expose a descriptive H1 and obvious next action.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The newsletter journey progresses from selecting a publication to a single email-and-consent form without an account wall or detour.",
      "pathIds": [
        "newsletters"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Invalid newsletter submission provides only native validity with no connected or announced recovery state.",
      "pathIds": [
        "newsletters"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Lighthouse mobile LCP is 17.7 s and FCP 3.7 s, outside good thresholds.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Layout observers measured CLS 0.00031 on home and 0.00045 on article with no visible jump in captured states.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Trace TBT was 10.32 ms with one 60.32 ms long task; Lighthouse TBT was 120 ms, both within the good responsiveness proxy range.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "HAR/Lighthouse show 255 requests, 14.03 MB transfer, cache waste and a 2.23 s render-blocking opportunity.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Lighthouse estimates 656 KiB unused JS, 58 KiB unused CSS and 17 KiB legacy JS savings.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The primary newsletter email input has no label or aria-label and relies on placeholder text.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Lighthouse identifies 40 foreground/background contrast failures.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Homepage H1 is empty, heading order fails, and the opened menu leaves aria-expanded=false.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Mobile screenshots show readable body sizing, wrapping, spacing, and no clipping across homepage, article, live and newsletter templates.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The 360 px reflow has no horizontal page overflow, viewport permits scaling, and key controls remain touch-sized; no prerecorded speech media requiring captions was assessed in the selected flow.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Lighthouse errors-in-console audit passed with zero items.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Doctype/UTF-8 pass, but image audit finds 8 unsized images and Lighthouse lists 14 affected elements.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Lighthouse reports one deprecated API warning and three missing first-party source maps.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Home and article have descriptive unique titles and meta descriptions in both raw and rendered HTML.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Viewport and robots pass, but Lighthouse reports 12 non-crawlable anchors.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Pages return 200, expose self-canonicals and index/follow; robots.txt returns 200 and declares three working sitemap locations.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Article exposes LiveBlogPosting and BreadcrumbList JSON-LD plus complete Open Graph title, description, image and dimensions matching visible content.",
      "pathIds": [
        "article"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "HTTPS/HSTS/nosniff/frame protection pass, but CSP and Permissions-Policy are missing and three cookies lack Secure.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Network evidence shows 21 third-party origins, 188 third-party requests and long-lived analytics identifiers.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "No geolocation/notification prompt appeared on load, and no authentication path is part of this public news site’s representative core flow.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "HSTS, X-Frame-Options and Referrer-Policy are present, but CSP and Permissions-Policy are absent.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Discoverability comparison reports 100% content visibility without JavaScript for home and article; neither is a JS shell.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Menu, horizontal strips, live layout and newsletter state rendered without clipping or broken shells on the narrow viewport.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon-based applicability judgement",
      "evidence": "BFM is a public, continuously updated news publication rather than an install-oriented web app; offline/installability was judged out of scope while progressive enhancement was still tested.",
      "reason": "BFM is a public, continuously updated news publication rather than an install-oriented web app; offline/installability was judged out of scope while progressive enhancement was still tested."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "A nonexistent URL returns a genuine HTTP 404 and a clear French “Page introuvable” state with site navigation and recovery links.",
      "pathIds": [
        "error-404"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "HTML declares lang=fr; DOM/CSS probe found logical properties, and the left-to-right layout matches French content.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Rendered publication strings are idiomatic French and machine-readable <time datetime> values retain full ISO timestamps.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Article dateTime values include an explicit +02:00 offset while visible live-update times are consistently localized for the French audience.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "The newsletter selection and optional marketing/partner consent checkboxes are clear, unselected by default, and include unsubscribe/data-rights text.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Empty-email submission has no aria-invalid, associated error, live announcement, or focus recovery.",
      "pathIds": [
        "newsletters"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Newsletter email input omits autocomplete=email.",
      "pathIds": [
        "newsletters"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon-based applicability judgement",
      "evidence": "No checkout, subscription payment, authentication, or account-management flow is present in the selected public-news and newsletter paths.",
      "reason": "No checkout, subscription payment, authentication, or account-management flow is present in the selected public-news and newsletter paths."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Image audit found legacy formats, missing srcset/lazy loading, oversized assets and 479 KiB estimated savings.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Homepage starts fetching repeated live-stream segments without an explicit play interaction, dominating the load.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Third-party/media bytes reach 12.16 MB of a 14.03 MB homepage load, disproportionate for a news landing page.",
      "pathIds": [
        "home",
        "listing",
        "article",
        "live",
        "newsletters"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon-based applicability judgement",
      "evidence": "The publisher explicitly disallows mainstream AI assistants and crawlers in robots.txt, so it does not intend to expose agent-facing tools; public browser navigation remains conventional.",
      "reason": "The publisher explicitly disallows mainstream AI assistants and crawlers in robots.txt, so it does not intend to expose agent-facing tools; public browser navigation remains conventional."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon-based applicability judgement",
      "evidence": "No user task in the selected news-reading and newsletter paths needs on-device inference, and the site policy does not target agent/AI experiences.",
      "reason": "No user task in the selected news-reading and newsletter paths needs on-device inference, and the site policy does not target agent/AI experiences."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "After 10 menu open/close cycles, heap self-size fell from 39,432,209 to 39,394,225 bytes; DOM element count remained exactly 3,780.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Heap summary is about 39.4 MB for a media-rich homepage; the post-interaction snapshot did not increase total self-size.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-template visual inspection plus targeted CDP/Lighthouse probe",
      "evidence": "Ten menu cycles produced zero DOM node-count delta; closure count changed only 30,303→30,317 and no Detached* constructor appears among retained top constructors.",
      "pathIds": [
        "home"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F08"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F08",
        "F10"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F16"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "findingIds": [],
      "reason": "The publisher explicitly disallows mainstream AI assistants and crawlers in robots.txt, so it does not intend to expose agent-facing tools; public browser navigation remains conventional. No user task in the selected news-reading and newsletter paths needs on-device inference, and the site policy does not target agent/AI experiences."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and primary news discovery template; tested desktop/mobile, preferences, navigation, performance, privacy and memory.",
      "url": "https://www.bfmtv.com",
      "conditions": [
        "1440x1000",
        "360x800",
        "prefers-color-scheme: dark",
        "prefers-contrast: more",
        "prefers-reduced-motion: reduce",
        "10× menu cycle"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "International section listing representing category/index templates.",
      "url": "https://www.bfmtv.com/international/",
      "conditions": [
        "360x800"
      ],
      "result": "pass"
    },
    {
      "id": "article",
      "description": "Live article representing editorial detail/live-blog pages and rich metadata.",
      "url": "https://www.bfmtv.com/international/moyen-orient/direct-guerre-au-moyen-orient-de-nouvelles-frappes-americaines-en-iran-pour-la-10e-nuit-consecutive_LN-202607210047.html",
      "conditions": [
        "360x800",
        "JavaScript disabled crawler comparison"
      ],
      "result": "pass"
    },
    {
      "id": "live",
      "description": "Live TV page representing media playback and channel-selection surfaces.",
      "url": "https://www.bfmtv.com/en-direct/",
      "conditions": [
        "360x800"
      ],
      "result": "pass"
    },
    {
      "id": "newsletters",
      "description": "Newsletter selection and email submission representing the primary form journey.",
      "url": "https://www.bfmtv.com/newsletters/",
      "conditions": [
        "360x800",
        "empty email submission"
      ],
      "result": "issues"
    },
    {
      "id": "error-404",
      "description": "Nonexistent route representing HTTP/network recovery state.",
      "url": "https://www.bfmtv.com/this-page-does-not-exist-web-uplift",
      "conditions": [
        "360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F05",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "identify-inp-causes",
      "guidanceCategory": "performance",
      "summary": "Throttled mobile loading misses the good LCP range by a wide margin.",
      "evidence": "Lighthouse measured LCP 17.7 s, FCP 3.7 s, Speed Index 6.7 s, and a performance score of 0.61. The unthrottled trace was much faster (LCP 1.36 s), showing strong sensitivity to constrained conditions.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-home-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Profile the LCP element and its request chain, prioritise its discovery, defer non-critical advertising/player work, and verify under mobile throttling.",
      "effort": "large"
    },
    {
      "id": "F06",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "summary": "The homepage loads an excessive dependency and media payload with render-blocking resources.",
      "evidence": "The HAR recorded 255 requests and 14,026,061 transferred bytes, including about 9.94 MB of live-stream XHR. Lighthouse estimates 2,230 ms render-blocking savings and 301 KiB cache-lifetime savings.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/lighthouse-failures.json"
      ],
      "suggestedFix": "Do not fetch live video segments before user intent, shorten the critical chain, defer non-critical scripts/styles, and set effective cache lifetimes.",
      "effort": "large"
    },
    {
      "id": "F08",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Numerous text and UI combinations fail minimum colour contrast.",
      "evidence": "Lighthouse’s color-contrast audit failed with 40 affected elements and the high-contrast emulation produced an unchanged capture.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-failures.json",
        "evidence/home-high-contrast.png"
      ],
      "suggestedFix": "Adjust foreground/background tokens to WCAG AA and add forced-colors/prefers-contrast treatment for essential controls and text.",
      "effort": "medium"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Security policy headers and cookie flags are incomplete.",
      "evidence": "The header audit found no Content-Security-Policy or Permissions-Policy. Three first-party cookies are not Secure, and several are SameSite=None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy a restrictive nonce/hash-based CSP, a least-privilege Permissions-Policy, and mark HTTPS cookies Secure with the narrowest workable SameSite policy.",
      "effort": "medium"
    },
    {
      "id": "F15",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "The homepage has a broad tracking and third-party collection footprint.",
      "evidence": "The tracker probe observed 21 third-party origins and a known Google advertising tracker; the HAR recorded 188 third-party requests and 12.16 MB third-party transfer. Multiple analytics identifiers persist for 395 days.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Audit and remove non-essential vendors, delay optional analytics/ads until valid consent, shorten identifier lifetimes, and batch/minimise events.",
      "effort": "large"
    },
    {
      "id": "F18",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "summary": "Live media and third-party work consume a disproportionate homepage budget before explicit user intent.",
      "evidence": "About 9.94 MB of live-stream segments were fetched during an 8-second homepage capture; total transfer reached 14.03 MB and third parties accounted for 12.16 MB.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Replace automatic stream startup with a poster and explicit play action, then defer player, ad, and analytics dependencies until needed.",
      "effort": "large"
    },
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "summary": "The site ignores the user’s dark colour-scheme preference.",
      "evidence": "The light and dark 360×800 captures are byte-for-byte identical (189,184 bytes), and the dark-mode probe still computes the body background as rgb(255,255,255).",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-dark.png",
        "evidence/platform-probe-home.json"
      ],
      "suggestedFix": "Declare color-scheme and retint surfaces, text, controls, and embedded UI with prefers-color-scheme or light-dark(), preserving brand contrast.",
      "effort": "medium"
    },
    {
      "id": "F03",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "defer-rendering-heavy-content",
      "guidanceCategory": "performance",
      "summary": "A large empty advertising/loading region pushes primary content below the first desktop viewport.",
      "evidence": "The 1440×1000 capture shows roughly 300 px of blank space below the navigation before the lead story begins, reducing first-view content density.",
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Collapse unfilled ad slots, reserve only the final creative size when an ad is confirmed, and prioritise editorial content in the first viewport.",
      "effort": "medium"
    },
    {
      "id": "F04",
      "severity": "medium",
      "confidence": "high",
      "pathId": "newsletters",
      "url": "https://www.bfmtv.com/newsletters/",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "accessibility",
      "summary": "The newsletter form’s invalid state is not announced or connected to a recovery message.",
      "evidence": "Submitting the selected newsletter with an empty email leaves aria-invalid and aria-describedby unset, creates no aria-live/role=alert region, and does not move focus to the invalid field.",
      "artifacts": [
        "evidence/newsletter-validation.json",
        "evidence/newsletter-flow.json"
      ],
      "suggestedFix": "On attempted submission, set aria-invalid, attach a specific error with aria-describedby, announce it in a live region, and focus the first invalid field.",
      "effort": "small"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "Substantial unused JavaScript and CSS are delivered on the homepage.",
      "evidence": "Lighthouse estimates 656 KiB unused JavaScript and 58 KiB unused CSS, plus 17 KiB avoidable legacy JavaScript.",
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Split page-specific bundles, conditionally load player/ad dependencies, remove duplicate/legacy code, and ship only CSS needed by the current template.",
      "effort": "large"
    },
    {
      "id": "F09",
      "severity": "medium",
      "confidence": "high",
      "pathId": "newsletters",
      "url": "https://www.bfmtv.com/newsletters/",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "The newsletter email field has no accessible label.",
      "evidence": "After selecting a newsletter, the email input has label count 0, no aria-label, and only placeholder=\"Votre email\".",
      "artifacts": [
        "evidence/newsletter-flow.json",
        "evidence/newsletter-validation.json"
      ],
      "suggestedFix": "Add a persistent visible <label for> for the email input; keep placeholder text supplemental rather than using it as the name.",
      "effort": "trivial"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Heading hierarchy and menu expanded-state semantics are inconsistent.",
      "evidence": "The homepage contains an empty H1 and Lighthouse reports a heading-order failure. Opening the mobile menu changes the visual state but aria-expanded remains false and aria-controls is absent.",
      "artifacts": [
        "evidence/platform-probe-home.json",
        "evidence/menu-semantics.json",
        "evidence/menu-open-end.png",
        "evidence/lighthouse-failures.json"
      ],
      "suggestedFix": "Provide a meaningful H1, keep heading levels sequential, and synchronise aria-expanded/aria-controls with the menu panel and focus lifecycle.",
      "effort": "small"
    },
    {
      "id": "F11",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Several images lack explicit dimensions.",
      "evidence": "The image primitive found 8 images without dimensions; Lighthouse’s unsized-images audit lists 14 affected image elements.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-failures.json"
      ],
      "suggestedFix": "Emit width and height attributes or a stable aspect-ratio for every content image to reserve layout space.",
      "effort": "small"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "The page uses a deprecated API and omits source maps for large first-party scripts.",
      "evidence": "Lighthouse reports one deprecation warning and three large first-party scripts without valid source maps.",
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Remove the deprecated API usage and publish production source maps to support debugging and platform hygiene.",
      "effort": "small"
    },
    {
      "id": "F13",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Some navigation links are not crawlable.",
      "evidence": "Lighthouse reports 12 anchors without crawlable destinations, despite the viewport and robots configuration otherwise being present.",
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/indexing-signals.json"
      ],
      "suggestedFix": "Use real href URLs for navigation and reserve buttons for in-page actions; retain descriptive link text.",
      "effort": "small"
    },
    {
      "id": "F17",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "summary": "Image delivery leaves meaningful byte and rendering savings.",
      "evidence": "Of 100 images, 55 use legacy formats, 37 lack srcset, 36 below-fold images are not lazy-loaded, and 11 are oversized; Lighthouse estimates 479 KiB image savings.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-failures.json"
      ],
      "suggestedFix": "Serve responsive AVIF/WebP sources, size them to rendered slots, lazy-load below-fold images, and retain explicit dimensions.",
      "effort": "medium"
    },
    {
      "id": "F02",
      "severity": "low",
      "confidence": "high",
      "pathId": "home",
      "url": "https://www.bfmtv.com",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "summary": "Navigation and menu state changes do not use View Transitions.",
      "evidence": "The platform probe found no view-transition CSS; the menu interaction video and getAnimations() probe show an immediate state swap with no active animation.",
      "artifacts": [
        "evidence/menu-open.mp4",
        "evidence/menu-open-end.png",
        "evidence/platform-probe-home.json"
      ],
      "suggestedFix": "Progressively enhance menu and same-site navigation with same-document or cross-document View Transitions, while respecting reduced motion.",
      "effort": "medium"
    },
    {
      "id": "F16",
      "severity": "low",
      "confidence": "high",
      "pathId": "newsletters",
      "url": "https://www.bfmtv.com/newsletters/",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "guidanceCategory": "forms",
      "summary": "The newsletter email field does not advertise its autofill purpose.",
      "evidence": "The rendered input is type=email but autocomplete is empty.",
      "artifacts": [
        "evidence/newsletter-flow.json"
      ],
      "suggestedFix": "Set autocomplete=\"email\" and preserve appropriate inputmode/type semantics.",
      "effort": "trivial"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Stop automatic live-stream and third-party startup on the homepage",
      "priority": 1,
      "findingIds": [
        "F06",
        "F15",
        "F18"
      ],
      "guidanceId": "deprioritize-background-fetches",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Repair the mobile LCP request and critical rendering path",
      "priority": 2,
      "findingIds": [
        "F05",
        "F06",
        "F07"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Meet WCAG contrast and user contrast preferences",
      "priority": 3,
      "findingIds": [
        "F08"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Add CSP, Permissions-Policy, and secure cookie attributes",
      "priority": 4,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Label and accessibly validate the newsletter email field",
      "priority": 5,
      "findingIds": [
        "F04",
        "F09",
        "F16"
      ],
      "guidanceId": "accessible-error-announcement",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Optimise responsive image delivery and dimensions",
      "priority": 6,
      "findingIds": [
        "F11",
        "F17"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Fix homepage heading and mobile-menu ARIA state",
      "priority": 7,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Add dark-mode preference support",
      "priority": 8,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Make all navigation anchors crawlable",
      "priority": 9,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Collapse empty ad inventory and reduce first-view chrome",
      "priority": 10,
      "findingIds": [
        "F03"
      ],
      "guidanceId": "defer-rendering-heavy-content",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Remove deprecated API usage and publish source maps",
      "priority": 11,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Progressively enhance route/menu changes with View Transitions",
      "priority": 12,
      "findingIds": [
        "F02"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T10-26-43-711Z"
}
