Add Playwright fixtures with 5 test user types for e2e tests

Creates test infrastructure to enable previously skipped e2e tests:
- Onboarding user (no period data) for setup flow tests
- Established user (period 14 days ago) for normal usage tests
- Calendar user (with calendarToken) for ICS feed tests
- Garmin user (valid tokens) for connected state tests
- Garmin expired user (expired tokens) for expiry warning tests

Also fixes ICS feed route to strip .ics suffix from Next.js dynamic
route param, adds calendarToken to /api/user response, and sets
viewRule on users collection for unauthenticated ICS access.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-15 05:54:49 +00:00
parent b221acee40
commit ff3d8fad2c
9 changed files with 1434 additions and 1148 deletions

View File

@@ -14,11 +14,13 @@ interface RouteParams {
}
export async function GET(_request: NextRequest, { params }: RouteParams) {
const { userId, token } = await params;
const { userId, token: rawToken } = await params;
// Strip .ics suffix if present (Next.js may include it in the param)
const token = rawToken.endsWith(".ics") ? rawToken.slice(0, -4) : rawToken;
const pb = createPocketBaseClient();
try {
// Fetch user from database
const pb = createPocketBaseClient();
const user = await pb.collection("users").getOne(userId);
// Check if user has a calendar token set