test(e2e): add WebKit/Safari to the Playwright matrix + decide the support stance (#69)#90
Merged
Merged
Conversation
WebKit/Safari is the engine most likely to diverge on the app's
`html{zoom}` × getBoundingClientRect/viewport-unit layout, and it was the
one engine the e2e suite never exercised. Add a `webkit` Playwright project
and install+run it in the CI `e2e` job alongside Chromium and Firefox.
The empirical pass/fail and the supported-browser decision come from CI:
Playwright's WebKit launches only on the Linux runners (the frozen
mac14-arm64 build SIGTRAPs under the dev sandbox, as do chromium/firefox
locally — these have always been Linux-CI-only). README "Supported
browsers" + CHANGELOG record the stance once CI reports.
Part of #69. Phase 0 of #68 — a regression net before the CM6 (#21) and
schema-graph (#66) refactors churn the coordinate paths.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmXkYvYKwEf8Mvotxs3GN4
…cision (#69) CI ran the e2e suite on all three engines — 36 passed (12 specs × Chromium / Firefox / WebKit), WebKit included — so the `html{zoom}` × getBoundingClientRect layout holds on Safari for the tested surfaces. - README: new "Supported browsers" section (desktop Chromium/Firefox/Safari supported; Safari verified green on CI); e2e section updated to three engines + the `npx playwright install chromium firefox webkit` hint; defers the full browser/ClickHouse/IdP matrix + the narrow-viewport stance to #71. - CHANGELOG [Unreleased]: note the WebKit e2e coverage + the stance. - playwright.config: drop a misdirecting docs/ADR-0001 citation (ADR-0001 is reactivity, not the zoom layout). Part of #69. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmXkYvYKwEf8Mvotxs3GN4
This was referenced Jun 30, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Adds WebKit as a third Playwright e2e engine and makes the explicit
supported-browser decision #69 asks for.
Why it matters: the whole layout and the pointer/caret/drag math ride on
html { zoom: var(--zoom) }, and WebKit is the engine most likely to diverge onzoom×getBoundingClientRect/viewport units — yet it was the one engine thee2e suite never exercised. This is Phase 0 of the roadmap (#68): a regression net
that lands before the CM6 (#21) and schema-graph (#66) refactors churn the
coordinate paths.
The empirical result (the deliverable): WebKit launches only on the Linux CI
runners (the frozen mac14-arm64 build SIGTRAPs under the dev sandbox — as do
chromium/firefox locally; these have always been Linux-CI-only), so CI is the
source of truth. On CI the suite is
36 passed= 12 specs × {Chromium,Firefox, WebKit}. The WebKit-included specs — editor highlight/selection
alignment (the
html{zoom}× scrollbar-shrink math), the schema-double-clickexecCommandinsertion path, the schema-lineage graph, and the EXPLAIN-pipelinepan/zoom — all pass on WebKit. Run:
https://github.com/Altinity/altinity-sql-browser/actions/runs/28440418800
Decision: Safari (WebKit) is supported. The
html{zoom}reliance does notbreak Safari for the tested surfaces, and a future regression that would break
it now fails CI instead of shipping silently.
Changes
playwright.config.js— add awebkitproject; update the setup comments..github/workflows/ci.yml—playwright install --with-deps … webkitand runit in the
e2ejob.README.md— new Supported browsers section recording the decision;three-engine e2e section + install hint; defers the full
browser/ClickHouse/IdP matrix and the narrow-viewport stance to Document the supported-browser matrix (browsers, ClickHouse versions, IdP requirements) #71.
CHANGELOG.md[Unreleased]— note the WebKit coverage + the stance.Reconcile
row reflects the WebKit/Safari decision").
Closes #69.
Checklist
npm testpasses (the per-file coverage gate is non-negotiable) — nosrc/change; gate green36 passedon CInpm run buildsucceeds (single-filedist/sql.html) — 451513 bytessrc/core/, network insrc/net/(injected fetch), DOM insrc/ui/— no source touched (CI/test config + docs only)@playwright/testis already a devDependency; no bundled-runtime change)CHANGELOG.md([Unreleased]) updated🤖 Generated with Claude Code
https://claude.ai/code/session_01NmXkYvYKwEf8Mvotxs3GN4