Manifest position 65 · CrUX rank bucket 1000
https://open.spotify.com
Coverage complete
Atomic coverage complete across 58 checks and four representative public templates plus login and error recovery states.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | Dark and default screenshots are byte-identical (480,889 bytes), and the CSS probe found zero prefers-color-scheme, color-scheme, or light-dark() uses. F01 medium: Theme is fixed dark instead of following the user’s colour-scheme preference. |
respect-user-preferencesrespects-reduced-motion | issues | high | Under prefers-reduced-motion: reduce, the probe still found 34 running animations and transitions up to 1s; CSS inspection found no reduced-motion media query. F02 medium: Reduced-motion preference does not suppress non-essential motion. |
respect-user-preferencesrespects-contrast | pass | medium | Lighthouse contrast audit passed and the prefers-contrast screenshot remained legible. |
implement-natural-interactionsview-transitions | issues | medium | The CSS platform probe found zero view-transition rules; the album play video shows an abrupt state update rather than a spatial transition. F03 low: State and route changes do not use View Transitions. |
implement-natural-interactionsscroll-driven-animations | not-applicable | high | No scroll-linked storytelling, parallax, or reveal interaction exists on the representative anonymous routes. |
implement-natural-interactionsphysical-gestures | not-applicable | high | No custom gesture-driven interaction exists on the tested desktop/mobile anonymous surfaces. |
provide-guided-navigationscroll-state-aware-chrome | pass | medium | Persistent global navigation and player chrome remain visible across long listing/detail templates. |
provide-guided-navigationanchored-positioning | not-applicable | high | No tooltip, popover, or menu overlay requiring anchored positioning appeared in the tested paths. |
provide-guided-navigationdirects-attention | pass | medium | Section and detail routes use clear headings, selected home state, and stable content regions. |
maximize-content-reduce-noiseno-intrusive-interruptions | issues | high | Desktop screenshots show the banner covering roughly the lower third; at 360x800 it consumes nearly the entire viewport and hides the player. F04 high: The consent banner obscures core content on every first load. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | DOM recon found zero dialog, popover, or details elements while the screenshot shows a modal-like consent surface. F05 medium: The consent overlay is custom chrome rather than a semantic modal primitive. |
maximize-content-reduce-noisereduced-chrome | pass | medium | After consent rejection, the album artwork, title, controls, and track list dominate the main pane. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | issues | high | Layout measured scrollWidth/innerWidth 801px against a 360px visual viewport on both home and album; the mobile screenshot clips the consent actions off-screen. F06 critical: The first-load experience overflows by 441px on a 360px viewport. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | high | The same 801px consent layout is retained in a 360px visual viewport, and CSS inspection found no container queries. F07 high: The consent component does not adapt to its available container. |
adapt-to-the-form-factorinput-modality-aware | issues | high | The active probe found numerous 17–22px-tall links and computed outlines with style none for sampled controls; 210 focusable elements create a dense keyboard path. F08 medium: Many controls have undersized hit areas and focus indication is unclear. |
support-core-task-successclear-purpose-and-primary-action | pass | medium | Home, section, podcast, and album views have explicit headings and prominent browse/play actions. |
support-core-task-successprimary-flow-completion | pass | medium | Rejecting consent and activating album playback produced the preview player and retained album context. |
support-core-task-successclear-system-state-and-recovery | pass | medium | Playback state is shown persistently, and the tested missing route provides Page not found, Home, and Help recovery actions. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP 25.4s and CLS 0.434; the independent mobile layout observer measured CLS 0.242. F09 critical: Load performance and visual stability are far outside good ranges. |
be-fast-and-stablevisual-stability | issues | high | The mobile layout observer recorded seven shifts totalling 0.242, including a single 0.144 shift; all 56 inspected images lacked width/height attributes. F10 high: Late-loading UI causes substantial layout shift. |
be-fast-and-stableefficient-main-thread | issues | high | Trace summary recorded seven long tasks, a 340ms longest task, and 504ms total blocking time. F11 high: The main thread is blocked by long tasks. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR captured 167 requests and 4.77MB transferred, including 2.50MB script and 0.96MB font; the main web-player bundle alone was 1.08MB. F12 high: Critical delivery is heavy and delays visible content. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimated 630KiB unused JavaScript and 68KiB unused CSS, including 76% waste in the mobile player bundle. F13 high: Large amounts of unused JS and CSS ship on first load. |
be-inclusivenames-roles-labels | pass | medium | Lighthouse image-alt and accessible-name audits passed; controls sampled in the DOM expose labels or labelledby relationships. |
be-inclusivesufficient-contrast | pass | medium | Lighthouse colour contrast audit passed. |
be-inclusivestructure-and-focus | issues | high | Lighthouse found an H4 “Company” heading that skips levels; the focus probe returned outline style none on sampled controls and a 210-element tab sequence. F14 medium: Heading hierarchy and keyboard focus presentation need correction. |
be-inclusivelegible-text | pass | medium | Representative desktop views use readable type, clear spacing, and no observed clipping outside the separately reported narrow consent defect. |
be-inclusivezoom-reflow-targets-and-media | issues | high | The rendered DOM declares maximum-scale=1, while 360px layout evidence overflows by 441px and clips consent actions. F15 critical: The page cannot reflow at a narrow viewport and declares maximum-scale=1. |
follow-best-practicesno-console-errors | issues | high | Lighthouse captured minified React error #421 from vendor~mobile-web-player.a51ad297.js. F16 medium: The page logs an uncaught React runtime error. |
follow-best-practicessound-document-and-assets | issues | high | The image primitive found 56/56 images without width/height, 54 without srcset, and 13 oversized by its 2x display threshold. F17 medium: Image asset markup does not reserve dimensions or offer responsive candidates. |
follow-best-practicesbrowser-platform-hygiene | pass | medium | Lighthouse reported no DevTools inspector issues, no BFCache blocker, no permission prompt on load, and functioning source-map declarations. |
be-discoverabletitle-and-description | pass | medium | Rendered DOM contains a descriptive Spotify Web Player title and a digital music service meta description. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | Lighthouse identified “More information” as non-descriptive, although anchors and robots are otherwise crawlable. F18 low: One consent link uses generic link text. |
be-discoverablecanonical-and-indexing-signals | pass | medium | Main response is 200; canonical points to the homepage; robots allows normal indexing and declares sitemap files. |
be-discoverablestructured-and-shareable-metadata | pass | medium | Open Graph site, title, description, URL, type, and image metadata accurately describe the visible homepage. |
be-private-and-securesecure-transport-and-headers | issues | high | CSP permits unsafe-eval; Referrer-Policy and Permissions-Policy are absent; OptanonConsent is not Secure and three cookies use SameSite=None. F19 high: Security headers and cookie flags are weaker than the app’s risk profile warrants. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | Tracker evidence found 18 third-party origins and known Sentry/GTM trackers; HAR attributed 164/167 requests and 4.76MB to non-main origins. F20 high: The anonymous landing page has a broad third-party and tracking footprint. |
be-private-and-securein-context-permissions-and-modern-auth | pass | medium | Lighthouse found no geolocation/notification request on load; login uses passwordless email continuation plus Google, Facebook, and Apple options with autocomplete=username. |
be-private-and-securedefensive-browser-policies | issues | high | Headers evidence found no Referrer-Policy or Permissions-Policy and a CSP weakened by unsafe-eval; frame-ancestors and HSTS are present. F21 medium: Defensive browser policies are incomplete. |
be-resilientprogressive-enhancement | issues | high | Discoverability measured only 36% raw/rendered content coverage; the crawler screenshot is blank despite a 200 response. F22 high: Most catalogue content disappears without JavaScript. |
be-resilientresilient-runtime-behaviour | issues | high | At 360px the consent controls extend 441px beyond the visual viewport, preventing reliable access to all choices. F23 high: The consent runtime state is cut off on narrow screens. |
be-resilientoffline-and-installable | pass | medium | A valid standalone Spotify manifest and active scoped service worker were observed. |
be-resilientnetwork-and-http-failure-states | pass | medium | A missing route renders an explicit error with Home and Help recovery actions rather than a blank shell. |
be-internationalisedlang-dir-and-logical-properties | issues | high | The page correctly declares lang=en-GB and dir=ltr, but the CSS probe found 163 physical margin/padding declarations and zero logical-property declarations in accessible stylesheets. F24 medium: The main web player relies heavily on physical left/right CSS. |
be-internationalisedlocale-aware-data | pass | medium | The app loads an en-GB locale bundle and presents durations consistently; no hand-formatted dates, prices, or currencies appeared on tested paths. |
be-internationalisedtime-zone-correctness | not-applicable | high | The representative anonymous catalogue views show track durations but no events, dates, schedules, or time-zone-sensitive data. |
be-trustworthyno-dark-patterns | pass | medium | Consent presents Accept cookies and Reject all with equal visual weight, and rejects successfully without hiding content. |
be-trustworthyhumane-error-handling | pass | medium | The login markup includes explicit labels, aria-invalid state, passwordless flow, and actionable translated validation/retry messages. |
be-trustworthytrustworthy-input-assistance | pass | medium | Login email uses autocomplete=username and the anonymous search field has an accessible label. |
be-trustworthysafe-commercial-and-account-flows | pass | medium | The tested sign-in entry is proportionate and offers passwordless and federated methods; no purchase commitment occurs in the anonymous playback flow. |
be-sustainableoptimised-assets | issues | high | Image evidence found 54/56 images without responsive sources and 13 oversized; HAR transferred 0.84MB images and 0.96MB fonts. F25 high: Artwork and fonts are not delivered at an efficient responsive budget. |
be-sustainableno-wasteful-work | issues | high | The page transfers 2.50MB of scripts, Lighthouse estimates 630KiB unused JS, and the trace records 504ms blocking time before a user plays anything. F26 high: The first load performs substantial avoidable work. |
be-sustainablethird-party-and-media-budget | issues | high | HAR classified 164/167 requests and 4.76MB as outside the main origin, with recaptcha, GTM, and consent tooling among the largest scripts. F27 high: Third-party code dominates the initial resource budget. |
be-agent-readystructured-agent-capabilities | not-applicable | high | No declared agent-facing transactional surface was found; Spotify permits user-fetch/search agents but intentionally blocks training crawlers. |
be-agent-readyon-device-inference | not-applicable | high | No summarisation, translation, or generative feature is part of the representative playback/browse journey. |
be-memory-efficientno-leak-under-repeated-interaction | pass | medium | After ten search input/clear cycles, node count fell by 7,745 and heap self-size changed only +131,199 bytes (0.18%), with no monotonic retained-growth signal. |
be-memory-efficientbounded-footprint | pass | medium | Heap self-size was about 74MB for this media SPA and remained stable across the repeated search probe. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | medium | No Detached* constructor appeared in either top-constructor summary; object, array, and closure populations declined after the repeated interaction. |
Provenance
Canonical report: results/atomic/reports/0065-open_spotify_com.json
Report SHA-256: 4feb5fe8ecd9f4abc9aae955e6be8a926ad693c67e6eefc0d49cb367d8cc2384
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/open_spotify_com/2026-07-18T04-14-13-188Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/open_spotify_com/2026-07-18T04-14-13-188Z
Catalog SHA-256: sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7
Raw screenshots, HARs, traces, heaps, and other browser artifacts are retained at the local evidence root and intentionally are not committed. Artifact paths in the canonical report are relative to that root.