Files
goodgo-platform/e2e/web/auth-oauth-callback.spec.ts
Ho Ngoc Hai cc5c81904b fix(lint): resolve all 49 lint warnings and errors across codebase
- Remove unused imports/variables in seed scripts and test files
- Replace console.log with console.warn in seed/utility scripts
- Replace `as any` with proper Prisma types (InputJsonValue, PaymentStatus, Plan, UserWhereInput)
- Fix import-x/no-named-as-default-member warnings in logger, mapbox, eslint config
- Prefix unused callback params with underscore in e2e tests

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-08 13:22:07 +07:00

58 lines
1.9 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('OAuth Callback Pages', () => {
test.describe('Google callback', () => {
test('shows loading state while processing', async ({ page }) => {
// Intercept token exchange to keep it pending
await page.route('**/auth/google/callback**', (_route) =>
new Promise(() => {
// Never resolve — keeps loading state visible
}),
);
await page.goto('/auth/callback/google?code=test-code');
// Should show a loading/spinner state
await expect(page.locator('.animate-spin').first()).toBeVisible({ timeout: 5000 });
});
test('redirects to login with error on failure', async ({ page }) => {
await page.route('**/auth/google/callback**', (route) =>
route.fulfill({
status: 401,
contentType: 'application/json',
body: JSON.stringify({ message: 'OAuth failed' }),
}),
);
await page.goto('/auth/callback/google?code=bad-code');
await expect(page).toHaveURL(/\/login\?error=/, { timeout: 10000 });
});
});
test.describe('Zalo callback', () => {
test('shows loading state while processing', async ({ page }) => {
await page.route('**/auth/zalo/callback**', (_route) =>
new Promise(() => {
// Never resolve
}),
);
await page.goto('/auth/callback/zalo?code=test-code');
await expect(page.locator('.animate-spin').first()).toBeVisible({ timeout: 5000 });
});
test('redirects to login with error on failure', async ({ page }) => {
await page.route('**/auth/zalo/callback**', (route) =>
route.fulfill({
status: 401,
contentType: 'application/json',
body: JSON.stringify({ message: 'OAuth failed' }),
}),
);
await page.goto('/auth/callback/zalo?code=bad-code');
await expect(page).toHaveURL(/\/login\?error=/, { timeout: 10000 });
});
});
});