Add self-contained e2e test harness with ephemeral PocketBase
Some checks failed
CI / quality (push) Failing after 29s
Deploy / deploy (push) Successful in 2m37s

Previously, 15 e2e tests were skipped because TEST_USER_EMAIL and
TEST_USER_PASSWORD env vars weren't set. Now the test harness:

- Starts a fresh PocketBase instance in /tmp on port 8091
- Creates admin user, collections, and API rules automatically
- Seeds test user with period data for authenticated tests
- Cleans up temp directory after tests complete

Also fixes:
- Override toggle tests now use checkbox role (not button)
- Adds proper wait for OVERRIDES section before testing toggles
- Suppresses document.cookie lint warning with explanation

Test results: 64 e2e tests pass, 1014 unit tests pass

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-13 09:38:24 +00:00
parent eeeece17bf
commit 8c59b3bd67
12 changed files with 603 additions and 28 deletions

View File

@@ -6,6 +6,13 @@ export default defineConfig({
// Test directory for E2E tests
testDir: "./e2e",
// Global setup/teardown for PocketBase harness
globalSetup: "./e2e/global-setup.ts",
globalTeardown: "./e2e/global-teardown.ts",
// Exclude vitest test files
testIgnore: ["**/pocketbase-harness.test.ts"],
// Run tests in parallel
fullyParallel: true,
@@ -37,10 +44,16 @@ export default defineConfig({
projects: [{ name: "chromium", use: { ...devices["Desktop Chrome"] } }],
// Run dev server before starting tests
// Note: POCKETBASE_URL is set by global-setup.ts for the test PocketBase instance
webServer: {
command: "pnpm dev",
url: "http://localhost:3000",
reuseExistingServer: !process.env.CI,
timeout: 120 * 1000, // 2 minutes for Next.js to start
env: {
// Use the test PocketBase instance (port 8091)
NEXT_PUBLIC_POCKETBASE_URL: "http://127.0.0.1:8091",
POCKETBASE_URL: "http://127.0.0.1:8091",
},
},
});