mirror of
https://github.com/penpot/penpot.git
synced 2026-09-24 12:56:15 +00:00
* ⚡ Build the frontend bundle once for all E2E suites Merge tests-integration, tests-composable-suite and tests-plugin-api-suite into one "CI: E2E" workflow. Each of the three ran its own full frontend/scripts/build on every PR, so one PR paid the build three times. The new build-bundle job restores actions/cache key frontend-bundle-<sha>, runs frontend/scripts/build only on a miss and saves the key before the job ends. The integration shards, the composable suite and the mocked Plugin API suite now all need build-bundle and restore the same key with fail-on-cache-miss, so none of them builds. A workflow re-run of the same SHA reuses the cached bundle instead of rebuilding it. Triggers become the union of the previous paths (frontend, common, render-wasm, plugins): the bundle embeds the built plugins, so a plugins change runs the whole set. workflow_dispatch keeps running the integration job only, as before. Job names are kept identical on purpose: they are the GitHub check contexts and branch protection may match them by name. Docs: new mem:frontend/e2e-ci-workflow records the build-once contract, referenced from mem:frontend/core and mem:frontend/testing; the composable memory and both suite READMEs are updated. AI-assisted-by: deepseek-v4.1-flash * 🐛 Fix mocked plugin suites crashing without frontend deps The mocked CI drivers shelled out to frontend/scripts/e2e-server.js, which imports express from frontend/node_modules. CI jobs install only plugins/ deps, so the import failed with ERR_MODULE_NOT_FOUND and the run timed out waiting for localhost:3000. Serve the prebuilt bundle with a zero-dependency static server built into each driver (ci/static-server.ts, kept in sync in both suites) plus node:test coverage for it. AI-assisted-by: muse-spark-1.3-contributor
32 lines
1.2 KiB
JSON
32 lines
1.2 KiB
JSON
{
|
|
"name": "composable-test-suite",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"start": "vite build --watch",
|
|
"init": "pnpm run build && pnpm run start",
|
|
"build": "tsc && vite build",
|
|
"build:headless": "vite build --config vite.config.headless.ts",
|
|
"test:ci": "pnpm run build:headless && tsx ci/run-ci.ts",
|
|
"test:unit": "tsx --test ci/static-server.test.ts",
|
|
"preview": "vite preview",
|
|
"bootstrap": "pnpm install --ignore-workspace && pnpm run build && pnpm run start",
|
|
"types:check": "tsc --noEmit",
|
|
"fmt": "prettier --write src ci index.html",
|
|
"clean": "rm -rf dist/"
|
|
},
|
|
"dependencies": {
|
|
"@penpot/plugin-styles": "1.4.2",
|
|
"@penpot/plugin-types": "1.4.2"
|
|
},
|
|
"devDependencies": {
|
|
"playwright": "^1.62.1",
|
|
"prettier": "^3.9.6",
|
|
"typescript": "^5.9.3",
|
|
"vite": "^8.2.2",
|
|
"vite-live-preview": "^0.4.0"
|
|
},
|
|
"packageManager": "pnpm@12.5.1+sha512.e3f305bc784a2bc89f5ad3b6138889470fae8d2af5f36b61216ec91c2c3d64089775f9de38aac331044ea40f245cb0d5666392dfdf65824e1907ef6a2c62de5f"
|
|
}
|