2024-04-02 12:13:06 +02:00
|
|
|
import { expect, test } from '@playwright/test';
|
|
|
|
|
|
2025-07-16 13:56:18 +02:00
|
|
|
import {
|
|
|
|
|
expectLoginPage,
|
|
|
|
|
keyCloakSignIn,
|
|
|
|
|
overrideConfig,
|
|
|
|
|
} from './utils-common';
|
2024-04-02 12:13:06 +02:00
|
|
|
|
|
|
|
|
test.describe('Header', () => {
|
2025-03-25 13:01:48 +01:00
|
|
|
test('checks all the elements are visible', async ({ page }) => {
|
2024-08-16 14:51:42 +02:00
|
|
|
await page.goto('/');
|
|
|
|
|
|
2024-04-02 12:13:06 +02:00
|
|
|
const header = page.locator('header').first();
|
|
|
|
|
|
2025-08-06 14:55:20 +02:00
|
|
|
await expect(header.getByTestId('header-logo-link')).toBeVisible();
|
2025-08-04 16:00:17 +02:00
|
|
|
await expect(header.locator('h1').getByText('Docs')).toHaveCSS(
|
2025-03-25 13:01:48 +01:00
|
|
|
'font-family',
|
|
|
|
|
/Roboto/i,
|
2024-04-02 12:13:06 +02:00
|
|
|
);
|
2025-03-25 13:01:48 +01:00
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
|
header.getByRole('button', {
|
|
|
|
|
name: 'Logout',
|
|
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
|
|
|
|
|
await expect(header.getByText('English')).toBeVisible();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('checks all the elements are visible with DSFR theme', async ({
|
|
|
|
|
page,
|
|
|
|
|
}) => {
|
|
|
|
|
await overrideConfig(page, {
|
|
|
|
|
FRONTEND_THEME: 'dsfr',
|
|
|
|
|
});
|
|
|
|
|
await page.goto('/');
|
|
|
|
|
|
|
|
|
|
const header = page.locator('header').first();
|
|
|
|
|
|
2025-08-04 16:00:17 +02:00
|
|
|
await expect(header.getByTestId('header-icon-docs')).toBeVisible();
|
|
|
|
|
await expect(header.locator('h1').getByText('Docs')).toHaveCSS(
|
2024-04-02 12:13:06 +02:00
|
|
|
'font-family',
|
|
|
|
|
/Marianne/i,
|
|
|
|
|
);
|
|
|
|
|
|
2024-09-06 14:23:22 +02:00
|
|
|
await expect(
|
|
|
|
|
header.getByRole('button', {
|
|
|
|
|
name: 'Logout',
|
|
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
|
2024-10-11 13:29:07 +02:00
|
|
|
await expect(header.getByText('English')).toBeVisible();
|
2024-04-02 12:13:06 +02:00
|
|
|
|
2024-05-14 11:58:20 +02:00
|
|
|
await expect(
|
|
|
|
|
header.getByRole('button', {
|
|
|
|
|
name: 'Les services de La Suite numérique',
|
|
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('checks La Gauffre interaction', async ({ page }) => {
|
2025-03-25 13:01:48 +01:00
|
|
|
await overrideConfig(page, {
|
|
|
|
|
FRONTEND_THEME: 'dsfr',
|
|
|
|
|
});
|
|
|
|
|
await page.goto('/');
|
|
|
|
|
|
2024-05-14 11:58:20 +02:00
|
|
|
const header = page.locator('header').first();
|
|
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
|
header.getByRole('button', {
|
|
|
|
|
name: 'Les services de La Suite numérique',
|
|
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* La gaufre load a js file from a remote server,
|
|
|
|
|
* it takes some time to load the file and have the interaction available
|
|
|
|
|
*/
|
|
|
|
|
// eslint-disable-next-line playwright/no-wait-for-timeout
|
|
|
|
|
await page.waitForTimeout(1500);
|
|
|
|
|
|
|
|
|
|
await header
|
|
|
|
|
.getByRole('button', {
|
|
|
|
|
name: 'Les services de La Suite numérique',
|
|
|
|
|
})
|
|
|
|
|
.click();
|
|
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('link', { name: 'France Transfert' }),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
|
|
|
|
|
await expect(page.getByRole('link', { name: 'Grist' })).toBeVisible();
|
2024-04-02 12:13:06 +02:00
|
|
|
});
|
2024-06-06 22:13:18 +02:00
|
|
|
});
|
|
|
|
|
|
2024-10-04 13:24:57 +02:00
|
|
|
test.describe('Header mobile', () => {
|
|
|
|
|
test.use({ viewport: { width: 500, height: 1200 } });
|
|
|
|
|
|
2025-03-25 13:01:48 +01:00
|
|
|
test('it checks the header when mobile with DSFR theme', async ({ page }) => {
|
|
|
|
|
await overrideConfig(page, {
|
|
|
|
|
FRONTEND_THEME: 'dsfr',
|
|
|
|
|
});
|
|
|
|
|
|
2024-10-04 13:24:57 +02:00
|
|
|
await page.goto('/');
|
|
|
|
|
|
|
|
|
|
const header = page.locator('header').first();
|
|
|
|
|
|
2024-11-18 09:46:15 +01:00
|
|
|
await expect(header.getByLabel('Open the header menu')).toBeVisible();
|
2025-08-04 16:00:17 +02:00
|
|
|
await expect(header.getByTestId('header-icon-docs')).toBeVisible();
|
2024-10-04 13:24:57 +02:00
|
|
|
await expect(
|
2024-11-18 09:46:15 +01:00
|
|
|
header.getByRole('button', {
|
|
|
|
|
name: 'Les services de La Suite numérique',
|
2024-10-04 13:24:57 +02:00
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2024-06-06 22:13:18 +02:00
|
|
|
test.describe('Header: Log out', () => {
|
|
|
|
|
test.use({ storageState: { cookies: [], origins: [] } });
|
|
|
|
|
|
2025-02-12 12:10:06 +01:00
|
|
|
// eslint-disable-next-line playwright/expect-expect
|
2024-06-06 22:13:18 +02:00
|
|
|
test('checks logout button', async ({ page, browserName }) => {
|
|
|
|
|
await page.goto('/');
|
|
|
|
|
await keyCloakSignIn(page, browserName);
|
2024-05-14 13:08:21 +02:00
|
|
|
|
|
|
|
|
await page
|
|
|
|
|
.getByRole('button', {
|
|
|
|
|
name: 'Logout',
|
|
|
|
|
})
|
|
|
|
|
.click();
|
|
|
|
|
|
2025-02-03 11:02:29 +01:00
|
|
|
await expectLoginPage(page);
|
2024-05-14 13:08:21 +02:00
|
|
|
});
|
2024-04-02 12:13:06 +02:00
|
|
|
});
|