From 22653b31b0c23572bb3ff1780770417cef005f18 Mon Sep 17 00:00:00 2001 From: Jeremy Ruppel Date: Mon, 10 Aug 2026 14:52:35 +0000 Subject: [PATCH] Backport pixel engine 0.3.0 --- site/lostpixel.config.ts | 65 ---------------------------------------- site/package.json | 2 +- site/pixel.jsonc | 15 ++++++++++ site/pnpm-lock.yaml | 37 +++++++++-------------- 4 files changed, 30 insertions(+), 89 deletions(-) delete mode 100644 site/lostpixel.config.ts create mode 100644 site/pixel.jsonc diff --git a/site/lostpixel.config.ts b/site/lostpixel.config.ts deleted file mode 100644 index d89512ac8b1..00000000000 --- a/site/lostpixel.config.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { readFileSync } from "node:fs"; -import type { CustomProjectConfig } from "@coder/pixel-storybook"; - -// Resolves the commit hash from the GitHub Actions event payload. For pull -// request events, this prefers the merge commit SHA or the PR head SHA over -// GITHUB_SHA, which points at the merge ref and can be stale. -function resolveCommitHash(): string | undefined { - if (process.env["GITHUB_EVENT_NAME"] === "pull_request") { - const eventPath = process.env["GITHUB_EVENT_PATH"]; - if (eventPath) { - try { - const event = JSON.parse(readFileSync(eventPath, "utf-8")); - if (event.after) return event.after; - if (event.pull_request?.head?.sha) return event.pull_request.head.sha; - } catch { - // Fall through to GITHUB_SHA. - } - } - } - return process.env["GITHUB_SHA"]; -} - -export const config: CustomProjectConfig = { - lostPixelPlatform: "https://pixel.coder.com/api", - - storybookShots: { - storybookUrl: "storybook-static/", - }, - - lostPixelProjectId: "019eb90c-3c26-70ee-8e97-230f1b0388b9", - apiKey: process.env["PIXEL_KEY"], - - // CI context, populated automatically in GitHub Actions. - ciBuildId: process.env["GITHUB_RUN_ID"], - ciBuildNumber: process.env["GITHUB_RUN_NUMBER"], - repository: process.env["GITHUB_REPOSITORY"], - commitRefName: - process.env["GITHUB_EVENT_NAME"] === "pull_request" - ? process.env["GITHUB_HEAD_REF"] - : process.env["GITHUB_REF_NAME"], - commitHash: resolveCommitHash(), - - // Browser configuration. - // browser: "chromium", // defaults to chromium - // threshold: 0, // defaults to 0. how is this supposed to work in platform mode? - // waitBeforeScreenshot: 1000, - shotConcurrency: 64, -}; - -// Leaving this here so it's easy to migrate to next week when I publish the -// new version of the engine with JSON config. -// Generated pixel.json: -// { -// "projectId": "019eb90c-3c26-70ee-8e97-230f1b0388b9", -// "platformAccessUrl": "https://pixel.coder.com", -// "storybook": { -// "buildCommand": "pnpm exec storybook build --test --disable-telemetry --stats-json storybook-static/", -// "outputDirectory": "storybook-static/" -// }, -// "matrix": { -// "browsers": ["chrome", "safari", "firefox"], -// "viewports": ["mobile", "tablet", "desktop"], -// "themes": ["light", "dark"] -// } -// } diff --git a/site/package.json b/site/package.json index 161b90b95f6..006a1daca5c 100644 --- a/site/package.json +++ b/site/package.json @@ -125,7 +125,7 @@ "@babel/plugin-syntax-typescript": "7.29.7", "@biomejs/biome": "2.4.10", "@chromatic-com/storybook": "5.0.1", - "@coder/pixel-storybook": "0.1.3", + "@coder/pixel-storybook": "0.3.0", "@octokit/types": "12.6.0", "@playwright/test": "1.50.1", "@rolldown/plugin-babel": "0.2.3", diff --git a/site/pixel.jsonc b/site/pixel.jsonc new file mode 100644 index 00000000000..57ad4353a2b --- /dev/null +++ b/site/pixel.jsonc @@ -0,0 +1,15 @@ +{ + "projectId": "019eb90c-3c26-70ee-8e97-230f1b0388b9", + "platformAccessUrl": "https://pixel.coder.com", + "storybook": { + "buildCommand": "pnpm exec storybook build --test --disable-telemetry --stats-json storybook-static/", + "outputDirectory": "storybook-static/" + }, + "shotConcurrency": 32, + "matrix": { + "browsers": ["chrome"], + // TODO: Add "phone" and "tablet" when upgrading to pixel-storybook 0.3. + "viewports": ["desktop"], + "themes": ["dark"] + } +} diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml index 1a57ac45353..fe7ed5d81e0 100644 --- a/site/pnpm-lock.yaml +++ b/site/pnpm-lock.yaml @@ -292,8 +292,8 @@ importers: specifier: 5.0.1 version: 5.0.1(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@coder/pixel-storybook': - specifier: 0.1.3 - version: 0.1.3(playwright-core@1.55.1) + specifier: 0.3.0 + version: 0.3.0(playwright-core@1.55.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@octokit/types': specifier: 12.6.0 version: 12.6.0 @@ -691,12 +691,13 @@ packages: peerDependencies: storybook: ^0.0.0-0 || ^10.1.0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 - '@coder/pixel-storybook@0.1.3': - resolution: {integrity: sha512-vNBha7mU1PDFwauWcw2JV0hni980qu71meBOuhneaGbL4BL+06L4PEG6wYElhqJcs6pVPaUypj+bF+089ohZyw==, tarball: https://registry.npmjs.org/@coder/pixel-storybook/-/pixel-storybook-0.1.3.tgz} + '@coder/pixel-storybook@0.3.0': + resolution: {integrity: sha512-+M3tr9lfjN/B2v3XCYDeAcz4TqZnN80Xa1ezpBS1NejsmhGf6RePWDz9ksgLmHGJ0iCmAypjbCX8BFosOfYeoA==, tarball: https://registry.npmjs.org/@coder/pixel-storybook/-/pixel-storybook-0.3.0.tgz} engines: {node: '>=22'} hasBin: true peerDependencies: playwright-core: '>=1.47.2' + storybook: '>=8.0.0' '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==, tarball: https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz} @@ -4489,6 +4490,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, tarball: https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz} + jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, tarball: https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz} @@ -5010,10 +5014,6 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==, tarball: https://registry.npmjs.org/obug/-/obug-2.1.1.tgz} - odiff-bin@2.6.1: - resolution: {integrity: sha512-SeI3ehAqjQUMlUkGjvIFGKoHZIO3zG1N1wMRhf7ojM7Vb+HcyB2RKSSCu7kbvYVtSdZADEBSJ7nvP/d7iBLivA==, tarball: https://registry.npmjs.org/odiff-bin/-/odiff-bin-2.6.1.tgz} - hasBin: true - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, tarball: https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz} engines: {node: '>= 0.8'} @@ -5146,10 +5146,6 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==, tarball: https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz} engines: {node: '>= 6'} - pixelmatch@7.2.0: - resolution: {integrity: sha512-xhcb4yHu9sM/G7foGzoLtXYcC0zHEaOXXjRKhGup0fw78Nf2Tkiapv4EQyMzrbcmQPsllAI7DbFY2UT7PlI9Pg==, tarball: https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.2.0.tgz} - hasBin: true - pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==, tarball: https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz} @@ -6827,15 +6823,13 @@ snapshots: - '@chromatic-com/cypress' - '@chromatic-com/playwright' - '@coder/pixel-storybook@0.1.3(playwright-core@1.55.1)': + '@coder/pixel-storybook@0.3.0(playwright-core@1.55.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: get-port-please: 3.1.2 - odiff-bin: 2.6.1 - pixelmatch: 7.2.0 + jsonc-parser: 3.3.1 playwright-core: 1.55.1 - pngjs: 7.0.0 serve-handler: 6.1.7 - tsx: 4.22.4 + storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) zod: 3.23.8 '@csstools/color-helpers@5.1.0': {} @@ -10796,6 +10790,8 @@ snapshots: json5@2.2.3: {} + jsonc-parser@3.3.1: {} + jsonfile@6.2.0: dependencies: universalify: 2.0.1 @@ -11497,8 +11493,6 @@ snapshots: obug@2.1.1: {} - odiff-bin@2.6.1: {} - on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -11662,10 +11656,6 @@ snapshots: pirates@4.0.7: {} - pixelmatch@7.2.0: - dependencies: - pngjs: 7.0.0 - pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -12783,6 +12773,7 @@ snapshots: esbuild: 0.25.12 optionalDependencies: fsevents: 2.3.3 + optional: true tween-functions@1.2.0: {}