mirror of
https://github.com/suitenumerique/docs.git
synced 2026-08-17 21:25:43 +02:00
✅(e2e) fix flakiness with language tests
When tests were run in parallel, the language tests could introduce flakiness due to a switch to the default language not being completed before the next test started.
This commit is contained in:
@@ -68,14 +68,19 @@ test.describe('Language', () => {
|
||||
});
|
||||
|
||||
test('can switch language using only keyboard', async ({ page }) => {
|
||||
await waitForLanguageSwitch(page, TestLanguage.English, 'User menu', false);
|
||||
// switch to french
|
||||
await waitForLanguageSwitch(page, TestLanguage.French);
|
||||
|
||||
await page.getByLabel('User menu').click();
|
||||
await page.getByLabel('Menu utilisateur').click();
|
||||
|
||||
await page.keyboard.press('Tab');
|
||||
await page.keyboard.press('Tab');
|
||||
await page.keyboard.press('Enter');
|
||||
|
||||
await expect(
|
||||
page.getByRole('button', { name: 'Déconnexion' }),
|
||||
).toBeVisible();
|
||||
|
||||
await expect(page.getByRole('menuitem', { name: 'English' })).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Français' }),
|
||||
@@ -83,22 +88,6 @@ test.describe('Language', () => {
|
||||
|
||||
await page.waitForTimeout(300);
|
||||
|
||||
await page.keyboard.press('ArrowDown');
|
||||
await page.keyboard.press('Enter');
|
||||
|
||||
await expect(page.locator('html')).toHaveAttribute('lang', 'fr');
|
||||
await expect(
|
||||
page.getByRole('button', { name: 'Déconnexion' }),
|
||||
).toBeVisible();
|
||||
|
||||
await page.keyboard.press('Escape');
|
||||
|
||||
await page.getByLabel('Menu utilisateur').click();
|
||||
|
||||
await page.keyboard.press('Tab');
|
||||
await page.keyboard.press('Tab');
|
||||
await page.keyboard.press('Enter');
|
||||
await page.waitForTimeout(300);
|
||||
await page.keyboard.press('ArrowDown');
|
||||
await page.keyboard.press('ArrowUp');
|
||||
await page.keyboard.press('Enter');
|
||||
|
||||
@@ -402,20 +402,7 @@ export async function waitForLanguageSwitch(
|
||||
page: Page,
|
||||
lang: TestLanguageValue,
|
||||
labelUserMenu = 'User menu',
|
||||
withMocking = true,
|
||||
) {
|
||||
await page.route(/\**\/api\/v1.0\/users\/\**/, async (route, request) => {
|
||||
if (request.method().includes('PATCH') && withMocking) {
|
||||
await route.fulfill({
|
||||
json: {
|
||||
language: lang.expectedLocale[0],
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await route.continue();
|
||||
}
|
||||
});
|
||||
|
||||
await page.getByLabel(labelUserMenu).click();
|
||||
const languagePicker = page.getByRole('button', { name: /Language/ });
|
||||
const isAlreadyTargetLanguage = await languagePicker
|
||||
@@ -427,6 +414,18 @@ export async function waitForLanguageSwitch(
|
||||
return;
|
||||
}
|
||||
|
||||
await page.route(/\**\/api\/v1.0\/users\/\**/, async (route, request) => {
|
||||
if (request.method().includes('PATCH')) {
|
||||
await route.fulfill({
|
||||
json: {
|
||||
language: lang.expectedLocale[0],
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await route.continue();
|
||||
}
|
||||
});
|
||||
|
||||
await languagePicker.click();
|
||||
|
||||
await page.getByRole('menuitem', { name: lang.label }).click();
|
||||
|
||||
Reference in New Issue
Block a user