tests/{unit,integration,e2e}/, at the repo root (not under frontend/,
since e2e exercises the frontend and PocketBase together) — all
against real code rather than mocks:
- unit/: Vitest (nuxt environment) — pure functions in server/utils
and shared/utils, plus components/composables via
@nuxt/test-utils/runtime's mountSuspended.
- integration/: Vitest (node environment) — @nuxt/test-utils/e2e's
setup() builds and runs the real Nitro server against a real
ephemeral PocketBase instance, exercising the actual /content/* and
/admin routes end to end.
- e2e/: Playwright, a real browser against the built app and another
ephemeral PocketBase, covering the user-facing flows (home, blog
archive, article detail incl. JSON-LD, category filter, 404s, the
/admin redirect).
The Vitest/Playwright tooling (and node_modules) stays in frontend/,
the repo's only npm project; its configs just point at ../tests/.
Playwright resolves packages from the node_modules nearest each spec
file, so `npm run test:e2e` first symlinks tests/node_modules to
frontend/node_modules (pretest:e2e, idempotent, gitignored).
tests/support/pocketbase.ts is the shared piece behind integration
and e2e: it downloads the same pinned PocketBase binary
pocketbase/Dockerfile uses, starts it against the real
pocketbase/pb_migrations/ (not a copy), and seeds it from
tests/support/fixtures.ts — so these tests run against the exact
schema and API rules that ship to production, catching the class of
bug that only shows up when PocketBase actually enforces them (e.g. a
wrong filter/fields query string silently returning nothing, or too
much).
CLAUDE.md and docs/frontend.md document the new npm scripts and the
single-test commands for each layer.
56 lines
807 B
Plaintext
56 lines
807 B
Plaintext
# dependencies
|
|
node_modules/
|
|
.pnp/
|
|
.pnp.js
|
|
# symlink to frontend/node_modules (created by `npm run pretest:e2e`); the
|
|
# trailing-slash pattern above doesn't match a symlink even when it points to
|
|
# a directory
|
|
tests/node_modules
|
|
|
|
# env / secrets
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
*.pem
|
|
*.key
|
|
|
|
# ops (holds VPS credentials, never commit)
|
|
ops/
|
|
|
|
# nuxt
|
|
frontend/.nuxt/
|
|
frontend/.output/
|
|
frontend/.data/
|
|
frontend/dist/
|
|
.nitro/
|
|
.cache/
|
|
|
|
# playwright
|
|
frontend/test-results/
|
|
frontend/playwright-report/
|
|
|
|
# nuxt module-setup marker (regenerated, not meaningful project config)
|
|
frontend/.nuxtrc
|
|
|
|
# caddy runtime
|
|
caddy/data/
|
|
caddy/config/
|
|
|
|
# logs
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
pnpm-debug.log*
|
|
|
|
# editors / os
|
|
.vscode/
|
|
!.vscode/extensions.json
|
|
.idea/
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# misc
|
|
coverage/
|
|
*.tsbuildinfo
|