Skip to content

test(e2e): add WebKit/Safari to the Playwright matrix + decide the support stance (#69)#90

Merged
BorisTyshkevich merged 2 commits into
mainfrom
feat/webkit-e2e-69
Jun 30, 2026
Merged

test(e2e): add WebKit/Safari to the Playwright matrix + decide the support stance (#69)#90
BorisTyshkevich merged 2 commits into
mainfrom
feat/webkit-e2e-69

Conversation

@BorisTyshkevich

Copy link
Copy Markdown
Collaborator

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 on
zoom × getBoundingClientRect/viewport units — yet it was the one engine the
e2e 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-click
execCommand insertion path, the schema-lineage graph, and the EXPLAIN-pipeline
pan/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 not
break 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 a webkit project; update the setup comments.
  • .github/workflows/ci.ymlplaywright install --with-deps … webkit and run
    it in the e2e job.
  • 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

Closes #69.

Checklist

  • npm test passes (the per-file coverage gate is non-negotiable) — no src/ change; gate green
  • Tests added/updated in the same change as the code — the e2e "test" here is the new third engine; 36 passed on CI
  • npm run build succeeds (single-file dist/sql.html) — 451513 bytes
  • Layers kept honest: pure logic in src/core/, network in src/net/ (injected fetch), DOM in src/ui/ — no source touched (CI/test config + docs only)
  • No new runtime dependency (@playwright/test is already a devDependency; no bundled-runtime change)
  • README / CHANGELOG.md ([Unreleased]) updated

🤖 Generated with Claude Code

https://claude.ai/code/session_01NmXkYvYKwEf8Mvotxs3GN4

BorisTyshkevich and others added 2 commits June 30, 2026 13:19
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
@BorisTyshkevich BorisTyshkevich merged commit 686f690 into main Jun 30, 2026
6 checks passed
@BorisTyshkevich BorisTyshkevich deleted the feat/webkit-e2e-69 branch June 30, 2026 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add WebKit/Safari to e2e + decide the supported-browser stance

1 participant