• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

sgobotta / live_dj / 17d9ae4a4a9f6b318a251cb06a1b3d5f98d8543d
68%

Build:
DEFAULT BRANCH: dev
Ran 16 Aug 2026 03:09AM UTC
Jobs 1
Files 82
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 Aug 2026 03:08AM UTC coverage: 67.564% (-0.07%) from 67.63%
17d9ae4a4a9f6b318a251cb06a1b3d5f98d8543d

push

github

web-flow
Improve playlist keyboard focus and navigation (#142)

* Fix missing focus outline on the currently-playing playlist track

The current track has no rounded play button, so ignite-ing its bare
thumbnail on focus (as arrow-key nav did via legacy ring-brand classes)
looked wrong. Move the focus target from that link to the row itself
and give it a thin outline instead.

outline-1/outline alone only read Tailwind's --tw-outline-style var
without setting it, so the sibling focus:outline-none silently won and
no outline ever rendered; switch to outline-solid, which resets the
variable the same way the #lists container's outline-dotted already does.

* Keep focus in the playlist after Enter plays a track

Playing a track swaps its markup between the play-button and
now-playing branches in list_component.ex, so the node that held
focus gets removed from the DOM and the browser drops focus to
<body>, breaking arrow-key navigation right after Enter.

Track the last-focused track by data-id and, if an update leaves
focus stranded on <body>, reclaim it on that track's new nav target
so users can keep navigating the playlist by keyboard.

* Restore playlist focus position after tabbing away and back

#lists is the single Tab stop wrapping every track (tabindex="-1"),
so leaving and returning by Tab/Shift+Tab always lands browser focus
on the bare container, forcing users to re-navigate from scratch.

Track the last-focused track by data-id and, when the container
itself receives focus from outside the list, redirect to that track
instead — so tabbing back into the playlist resumes where the user
left off.

The container is also the nearest tabindex="0" ancestor of every
track, so Shift+Tab out of a focused track passes through #lists as
its natural previous stop too. Gate the redirect on relatedTarget
being outside the list, otherwise that pass-through gets hijacked
and Shift+Tab can never actually leave the playlist backward.

* Skip the playlist container on Sh... (continued)

1381 of 2044 relevant lines covered (67.56%)

29.67 hits per line

Coverage Regressions

Lines Coverage ∆ File
18
20.59
-1.29% //lib/livedj_web/components/list_component.ex
2
41.99
0.0% //lib/livedj/sessions.ex
Jobs
ID Job ID Ran Files Coverage
1 17d9ae4a4a9f6b318a251cb06a1b3d5f98d8543d.1 16 Aug 2026 03:09AM UTC 82
67.56
GitHub Action Run
Source Files on build 17d9ae4a4a9f6b318a251cb06a1b3d5f98d8543d
  • Tree
  • List 82
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 17d9ae4a on github
  • Prev Build on dev (#86904C01...)
  • Next Build on dev (#CAD9158C...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc