63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/');
|
|
});
|
|
|
|
test.describe('Language', () => {
|
|
test('checks the language picker', async ({ page }) => {
|
|
await expect(
|
|
page.getByRole('button', {
|
|
name: 'Create a new document',
|
|
}),
|
|
).toBeVisible();
|
|
|
|
const header = page.locator('header').first();
|
|
await header.getByRole('combobox').getByText('English').click();
|
|
await header.getByRole('option', { name: 'Français' }).click();
|
|
await expect(
|
|
header.getByRole('combobox').getByText('Français'),
|
|
).toBeVisible();
|
|
|
|
await expect(
|
|
page.getByRole('button', {
|
|
name: 'Créer un nouveau document',
|
|
}),
|
|
).toBeVisible();
|
|
});
|
|
|
|
test('checks that backend uses the same language as the frontend', async ({
|
|
page,
|
|
}) => {
|
|
// Helper function to intercept and assert 404 response
|
|
const check404Response = async (expectedDetail: string) => {
|
|
const expectedBackendResponse = page.waitForResponse(
|
|
(response) =>
|
|
response.url().includes('/api') &&
|
|
response.url().includes('non-existent-doc-uuid') &&
|
|
response.status() === 404,
|
|
);
|
|
|
|
// Trigger the specific 404 XHR response by navigating to a non-existent document
|
|
await page.goto('/docs/non-existent-doc-uuid');
|
|
|
|
// Assert that the intercepted error message is in the expected language
|
|
const interceptedBackendResponse = await expectedBackendResponse;
|
|
expect(await interceptedBackendResponse.json()).toStrictEqual({
|
|
detail: expectedDetail,
|
|
});
|
|
};
|
|
|
|
// Check for English 404 response
|
|
await check404Response('Not found.');
|
|
|
|
// Switch language to French
|
|
const header = page.locator('header').first();
|
|
await header.getByRole('combobox').getByText('English').click();
|
|
await header.getByRole('option', { name: 'Français' }).click();
|
|
|
|
// Check for French 404 response
|
|
await check404Response('Pas trouvé.');
|
|
});
|
|
});
|