From 49c0b2d1f42e98c76294da4073139edc886d931f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 10 May 2026 18:56:57 +0200 Subject: [PATCH 1/6] Add visual-tests job to CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Runs Vitest browser visual regression tests (drawElevationChart) on every PR and push to main. Uses the same Playwright/Chromium cache as the e2e job. On first run (no committed snapshots yet) the tests create the snapshots and pass. On subsequent runs they compare against committed snapshots and fail on visual regression. Failed runs upload a visual-snapshots-diff artifact so the diff is visible in the Actions UI. To update snapshots after an intentional visual change: Actions → "Update visual snapshots" → Run workflow (or add the `update-snapshots` label to the PR). Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/ci.yml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 326b3e0..61fa59e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,6 +110,44 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm build + visual-tests: + name: Visual Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v6 + - uses: actions/setup-node@v6 + with: + node-version: 24 + cache: pnpm + - run: pnpm install --frozen-lockfile + + - name: Cache Playwright browsers + id: playwright-cache + uses: actions/cache@v5 + with: + path: ~/.cache/ms-playwright + key: playwright-${{ hashFiles('pnpm-lock.yaml') }} + + - name: Install Playwright Chromium + if: steps.playwright-cache.outputs.cache-hit != 'true' + run: pnpm exec playwright install --with-deps chromium + + - name: Install Playwright deps only + if: steps.playwright-cache.outputs.cache-hit == 'true' + run: pnpm exec playwright install-deps chromium + + - name: Run visual regression tests + run: pnpm --filter @trails-cool/planner test:visual + + - name: Upload screenshots on failure + if: failure() + uses: actions/upload-artifact@v7 + with: + name: visual-snapshots-diff + path: apps/planner/app/**/__screenshots__/ + retention-days: 7 + e2e: name: E2E Tests needs: build From fcc4f883795679e19ac09db3fa097d90f65876ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 10 May 2026 19:01:24 +0200 Subject: [PATCH 2/6] Fix Vitest browser provider setup and test cleanup - Add @vitest/browser-playwright; use playwright() factory (not string) - Import page from vitest/browser (not deprecated @vitest/browser/context) - Add afterEach(cleanup) so each test gets a fresh DOM - Use oxc transform for JSX instead of esbuild (avoids Vite 8 warning) Co-Authored-By: Claude Sonnet 4.6 --- .../lib/elevation-chart-draw.browser.test.tsx | 7 ++-- apps/planner/package.json | 1 + apps/planner/vitest.browser.config.ts | 10 +++--- pnpm-lock.yaml | 33 ++++++++++++++++--- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/apps/planner/app/lib/elevation-chart-draw.browser.test.tsx b/apps/planner/app/lib/elevation-chart-draw.browser.test.tsx index 04735b6..1327f41 100644 --- a/apps/planner/app/lib/elevation-chart-draw.browser.test.tsx +++ b/apps/planner/app/lib/elevation-chart-draw.browser.test.tsx @@ -1,6 +1,6 @@ -import { describe, it, expect } from "vitest"; -import { render } from "@testing-library/react"; -import { page } from "@vitest/browser/context"; +import { describe, it, expect, afterEach } from "vitest"; +import { render, cleanup } from "@testing-library/react"; +import { page } from "vitest/browser"; import { drawElevationChart } from "./elevation-chart-draw"; import type { DrawChartParams } from "./elevation-chart-draw"; @@ -46,6 +46,7 @@ function ChartFixture({ params }: { params: DrawChartParams }) { } describe("drawElevationChart visual regression", () => { + afterEach(() => cleanup()); it("renders plain color mode", async () => { render(); await expect(page.getByTestId("chart")).toMatchScreenshot("plain.png"); diff --git a/apps/planner/package.json b/apps/planner/package.json index a2093e2..f751906 100644 --- a/apps/planner/package.json +++ b/apps/planner/package.json @@ -55,6 +55,7 @@ "@types/react-dom": "catalog:", "@types/ws": "^8.18.1", "@vitest/browser": "^4.1.5", + "@vitest/browser-playwright": "^4.1.5", "leaflet.markercluster": "^1.5.3", "pino-pretty": "^13.1.3", "tailwindcss": "catalog:", diff --git a/apps/planner/vitest.browser.config.ts b/apps/planner/vitest.browser.config.ts index 06b8978..4e28a5a 100644 --- a/apps/planner/vitest.browser.config.ts +++ b/apps/planner/vitest.browser.config.ts @@ -1,5 +1,6 @@ import { defineConfig } from "vitest/config"; import { resolve } from "node:path"; +import { playwright } from "@vitest/browser-playwright"; // Separate config for Vitest browser visual regression tests. // Run with: pnpm --filter @trails-cool/planner test:visual @@ -10,8 +11,8 @@ import { resolve } from "node:path"; // (.github/workflows/update-visual-snapshots.yml), triggered manually or // by adding the `update-snapshots` label to a PR. export default defineConfig({ - esbuild: { - jsx: "automatic", + oxc: { + transform: { react: {} }, }, resolve: { alias: { @@ -23,10 +24,7 @@ export default defineConfig({ include: ["app/**/*.browser.test.{ts,tsx}"], browser: { enabled: true, - // Provider is resolved from whichever @vitest/browser peer is installed. - // playwright is the default when @playwright/test is available. - // eslint-disable-next-line @typescript-eslint/no-explicit-any - provider: "playwright" as any, + provider: playwright(), instances: [{ browser: "chromium" }], }, }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3059ad..f46ec23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -196,7 +196,7 @@ importers: version: 8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4) vitest: specifier: ^4.1.5 - version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) + version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(@vitest/browser-playwright@4.1.5)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) apps/journal: dependencies: @@ -568,7 +568,10 @@ importers: version: 8.18.1 '@vitest/browser': specifier: ^4.1.5 - version: 4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))) + version: 4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) + '@vitest/browser-playwright': + specifier: ^4.1.5 + version: 4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) leaflet.markercluster: specifier: ^1.5.3 version: 1.5.3(leaflet@1.9.4) @@ -3936,6 +3939,12 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@vitest/browser-playwright@4.1.5': + resolution: {integrity: sha512-CWy0lBQJq97nionyJJdnaU4961IXTl43a7UCu5nHy51IoKxAt6PVIJLo+76rVl7KOOgcWHNkG4kbJu/pW7knvA==} + peerDependencies: + playwright: '*' + vitest: 4.1.5 + '@vitest/browser@4.1.5': resolution: {integrity: sha512-iCDGI8c4yg+xmjUg2VsygdAUSIIB4x5Rht/P68OXy1hPELKXHDkzh87lkuTcdYmemRChDkEpB426MmDjzC0ziA==} peerDependencies: @@ -11741,7 +11750,20 @@ snapshots: dependencies: vite: 8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4) - '@vitest/browser@4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)))': + '@vitest/browser-playwright@4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5)': + dependencies: + '@vitest/browser': 4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) + playwright: 1.59.1 + tinyrainbow: 3.1.0 + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(@vitest/browser-playwright@4.1.5)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/browser@4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5)': dependencies: '@blazediff/core': 1.9.1 '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) @@ -11750,7 +11772,7 @@ snapshots: pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(@vitest/browser-playwright@4.1.5)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) ws: 8.20.0 transitivePeerDependencies: - bufferutil @@ -16125,7 +16147,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.4 - vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)): + vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.2)(@vitest/browser-playwright@4.1.5)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)): dependencies: '@vitest/expect': 4.1.5 '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4)) @@ -16150,6 +16172,7 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 25.6.2 + '@vitest/browser-playwright': 4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) jsdom: 29.1.1(canvas@3.2.3) transitivePeerDependencies: - msw From 76028d277db4b2f6f3ea1793cc97c6b1aa614831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 10 May 2026 19:05:15 +0200 Subject: [PATCH 3/6] Remove invalid oxc.transform config from browser vitest config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OxcOptions doesn't have a transform key — Vite 8 handles TSX automatically. Co-Authored-By: Claude Sonnet 4.6 --- apps/planner/vitest.browser.config.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/planner/vitest.browser.config.ts b/apps/planner/vitest.browser.config.ts index 4e28a5a..4a2d83a 100644 --- a/apps/planner/vitest.browser.config.ts +++ b/apps/planner/vitest.browser.config.ts @@ -11,9 +11,6 @@ import { playwright } from "@vitest/browser-playwright"; // (.github/workflows/update-visual-snapshots.yml), triggered manually or // by adding the `update-snapshots` label to a PR. export default defineConfig({ - oxc: { - transform: { react: {} }, - }, resolve: { alias: { "~": resolve(import.meta.dirname, "app"), From 7c924827c96276604b90c236311ccc4455710872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 10 May 2026 19:09:00 +0200 Subject: [PATCH 4/6] Add initial visual snapshots and fix update script flag Generate baseline screenshots (macOS/Chromium) for the elevation-chart visual regression suite. The CI update-visual-snapshots workflow will overwrite these with Linux variants on the first run. Also fix the test:visual:update script: --update-snapshots is not a valid Vitest 4 flag; the correct short form is -u. Co-Authored-By: Claude Sonnet 4.6 --- .../drag-select-chromium-darwin.png | Bin 0 -> 10776 bytes .../elevation-chromium-darwin.png | Bin 0 -> 12821 bytes .../grade-chromium-darwin.png | Bin 0 -> 13135 bytes .../hover-chromium-darwin.png | Bin 0 -> 14160 bytes .../plain-chromium-darwin.png | Bin 0 -> 10689 bytes .../surface-chromium-darwin.png | Bin 0 -> 13098 bytes apps/planner/package.json | 2 +- 7 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/drag-select-chromium-darwin.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/elevation-chromium-darwin.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/grade-chromium-darwin.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/hover-chromium-darwin.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/plain-chromium-darwin.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/surface-chromium-darwin.png diff --git a/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/drag-select-chromium-darwin.png b/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/drag-select-chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..591786a769d05b89ba7f80097a047bf18cb89a47 GIT binary patch literal 10776 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 T_0Hf)xlwy0Q&H{#c literal 0 HcmV?d00001 diff --git a/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/plain-chromium-darwin.png b/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/plain-chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..2f8227e4f28f4f1c4a0e9359b846c1367c91dd65 GIT binary patch literal 10689 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 literal 0 HcmV?d00001 diff --git a/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/surface-chromium-darwin.png b/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/surface-chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2851e2611639257d53e1ba599709a8eb338f4d GIT binary patch literal 13098 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 Date: Sun, 10 May 2026 19:14:33 +0200 Subject: [PATCH 5/6] Fix update-visual-snapshots workflow: action versions + node version - Switch checkout/setup-node/setup-pnpm to @v6 to match CI - Replace node-version-file (.nvmrc doesn't exist) with node-version: 24 - Switch upload-artifact to @v7 to match CI Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/update-visual-snapshots.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/update-visual-snapshots.yml b/.github/workflows/update-visual-snapshots.yml index 0d45db9..fff88e0 100644 --- a/.github/workflows/update-visual-snapshots.yml +++ b/.github/workflows/update-visual-snapshots.yml @@ -62,19 +62,19 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.ref || github.event.inputs.branch || github.ref }} # Use a token with push rights so the commit-back step can push token: ${{ secrets.GITHUB_TOKEN }} - name: Setup pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: - node-version-file: ".nvmrc" + node-version: 24 cache: "pnpm" - name: Install dependencies @@ -96,7 +96,7 @@ jobs: - name: Upload snapshots as artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: visual-snapshots path: apps/planner/app/**/__screenshots__/ From 78a5a372143fe25776f5464314759cb49a3ebf0d Mon Sep 17 00:00:00 2001 From: stigi <13815+stigi@users.noreply.github.com> Date: Sun, 10 May 2026 17:15:46 +0000 Subject: [PATCH 6/6] chore: update visual snapshots [skip ci] --- .../drag-select-chromium-linux.png | Bin 0 -> 4200 bytes .../elevation-chromium-linux.png | Bin 0 -> 4484 bytes .../grade-chromium-linux.png | Bin 0 -> 4613 bytes .../hover-chromium-linux.png | Bin 0 -> 5182 bytes .../plain-chromium-linux.png | Bin 0 -> 4117 bytes .../surface-chromium-linux.png | Bin 0 -> 4623 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/drag-select-chromium-linux.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/elevation-chromium-linux.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/grade-chromium-linux.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/hover-chromium-linux.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/plain-chromium-linux.png create mode 100644 apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/surface-chromium-linux.png diff --git a/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/drag-select-chromium-linux.png b/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/drag-select-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d95c7d233e08fd69ae533988482a53af0e308a8a GIT binary patch literal 4200 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 V)4M7-0RBPXv9Yv87hB-&{U7HG+zbE! literal 0 HcmV?d00001 diff --git a/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/elevation-chromium-linux.png b/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/elevation-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..caa43aeae5c10b05226b4db3cb494f54fb882ee5 GIT binary patch literal 4484 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 literal 0 HcmV?d00001 diff --git a/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/grade-chromium-linux.png b/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/grade-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9948badb1833a4cd3530f336bf25b98649a415 GIT binary patch literal 4613 zcmb7IcT`i^y9En^Qimcn2r3;hfJjH0NC^(T1*Hfi6p>y8$B_VmKtM_;p(EhXq=bk_ z8EMgk5bxoN-KTJW3{Kgq_% z#$$QS%$|*neFgOGI5|K|KQi`}jZI+0(#+T~mVNUD^U3O3B9-yIJ)t0C?0ayGPE65A z#%7pgXlAK@4S_4I_{vdsnJfF1CML^EbeD6#j`G{vIibw_gsdELQ>cS7b8;P0pE>wXvUq{l`N z$q2po-RR;RZS~VP!P+UY1=oLic&Fw|`nE@(-zeCBE48fc(_?uE&&`PhZu1-A7w1+k_x%du zwh%1)V^@9g?xadU$6|%hpdH#iJxk#baX#FSJ7e4J-|vlmU;HUU)AUs@W#Dff;D65l zaAE%9yEj7j%36B@uWhtq&F$zk6#8@F^jxjjzpzpg5lyilHC$MqJ@chsGqZc<<%!?S z4S#&XyrDcj*quELa?k%Ox{NC#(;PAo4h-0Omdd*7g8Ll+UK%%WF zV)37^eE^x;A~L90lhx)&UxbsD72)P|<&!RL(PDK>RBpnEr6K*CL_|)Oj%saVL!NS` zukBappF~$b&ODjd?1}g@g9BayCTLO~sl6#eWIDyX!`ms;&CvrljRRfxrb3*x+-f@V znUDL0qC9J2lx^ctccL+6P&3MAmZ**0MHCep&z*HlAtEPRRds7ENm^-<_xbsf%sFKs zVU&2v#qtQ}F;S6-v2?KkpRrDOOCvFOy(E(|HzVfZ($b{S)^!HT^N%sU7xv);LKdQ3lg)I`XvwtlrbVHhIFkD50?WBRV4)U&53j5I@4Ga? z+SQz})?3a^MJ!BnqVj($zF&()6mh5uPQ4a*((!~kDIhiVNKg~GE+<8MB%%4S5aoJ; zlX0#cNQA-bMQDR_iEzZ#p$FbN0gfX&lzoxwwzF2ogRnh`&%QIg-$khT(T;GDvbOU3H)Qz|5r^BWg17wyL3?#oa?QY5;)ow7 zVMqx8ibLKJ`rIZFJ$I^WgCit5B(>);rFoNIVW3B}=5db&C*vI$nDk&9+eC4jRmAK1 zdIkU@JC(LIJJe36hduLxtB9RGH9VbT+3Mxq+(MqD%J4``fJQ1@XzMF{B^ywa$34;} z_jWcF$`h|u>FaTfdKMg1e*~(d{AC*?Jkz=;<#wX6kjutqTL#gp67cG$DZKs zH@s_H&{F|>WZI~XsA;vTo)E2pk}LR4^vPhQS)+Hae+*K(>EPhdRZO1E>-BeT0z*G5 z%47+`;WXN>7w!@%XFjzC=xuOFnMi$k>2R|9 zzi~Z~PxbZm3x*HZFSIpl%tVp9tlVZiK(Yc99>Xt^*D}b*r^3xYTZzk6A!WsNA61@> zCysh|n$omB7R!0!sU4~S(IEWBu@Iq?GJ{h?vZ%k~NL7m$l|(YqkFNy2>U6!R^xmdH zxIxL!sjhK7FRHYyo(R&T-)ZN8h$pQoNU)1IR5N@Zi=1eM`3O&H3h+oxYC?GgK?I$} zJ`X9tHl<9^br^GW-AjUdn1%$%_HYe}2o33ovl3zMHgm7Vgt6pl$KI-)OC2$>`UdzG ziAccJgs!kZjpuy%cjr1n8i@!YXR(Y)fF~kv5=j2?FBKF06#X)?p3+Ubu43`jZS0%; z#!qtAs~^?MJKwmv)!nzdR)R2h>N$6Cf${4AqYqGY{Kg4S zZeY`~u3)?>{j#Y1)-bVkT|dvd#(GuoZ5IMG^XlpYJ7|ET3L5tEy0cM$M}VfyHB%BG z%#@iXY;b*3`J7yBkYGH~oTmA4Uc>-T<#9)mWr5efkR8tLLxGN^YV6fFdtD6qYVsQ(Xr*nMIx%(k5;uagJ zAnmiH@ci{`4czXEjp``fcf6U)VKso7nJPfk!PjjqBx*}C2>76_CU?hQP&zxWu?M(3@iM6 z;%m)~5K~XN_RmyG6F$;V*HVFWPL0TxxdYt*W+r5f`-Y=2GmsrD87>F{F6YP6XIE!M zOrYtfa9JrTa517WNt5YF7^gH@M}}Z(vB)Ac4oQ720CZX%`jD4ZqlJnv%xIk%9>8LQ z`z;OMYnI>1xeh#|@snzD!^^}WY)FKGbk6Mg{3pO5ODjh2&8_%odiA~aQ~LlUIW5Yp zf*Y7H_#7j9Fy+< zYO$Tx>=0J*`9jt(3|XqtFk@4HKGz2bCbY@fh9bNjING+*_LvCvjtLw9-NvV8y;Zy}u)?Kd3PaJqA7<1XqUw{wD%WYvn;I;Deg#b~HAr`3J z?zzu%`U`}btG=91Zcy+ve`FfnuXUF=U_7^yKjXJM07+`Geq?gQuZ7GXh;ib;$gmjB zpQT1Qszm-RS(Z~J#?i^#Q!mdMWqid`ufFRDpD}+$$Fe1z@fw&~?ABjB1N2w$7f3_8 zzv26V9j)0m4Hn$~rYS?*$tH)sw#=I;J0p|SLaOm9PeP;)w2YtG2onW04+p6H$}Zqe zTr3)6CLQcpoU`m-I@rDJ8cIw!IAP@9>uT?GX^FXeIrbo_q5EKa-O*`uy*x4P^vzf- z$&#)NI6WgAyq*zK+WJ?7RuuUWJj{9I-y$hsD8m~X;M`>Q_ibwBF4i@5Q0^B0Zmb-H z+O8T;ge}Q|ESCb2Ss+Aa*r!{hna~-aw%+@X8|1!y`hJgRp8XqW=@|6tHecViDyUYa zx2vBn)+$*4nh8xP@~?i;_ha9vqLiR5fpu%1K{Q$Bh%`(Wt0mGeiH8lwy@bDNbcZV9 zKv1Uwhkzj}7N~%rh7YtYwmsGYng-%qZwn<;p|CC@DD~z~b?MJ)SB2nN6875>ziYus zxHRO)!rC-e#S1~LvTy7>mz3t|Ow@Xh?N(@+@oAz@4*A~uI(0Dg!YfPrBvQ-w_dD@g z%lmxIj8(PX;Xjxw2g4EL@N<-K!#(Du8;Q*05FB}yRX(g~*lu$LtY%Cl3~&073Gj!{ z9=u+?)qJigBHSgXOA_NPk7yT+oNEm!!(`2!(gTL%t}ExrUP(kP{8oSe<*{R;gvod8 z$zWlOR#!;2efsn66E#9HqP~yo#kUL;hNRpTySL%my6-0Iu%a8A;f#KP?bRGQf_$Ks zwdQO{2Mm#}txG5@Wq8Nq`KD-Zl;mD7hN)E&H)s%x3EtF9L(;?r3vhXtV?zKDO-fEs zNc_p{es0SpD?7W{E7j}@FSj3@X?fjo7JIf$f9-7g-TDOBdn}j1MH9$q;SW$kE zErzR(nMWG}8zm#5-i71F#*bAhc{%gXtFu?~#iEQ5iP6YMWK82`3nz?NDY;EBfaI{-D&O&h*~8$IX=QP<_~U+4#?$hcMav)k%mi{z$8*`AxGNn>_UzZ+Pj*W^SyI%f0|vs zW|K6i1q_F#dDx?}j!Uz{(|C3&FUswjU}x7xltaM{iZq?itOOsqj%S@oeg z%o5R2R~{cR3E=`D$gp!XX=a@~9t#OQ`9*(`V6VLuSAwj$v$(D8U`7A8UgWEovi(31 zyl2-pTeGwt?$RzW6)YKE(1Cj%{g3Bo^Xk2U@q<&WW!Dw`Z^!D%!_(^jc^Y4pp|q6@ zg`10VL@sa*i+-NF?T|O4xqSFXq<IY6~2jt*5zHqh|xjaLE+P-#B$nG5}@Ffpixhn=E~^Sfnvc0NW{u}Mf@ht zzx~fkDGNIH_La-!v4?K~c02<|*uG}W;M8VM~gEHH|4-t4i%e&gjAK@OZ^yZ>onUqBa!ncc_v*?DBZeT*GIiH;@bjO zj6%&G8qg3GtAv15+3L}m$_31~OFyy_VmIYZV>uLRI@kLdGJkA6?L9nZH+qm@+9_036pd7~$HG2Vl+gY4PD6{wWtrZSmew5w9 zrH&vn)6V|74&YDk&%P;?!XD!q#5(zxMgEUhC)4FenPP-sSL1?h@Op>M(%jap*~II? Fe*tg1zoq~H literal 0 HcmV?d00001 diff --git a/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/hover-chromium-linux.png b/apps/planner/app/lib/__screenshots__/elevation-chart-draw.browser.test.tsx/hover-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1a60c8cb231799d0a3abb2d62f9b46fdc9dda765 GIT binary patch literal 5182 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 fCrv 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 literal 0 HcmV?d00001