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

humanspeak / svelte-json-view-lite / 28759521164
84%
main: 87%

Build:
Build:
LAST BUILD BRANCH: perf/23-trim-per-node-signal-count
DEFAULT BRANCH: main
Ran 06 Jul 2026 12:04AM UTC
Jobs 1
Files 10
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

06 Jul 2026 12:03AM UTC coverage: 83.588%. First build
28759521164

push

github

web-flow
perf(keyboard): O(1) arrow-key navigation via roving-tabindex registry (#28)

* test(keyboard): add red tests for O(N) DOM sweep per keypress

Cover the two hot-path costs tracked in #25 so the follow-up
optimization has a failing baseline to turn green:

- Assert ArrowUp/ArrowDown does not re-run a full-tree
  querySelectorAll('[role=button]') on every keypress.
- Assert navigation does not linearly read every expander's tabindex
  to locate the active item.

Both tests fail against the current implementation and preserve the
existing focus-move / wrap-around behavioral coverage.

Issue #25

* chore: add CodeRabbit config for local-first review workflow

* perf(keyboard): make arrow-key nav O(1) via roving-tabindex registry

Replace the per-keypress full-tree DOM sweep with a tree-local
navigation controller. Each expander registers its button on mount
(unregisters on $effect cleanup) into a document-ordered linked list,
so ArrowUp/ArrowDown hop to the neighboring button in O(1) instead of
running querySelectorAll('[role=button]') and scanning every tabindex.

- Add createExpanderNavigation() with register/activate/move
- Thread an ExpanderNavigation controller through outerRef
- onKeyDown/onClick delegate to the controller instead of DOM queries
- Preserve behavior: roving tabindex, wrap-around, focus move

Turns the #25 red tests green while keeping the focus-move and
wrap-around coverage intact.

Closes #25

* test(keyboard): add guardrail tests for roving-tabindex nav

Lock in the navigation controller's contract and pin two defects still
open in the O(1) nav implementation as red tests.

Green (behavior locks):
- move() steps forward/backward and wraps at list edges
- register() keeps document order when a button inserts before existing
- active button unregistering falls back to a live neighbor

Red (documenting open defects, intentionally failing):
- register() append-order mount is O(N^2) (496 compareDocumentPosition
  calls for 32 buttons) i... (continued)

185 of 259 branches covered (71.43%)

Branch coverage included in aggregate %.

75 of 76 new or added lines in 3 files covered. (98.68%)

253 of 265 relevant lines covered (95.47%)

222.25 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
92.44
src/lib/utils/expanderNavigation.ts
Jobs
ID Job ID Ran Files Coverage
1 node-22 - 28759521164.1 06 Jul 2026 12:04AM UTC 10
83.59
GitHub Action Run
Source Files on build 28759521164
  • Tree
  • List 10
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #28759521164
  • cd85faf6 on github
  • 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