From d9de9dc26488f0c402a0b995482770d348270656 Mon Sep 17 00:00:00 2001 From: Boris Tyshkevich Date: Tue, 30 Jun 2026 13:19:22 +0200 Subject: [PATCH 1/2] test(e2e): add WebKit/Safari to the Playwright matrix + CI (#69) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) Claude-Session: https://claude.ai/code/session_01NmXkYvYKwEf8Mvotxs3GN4 --- .github/workflows/ci.yml | 4 ++-- playwright.config.js | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b734c13..679893d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -79,8 +79,8 @@ jobs: node-version: '22' - run: npm install --no-audit --no-fund - name: Install Playwright browsers - run: npx playwright install --with-deps chromium firefox - - name: E2E (Playwright — Chromium + Firefox) + run: npx playwright install --with-deps chromium firefox webkit + - name: E2E (Playwright — Chromium + Firefox + WebKit) run: npm run test:e2e - uses: actions/upload-artifact@v7 if: ${{ failure() }} diff --git a/playwright.config.js b/playwright.config.js index 18c156a..a9a75b7 100644 --- a/playwright.config.js +++ b/playwright.config.js @@ -5,8 +5,8 @@ import { defineConfig } from '@playwright/test'; // behind the selection when a scrollbar shrinks the textarea's client box — // can only be caught in a real engine. These run separately from `npm test`. // -// Setup once per machine: `npx playwright install chromium firefox`. -// Run all engines: `npm run test:e2e`. One engine: `npm run test:e2e -- --project=firefox`. +// Setup once per machine: `npx playwright install chromium firefox webkit`. +// Run all engines: `npm run test:e2e`. One engine: `npm run test:e2e -- --project=webkit`. export default defineConfig({ testDir: './tests/e2e', testMatch: '**/*.spec.js', @@ -22,9 +22,13 @@ export default defineConfig({ baseURL: 'http://127.0.0.1:5599', }, // Render-layer + DOM-API bugs are engine-specific (e.g. Firefox's - // execCommand('insertText') on