Skip to content

WebKit pointer/focus lane: 6 real reds on first actual run — slash menu never mounts on WebKit; overlay focus-open broken on BOTH engines #11112

Description

@lalalune

The WebKit cross-engine pointer/focus lane added for #10722 (opt-in webkit project in packages/app/playwright.ui-smoke.config.ts, PLAYWRIGHT_WEBKIT=1, Desktop Safari over the keyless chat pointer/focus/composer specs) was never actually executed anywhere — no workflow set the flag or installed the WebKit browser. Running it for real (locally, Playwright WebKit 1.61.1, stub stack) immediately surfaced real cross-engine divergences. Current tally after the first fix: 3 passed / 6 failed.

Fixed already (PR #11103): chat-overlay-controls-interactions "transcript text is selectable" — WebKit's getComputedStyle returns "" for unprefixed user-select (only -webkit-user-select reports); the spec now probes both and keeps the behavioral range-selection assert. The app itself is fine (Tailwind select-text emits both properties).

Remaining reds:

  1. All four slash-commands.spec.ts tests (WebKit-only). composer.fill("/") never mounts slash-command-menu — the element is absent from the DOM entirely (screenshot shows the composer holding "/" with the app fully booted). Passes on Chromium. The menu mounts from useSlashMenu state (open = mode !== "none" && items.length > 0, items from useSlashCommandController's client.listCommands("gui") + filterCommandsForSurface). Since the transcript/stub API demonstrably works on WebKit in the same run, suspects are: the catalog fetch silently failing (.catch(() => []) swallows it — worth removing that silent default while debugging), filterCommandsForSurface gating on isAuthorized/isElevated state that hydrates differently, or a WebKit-specific difference in how fill() interacts with the draft-change plumbing. Needs runtime diagnosis with the catalog fetch observed.
  2. conversation-management.spec.ts "message persists across a full page reload" (WebKit-only). Visibility timeout after reload — possibly WebKit page-lifecycle/bfcache interaction with the stub SSE stream.
  3. chat-overlay-controls-interactions.spec.ts "long transcript scrolls" — NOT WebKit-specific. This fails on Chromium too, in isolation, at the current develop tip (ContinuousChatOverlay.tsx is byte-identical between develop and the PR branch): focusing chat-composer-textarea no longer flips the overlay to data-open="true". Whoever owns the overlay focus-to-open path should bisect this on develop — it looks like a real recent regression, hidden by CI's chronic queue.

CI wiring status: PR #11103 adds the lane to test.yml's zero-key browser job (installs WebKit, runs --project=webkit) as running-and-reporting (continue-on-error) so the reds above are visible on every PR without blocking unrelated work. Once 1-3 are fixed, flip the step to blocking by deleting continue-on-error — that's the whole remaining change.

Local repro: PLAYWRIGHT_WEBKIT=1 ELIZA_UI_SMOKE_FORCE_STUB=1 bun run --cwd packages/app test:e2e --project=webkit (needs bunx playwright install webkit).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions