{
  "url": "https://www.aparat.com",
  "auditedAt": "2026-07-20T16:16:49.322Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete representative audit of four public archetypes. The valid search-results template and authenticated upload/account flows were not covered because they were not required to complete the public watch journey; the invalid result URL was retained specifically as error-state evidence.",
  "page": {
    "appType": "hybrid",
    "framework": "Next.js (identified from _next assets)",
    "notes": "Persian RTL public video platform. Core video entities hydrate client-side. CDN hostnames are classified as third-party by origin in HAR totals even when operationally first-party."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "axe-core",
    "Lighthouse",
    "trace",
    "HAR",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "component-specific-light-dark-theme",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "cross-document-transitions",
    "group-element-transitions",
    "faster-spa-view-transitions",
    "scrollytelling",
    "parallax-scroll-effects",
    "scroll-entry-exit-effects",
    "carousel-slide-effects",
    "physics-based-easing",
    "individual-transform-properties",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "dynamic-sibling-animations",
    "interactive-content-reveal",
    "pull-to-reveal",
    "swipe-to-remove",
    "shrinking-header-on-scroll",
    "scroll-progress-indicator",
    "scroll-position-aware-elements",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "soft-edge-content-fade",
    "scrollability-affordance-hints",
    "anchor-positioning-tab-underline",
    "position-aware-tooltips",
    "interest-triggered-tooltips",
    "interest-triggered-action-previews",
    "directional-navigation-transitions",
    "carousel-snap-highlights",
    "navigation-drawer",
    "stack-drill-down",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "declarative-dialog-popover-control",
    "animated-select-picker",
    "branded-select-styling",
    "brand-consistent-forms",
    "custom-select-picker-layouts",
    "rich-media-picker",
    "complex-shapes",
    "shaped-cutouts",
    "overflow-clipping-control",
    "visually-texture-content",
    "apply-webgl-shaders",
    "interactive-content-in-3d-scenes",
    "highlight-text-ranges",
    "prevent-text-wrapping",
    "customize-scrollbar-color-and-thickness",
    "export-html-media-from-canvas",
    "fluid-scaling",
    "calculate-with-intrinsic-sizes",
    "css-layout",
    "size-aware-styling",
    "content-based-styling",
    "child-state-based-styling",
    "design-token-reactivity",
    "dynamic-sibling-styling",
    "form-fields-automatically-fit-contents",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "required-field-feedback",
    "validate-input-after-interaction",
    "identify-inp-causes",
    "schedule-tasks-by-priority",
    "optimize-preload-priority",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "performance",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "optimize-image-priority",
    "conditional-async-dependencies",
    "expose-canvas-content-to-browser-features",
    "move-dom-element-without-losing-state",
    "precise-text-alignment",
    "visually-stable-mixed-fonts",
    "css",
    "html",
    "reduce-style-repetition",
    "security",
    "privacy",
    "batch-analytics-events",
    "full-session-analytics",
    "calculate-total-foreground-time",
    "passkeys",
    "passkey-registration",
    "passkey-authentication",
    "passkey-reauthentication",
    "passkey-conditional-create",
    "passkey-management",
    "flicker-free-client-side-ab-testing",
    "consistent-cross-document-transitions",
    "stabilize-reactive-state",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-top-layer-ui",
    "detect-initial-visibility-state",
    "sequence-distributed-events",
    "translator",
    "language-detection",
    "support-global-calendar-systems",
    "capture-location-agnostic-data",
    "format-human-readable-durations",
    "manage-recurring-intervals",
    "calculate-event-differentials",
    "coordinate-global-events",
    "model-partial-time-concepts",
    "search-hidden-content",
    "select-menu-interaction",
    "style-parent-with-has",
    "autofill-address-form",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "autofill-highlight-inputs",
    "deliver-optimized-decorative-images",
    "resolution-optimized-pseudo-elements",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "agentic-forms",
    "agentic-javascript-tools",
    "language-model",
    "summarizer",
    "declarative-button-actions"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/axe-home.json",
      "caption": "axe home evidence",
      "findingIds": [
        "F01",
        "F03",
        "F12",
        "F14",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe-search.json",
      "caption": "axe search evidence",
      "findingIds": [
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe-video.json",
      "caption": "axe video evidence",
      "findingIds": [
        "F01",
        "F03",
        "F12",
        "F13",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies evidence",
      "findingIds": [
        "F21"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-desktop.png",
      "caption": "explore desktop evidence",
      "findingIds": [
        "F06"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers evidence",
      "findingIds": [
        "F21",
        "F23"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "heap baseline evidence",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.json",
      "caption": "heap post evidence",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark evidence",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop evidence",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler evidence",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered evidence",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-dom.json",
      "caption": "home dom evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images evidence",
      "findingIds": [
        "F17",
        "F25"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-light.png",
      "caption": "home light evidence",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout evidence",
      "findingIds": [
        "F08"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile evidence",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-probe.json",
      "caption": "home probe evidence",
      "findingIds": [
        "F02",
        "F03",
        "F04",
        "F05",
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon evidence",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary evidence",
      "findingIds": [
        "F10",
        "F11",
        "F22",
        "F26",
        "F27"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary evidence",
      "findingIds": [
        "F07",
        "F09"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace evidence",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home evidence",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/lighthouse-home-summary.json",
      "caption": "lighthouse home summary evidence",
      "findingIds": [
        "F07",
        "F08",
        "F09",
        "F11",
        "F18",
        "F26"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home evidence",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/lighthouse-video-summary.json",
      "caption": "lighthouse video summary evidence",
      "findingIds": [
        "F07",
        "F09",
        "F10",
        "F11",
        "F16",
        "F18"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-video.json",
      "caption": "lighthouse video evidence",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/login-modal.png",
      "caption": "login modal evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion.json",
      "caption": "reduced motion evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots-sitemap.json",
      "caption": "robots sitemap evidence",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/search-desktop.png",
      "caption": "search desktop evidence",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/search-layout.json",
      "caption": "search layout evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers evidence",
      "findingIds": [
        "F22",
        "F26"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/video-desktop.png",
      "caption": "video desktop evidence",
      "findingIds": [
        "F20"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/video-discoverability-crawler.png",
      "caption": "video discoverability crawler evidence",
      "findingIds": [
        "F19",
        "F24"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/video-discoverability-rendered.png",
      "caption": "video discoverability rendered evidence",
      "findingIds": [
        "F19",
        "F24"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/video-discoverability.json",
      "caption": "video discoverability evidence",
      "findingIds": [
        "F19",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/video-images.json",
      "caption": "video images evidence",
      "findingIds": [
        "F17",
        "F25"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/video-layout.json",
      "caption": "video layout evidence",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/video-metadata.json",
      "caption": "video metadata evidence",
      "findingIds": [
        "F18",
        "F19",
        "F20"
      ]
    },
    {
      "type": "other",
      "path": "evidence/video-probe.json",
      "caption": "video probe evidence",
      "findingIds": [
        "F02",
        "F05",
        "F15"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/video-summary.json",
      "caption": "video summary evidence",
      "findingIds": [
        "F10",
        "F27"
      ]
    },
    {
      "type": "har",
      "path": "evidence/video.har",
      "caption": "video evidence",
      "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": "pass",
      "confidence": "high",
      "method": "Paired emulated-media screenshots and DOM inspection",
      "evidence": "Light and dark emulations produced distinct, usable complete color systems, and the mobile UI exposes a night-mode control.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Emulated reduced-motion evaluate probe",
      "evidence": "Under prefers-reduced-motion: reduce, matchMedia was true, getAnimations() returned none and scroll-behavior was auto.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core plus loaded CSS probe",
      "evidence": "axe-core marked 24 home nodes for manual color-contrast review and found a definite contrast failure on the video ad banner; no forced-colors/high-contrast adaptation was detectable in loaded CSS.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F01"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Computed CSS feature inspection",
      "evidence": "The computed CSS probe found no view-transition rules on home or video despite client-side Next.js navigation between feed and detail templates.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F02"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/video-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "medium",
      "method": "Screenshots plus computed CSS inspection",
      "evidence": "Representative home, listing and video surfaces showed no scroll-linked decorative effect; CSS inspection found no animation-timeline/scroll-timeline and the page retains native scrolling.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "Mobile screenshot, layout metrics and interactive-element geometry probe",
      "evidence": "The mobile feed uses native vertical scrolling and direct touch-sized controls without a custom gesture-only core action.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Desktop/mobile screenshots",
      "evidence": "Desktop keeps the active Home item highlighted in a stable sidebar, while mobile replaces it with a persistent bottom navigation and active item.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM semantic-control inventory",
      "evidence": "No tooltip or viewport-edge anchored overlay was part of the representative unauthenticated surfaces.",
      "pathIds": [
        "home",
        "video"
      ],
      "reason": "No anchored tooltip/popover was present to position."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Desktop/mobile screenshots and heading probe",
      "evidence": "Active navigation state, page H1 on video, selected home tab and prominent playback area provide clear orientation after navigation.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Load screenshots at desktop/mobile",
      "evidence": "No modal or full-viewport interstitial obscured content on load; the mobile install banner is bounded at the bottom and has a visible close control.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core and semantic primitive inventory",
      "evidence": "axe-core found 15 home and 5 video aria-required-children violations plus 23 aria-required-parent violations; the DOM probe found no dialog, popover, or details elements.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F03"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json",
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "Desktop/mobile screenshots",
      "evidence": "Home prioritizes feed cards and video prioritizes the player/title; chrome remains limited to navigation and task controls.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Mobile layout primitive and screenshot",
      "evidence": "At 360x800, scrollWidth, clientWidth and innerWidth were all 360 with 0 horizontal overflow; viewport meta is present.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Paired responsive screenshots and CSS feature probe",
      "evidence": "The desktop/mobile screenshots show cards changing layout, but CSS inspection found no @container or container-type usage on either home or video templates.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F04"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Programmatic focus and computed outline probe",
      "evidence": "The focus probe programmatically focused the first visible button and computed outline as none with no box-shadow on both home and video.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F05"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/video-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "First-viewport screenshots and heading/link inventory",
      "evidence": "Home clearly presents personalized videos, Shorts and categories; the detail page gives dominant placement to playback and its video title.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-route walkthrough with home DOM links and video screenshot",
      "evidence": "A video linked from the home feed loaded into a playable detail page with title, channel, follow, save, share and recommendations.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Timed listing screenshot and explicit 404-state screenshot",
      "evidence": "After a 10-second wait, the representative /explore listing showed only a centered spinner with no status text, timeout, retry, or fallback content.",
      "pathIds": [
        "explore",
        "error"
      ],
      "findingIds": [
        "F06"
      ],
      "artifacts": [
        "evidence/explore-desktop.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Trace/HAR and Lighthouse",
      "evidence": "Mobile Lighthouse measured home LCP 7.9s, CLS 0.51 and TBT 610ms; video LCP was 16.9s with TBT 900ms. The trace corroborated home LCP 2.88s under a less constrained run.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F07"
      ],
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Layout observer plus Lighthouse",
      "evidence": "The 360x800 layout observer recorded CLS 0.459, including a single 0.379 shift around 4.1s; Lighthouse independently measured 0.51.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F08"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/lighthouse-home-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Trace/HAR and Lighthouse",
      "evidence": "Home trace found two long tasks up to 150ms and 132ms TBT; Lighthouse measured 610ms TBT on home and 900ms on video.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F09"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Trace/HAR and Lighthouse",
      "evidence": "Home loaded 69 requests and 1.53MB with three VeryHigh parser stylesheets; video loaded 30.95MB in 10 seconds, while Lighthouse video LCP reached 16.9s.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F10"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/video-summary.json",
        "evidence/lighthouse-video-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Trace/HAR and Lighthouse",
      "evidence": "Lighthouse estimated 424KiB unused JavaScript on home and 362KiB on video; analytics and several application chunks each waste 40% to 84%.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F11"
      ],
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core plus DOM/evaluate probes",
      "evidence": "axe-core found unnamed buttons, an unnamed ARIA listbox, unnamed video links, 15 home required-child failures, 23 required-parent failures, and 17 nested interactive controls.",
      "pathIds": [
        "home",
        "video",
        "error"
      ],
      "findingIds": [
        "F12"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core plus DOM/evaluate probes",
      "evidence": "axe-core confirmed a serious color-contrast violation on the video banner and another on the error page, with 24 home nodes requiring review.",
      "pathIds": [
        "home",
        "video",
        "error"
      ],
      "findingIds": [
        "F13"
      ],
      "artifacts": [
        "evidence/axe-video.json",
        "evidence/axe-search.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core plus DOM/evaluate probes",
      "evidence": "Home has no H1; axe found missing main landmark on the error template and semantic list/listitem defects, while focused primary buttons computed no visible outline.",
      "pathIds": [
        "home",
        "video",
        "error"
      ],
      "findingIds": [
        "F14"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-search.json",
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "Visual screenshot review",
      "evidence": "Persian body and headings remain unclipped and readable in desktop, video and 360px screenshots with clear line spacing and hierarchy.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core plus DOM/evaluate probes",
      "evidence": "axe flagged video-caption as critical/manual on 12 home previews and the played video; the video element had zero caption/subtitle tracks. The error template also disabled text scaling according to axe.",
      "pathIds": [
        "home",
        "video",
        "error"
      ],
      "findingIds": [
        "F15"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json",
        "evidence/axe-search.json",
        "evidence/video-probe.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse Runtime/console audit",
      "evidence": "Lighthouse captured a console.error TimeoutError during video API fetching from the client bundle.",
      "pathIds": [
        "video"
      ],
      "findingIds": [
        "F16"
      ],
      "artifacts": [
        "evidence/lighthouse-video-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "DOM, images primitive and Lighthouse",
      "evidence": "The images primitive found all three video images missing width/height, two below-fold images not lazy, and legacy JPG delivery; home also had an undimensioned GIF.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F17"
      ],
      "artifacts": [
        "evidence/video-images.json",
        "evidence/home-images.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse best-practices audits and permission-state probe",
      "evidence": "Lighthouse found BFCache eligibility, valid image aspect ratios and crawlable anchors; no permission prompt appeared on load.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse SEO and direct head metadata probe",
      "evidence": "Lighthouse passed document titles but failed meta-description on both home and video; direct probes returned no description.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F18"
      ],
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json",
        "evidence/video-metadata.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, DOM links, layout and robots/sitemap probe",
      "evidence": "Lighthouse passed crawlable anchors, descriptive link text and robots.txt; viewport meta is present and robots exposes a sitemap.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Raw HTML discoverability comparison and metadata probe",
      "evidence": "Discoverability fetched HTTP 200 but found 0% video content coverage, no raw title/H1, and crawler screenshots without the rendered entity; direct metadata probes found no canonical.",
      "pathIds": [
        "video"
      ],
      "findingIds": [
        "F19"
      ],
      "artifacts": [
        "evidence/video-discoverability.json",
        "evidence/video-discoverability-rendered.png",
        "evidence/video-discoverability-crawler.png",
        "evidence/video-metadata.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "JSON-LD/Open Graph/Twitter metadata probe",
      "evidence": "The representative video probe found no JSON-LD, Open Graph, or Twitter metadata despite a visible title, channel, playback media and engagement details.",
      "pathIds": [
        "video"
      ],
      "findingIds": [
        "F20"
      ],
      "artifacts": [
        "evidence/video-metadata.json",
        "evidence/video-desktop.png"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers and cookies primitives",
      "evidence": "Headers showed no Content-Security-Policy; cookie audit found seven flagged cookies, including insecure _ga cookies with SameSite=None and 400-day expiry.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F21"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Trackers primitive and HAR summary",
      "evidence": "Tracker capture found 11 third-party origins and Google Tag Manager/Analytics, Microsoft Clarity and Yandex; HAR attributed 28 requests and 676KB to third parties on home.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F22"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "medium",
      "method": "Permission-state and public-flow observation",
      "evidence": "Notification permission remained default and no geolocation/notification prompt appeared on load; authentication was not required for the primary viewing flow.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Security headers primitive",
      "evidence": "HSTS, nosniff, SAMEORIGIN and Referrer-Policy were present, but CSP and Permissions-Policy were absent.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F23"
      ],
      "artifacts": [
        "evidence/headers.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Raw server HTML versus rendered-DOM discoverability comparison",
      "evidence": "The video discoverability comparison found 0% rendered-content coverage in raw HTML: raw text had no content tokens and omitted title and H1, while the rendered page had the full video entity.",
      "pathIds": [
        "video"
      ],
      "findingIds": [
        "F24"
      ],
      "artifacts": [
        "evidence/video-discoverability.json",
        "evidence/video-discoverability-crawler.png",
        "evidence/video-discoverability-rendered.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "Screenshots and layout metrics",
      "evidence": "Video recommendations, menus and mobile navigation remained within viewport bounds with no horizontal overflow; the dedicated error route rendered a stable state.",
      "pathIds": [
        "home",
        "video",
        "error"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "pass",
      "confidence": "medium",
      "method": "Manifest/service-worker evaluate probe",
      "evidence": "The document links a web app manifest and navigator.serviceWorker reported one active registration.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "medium",
      "method": "404 screenshot and axe/DOM state inspection",
      "evidence": "The invalid route rendered an explicit bilingual 404 state while preserving global search/navigation rather than a blank shell.",
      "pathIds": [
        "error"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/CSS probe and screenshots",
      "evidence": "Both templates declare html lang=fa and dir=rtl, render RTL correctly, and loaded CSS contains logical inline/block properties.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "medium",
      "method": "Rendered screenshot and DOM text review",
      "evidence": "Visible counts, dates and relative times are localized into the Persian-language RTL interface instead of exposing raw machine timestamps.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM/content inventory",
      "evidence": "No scheduling, event-time, recurring-time or cross-zone workflow was present on the representative public video surfaces.",
      "pathIds": [
        "home",
        "video"
      ],
      "reason": "The audited paths do not expose time-zone-sensitive event data."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "medium",
      "method": "Load and video-flow screenshot review",
      "evidence": "Core viewing works without login; sign-in is offered rather than forced, and no consent wall, confirmshaming, disguised ad control or forced continuity appeared.",
      "pathIds": [
        "home",
        "video"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Form inventory reported zero home forms",
      "evidence": "No user-submitted form with validation was part of the representative public viewing journey.",
      "pathIds": [
        "home"
      ],
      "reason": "No validation-bearing form was exercised."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM/input probe",
      "evidence": "The search field has a visible Persian purpose and aria-label; it does not obstruct paste or force authentication for browsing.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Surface and link inventory",
      "evidence": "No checkout, subscription purchase, consent decision, or account-management flow was present in the scoped unauthenticated journey.",
      "pathIds": [
        "home",
        "video"
      ],
      "reason": "No commercial or account-management commitment was in scope."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Images, HAR, tracker and Lighthouse evidence",
      "evidence": "Image inspection found no dimensions or srcset on all tested images, two legacy JPGs on video, and a legacy GIF on home.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F25"
      ],
      "artifacts": [
        "evidence/video-images.json",
        "evidence/home-images.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Images, HAR, tracker and Lighthouse evidence",
      "evidence": "Home transferred 319KB from Google tag scripts plus 91KB Yandex and 26KB Clarity, while Lighthouse found large unused portions of those scripts.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F26"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Images, HAR, tracker and Lighthouse evidence",
      "evidence": "The video page transferred 30.95MB in 10 seconds, including 29.65MB of 720p segments, while home loaded multiple tracker suites before user interaction.",
      "pathIds": [
        "home",
        "video"
      ],
      "findingIds": [
        "F27"
      ],
      "artifacts": [
        "evidence/video-summary.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM/source capability probe",
      "evidence": "No declared agent-facing intent or transactional agent surface was present; public crawler visibility is judged separately under discoverability/resilience.",
      "pathIds": [
        "home",
        "video"
      ],
      "reason": "Emerging WebMCP capability is not a declared surface for this public video audit."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Capability/source probe",
      "evidence": "The representative browsing and playback tasks do not require an on-device language-model or summarizer feature.",
      "pathIds": [
        "home",
        "video"
      ],
      "reason": "On-device inference is not necessary for the scoped core task."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Baseline and post-interaction heap summaries",
      "evidence": "After ten full-feed scroll-down/up cycles, heap rose from 34,547,314 to 34,942,215 self-size bytes (about 1.1%) and nodes from 615,675 to 619,632, with no unbounded jump.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "Heap summary totals",
      "evidence": "Heap summaries remained near 35MB self-size and about 620k heap nodes for a media feed, proportionate to the rendered long feed.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Heap summary constructor and total comparison",
      "evidence": "The before/after heap constructor summaries did not show a material Detached* population increase, while total growth after ten cycles was about 1.1%.",
      "pathIds": [
        "home"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07",
        "F08",
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F16",
        "F17"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F18",
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21",
        "F22",
        "F23"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F25",
        "F26",
        "F27"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "Emerging WebMCP capability is not a declared surface for this public video audit. On-device inference is not necessary for the scoped core task."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Public home/feed archetype at desktop and 360px mobile; covers discovery, feed browsing, theme, responsive layout and repeated scrolling.",
      "url": "https://www.aparat.com/home",
      "conditions": [
        "desktop 1440x900",
        "mobile 360x800",
        "prefers-color-scheme: light",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "keyboard focus",
        "repeated scroll x10"
      ],
      "result": "issues"
    },
    {
      "id": "video",
      "description": "Representative video-detail and playback journey reached from the home feed; covers the core watch task, media, recommendations and metadata.",
      "url": "https://www.aparat.com/v/sxsxif1",
      "conditions": [
        "desktop 1440x900",
        "axe-core",
        "Lighthouse",
        "10-second HAR capture"
      ],
      "result": "issues"
    },
    {
      "id": "explore",
      "description": "Channel/listing archetype linked from primary navigation; tested for loading and recovery behavior.",
      "url": "https://www.aparat.com/explore",
      "conditions": [
        "desktop 1440x900",
        "10-second wait"
      ],
      "result": "issues"
    },
    {
      "id": "error",
      "description": "Invalid result route used as the representative not-found/recovery state, not as a valid search-results test.",
      "url": "https://www.aparat.com/result/%D9%81%D9%88%D8%AA%D8%A8%D8%A7%D9%84",
      "conditions": [
        "desktop 1440x900",
        "axe-core"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "High-contrast robustness and normal contrast have unresolved failures",
      "evidence": "axe-core marked 24 home nodes for manual color-contrast review and found a definite contrast failure on the video ad banner; no forced-colors/high-contrast adaptation was detectable in loaded CSS.",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json"
      ],
      "suggestedFix": "Define forced-colors/prefers-contrast states, preserve system colors for controls, and fix the confirmed low-contrast banner text.",
      "effort": "small"
    },
    {
      "id": "F02",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "severity": "low",
      "confidence": "high",
      "summary": "Route and state changes do not use View Transitions",
      "evidence": "The computed CSS probe found no view-transition rules on home or video despite client-side Next.js navigation between feed and detail templates.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/video-probe.json"
      ],
      "suggestedFix": "Add same-document View Transitions around client-side route/state changes, with a reduced-motion fallback.",
      "effort": "medium"
    },
    {
      "id": "F03",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "severity": "medium",
      "confidence": "high",
      "summary": "Custom rich controls have broken ARIA structures instead of robust platform semantics",
      "evidence": "axe-core found 15 home and 5 video aria-required-children violations plus 23 aria-required-parent violations; the DOM probe found no dialog, popover, or details elements.",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json",
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Replace transient menus/disclosures with popover, dialog, or details as appropriate and preserve the required ARIA ownership structure for composite widgets.",
      "effort": "medium"
    },
    {
      "id": "F04",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience",
      "severity": "low",
      "confidence": "high",
      "summary": "Responsive cards rely on viewport layout without container-level adaptation",
      "evidence": "The desktop/mobile screenshots show cards changing layout, but CSS inspection found no @container or container-type usage on either home or video templates.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Give reusable feed and recommendation components containment and size-aware @container rules where they appear in different sidebars/grids.",
      "effort": "medium"
    },
    {
      "id": "F05",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard focus is not visibly indicated on primary controls",
      "evidence": "The focus probe programmatically focused the first visible button and computed outline as none with no box-shadow on both home and video.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/video-probe.json"
      ],
      "suggestedFix": "Add a strong :focus-visible treatment with sufficient contrast and preserve it for every button, link, and composite control.",
      "effort": "small"
    },
    {
      "id": "F06",
      "pathId": "explore",
      "url": "https://www.aparat.com/explore",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "severity": "high",
      "confidence": "high",
      "summary": "The channel explore route remains an unlabeled spinner",
      "evidence": "After a 10-second wait, the representative /explore listing showed only a centered spinner with no status text, timeout, retry, or fallback content.",
      "artifacts": [
        "evidence/explore-desktop.png"
      ],
      "suggestedFix": "Expose an accessible loading status, time out failed loads, and offer retry/back/recommended-channel recovery while preserving already available navigation.",
      "effort": "medium"
    },
    {
      "id": "F07",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Core Web Vitals are poor on key templates",
      "evidence": "Mobile Lighthouse measured home LCP 7.9s, CLS 0.51 and TBT 610ms; video LCP was 16.9s with TBT 900ms. The trace corroborated home LCP 2.88s under a less constrained run.",
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Profile LCP discovery and render dependencies, reserve feed geometry, and prioritize only the critical visual and interaction work.",
      "effort": "large"
    },
    {
      "id": "F08",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "guidanceCategory": "user-experience",
      "severity": "high",
      "confidence": "high",
      "summary": "The home feed shifts substantially while loading",
      "evidence": "The 360x800 layout observer recorded CLS 0.459, including a single 0.379 shift around 4.1s; Lighthouse independently measured 0.51.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/lighthouse-home-summary.json"
      ],
      "suggestedFix": "Reserve intrinsic space for feed modules, images, banners and personalized sections before their data arrives.",
      "effort": "medium"
    },
    {
      "id": "F09",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "guidanceId": "break-up-long-tasks",
      "guidanceCategory": "performance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Long tasks delay interactivity",
      "evidence": "Home trace found two long tasks up to 150ms and 132ms TBT; Lighthouse measured 610ms TBT on home and 900ms on video.",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json"
      ],
      "suggestedFix": "Break long initialization work into prioritized tasks and defer analytics and offscreen module hydration.",
      "effort": "large"
    },
    {
      "id": "F10",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "guidanceCategory": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Resource delivery delays critical content and over-fetches media",
      "evidence": "Home loaded 69 requests and 1.53MB with three VeryHigh parser stylesheets; video loaded 30.95MB in 10 seconds, while Lighthouse video LCP reached 16.9s.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/video-summary.json",
        "evidence/lighthouse-video-summary.json"
      ],
      "suggestedFix": "Shorten critical CSS/dependency chains, preload the actual LCP asset, and make video segment fetching adaptive to playback state and buffer need.",
      "effort": "large"
    },
    {
      "id": "F11",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Hundreds of KiB of JavaScript are unused during initial use",
      "evidence": "Lighthouse estimated 424KiB unused JavaScript on home and 362KiB on video; analytics and several application chunks each waste 40% to 84%.",
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Code-split by template and interaction, load analytics after consent/idle, and remove duplicate tag-manager and unused vendor paths.",
      "effort": "large"
    },
    {
      "id": "F12",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Critical names, roles and widget relationships fail across templates",
      "evidence": "axe-core found unnamed buttons, an unnamed ARIA listbox, unnamed video links, 15 home required-child failures, 23 required-parent failures, and 17 nested interactive controls.",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json"
      ],
      "suggestedFix": "Give every control a programmatic name, repair composite widget ownership, and avoid nesting controls inside links/cards.",
      "effort": "medium"
    },
    {
      "id": "F13",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Some text fails WCAG AA contrast",
      "evidence": "axe-core confirmed a serious color-contrast violation on the video banner and another on the error page, with 24 home nodes requiring review.",
      "artifacts": [
        "evidence/axe-video.json",
        "evidence/axe-search.json"
      ],
      "suggestedFix": "Adjust foreground/surface tokens to meet WCAG AA in both themes and test dynamic/ad content too.",
      "effort": "small"
    },
    {
      "id": "F14",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Heading, landmark and focus structure is inconsistent",
      "evidence": "Home has no H1; axe found missing main landmark on the error template and semantic list/listitem defects, while focused primary buttons computed no visible outline.",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-search.json",
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Use one descriptive H1 per template, consistent main/nav landmarks, valid list structures, and a visible logical focus sequence.",
      "effort": "medium"
    },
    {
      "id": "F15",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Media equivalents and zoom support are incomplete",
      "evidence": "axe flagged video-caption as critical/manual on 12 home previews and the played video; the video element had zero caption/subtitle tracks. The error template also disabled text scaling according to axe.",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-video.json",
        "evidence/axe-search.json",
        "evidence/video-probe.json"
      ],
      "suggestedFix": "Provide accurate caption/subtitle tracks and remove any maximum-scale/user-scalable restriction from all template viewport declarations.",
      "effort": "large"
    },
    {
      "id": "F16",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "stabilize-reactive-state",
      "guidanceCategory": "user-experience",
      "severity": "medium",
      "confidence": "high",
      "summary": "The primary video page logs a client-side API timeout",
      "evidence": "Lighthouse captured a console.error TimeoutError during video API fetching from the client bundle.",
      "artifacts": [
        "evidence/lighthouse-video-summary.json"
      ],
      "suggestedFix": "Handle expected timeout paths without console errors, show a recoverable UI state, and add bounded retry/telemetry.",
      "effort": "small"
    },
    {
      "id": "F17",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Images lack intrinsic dimensions and responsive delivery hints",
      "evidence": "The images primitive found all three video images missing width/height, two below-fold images not lazy, and legacy JPG delivery; home also had an undimensioned GIF.",
      "artifacts": [
        "evidence/video-images.json",
        "evidence/home-images.json"
      ],
      "suggestedFix": "Set width/height or aspect-ratio, lazy-load below-fold images, and provide srcset/sizes with modern formats.",
      "effort": "medium"
    },
    {
      "id": "F18",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Public templates omit meta descriptions",
      "evidence": "Lighthouse passed document titles but failed meta-description on both home and video; direct probes returned no description.",
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-video-summary.json",
        "evidence/video-metadata.json"
      ],
      "suggestedFix": "Add unique descriptions that summarize each template and video without keyword stuffing.",
      "effort": "small"
    },
    {
      "id": "F19",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Rendered video content is absent from raw HTML and lacks canonical signals",
      "evidence": "Discoverability fetched HTTP 200 but found 0% video content coverage, no raw title/H1, and crawler screenshots without the rendered entity; direct metadata probes found no canonical.",
      "artifacts": [
        "evidence/video-discoverability.json",
        "evidence/video-discoverability-rendered.png",
        "evidence/video-discoverability-crawler.png",
        "evidence/video-metadata.json"
      ],
      "suggestedFix": "Server-render the visible video title/entity and canonical URL, and keep robots/sitemap signals consistent with those canonical pages.",
      "effort": "large"
    },
    {
      "id": "F20",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Video pages expose no structured or social-preview metadata",
      "evidence": "The representative video probe found no JSON-LD, Open Graph, or Twitter metadata despite a visible title, channel, playback media and engagement details.",
      "artifacts": [
        "evidence/video-metadata.json",
        "evidence/video-desktop.png"
      ],
      "suggestedFix": "Emit accurate VideoObject JSON-LD plus Open Graph/Twitter video metadata matching the visible page.",
      "effort": "medium"
    },
    {
      "id": "F21",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Transport is HTTPS but CSP and cookie posture are incomplete",
      "evidence": "Headers showed no Content-Security-Policy; cookie audit found seven flagged cookies, including insecure _ga cookies with SameSite=None and 400-day expiry.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy a nonce/hash-based CSP and set Secure plus appropriate Lax/Strict SameSite and proportionate lifetimes on first-party analytics cookies.",
      "effort": "medium"
    },
    {
      "id": "F22",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "severity": "high",
      "confidence": "high",
      "summary": "The public home page starts a broad tracking stack by default",
      "evidence": "Tracker capture found 11 third-party origins and Google Tag Manager/Analytics, Microsoft Clarity and Yandex; HAR attributed 28 requests and 676KB to third parties on home.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Minimize vendors and event scope, gate non-essential trackers behind informed consent, batch events, and avoid full-session analytics by default.",
      "effort": "large"
    },
    {
      "id": "F23",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "severity": "medium",
      "confidence": "high",
      "summary": "Browser-enforced policy coverage is incomplete",
      "evidence": "HSTS, nosniff, SAMEORIGIN and Referrer-Policy were present, but CSP and Permissions-Policy were absent.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Add a restrictive CSP/frame-ancestors policy and a Permissions-Policy that disables unneeded capabilities; assess Trusted Types for the client app.",
      "effort": "medium"
    },
    {
      "id": "F24",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "stabilize-reactive-state",
      "guidanceCategory": "user-experience",
      "severity": "high",
      "confidence": "high",
      "summary": "Core public content requires JavaScript",
      "evidence": "The video discoverability comparison found 0% rendered-content coverage in raw HTML: raw text had no content tokens and omitted title and H1, while the rendered page had the full video entity.",
      "artifacts": [
        "evidence/video-discoverability.json",
        "evidence/video-discoverability-crawler.png",
        "evidence/video-discoverability-rendered.png"
      ],
      "suggestedFix": "Server-render core feed/video text and real links so browsing and entity understanding work before hydration and without JavaScript.",
      "effort": "large"
    },
    {
      "id": "F25",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "user-experience",
      "severity": "medium",
      "confidence": "high",
      "summary": "Asset delivery misses basic responsive-image optimizations",
      "evidence": "Image inspection found no dimensions or srcset on all tested images, two legacy JPGs on video, and a legacy GIF on home.",
      "artifacts": [
        "evidence/video-images.json",
        "evidence/home-images.json"
      ],
      "suggestedFix": "Serve AVIF/WebP where effective, provide srcset/sizes, reserve dimensions, and avoid GIF for animated UI art when video/animated WebP is lighter.",
      "effort": "medium"
    },
    {
      "id": "F26",
      "pathId": "home",
      "url": "https://www.aparat.com/home",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Multiple analytics systems consume bytes and background work",
      "evidence": "Home transferred 319KB from Google tag scripts plus 91KB Yandex and 26KB Clarity, while Lighthouse found large unused portions of those scripts.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Remove redundant analytics, defer non-essential collection until idle/consent, and batch the minimum events needed.",
      "effort": "medium"
    },
    {
      "id": "F27",
      "pathId": "video",
      "url": "https://www.aparat.com/v/sxsxif1",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Video and third-party budgets are disproportionate to the initial state",
      "evidence": "The video page transferred 30.95MB in 10 seconds, including 29.65MB of 720p segments, while home loaded multiple tracker suites before user interaction.",
      "artifacts": [
        "evidence/video-summary.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Use conservative adaptive startup quality and bounded buffering, pause segment fetch when not needed, and enforce vendor/media transfer budgets.",
      "effort": "large"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Stabilize and accelerate feed/video loading",
      "priority": 1,
      "findingIds": [
        "F07",
        "F08",
        "F09",
        "F10",
        "F11"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Restore semantic accessibility, focus, captions and contrast",
      "priority": 2,
      "findingIds": [
        "F01",
        "F03",
        "F05",
        "F12",
        "F13",
        "F14",
        "F15"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Server-render and describe public video entities",
      "priority": 3,
      "findingIds": [
        "F18",
        "F19",
        "F20",
        "F24"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Reduce tracking and harden browser policies",
      "priority": 4,
      "findingIds": [
        "F21",
        "F22",
        "F23",
        "F26"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Bound video/media transfer and optimize images",
      "priority": 5,
      "findingIds": [
        "F17",
        "F25",
        "F27"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Add recoverable loading/error states",
      "priority": 6,
      "findingIds": [
        "F06",
        "F16"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Modernize responsive and route interactions",
      "priority": 7,
      "findingIds": [
        "F02",
        "F04"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 4,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-20T16-16-49-322Z"
}
