{
  "url": "https://www.ikea.com",
  "auditedAt": "2026-07-24T02:06:00.000Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Representative coverage included global editorial and UK commerce templates. Checkout, payment submission, account creation, and every country variant were excluded because they require commitments, credentials, or duplicate localized templates.",
  "page": {
    "appType": "hybrid",
    "framework": "Astro/Svelte global fragments plus modular IKEA commerce frontend",
    "notes": "Public global editorial site links into localized commerce. Server-rendered content is progressively enhanced by many client fragments."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "HTTP fetch"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "scrollytelling",
    "physics-based-easing",
    "shrinking-header-on-scroll",
    "anchor-positioning-tab-underline",
    "directional-navigation-transitions",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "complex-shapes",
    "fluid-scaling",
    "size-aware-styling",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "identify-inp-causes",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "optimize-image-priority",
    "identify-heavy-scripts",
    "move-dom-element-without-losing-state",
    "css",
    "html",
    "security",
    "privacy",
    "passkeys",
    "flicker-free-client-side-ab-testing",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-toast-notifications",
    "translator",
    "support-global-calendar-systems",
    "coordinate-global-events",
    "search-hidden-content",
    "autofill-address-form",
    "autofill-payment-form",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "webmcp",
    "language-model",
    "manage-recurring-intervals"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Global homepage first viewport with consent dialog",
      "condition": "desktop",
      "findingIds": [
        "F-002"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Global homepage at 360x800, consent occupies the viewport",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F-002"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Homepage under requested dark colour scheme remains light",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F-001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-contrast.png",
      "caption": "Homepage under increased contrast preference",
      "condition": "prefers-contrast: more",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/stories-desktop.png",
      "caption": "Stories listing first viewport",
      "condition": "desktop",
      "findingIds": [
        "F-002"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/article-desktop.png",
      "caption": "ASPUDDEN editorial story hero",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/shop-desktop.png",
      "caption": "UK commerce homepage first viewport",
      "condition": "desktop",
      "findingIds": [
        "F-002"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/listing-mobile.png",
      "caption": "Storage listing on a narrow viewport",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F-002",
        "F-006"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/product-mobile.png",
      "caption": "Product detail on a narrow viewport",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F-002"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/product-add-flow.png",
      "caption": "Product detail with price, availability and add-to-bag action",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found.png",
      "caption": "Actionable invalid-route recovery state",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "Homepage mobile layout and CLS metrics",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/listing-layout-mobile.json",
      "caption": "Listing mobile layout and CLS metrics",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "Raw homepage DevTools performance trace",
      "condition": "desktop",
      "findingIds": [
        "F-008"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Homepage trace timing summary",
      "condition": "desktop",
      "findingIds": [
        "F-008"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/product-trace.json",
      "caption": "Raw product DevTools performance trace",
      "condition": "desktop",
      "findingIds": [
        "F-008",
        "F-009"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/product-trace-summary.json",
      "caption": "Product trace timing summary",
      "condition": "desktop",
      "findingIds": [
        "F-008"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Homepage network capture",
      "condition": "desktop",
      "findingIds": [
        "F-016"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Homepage network summary",
      "condition": "desktop",
      "findingIds": [
        "F-016"
      ]
    },
    {
      "type": "har",
      "path": "evidence/product.har",
      "caption": "Product network capture",
      "condition": "desktop",
      "findingIds": [
        "F-009"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/product-summary.json",
      "caption": "Product network summary",
      "condition": "desktop",
      "findingIds": [
        "F-009"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "Homepage Lighthouse report",
      "condition": "mobile throttling",
      "findingIds": [
        "F-006",
        "F-007",
        "F-008",
        "F-016"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-product.json",
      "caption": "Product Lighthouse report",
      "condition": "mobile throttling",
      "findingIds": [
        "F-007",
        "F-008",
        "F-010",
        "F-011",
        "F-013"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/probe-home.json",
      "caption": "Homepage metadata, semantics, controls and CSS feature probe",
      "condition": "desktop",
      "findingIds": [
        "F-001",
        "F-003",
        "F-006",
        "F-007"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/probe-article.json",
      "caption": "Article metadata, semantics and CSS feature probe",
      "condition": "desktop",
      "findingIds": [
        "F-004",
        "F-017"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/probe-listing.json",
      "caption": "Listing semantics, controls and CSS feature probe",
      "condition": "desktop",
      "findingIds": [
        "F-005",
        "F-006"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/probe-product.json",
      "caption": "Product metadata, semantics and CSS feature probe",
      "condition": "desktop",
      "findingIds": [
        "F-003"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "Homepage image audit",
      "condition": "desktop",
      "findingIds": [
        "F-016"
      ]
    },
    {
      "type": "other",
      "path": "evidence/product-images.json",
      "caption": "Product image audit",
      "condition": "desktop",
      "findingIds": [
        "F-012"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "Homepage security response headers",
      "condition": "desktop",
      "findingIds": [
        "F-014"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "Homepage cookie flags",
      "condition": "desktop",
      "findingIds": [
        "F-014"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "Pre-consent third-party origin probe",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "Client secret-pattern scan (OneTrust public/config key only)",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "Homepage raw HTML versus rendered comparison",
      "condition": "no JavaScript",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "Homepage browser-rendered view",
      "condition": "JavaScript enabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "Homepage crawler view",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/product-discoverability.json",
      "caption": "Product raw HTML versus rendered comparison",
      "condition": "no JavaScript",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/product-discoverability-rendered.png",
      "caption": "Product browser-rendered view",
      "condition": "JavaScript enabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/product-discoverability-crawler.png",
      "caption": "Product crawler view",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/listing-heap-baseline.heapsnapshot",
      "caption": "Listing baseline heap summary",
      "condition": "before repeated scrolling",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/listing-heap-post.heapsnapshot",
      "caption": "Listing heap summary after ten scroll cycles",
      "condition": "after repeated scrolling",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-reduced-motion.json",
      "caption": "Homepage animation state under reduced motion",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/article-reduced-motion.json",
      "caption": "Article video and animation state under reduced motion",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered homepage DOM and computed style capture",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/permissions-probe.json",
      "caption": "Permission state probe showing no prompt was triggered on load",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/search-flow.json",
      "caption": "Search journey result evidence",
      "condition": "query: chair",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/auth-probe.json",
      "caption": "Login method and OAuth redirect evidence",
      "condition": "logged out",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/http-recon.txt",
      "caption": "HTTP headers, robots.txt and sitemap discovery",
      "condition": "HTTP fetch",
      "findingIds": []
    }
  ],
  "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": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "The prefers-color-scheme: dark screenshot remains white, the computed body surface is rgb(255, 254, 251), and the CSS probe found no prefers-color-scheme, light-dark(), or color-scheme support.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/probe-home.json"
      ],
      "findingIds": [
        "F-001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Emulated reduced-motion probes found 23 relevant CSS rules on the homepage; article autoplay was disabled, all videos were paused, and no animations ran.",
      "artifacts": [
        "evidence/home-reduced-motion.json",
        "evidence/article-reduced-motion.json"
      ],
      "pathIds": [
        "home",
        "article"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Forced/high-contrast CSS was present and Lighthouse found no color-contrast failures on either audited template.",
      "artifacts": [
        "evidence/home-contrast.png",
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-product.json"
      ],
      "pathIds": [
        "home",
        "product"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "CSS probes on the homepage, article, listing, and product found no view-transition rules or names.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json",
        "evidence/probe-product.json"
      ],
      "findingIds": [
        "F-004"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "The global templates use animation-timeline/scroll-timeline CSS; no main-thread long tasks were observed during load.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/home-trace-summary.json"
      ],
      "pathIds": [
        "home",
        "article"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "CSS probes found scroll-snap and overscroll behavior on editorial and commerce surfaces, with reduced-motion behavior verified.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-listing.json"
      ],
      "pathIds": [
        "home",
        "listing"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "The fixed responsive header and scroll-timeline styles adapt navigation chrome to long pages.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/probe-home.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "The listing accessibility probe found multiple role=tooltip elements while CSS inspection found no anchor-name, position-anchor, or position-try usage.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/probe-listing.json"
      ],
      "findingIds": [
        "F-005"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Visible breadcrumbs, category carousels, directional controls, headings, and clear search result counts consistently orient the user.",
      "artifacts": [
        "evidence/product-add-flow.png",
        "evidence/search-flow.json"
      ],
      "pathIds": [
        "listing",
        "search",
        "product"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Initial desktop, listing, product, and 360x800 screenshots show the consent panel covering the main content. On mobile only the header and consent text/actions are visible.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/listing-mobile.png",
        "evidence/product-mobile.png"
      ],
      "findingIds": [
        "F-002"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "DOM probes across global and UK pages found a visible DIV role=dialog with no aria-modal and no native dialog element.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-product.json"
      ],
      "findingIds": [
        "F-003"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Once consent is set aside, first viewports prioritize imagery, product information, and primary actions with restrained borders.",
      "artifacts": [
        "evidence/shop-desktop.png",
        "evidence/product-add-flow.png"
      ],
      "pathIds": [
        "shop",
        "product"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "At 360x800 the homepage and listing both reported scrollWidth equal to clientWidth (360px), viewport meta present, and zero horizontal overflow.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/listing-layout-mobile.json"
      ],
      "pathIds": [
        "home",
        "listing"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "CSS probes found container queries on article, listing, and product templates, and mobile screenshots show genuine component reflow.",
      "artifacts": [
        "evidence/probe-article.json",
        "evidence/probe-listing.json",
        "evidence/product-mobile.png"
      ],
      "pathIds": [
        "article",
        "listing",
        "product"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Lighthouse failed target-size on the global homepage. DOM probes found a 32x28 menu-adjacent button and many 40x40 commerce controls, below a 44x44 target.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/probe-home.json",
        "evidence/probe-listing.json"
      ],
      "findingIds": [
        "F-006"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Homepage, listing, story, search, and product screenshots expose descriptive headings and clear next actions such as Go shopping, search, and Add to shopping bag.",
      "artifacts": [
        "evidence/shop-desktop.png",
        "evidence/product-add-flow.png"
      ],
      "pathIds": [
        "home",
        "shop",
        "listing",
        "product"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "A direct search for chair returned 217 products with filters, prices and links; a representative product page exposed price, availability steps, quantity, and add-to-bag action.",
      "artifacts": [
        "evidence/search-flow.json",
        "evidence/product-add-flow.png"
      ],
      "pathIds": [
        "search",
        "product"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Search reports result counts and the invalid-route test showed a clear “Page cannot be found” state with search and homepage recovery paths.",
      "artifacts": [
        "evidence/search-flow.json",
        "evidence/not-found.png"
      ],
      "pathIds": [
        "search",
        "error"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Mobile Lighthouse measured LCP at 7.0s on the homepage and 6.2s on the product page. A separate desktop trace measured 1.47s and 2.84s respectively, showing the mobile/throttled path is the risk.",
      "pathIds": [
        "product"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-product.json",
        "evidence/home-trace-summary.json",
        "evidence/product-trace-summary.json"
      ],
      "findingIds": [
        "F-008"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Layout observers reported CLS 0 on homepage and listing; Lighthouse measured CLS 0 and 0.002 on homepage/product.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/listing-layout-mobile.json",
        "evidence/lighthouse-product.json"
      ],
      "pathIds": [
        "home",
        "listing",
        "product"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Both traces reported zero long tasks and zero total blocking time; Lighthouse also measured TBT 0ms.",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/product-trace-summary.json"
      ],
      "pathIds": [
        "home",
        "product"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "The product HAR recorded 246 requests, including 134 scripts and 57 stylesheets, with 1.86MB transferred. Many parser-inserted, VeryHigh-priority stylesheets appear in the critical path; mobile LCP was 6.2s.",
      "pathIds": [
        "product"
      ],
      "artifacts": [
        "evidence/product-summary.json",
        "evidence/product.har",
        "evidence/lighthouse-product.json"
      ],
      "findingIds": [
        "F-009"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Lighthouse estimated 337KiB unused JavaScript and 135KiB unused CSS on the product page; individual bundles were 72% to 99% unused in the measured load.",
      "pathIds": [
        "product"
      ],
      "artifacts": [
        "evidence/lighthouse-product.json"
      ],
      "findingIds": [
        "F-010"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Lighthouse found visible-label/accessibility-name mismatches on both global and product pages and two malformed list structures on the homepage; the global probe also identified an unnamed visible button.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-product.json",
        "evidence/probe-home.json"
      ],
      "findingIds": [
        "F-007"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Lighthouse found zero contrast failures on both tested templates and high-contrast emulation remained legible.",
      "artifacts": [
        "evidence/home-contrast.png",
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-product.json"
      ],
      "pathIds": [
        "home",
        "product"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Lighthouse found visible-label/accessibility-name mismatches on both global and product pages and two malformed list structures on the homepage; the global probe also identified an unnamed visible button.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-product.json",
        "evidence/probe-home.json"
      ],
      "findingIds": [
        "F-007"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Desktop and mobile screenshots show readable type, stable wrapping, strong hierarchy, and no clipping or horizontal overflow.",
      "artifacts": [
        "evidence/stories-desktop.png",
        "evidence/product-mobile.png"
      ],
      "pathIds": [
        "stories",
        "product"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Lighthouse failed target-size on the global homepage. DOM probes found a 32x28 menu-adjacent button and many 40x40 commerce controls, below a 44x44 target.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/probe-home.json",
        "evidence/probe-listing.json"
      ],
      "findingIds": [
        "F-006"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Lighthouse captured console.error: “[expt-store] exptSDK.init did not return a client” from zip-store-DdpxZMer.js.",
      "pathIds": [
        "product"
      ],
      "artifacts": [
        "evidence/lighthouse-product.json"
      ],
      "findingIds": [
        "F-011"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "The images primitive found 15 of 26 product-page images without width/height attributes, including the primary product gallery images.",
      "pathIds": [
        "product"
      ],
      "artifacts": [
        "evidence/product-images.json"
      ],
      "findingIds": [
        "F-012"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Lighthouse reported six source-map failures, including ratings/reviews and shopping-cart agent bundles.",
      "pathIds": [
        "product"
      ],
      "artifacts": [
        "evidence/lighthouse-product.json"
      ],
      "findingIds": [
        "F-013"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Homepage, article, listing, and product probes all found unique descriptive titles and meta descriptions.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json",
        "evidence/probe-listing.json",
        "evidence/probe-product.json"
      ],
      "pathIds": [
        "home",
        "article",
        "listing",
        "product"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "All inspected links had hrefs, viewport metadata was present, robots permits public pages, and Lighthouse SEO was 1.0 on the homepage.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/http-recon.txt",
        "evidence/lighthouse-home.json"
      ],
      "pathIds": [
        "home",
        "product"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Representative pages returned 200, declared index/follow and canonical URLs; the global page exposes extensive hreflang and robots points to a sitemap index.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-product.json",
        "evidence/http-recon.txt"
      ],
      "pathIds": [
        "home",
        "article",
        "listing",
        "product"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "The ASPUDDEN article has useful title, description, canonical and Open Graph image, but no JSON-LD and og:type is website rather than article.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/probe-article.json"
      ],
      "findingIds": [
        "F-017"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Headers include strong CSP, HSTS, and frame-ancestors, but omit X-Content-Type-Options, Referrer-Policy, and Permissions-Policy. The cookies primitive found OptanonConsent set without Secure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "F-014"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Before optional consent, the tracker probe found only two consent-management origins and no known tracker match; third-party transfer was 157KB on the homepage.",
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-summary.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Geolocation and notifications remained in prompt state rather than being requested on load. Login uses OAuth2 PKCE and defaults to an emailed one-time code rather than password-only authentication.",
      "artifacts": [
        "evidence/permissions-probe.json",
        "evidence/auth-probe.json"
      ],
      "pathIds": [
        "home",
        "auth"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Headers include strong CSP, HSTS, and frame-ancestors, but omit X-Content-Type-Options, Referrer-Policy, and Permissions-Policy. The cookies primitive found OptanonConsent set without Secure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "F-014"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Raw HTML retained 75% of homepage and 82% of product content; neither was a JS shell, with title and descriptions available without JS.",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/product-discoverability.json"
      ],
      "pathIds": [
        "home",
        "product"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Long listing/product templates rendered without horizontal overflow or cut-off core controls; CSS includes container queries, scroll snap, overscroll and logical properties.",
      "artifacts": [
        "evidence/listing-layout-mobile.json",
        "evidence/probe-product.json"
      ],
      "pathIds": [
        "listing",
        "product"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "Homepage, listing, and product probes found no web app manifest and no controlling service worker. The commerce journey depends on networked fragments.",
      "pathIds": [
        "shop"
      ],
      "artifacts": [
        "evidence/probe-listing.json",
        "evidence/probe-product.json"
      ],
      "findingIds": [
        "F-015"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "The tested invalid route renders an explicit, actionable recovery page instead of a blank shell or infinite spinner.",
      "artifacts": [
        "evidence/not-found.png"
      ],
      "pathIds": [
        "error"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Pages declare en/en-GB and ltr correctly, global hreflang variants are extensive, and probes found logical CSS properties.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-product.json"
      ],
      "pathIds": [
        "home",
        "product"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "The UK product and search templates render locale-appropriate pounds, decimal prices and en-GB language while global hreflang routes expose localized alternatives.",
      "artifacts": [
        "evidence/probe-product.json",
        "evidence/search-flow.json"
      ],
      "pathIds": [
        "product",
        "search"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative route and task recon.",
      "evidence": "The representative pages contain no event scheduling or time-zone-sensitive values to evaluate.",
      "reason": "The representative pages contain no event scheduling or time-zone-sensitive values to evaluate."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Consent offers equally prominent accept and reject actions; product price, previous price, discount, and availability requirements are explicit.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-add-flow.png"
      ],
      "pathIds": [
        "home",
        "product"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Search succeeds without unnecessary required fields, and the tested invalid route explains the problem without blame and offers recovery.",
      "artifacts": [
        "evidence/search-flow.json",
        "evidence/not-found.png"
      ],
      "pathIds": [
        "search",
        "error"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "The representative search field has a programmatic label, search input type, and predictable GET action; no paste prevention was observed.",
      "artifacts": [
        "evidence/probe-listing.json"
      ],
      "pathIds": [
        "listing"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Product pricing, quantity, availability, returns reassurance, and add-to-bag are visible; account login uses a one-time-code default and OAuth2 PKCE.",
      "artifacts": [
        "evidence/product-add-flow.png",
        "evidence/auth-probe.json"
      ],
      "pathIds": [
        "product",
        "auth"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "The images primitive classified 39 of 40 images as JPG/PNG/GIF, found seven below-fold images without lazy loading and six oversized images. Lighthouse measured a 2.51MiB page load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-016"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "Despite asset issues, traces found no long tasks or ongoing main-thread blocking, and third-party activity before consent was limited to consent management.",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-trackers.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Representative visual, DOM, network, performance, or Lighthouse evidence as cited.",
      "evidence": "The images primitive classified 39 of 40 images as JPG/PNG/GIF, found seven below-fold images without lazy loading and six oversized images. Lighthouse measured a 2.51MiB page load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-016"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative route and task recon.",
      "evidence": "No declared agent-facing scope was found; this emerging WebMCP capability is an opportunity, not a requirement for the inspected public pages.",
      "reason": "No declared agent-facing scope was found; this emerging WebMCP capability is an opportunity, not a requirement for the inspected public pages."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative route and task recon.",
      "evidence": "The inspected retail and editorial tasks do not require on-device generative inference; absence is not a user-facing failure.",
      "reason": "The inspected retail and editorial tasks do not require on-device generative inference; absence is not a user-facing failure."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "After ten full listing scroll cycles, heap self-size rose only 108,228 bytes (0.3%); object, array, and closure counts decreased rather than accumulating.",
      "artifacts": [
        "evidence/listing-heap-baseline.heapsnapshot",
        "evidence/listing-heap-post.heapsnapshot"
      ],
      "pathIds": [
        "listing"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "The content-heavy listing retained about 35.3MB in the heap summary, proportionate to its 103-image, multi-section template.",
      "artifacts": [
        "evidence/listing-heap-baseline.heapsnapshot"
      ],
      "pathIds": [
        "listing"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Active visual, DOM, Lighthouse, network, raw-HTML, or runtime probe as cited.",
      "evidence": "The post-interaction summary showed only +252 nodes, lower object/array/closure populations, and no Detached* constructor among top retained constructors.",
      "artifacts": [
        "evidence/listing-heap-baseline.heapsnapshot",
        "evidence/listing-heap-post.heapsnapshot"
      ],
      "pathIds": [
        "listing"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-001"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-004"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-005"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-002",
        "F-003"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-006"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-008",
        "F-009",
        "F-010"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-007",
        "F-006"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-011",
        "F-012",
        "F-013"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-017"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-014"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-015"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-016"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No declared agent-facing scope was found; this emerging WebMCP capability is an opportunity, not a requirement for the inspected public pages. The inspected retail and editorial tasks do not require on-device generative inference; absence is not a user-facing failure."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Global homepage and country-routing entry point; tested desktop, mobile, dark, contrast, reduced motion, network, security and no-JS.",
      "url": "https://www.ikea.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-contrast: more",
        "prefers-reduced-motion: reduce",
        "JavaScript disabled"
      ],
      "result": "issues"
    },
    {
      "id": "stories",
      "description": "Editorial listing template representing story discovery and category navigation.",
      "url": "https://www.ikea.com/global/en/stories/",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "article",
      "description": "Editorial detail template with rich media and long-form content.",
      "url": "https://www.ikea.com/global/en/stories/design/aspudden-kitchen-series-innovation-260722/",
      "conditions": [
        "desktop",
        "prefers-reduced-motion: reduce"
      ],
      "result": "issues"
    },
    {
      "id": "shop",
      "description": "Localized UK commerce landing page representing the shopping entry journey.",
      "url": "https://www.ikea.com/gb/en/",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "Storage category/listing template representing product discovery and repeated scrolling.",
      "url": "https://www.ikea.com/gb/en/cat/storage-furniture-st001/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "ten repeated scroll cycles"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Primary product-search journey using query “chair”.",
      "url": "https://www.ikea.com/gb/en/search/?q=chair",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    },
    {
      "id": "product",
      "description": "Product detail and purchase-intent template with price, availability and add-to-bag action.",
      "url": "https://www.ikea.com/gb/en/p/fruktduva-champagne-coupe-clear-glass-30625421/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "mobile Lighthouse",
        "JavaScript disabled"
      ],
      "result": "issues"
    },
    {
      "id": "error",
      "description": "Invalid commerce route representing HTTP/navigation recovery.",
      "url": "https://www.ikea.com/gb/en/this-route-does-not-exist-audit/",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    },
    {
      "id": "auth",
      "description": "Logged-out account login entry representing authentication posture.",
      "url": "https://www.ikea.com/gb/en/profile/login/",
      "conditions": [
        "logged out"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F-001",
      "pathId": "home",
      "url": "https://www.ikea.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "severity": "medium",
      "confidence": "high",
      "summary": "The global and commerce surfaces remain light when the user requests a dark colour scheme.",
      "evidence": "The prefers-color-scheme: dark screenshot remains white, the computed body surface is rgb(255, 254, 251), and the CSS probe found no prefers-color-scheme, light-dark(), or color-scheme support.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/probe-home.json"
      ],
      "suggestedFix": "Declare color-scheme: light dark and map surface, text, border, image treatment, and browser chrome tokens through prefers-color-scheme or light-dark().",
      "effort": "medium"
    },
    {
      "id": "F-002",
      "pathId": "home",
      "url": "https://www.ikea.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "severity": "high",
      "confidence": "high",
      "summary": "Cookie consent obscures the primary content on every first visit, consuming almost the entire mobile viewport.",
      "evidence": "Initial desktop, listing, product, and 360x800 screenshots show the consent panel covering the main content. On mobile only the header and consent text/actions are visible.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/listing-mobile.png",
        "evidence/product-mobile.png"
      ],
      "suggestedFix": "Use a compact, non-blocking consent surface for optional cookies, retain equally prominent accept/reject actions, and keep the core page readable before a choice.",
      "effort": "medium"
    },
    {
      "id": "F-003",
      "pathId": "home",
      "url": "https://www.ikea.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "severity": "medium",
      "confidence": "high",
      "summary": "The consent modal is an ad-hoc div with role=dialog rather than the platform dialog primitive.",
      "evidence": "DOM probes across global and UK pages found a visible DIV role=dialog with no aria-modal and no native dialog element.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-product.json"
      ],
      "suggestedFix": "Use a native dialog for a truly modal consent decision, with showModal(), platform focus containment, Escape handling where policy permits, and an explicit accessible name.",
      "effort": "medium"
    },
    {
      "id": "F-004",
      "pathId": "article",
      "url": "https://www.ikea.com/global/en/stories/design/aspudden-kitchen-series-innovation-260722/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "user-experience",
      "severity": "low",
      "confidence": "high",
      "summary": "Page and route changes do not use View Transitions, so template changes are abrupt.",
      "evidence": "CSS probes on the homepage, article, listing, and product found no view-transition rules or names.",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json",
        "evidence/probe-product.json"
      ],
      "suggestedFix": "Add progressive cross-document View Transitions for global story navigation and scoped same-document transitions for commerce state changes, with reduced-motion handling.",
      "effort": "medium"
    },
    {
      "id": "F-005",
      "pathId": "listing",
      "url": "https://www.ikea.com/gb/en/cat/storage-furniture-st001/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "position-aware-tooltips",
      "guidanceCategory": "user-experience",
      "severity": "low",
      "confidence": "medium",
      "summary": "The listing exposes tooltip overlays but does not use CSS anchor positioning or fallback positions.",
      "evidence": "The listing accessibility probe found multiple role=tooltip elements while CSS inspection found no anchor-name, position-anchor, or position-try usage.",
      "artifacts": [
        "evidence/probe-listing.json"
      ],
      "suggestedFix": "Anchor tooltips and transient menus to their trigger with CSS anchor positioning and position-try fallbacks, retaining the current robust fallback for unsupported browsers.",
      "effort": "small"
    },
    {
      "id": "F-006",
      "pathId": "home",
      "url": "https://www.ikea.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Several interactive targets are smaller than the recommended touch target size.",
      "evidence": "Lighthouse failed target-size on the global homepage. DOM probes found a 32x28 menu-adjacent button and many 40x40 commerce controls, below a 44x44 target.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/probe-home.json",
        "evidence/probe-listing.json"
      ],
      "suggestedFix": "Increase hit areas to at least 44x44 CSS pixels or provide sufficient spacing, without shrinking the visible icon.",
      "effort": "small"
    },
    {
      "id": "F-007",
      "pathId": "home",
      "url": "https://www.ikea.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Accessible names and list semantics are inconsistent on representative pages.",
      "evidence": "Lighthouse found visible-label/accessibility-name mismatches on both global and product pages and two malformed list structures on the homepage; the global probe also identified an unnamed visible button.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-product.json",
        "evidence/probe-home.json"
      ],
      "suggestedFix": "Make accessible names begin with or match visible labels, give every icon button an explicit name, and ensure list containers have only li/script/template direct children.",
      "effort": "small"
    },
    {
      "id": "F-008",
      "pathId": "product",
      "url": "https://www.ikea.com/gb/en/p/fruktduva-champagne-coupe-clear-glass-30625421/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Largest Contentful Paint is slow on both the global homepage and product detail template.",
      "evidence": "Mobile Lighthouse measured LCP at 7.0s on the homepage and 6.2s on the product page. A separate desktop trace measured 1.47s and 2.84s respectively, showing the mobile/throttled path is the risk.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-product.json",
        "evidence/home-trace-summary.json",
        "evidence/product-trace-summary.json"
      ],
      "suggestedFix": "Identify each mobile LCP element, preload only the winning candidate, set fetchpriority=high where appropriate, remove discovery delays, and defer non-critical media and consent code.",
      "effort": "medium"
    },
    {
      "id": "F-009",
      "pathId": "product",
      "url": "https://www.ikea.com/gb/en/p/fruktduva-champagne-coupe-clear-glass-30625421/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "The commerce product template has a highly fragmented critical resource graph.",
      "evidence": "The product HAR recorded 246 requests, including 134 scripts and 57 stylesheets, with 1.86MB transferred. Many parser-inserted, VeryHigh-priority stylesheets appear in the critical path; mobile LCP was 6.2s.",
      "artifacts": [
        "evidence/product-summary.json",
        "evidence/product.har",
        "evidence/lighthouse-product.json"
      ],
      "suggestedFix": "Consolidate and route-scope critical CSS, reduce parser-blocking stylesheet fan-out, defer non-critical feature fragments, and prioritize only resources needed for the product hero and purchase controls.",
      "effort": "large"
    },
    {
      "id": "F-010",
      "pathId": "product",
      "url": "https://www.ikea.com/gb/en/p/fruktduva-champagne-coupe-clear-glass-30625421/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "severity": "medium",
      "confidence": "high",
      "summary": "The product template ships substantial unused JavaScript and CSS.",
      "evidence": "Lighthouse estimated 337KiB unused JavaScript and 135KiB unused CSS on the product page; individual bundles were 72% to 99% unused in the measured load.",
      "artifacts": [
        "evidence/lighthouse-product.json"
      ],
      "suggestedFix": "Split reviews, recommendations, account, experimentation, and lower-funnel features by interaction/visibility, and eliminate duplicate or template-wide CSS from the initial product route.",
      "effort": "large"
    },
    {
      "id": "F-011",
      "pathId": "product",
      "url": "https://www.ikea.com/gb/en/p/fruktduva-champagne-coupe-clear-glass-30625421/",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "severity": "low",
      "confidence": "high",
      "summary": "The product page logs an uncaught experiment-store initialization error.",
      "evidence": "Lighthouse captured console.error: “[expt-store] exptSDK.init did not return a client” from zip-store-DdpxZMer.js.",
      "artifacts": [
        "evidence/lighthouse-product.json"
      ],
      "suggestedFix": "Handle a missing experiment client as an expected fallback state, avoid logging it as an error, and add a regression test for blocked or unavailable experiment services.",
      "effort": "small"
    },
    {
      "id": "F-012",
      "pathId": "product",
      "url": "https://www.ikea.com/gb/en/p/fruktduva-champagne-coupe-clear-glass-30625421/",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Many product images omit intrinsic width and height attributes.",
      "evidence": "The images primitive found 15 of 26 product-page images without width/height attributes, including the primary product gallery images.",
      "artifacts": [
        "evidence/product-images.json"
      ],
      "suggestedFix": "Emit intrinsic width and height for each image variant (or a stable aspect-ratio wrapper) so layout reservation is explicit before image metadata arrives.",
      "effort": "small"
    },
    {
      "id": "F-013",
      "pathId": "product",
      "url": "https://www.ikea.com/gb/en/p/fruktduva-champagne-coupe-clear-glass-30625421/",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "severity": "low",
      "confidence": "high",
      "summary": "Large first-party scripts have missing or broken source maps.",
      "evidence": "Lighthouse reported six source-map failures, including ratings/reviews and shopping-cart agent bundles.",
      "artifacts": [
        "evidence/lighthouse-product.json"
      ],
      "suggestedFix": "Publish matching source maps for production bundles or remove broken sourceMappingURL references while retaining maps in the error-monitoring pipeline.",
      "effort": "small"
    },
    {
      "id": "F-014",
      "pathId": "home",
      "url": "https://www.ikea.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "severity": "medium",
      "confidence": "high",
      "summary": "Several browser-enforced security and privacy policies are absent, and one consent cookie is not Secure.",
      "evidence": "Headers include strong CSP, HSTS, and frame-ancestors, but omit X-Content-Type-Options, Referrer-Policy, and Permissions-Policy. The cookies primitive found OptanonConsent set without Secure.",
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "suggestedFix": "Add nosniff, a deliberate Referrer-Policy and restrictive Permissions-Policy; mark OptanonConsent Secure; retain the existing CSP/HSTS/frame-ancestors protections.",
      "effort": "small"
    },
    {
      "id": "F-015",
      "pathId": "shop",
      "url": "https://www.ikea.com/gb/en/",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "severity": "medium",
      "confidence": "high",
      "summary": "The app-like commerce experience is neither installable nor equipped with an offline fallback.",
      "evidence": "Homepage, listing, and product probes found no web app manifest and no controlling service worker. The commerce journey depends on networked fragments.",
      "artifacts": [
        "evidence/probe-listing.json",
        "evidence/probe-product.json"
      ],
      "suggestedFix": "Provide a manifest and a narrowly scoped service worker that serves an honest offline shell, preserves recently viewed product information where appropriate, and gives retry guidance for network-only actions.",
      "effort": "large"
    },
    {
      "id": "F-016",
      "pathId": "home",
      "url": "https://www.ikea.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "severity": "medium",
      "confidence": "high",
      "summary": "The global editorial homepage relies heavily on legacy image formats and eagerly starts some below-fold media.",
      "evidence": "The images primitive classified 39 of 40 images as JPG/PNG/GIF, found seven below-fold images without lazy loading and six oversized images. Lighthouse measured a 2.51MiB page load.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Negotiate AVIF/WebP sources, lazy-load non-LCP editorial media, right-size responsive candidates, and avoid starting below-fold videos until near the viewport or user intent.",
      "effort": "medium"
    },
    {
      "id": "F-017",
      "pathId": "article",
      "url": "https://www.ikea.com/global/en/stories/design/aspudden-kitchen-series-innovation-260722/",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Editorial articles lack article-specific structured data and identify themselves as generic websites in Open Graph.",
      "evidence": "The ASPUDDEN article has useful title, description, canonical and Open Graph image, but no JSON-LD and og:type is website rather than article.",
      "artifacts": [
        "evidence/probe-article.json"
      ],
      "suggestedFix": "Emit schema.org Article JSON-LD matching the visible headline, description, image, dates and publisher, and use og:type=article with accurate article metadata.",
      "effort": "small"
    }
  ],
  "taskList": [
    {
      "id": "T-001",
      "title": "Stop consent from obscuring the initial mobile experience and use a native dialog only when truly modal",
      "priority": 1,
      "findingIds": [
        "F-002",
        "F-003"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T-002",
      "title": "Fix mobile LCP and collapse the product template critical resource graph",
      "priority": 2,
      "findingIds": [
        "F-008",
        "F-009",
        "F-010"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T-003",
      "title": "Add a system-driven dark theme across global and commerce design tokens",
      "priority": 3,
      "findingIds": [
        "F-001"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T-004",
      "title": "Correct accessible names, list semantics and undersized hit areas",
      "priority": 4,
      "findingIds": [
        "F-006",
        "F-007"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T-005",
      "title": "Harden response policies and cookie flags",
      "priority": 5,
      "findingIds": [
        "F-014"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T-006",
      "title": "Modernize and defer editorial image/video delivery",
      "priority": 6,
      "findingIds": [
        "F-012",
        "F-016"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T-007",
      "title": "Add resilient install/offline behavior to the commerce experience",
      "priority": 7,
      "findingIds": [
        "F-015"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T-008",
      "title": "Add Article structured metadata to editorial stories",
      "priority": 8,
      "findingIds": [
        "F-017"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T-009",
      "title": "Clean up console errors and production source maps",
      "priority": 9,
      "findingIds": [
        "F-011",
        "F-013"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T-010",
      "title": "Progressively enhance route, tooltip and state transitions with modern platform primitives",
      "priority": 10,
      "findingIds": [
        "F-004",
        "F-005"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 9,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-24T01-56-41-278Z"
}
