(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:
Anthony LC
2026-08-07 10:47:49 +02:00
parent 58f70e0d2c
commit b4b5f9fc2c
2 changed files with 19 additions and 31 deletions
@@ -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();