Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 1x | /**
* Portal language switcher — ad-hoc UI language switching from the menubar.
*
* The language switcher renders to the left of the profile menu (config-driven
* via `portal.languages`). Selecting a language switches the UI immediately
* (client-side `setLanguage` — the choice is NOT persisted to the user
* profile; that is the profile page's preferred-language edit).
*
* Screenshots (baseline via `npm run playwright:update`, verify via
* `npm run playwright`):
* - `language-switch-closed.png` — the switcher in the menubar (English)
* - `language-switch-open.png` — the language list open
* - `language-switch-bg.png` — the UI switched to Bulgarian
*/
import {expect, test} from '@feasibleone/blong-browser/playwright';
test.use({blongPermissions: true});
test.describe('Portal language switcher', () => {
test('switches the UI language ad-hoc from the menubar', async ({page, portal}) => {
test.setTimeout(120_000);
// The portal fixture has logged in (as testAdmin).
await expect(page.locator('.blong-portal-menubar')).toBeVisible();
// The menubar shows the language switcher to the left of the account menu.
const switcher = page.locator('.blong-language-switcher');
const switcherLabel = page.locator('.blong-language-switcher .p-dropdown-label');
await expect(switcher).toBeVisible();
await expect(switcherLabel).toHaveText('English');
await expect(page).toHaveScreenshot('language-switch-closed.png');
// Open it — the configurable language list appears.
await switcher.click();
await expect(page.locator('.p-dropdown-panel')).toBeVisible();
await expect(page.locator('.p-dropdown-item', {hasText: 'English'})).toBeVisible();
await expect(page.locator('.p-dropdown-item', {hasText: 'Български'})).toBeVisible();
await expect(page).toHaveScreenshot('language-switch-open.png');
// Pick Bulgarian — the UI switches immediately.
await page.locator('.p-dropdown-item', {hasText: 'Български'}).click();
await expect(switcherLabel).toHaveText('Български');
// The account menu now renders in Bulgarian.
const avatar = page.locator('.blong-account-menu__avatar');
await expect(avatar).toBeVisible();
await avatar.click();
const menu = page.locator('.blong-account-menu__menu');
await expect(menu).toBeVisible();
await expect(menu.getByText('Профил')).toBeVisible();
await expect(menu.getByText('Отписване')).toBeVisible();
await expect(page).toHaveScreenshot('language-switch-bg.png');
// Close the menu, then switch back to English (ad-hoc — no persistence).
await page.keyboard.press('Escape');
await expect(menu).toBeHidden();
await switcher.click();
await page.locator('.p-dropdown-item', {hasText: 'English'}).click();
await expect(switcherLabel).toHaveText('English');
// The account menu is English again.
await avatar.click();
await expect(menu.getByText('Profile')).toBeVisible();
await expect(menu.getByText('Sign out')).toBeVisible();
});
});
|