AGENTS.md@e2e/demo-nuxt · diff
git:20261014.2e7bbe8 to git:20261020.8d47d7a
3 added, 65 removed. Audit A to B.
- # Agent Instructions — `e2e/demo-nuxt/`
-
- Playwright project that exercises `apps/demo-nuxt/` end-to-end against
- the standalone `@zitadel/api-mock` TCP server. Defer to root
- [`AGENTS.md`](../../AGENTS.md) for repo-wide rules.
-
- ## Scope
-
- This project covers the boundary that Vitest cannot reach:
-
- - `<zitadel-login>` mounted inside Nuxt's `<ClientOnly>` after the SSR pass.
- - The Lit orchestrator's internal `POST /sessions/exchange` traversing
- the Nitro `/__nextgen` proxy installed by `@zitadel/sdk-nuxt`.
- - The `__nextgen_session` cookie being set on the demo origin and
- surviving the full-page navigation triggered by `post-sign-in-url`.
- - The Nitro auth middleware accepting that cookie on the next request
- and bouncing unauthenticated traffic back to `/login`.
-
- It is the Nuxt-side mirror of `e2e/demo-next/`. Both lanes must
- exist because the proxy and route-protection layers are different
- implementations on each framework — a regression in one SDK does not
- necessarily surface in the other.
-
- ## Non-Goals — Do Not Add Tests Here For…
-
- - Atom rendering, ARIA, focus delegation, form participation, Enter-to-submit
- → `packages/components` Vitest unit / browser projects.
- - Step transitions, error rendering, exchange call shape
- → `packages/components/src/orchestrator/zitadel-login.spec.ts` (Vitest).
- - Mock handler logic, RS256 token contract, JWKS shape
- → `packages/api-mock` Vitest projects.
- - Anything Vue-specific (composable behaviour, reactive bindings,
- `useState` lifecycle) → keep in `packages/sdk-nuxt`'s own unit suite,
- not here.
-
- If a property can be proven without booting Nuxt + Nitro, it does not
- belong in this project.
-
- ## Running
-
- ```sh
- corepack pnpm exec playwright install # one-time, browsers
- moon run e2e:demo-nuxt-mock
- ```
-
- Moon rebuilds `@zitadel/components` first through task dependencies, then
- Playwright boots `api-mock` (`:8081`) and `demo-nuxt` (`:3001`) through
- direct `pnpm --filter` commands.
-
- The api-mock listens on `:8081` here (not the default `:8080` used by
- `e2e/demo-next/`) so the two mock lanes can run side by side (turbo runs them
- in one step) without `EADDRINUSE`. The `PORT` override is
- plumbed through via Playwright's `webServer.env` and matched by the
- `ZITADEL_URL` passed to the Nuxt dev server. Both knobs are
- existing env contracts — no application code changes.
-
- Cold-start for Nuxt + Vite optimiser is noticeably slower than Next; the
- `webServer.timeout` is bumped to 120 s to accommodate that on CI.
-
- ## When Adding A Spec
+ # Agent Instructions — `e2e/demo-nuxt`
- - Mirror specs across `e2e/demo-next` and `e2e/demo-nuxt` only when the
- property genuinely depends on framework-specific behaviour. Most
- orchestrator behaviour belongs in Vitest, not duplicated here.
- - Use Playwright web-first locators (`getByRole`, `getByLabel`) so
- shadow DOM is pierced consistently.
+ Both demo lanes share one guide:
+ [`e2e/demo-next/AGENTS.md`](../demo-next/AGENTS.md).