← Back to the atlas
open.spotify.com

Spotify

sightmap atlas add spotify

Spotify's web player mapped signed in — track, album, playlist, artist, home, search and the 404, with the playback chrome around them.

media
Spotify screenshot 1
FIG. 01home
Spotify screenshot 2
FIG. 02artist
Spotify screenshot 3
FIG. 03track

Views

ViewRouteComponentsRequests
Home/80
SearchResults/search/:query50
NotFound/**10
AlbumDetail/album/:albumId120
PlaylistDetail/playlist/:playlistId60
ArtistDetail/artist/:artistId60
TrackDetail/track/:trackId80

Spotify

Seven views — track, album, playlist, artist, home, search, and the 404. 59 components, 4 requests.

Why the map matters

The web player lies about where it is. Its document title is the currently playing track, not the page, and the main landmark keeps the previous album's label after a client-side navigation. Both of the obvious ways to ask "what am I looking at?" return stale answers that look current.

Album, playlist, artist and track look interchangeable and aren't — each has a different container and artist has none at all. And every view is fetched through one POST endpoint, so the URL never says which page issued a call.

Try it

sightmap atlas add spotify

Sign in first — the player renders the same chrome either way, but the signed-in build is the one worth delegating to.

What bites

  • The document title is the playing track, not the page. Read [data-testid="entityTitle"] instead.
  • main's aria-label is stale by design after a client-side navigation.
  • Test the container, not the header. album-page, playlist-page and track-page identify three routes; artist has none of them.
  • [data-testid="track"] is never a track. It is an icon in the playback bar.
  • Signed out, the track route is a different build entirely and matches nothing in this corpus — which is one way to notice a lapsed session.
  • Album artwork is not in the album. Every cover-art-image on the page belongs to the playback bar, so reaching for it returns the playing track.
  • One POST endpoint serves every view, with the operation named in the body — request-based view detection does not work here.
  • The 404 carries none of the chrome, which is what identifies it.

Three screenshots, captured signed in. Only the author can re-verify this entry — CI cannot, and neither can a reviewer.