fix(ui): a looping pulse stops for reduced motion; the e2e waits for skeleton bones, not for any pulse

- Seven looping pulses (a running job's dot, the scheduler's progress bar, a queued download, the
  download tray, a playlist upload, a channel's full-history action, the setup wizard's test mail)
  ran regardless of prefers-reduced-motion, which docs/DESIGN.md promises to respect: each is
  motion-safe now, held by a contract test.
- The a11y suite's "settled" wait took every aria-hidden pulse for a loading skeleton, so the
  Scheduler legend's running dot, which pulses for good, kept it waiting until it timed out. A
  skeleton bone now says it is one (data-skeleton) and the wait looks for that.
This commit is contained in:
2026-10-18 21:40:52 +02:00
parent 5082636f15
commit b842e4e871
10 changed files with 52 additions and 11 deletions
+1
View File
@@ -13,6 +13,7 @@ function Skeleton({ className, inline = false }: { className?: string; inline?:
return (
<Tag
aria-hidden="true"
data-skeleton=""
className={clsx(
"rounded-lg bg-fg/8 animate-pulse motion-reduce:animate-none",
inline && "inline-block align-middle",