mirror of
https://github.com/penpot/penpot.git
synced 2026-05-23 17:03:41 +00:00
Introduces `pnpm run test:quiet` for non-interactive runs (CI, scripted invocations, agent loops). It runs the same pipeline as `pnpm run test` — `build:wasm`, then `build:test`, then `node target/tests/test.js` — but buffers each build step's stdout and stderr and only replays them when that step exits non-zero. Test-runner output streams through unchanged, so failures and the summary are never hidden. Short progress hints (`Building wasm...`, `Building test bundle...`, `Running tests...`) are written to stderr, leaving stdout to carry only the test results for clean capture and parsing. Forwards arguments verbatim, so `pnpm run test:quiet -- --focus ...` composes with the existing `--focus` flag. The default `pnpm run test` script and its output are unchanged. Also documents the new command in the developer guide and updates the frontend testing memory to recommend it for agent runs.
134 lines
5.6 KiB
JSON
134 lines
5.6 KiB
JSON
{
|
|
"name": "frontend",
|
|
"version": "1.0.0",
|
|
"license": "MPL-2.0",
|
|
"author": "Kaleidos INC",
|
|
"private": true,
|
|
"packageManager": "pnpm@10.31.0+sha512.e3927388bfaa8078ceb79b748ffc1e8274e84d75163e67bc22e06c0d3aed43dd153151cbf11d7f8301ff4acb98c68bdc5cadf6989532801ffafe3b3e4a63c268",
|
|
"browserslist": [
|
|
"defaults"
|
|
],
|
|
"type": "module",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/penpot/penpot"
|
|
},
|
|
"scripts": {
|
|
"build:app:assets": "node ./scripts/build-app-assets.js",
|
|
"build:storybook": "pnpm run build:storybook:assets && pnpm run build:storybook:cljs && storybook build",
|
|
"build:storybook:assets": "node ./scripts/build-storybook-assets.js",
|
|
"build:wasm": "../render-wasm/build",
|
|
"build:storybook:cljs": "clojure -M:dev:shadow-cljs compile storybook",
|
|
"build:app:libs": "node ./scripts/build-libs.js",
|
|
"build:app:main": "clojure -M:dev:shadow-cljs release main worker",
|
|
"build:app:worker": "clojure -M:dev:shadow-cljs release worker",
|
|
"build:app": "pnpm run clear:shadow-cache && pnpm run build:app:main && pnpm run build:app:libs",
|
|
"check-fmt:clj": "cljfmt check --parallel=true src/ test/",
|
|
"check-fmt:js": "prettier -c src/**/*.stories.jsx -c playwright/**/*.js -c scripts/**/*.js -c text-editor/**/*.js",
|
|
"check-fmt:scss": "prettier -c resources/styles -c src/**/*.scss",
|
|
"fmt:clj": "cljfmt fix --parallel=true src/ test/",
|
|
"fmt:js": "prettier -c src/**/*.stories.jsx -c playwright/**/*.js -c scripts/**/*.js -c text-editor/**/*.js -w",
|
|
"fmt:scss": "prettier -c resources/styles -c src/**/*.scss -w",
|
|
"lint:clj": "clj-kondo --parallel --lint ../common/src src/",
|
|
"lint:js": "exit 0",
|
|
"lint:scss": "pnpm exec stylelint '{src,resources}/**/*.scss'",
|
|
"build:test": "clojure -M:dev:shadow-cljs compile test",
|
|
"test": "pnpm run build:wasm && pnpm run build:test && node target/tests/test.js",
|
|
"test:quiet": "node ./scripts/test-quiet.js",
|
|
"test:storybook": "vitest run --project=storybook",
|
|
"watch:test": "mkdir -p target/tests && concurrently \"clojure -M:dev:shadow-cljs watch test\" \"nodemon -C -d 2 -w target/tests --exec 'node target/tests/test.js'\"",
|
|
"test:e2e": "playwright test --project default",
|
|
"translations": "node ./scripts/translations.js",
|
|
"watch:app:assets": "node ./scripts/watch.js",
|
|
"watch:app:libs": "node ./scripts/build-libs.js --watch",
|
|
"watch:app:main": "clojure -M:dev:shadow-cljs watch main worker storybook",
|
|
"clear:shadow-cache": "rm -rf .shadow-cljs",
|
|
"clear:wasm": "cargo clean --manifest-path ../render-wasm/Cargo.toml",
|
|
"watch": "exit 0",
|
|
"watch:app": "pnpm run clear:shadow-cache && pnpm run clear:wasm && pnpm run build:wasm && concurrently --kill-others-on-fail \"pnpm run watch:app:assets\" \"pnpm run watch:app:main\" \"pnpm run watch:app:libs\"",
|
|
"watch:storybook": "pnpm run build:storybook:assets && concurrently --kill-others-on-fail \"storybook dev -p 6006 --no-open\" \"node ./scripts/watch-storybook.js\"",
|
|
"postinstall": "(cd ../plugins/libs/plugins-runtime; pnpm install; pnpm run build)"
|
|
},
|
|
"devDependencies": {
|
|
"@penpot/draft-js": "workspace:./packages/draft-js",
|
|
"@penpot/mousetrap": "workspace:./packages/mousetrap",
|
|
"@penpot/plugins-runtime": "link:../plugins/libs/plugins-runtime",
|
|
"@penpot/svgo": "penpot/svgo#v3.2",
|
|
"@penpot/text-editor": "workspace:./text-editor",
|
|
"@penpot/tokenscript": "workspace:./packages/tokenscript",
|
|
"@penpot/ui": "workspace:./packages/ui",
|
|
"@playwright/test": "1.60.0",
|
|
"@storybook/addon-docs": "10.3.5",
|
|
"@storybook/addon-themes": "10.3.5",
|
|
"@storybook/addon-vitest": "10.3.5",
|
|
"@storybook/react-vite": "10.3.5",
|
|
"@tokens-studio/sd-transforms": "1.2.11",
|
|
"@types/node": "^25.5.2",
|
|
"@vitest/browser": "4.1.3",
|
|
"@vitest/browser-playwright": "^4.1.3",
|
|
"@vitest/coverage-v8": "4.1.3",
|
|
"@zip.js/zip.js": "2.8.26",
|
|
"autoprefixer": "^10.4.27",
|
|
"compression": "^1.8.1",
|
|
"concurrently": "^9.2.1",
|
|
"date-fns": "^4.1.0",
|
|
"esbuild": "^0.28.0",
|
|
"eventsource-parser": "^3.0.8",
|
|
"express": "^5.1.0",
|
|
"fancy-log": "^2.0.0",
|
|
"getopts": "^2.3.0",
|
|
"gettext-parser": "^9.0.2",
|
|
"highlight.js": "^11.10.0",
|
|
"js-beautify": "^1.15.4",
|
|
"jsdom": "^29.0.2",
|
|
"lodash": "^4.18.1",
|
|
"lodash.debounce": "^4.0.8",
|
|
"map-stream": "0.0.7",
|
|
"marked": "^17.0.5",
|
|
"mkdirp": "^3.0.1",
|
|
"mustache": "^4.2.0",
|
|
"nodemon": "^3.1.14",
|
|
"npm-run-all": "^4.1.5",
|
|
"opentype.js": "^1.3.4",
|
|
"p-limit": "^7.3.0",
|
|
"playwright": "1.60.0",
|
|
"postcss": "^8.5.8",
|
|
"postcss-clean": "^1.2.2",
|
|
"postcss-modules": "^6.0.1",
|
|
"postcss-scss": "^4.0.9",
|
|
"prettier": "3.8.1",
|
|
"pretty-time": "^1.1.0",
|
|
"prop-types": "^15.8.1",
|
|
"randomcolor": "^0.6.2",
|
|
"react": "19.2.4",
|
|
"react-dom": "19.2.4",
|
|
"react-error-boundary": "^6.1.1",
|
|
"react-virtualized": "^9.22.6",
|
|
"rimraf": "^6.1.3",
|
|
"rxjs": "8.0.0-alpha.14",
|
|
"sass": "^1.98.0",
|
|
"sass-embedded": "^1.98.0",
|
|
"sax": "^1.4.1",
|
|
"scheduler": "^0.27.0",
|
|
"source-map-support": "^0.5.21",
|
|
"storybook": "10.3.5",
|
|
"style-dictionary": "5.0.0-rc.1",
|
|
"stylelint": "^17.4.0",
|
|
"stylelint-config-standard-scss": "^17.0.0",
|
|
"stylelint-scss": "^7.0.0",
|
|
"stylelint-use-logical-spec": "^5.0.1",
|
|
"svg-sprite": "^2.0.4",
|
|
"tdigest": "^0.1.2",
|
|
"tinycolor2": "^1.6.0",
|
|
"typescript": "^6.0.2",
|
|
"ua-parser-js": "2.0.9",
|
|
"vite": "^8.0.7",
|
|
"vitest": "^4.1.3",
|
|
"wait-on": "^9.0.4",
|
|
"wasm-pack": "^0.13.1",
|
|
"watcher": "^2.3.1",
|
|
"workerpool": "^10.0.1",
|
|
"xregexp": "^5.1.2"
|
|
}
|
|
}
|