Update tests and e2e files to support locale-based routing

- Replaced static paths with dynamic locale subpaths (`/[locale]/*`) in imports, URLs, and assertions across tests.
- Updated `next-intl` mocks for improved compatibility with `locale`-aware components.
- Standardized `page.goto` and navigation tests with `/en` as the base locale for consistency.
This commit is contained in:
Felipe Cardoso
2025-11-18 23:26:10 +01:00
parent d1b47006f4
commit da021d0640
42 changed files with 296 additions and 267 deletions

View File

@@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test';
test.describe('Password Reset Request Flow', () => {
test.beforeEach(async ({ page }) => {
// Navigate to password reset page
await page.goto('/password-reset');
await page.goto('/en/password-reset');
});
test('should display password reset request form', async ({ page }) => {
@@ -37,7 +37,7 @@ test.describe('Password Reset Request Flow', () => {
await page.waitForTimeout(1000);
// Should stay on password reset page (validation failed)
await expect(page).toHaveURL('/password-reset');
await expect(page).toHaveURL('/en/password-reset');
});
test('should successfully submit password reset request', async ({ page }) => {
@@ -55,10 +55,10 @@ test.describe('Password Reset Request Flow', () => {
// Click back to login link - use Promise.all to wait for navigation
const loginLink = page.getByRole('link', { name: 'Back to login' });
await Promise.all([page.waitForURL('/login'), loginLink.click()]);
await Promise.all([page.waitForURL('/en/login'), loginLink.click()]);
// Should be on login page
await expect(page).toHaveURL('/login');
await expect(page).toHaveURL('/en/login');
await expect(page.locator('h2')).toContainText('Sign in to your account');
});
@@ -84,7 +84,7 @@ test.describe('Password Reset Request Flow', () => {
test.describe('Password Reset Confirm Flow', () => {
test('should display error for missing token', async ({ page }) => {
// Navigate without token
await page.goto('/password-reset/confirm');
await page.goto('/en/password-reset/confirm');
// Should show error message
await expect(page.locator('h2')).toContainText(/Invalid/i);
@@ -95,7 +95,7 @@ test.describe('Password Reset Confirm Flow', () => {
test('should display password reset confirm form with valid token', async ({ page }) => {
// Navigate with token (using a dummy token for UI testing)
await page.goto('/password-reset/confirm?token=dummy-test-token-123');
await page.goto('/en/password-reset/confirm?token=dummy-test-token-123');
// Check page title
await expect(page.locator('h2')).toContainText('Set new password');
@@ -108,7 +108,7 @@ test.describe('Password Reset Confirm Flow', () => {
test('should show validation errors for empty form', async ({ page }) => {
// Navigate with token
await page.goto('/password-reset/confirm?token=dummy-test-token-123');
await page.goto('/en/password-reset/confirm?token=dummy-test-token-123');
// Click submit without filling form
await page.locator('button[type="submit"]').click();
@@ -120,7 +120,7 @@ test.describe('Password Reset Confirm Flow', () => {
test('should show validation error for weak password', async ({ page }) => {
// Navigate with token
await page.goto('/password-reset/confirm?token=dummy-test-token-123');
await page.goto('/en/password-reset/confirm?token=dummy-test-token-123');
// Fill with weak password
await page.locator('input[name="new_password"]').fill('weak');
@@ -136,7 +136,7 @@ test.describe('Password Reset Confirm Flow', () => {
test('should show validation error for mismatched passwords', async ({ page }) => {
// Navigate with token
await page.goto('/password-reset/confirm?token=dummy-test-token-123');
await page.goto('/en/password-reset/confirm?token=dummy-test-token-123');
// Fill with mismatched passwords
await page.locator('input[name="new_password"]').fill('Password123!');
@@ -152,7 +152,7 @@ test.describe('Password Reset Confirm Flow', () => {
test('should show error for invalid token', async ({ page }) => {
// Navigate with invalid token
await page.goto('/password-reset/confirm?token=invalid-token');
await page.goto('/en/password-reset/confirm?token=invalid-token');
// Fill form with valid passwords
await page.locator('input[name="new_password"]').fill('NewPassword123!');
@@ -172,7 +172,7 @@ test.describe('Password Reset Confirm Flow', () => {
// In real scenario, you'd generate a token via API or use a test fixture
// For UI testing, we use a dummy token - backend will reject it
await page.goto('/password-reset/confirm?token=valid-test-token-from-backend');
await page.goto('/en/password-reset/confirm?token=valid-test-token-from-backend');
// Fill form with valid passwords
await page.locator('input[name="new_password"]').fill('NewPassword123!');
@@ -188,21 +188,21 @@ test.describe('Password Reset Confirm Flow', () => {
test('should navigate to request new reset link', async ({ page }) => {
// Navigate without token to trigger error state
await page.goto('/password-reset/confirm');
await page.goto('/en/password-reset/confirm');
// Click request new reset link - use Promise.all to wait for navigation
const resetLink = page.getByRole('link', { name: 'Request new reset link' });
await Promise.all([page.waitForURL('/password-reset'), resetLink.click()]);
await Promise.all([page.waitForURL('/en/password-reset'), resetLink.click()]);
// Should be on password reset request page
await expect(page).toHaveURL('/password-reset');
await expect(page).toHaveURL('/en/password-reset');
await expect(page.locator('h2')).toContainText('Reset your password');
});
test('should toggle password visibility', async ({ page }) => {
// Navigate with token
await page.goto('/password-reset/confirm?token=dummy-test-token-123');
await page.goto('/en/password-reset/confirm?token=dummy-test-token-123');
const passwordInput = page.locator('input[name="new_password"]');
const confirmPasswordInput = page.locator('input[name="confirm_password"]');
@@ -216,7 +216,7 @@ test.describe('Password Reset Confirm Flow', () => {
test('should disable submit button while loading', async ({ page }) => {
// Navigate with token
await page.goto('/password-reset/confirm?token=dummy-test-token-123');
await page.goto('/en/password-reset/confirm?token=dummy-test-token-123');
// Fill form
await page.locator('input[name="new_password"]').fill('NewPassword123!');