Home

dev / openkara

publicthedavidweng/OpenKara· sync paused
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

test(e2e): deflake webkit lyrics-follow and muted-stem assertions (#218)

2 months ago

9815920
Authored
Davy7/25/2026, 6:27:55 PM
Two Playwright e2e tests flaked on WebKit and CI retries:1 absorbed the
flakes silently, eroding CI trust.

lyrics-follow "user wheel unlocks follow":
- Replace page.mouse.wheel (WebKit drops synthetic wheel deltas) + the
  up-to-6s waitForScrollSettle poll + the 800ms sleep that raced the 4s
  re-lock window with a deterministic scrollTop write + dispatched
  WheelEvent in one synchronous frame.
- Assert follow state via data-visible and poll the resting/re-locked
  scrollTop instead of fixed sleeps. Drop the now-unused helper.

playback-controls "muted stem button color":
- Stop sampling getComputedStyle().backgroundColor right after a mouse
  click, which reads the :hover / transition value. Assert the semantic
  terminal state (aria-pressed=true, no data-active) and poll the icon
  color until it settles to the --color-text-dimmer token, resolved
  inside the button's own cascade scope (the token is re-defined for the
  desktop window-chrome subtree the app renders in).

CI:
- Add a JSON reporter and a "Report flaky tests" step that counts
  status=flaky results from the report and prints the count (even 0) to
  the job summary, plus a ::warning:: when > 0. retries:1 stays but can
  no longer mask flakes silently. No ${{ }} in the run block (env-free
  file parse) per the workflow hygiene test.

Verified: webkit --repeat-each=20 green for both tests (40/40); full
both-spec run green on chromium+webkit (86/86); lint, oxfmt, tsc, and the
workflow-security + ci-workflow-contract vitests pass.

Fixes #218

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Parent6ecbdfa

5 files changed
  • .github/workflows/ci.yml+45−0
  • .gitignore+1−0
  • playwright.config.ts+13−5
  • tests/e2e/lyrics-follow.spec.ts+39−43
  • tests/e2e/playback-controls.spec.ts+33−15