* test(scripts): wait for the e2e state path file to have content
waitForFile returned as soon as the path file existed. The child creates that
file and writes it in separate syscalls, so the reader could observe it empty,
read "" as the state dir, and fail the existence assertion on a path that was
never written. That surfaces as "expected false to be true" under CI load.
Wait for non-empty content instead.
* test(scripts): make the state path publication race deterministic
The suite previously published the path in one write, so it passed with either
readiness predicate and protected nothing. Publish the empty file first and
delay the real write, which is the window a real writer leaves open, so the
case fails on the existence-only check and passes on the content-aware one.
* test(scripts): publish e2e state paths atomically
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Harden Workboard modal and drawer accessibility.
Summary:
- Add Workboard dialog focus lifecycle handling for initial focus, Tab/Shift+Tab containment, Escape close, and opener restore.
- Mark Workboard background content inert/aria-hidden while modal or drawer dialogs are active.
- Add focused unit and Chromium browser smoke coverage for the audited modal/drawer accessibility requirements.
- Keep UI browser test aliases able to resolve shared workspace packages used by the Workboard view.
Verification:
- node scripts/run-vitest.mjs ui/src/ui/views/workboard.test.ts
- node scripts/run-vitest.mjs ui/src/ui/views/workboard.browser.test.ts
- (cd ui && pnpm exec vitest run --config vitest.config.ts --project browser src/ui/views/workboard.browser.test.ts)
- GitHub checks green at 6557012430