@@ -4,18 +4,20 @@ Fresh-app Playwright coverage for the customer local setup journey.
44
55This project is private test infrastructure. It does not test the checked-in
66demo apps. Instead, it builds the current workspace packages, publishes packed
7- tarballs to a temporary registry, creates an empty app directory outside the
8- repo, runs the customer local CLI flow through ` npx ` , starts the generated app,
9- and verifies that a real user can register, log out, and log in again.
7+ tarballs to a temporary registry, creates empty app directories outside the
8+ repo, runs the customer local CLI flow through ` npx ` , starts the generated apps,
9+ and verifies that real users can register, log out, and log in again across
10+ Next, Nuxt, React, Vue, and Angular.
1011
1112## Local runner
1213
1314``` sh
1415corepack pnpm run journey
1516```
1617
17- The default mode uses Docker for Verdaccio and for the CLI-managed local
18- runtime. It builds a local runtime image unless ` --image ` is provided:
18+ The default mode runs the full framework matrix in parallel. It uses Docker for
19+ Verdaccio and for the CLI-managed local runtimes, and builds a local runtime
20+ image unless ` --image ` is provided:
1921
20221 . Ensure the Playwright Chromium browsers are installed.
21232 . Build the public workspace packages.
@@ -25,21 +27,26 @@ runtime. It builds a local runtime image unless `--image` is provided:
25275 . Start Verdaccio with npmjs proxying enabled.
26286 . Publish tarballs to Verdaccio with ` alpha ` and ` latest ` tags.
27297 . Build or use a local runtime Docker image for ` zitadel start ` .
28- 8 . Create an empty app directory in a temporary directory.
30+ 8 . Create one empty app directory per selected framework in a temporary directory.
29319 . Run ` npx <cli-package>@alpha doctor --non-interactive --json ` .
303210 . Run ` npx <cli-package>@alpha start --non-interactive --json ` .
31- 11 . Run ` npx <cli-package>@alpha setup --framework next --server local --non-interactive --json ` .
32- 12 . Start the generated app on ` localhost ` .
33- 13 . Run the Playwright tests with one worker.
33+ 11 . Run ` npx <cli-package>@alpha setup --framework <id> --server local --non-interactive --json ` .
34+ 12 . Start each generated app on ` localhost ` .
35+ 13 . Run the Playwright tests with one worker per framework journey .
3436
3537### Options
3638
3739``` sh
3840corepack pnpm run journey -- --keep
3941corepack pnpm run journey -- --work-dir /tmp/zitadel-journey
4042corepack pnpm run journey -- --image nextgen:local
43+ corepack pnpm run journey -- --framework next
44+ corepack pnpm run journey -- --concurrency 2
4145```
4246
47+ - ` --framework <id> ` runs one framework (` next ` , ` nuxt ` , ` react ` , ` vue ` , or
48+ ` angular ` ) instead of the full matrix.
49+ - ` --concurrency <n> ` controls local framework parallelism. The default is ` 5 ` .
4350- ` --image <docker-tag> ` uses an existing local runtime image instead of
4451 building one.
4552- ` --keep ` keeps the temporary work directory after success.
@@ -48,29 +55,33 @@ corepack pnpm run journey -- --image nextgen:local
4855Useful environment overrides:
4956
5057- ` JOURNEY_REGISTRY_PORT `
51- - ` JOURNEY_APP_PORT `
58+ - ` JOURNEY_APP_PORT ` for single-framework runs only
59+ - ` JOURNEY_ZITADEL_PORT ` for single-framework runs only
5260- ` JOURNEY_ENABLE_PASSKEY=0 ` as a local-only escape hatch while debugging
5361 passkey setup. CI must run passkey coverage.
5462
5563## CI gate
5664
57- The ` consumer-journey-e2e ` workflow job does not use public Zitadel packages or
58- GHCR images. It downloads the GoReleaser snapshot image and the public npm
59- package tarballs produced by the same workflow, publishes those tarballs to
60- Verdaccio, points ` ZITADEL_LOCAL_IMAGE ` at the loaded image, runs the same
61- ` npx ` local setup flow, and runs the same Playwright project against the
62- generated app. Private support packages such as design tokens are bundled into
63- the public packages that need them and must not be uploaded or published.
65+ The ` consumer-journey-e2e ` workflow job runs as a framework matrix. Each matrix
66+ leg does not use public Zitadel packages or GHCR images. It downloads the
67+ GoReleaser snapshot image and the public npm package tarballs produced by the
68+ same workflow, publishes those tarballs to Verdaccio, points
69+ ` ZITADEL_LOCAL_IMAGE ` at the loaded image, runs the same ` npx ` local setup flow,
70+ and runs the same Playwright project against the generated app. Private support
71+ packages such as design tokens are bundled into the public packages that need
72+ them and must not be uploaded or published.
6473
6574Failure diagnostics intentionally stay small: Playwright report/output,
6675doctor/start/setup JSON and stderr, local runtime metadata/logs, metadata,
67- generated app ` package.json ` and ` package-lock.json ` , Verdaccio logs, and Next
68- logs. Do not upload generated app ` node_modules ` or ` .next ` directories.
76+ generated app ` package.json ` and ` package-lock.json ` , Verdaccio logs, and
77+ generated app logs. Do not upload generated app ` node_modules ` or framework
78+ build directories.
6979
7080## Coverage
7181
72- The suite is serial and one-worker because every test shares the same fresh
73- backend and generated app instance.
82+ Each framework suite is serial and one-worker because every test in that suite
83+ shares the same fresh backend and generated app instance. Local all-framework
84+ runs execute framework suites in parallel.
7485
7586- CLI local setup contract: doctor, start, and setup exit successfully, stdout
7687 parses as JSON, ` status ` is ` ok ` , the generated app depends on the local SDK
@@ -79,5 +90,3 @@ backend and generated app instance.
7990 out, and log in again with password.
8091- Passkey-only account: register with email/passkey, log out, and log in again
8192 with passkey.
82- - Password-plus-passkey account: register with password, accept passkey setup,
83- log out, log in with password, log out, and log in with passkey.
0 commit comments