The fallback of the Trans component didn't work anymore after upgrade to 16.2.3 of react-i18next. Upgrading to 16.3.3 fixed the issue. We added a test to cover this case.
165 lines
5.0 KiB
TypeScript
165 lines
5.0 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
import { overrideConfig } from './utils-common';
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/docs/');
|
|
});
|
|
|
|
test.describe('Home page', () => {
|
|
test.use({ storageState: { cookies: [], origins: [] } });
|
|
test('checks all the elements are visible', async ({ page }) => {
|
|
await page.goto('/docs/');
|
|
|
|
// Check header content
|
|
const header = page.locator('header').first();
|
|
const footer = page.locator('footer').first();
|
|
await expect(header).toBeVisible();
|
|
|
|
const languageButton = page.getByRole('button', {
|
|
name: /Language|Select language/,
|
|
});
|
|
await expect(languageButton).toBeVisible();
|
|
|
|
await expect(header.getByTestId('header-icon-docs')).toBeVisible();
|
|
await expect(header.getByRole('heading', { name: 'Docs' })).toBeVisible();
|
|
|
|
// Check the titles
|
|
const h2 = page.locator('h2');
|
|
await expect(h2.getByText('Govs ❤️ Open Source.')).toBeVisible();
|
|
await expect(page.getByText('Docs is built on top of')).toBeVisible();
|
|
await expect(
|
|
page.getByRole('link', {
|
|
name: 'Django Rest Framework',
|
|
}),
|
|
).toHaveAttribute('href', 'https://www.django-rest-framework.org/');
|
|
await expect(page.getByText('You can easily self-host Docs')).toBeVisible();
|
|
await expect(
|
|
page
|
|
.getByRole('link', {
|
|
name: 'licence',
|
|
})
|
|
.first(),
|
|
).toHaveAttribute(
|
|
'href',
|
|
'https://github.com/suitenumerique/docs/blob/main/LICENSE',
|
|
);
|
|
await expect(
|
|
page.getByText('Docs is the result of a joint effort lead by the French'),
|
|
).toBeVisible();
|
|
await expect(
|
|
page
|
|
.getByRole('link', {
|
|
name: 'Zendis',
|
|
})
|
|
.first(),
|
|
).toHaveAttribute('href', 'https://zendis.de/');
|
|
await expect(
|
|
h2.getByText('Collaborative writing, Simplified.'),
|
|
).toBeVisible();
|
|
await expect(
|
|
h2.getByText('An uncompromising writing experience.'),
|
|
).toBeVisible();
|
|
await expect(
|
|
h2.getByText('Simple and secure collaboration.'),
|
|
).toBeVisible();
|
|
await expect(h2.getByText('Flexible export.')).toBeVisible();
|
|
await expect(
|
|
h2.getByText('A new way to organize knowledge.'),
|
|
).toBeVisible();
|
|
await expect(
|
|
page.getByRole('button', { name: 'Start Writing' }),
|
|
).toBeVisible();
|
|
|
|
await expect(footer).toBeVisible();
|
|
});
|
|
|
|
test('checks all the elements are visible with dsfr theme', async ({
|
|
page,
|
|
}) => {
|
|
await overrideConfig(page, {
|
|
FRONTEND_THEME: 'dsfr',
|
|
theme_customization: {
|
|
footer: {
|
|
default: {
|
|
externalLinks: [
|
|
{
|
|
label: 'legifrance.gouv.fr',
|
|
href: '#',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
await page.goto('/docs/');
|
|
|
|
// Wait for the page to be fully loaded and responsive store to be initialized
|
|
await page.waitForLoadState('domcontentloaded');
|
|
|
|
// Wait a bit more for the responsive store to be initialized
|
|
await page.waitForTimeout(500);
|
|
|
|
// Check header content
|
|
const header = page.locator('header').first();
|
|
const footer = page.locator('footer').first();
|
|
await expect(header).toBeVisible();
|
|
|
|
// Check for language picker - it should be visible on desktop
|
|
// Use a more flexible selector that works with both Header and HomeHeader
|
|
const languageButton = page.getByRole('button', {
|
|
name: /Language|Select language/,
|
|
});
|
|
await expect(languageButton).toBeVisible();
|
|
|
|
await expect(
|
|
header.getByRole('button', { name: 'Les services de La Suite numé' }),
|
|
).toBeVisible();
|
|
await expect(
|
|
header.getByRole('img', { name: 'Gouvernement Logo' }),
|
|
).toBeVisible();
|
|
await expect(header.getByTestId('header-icon-docs')).toBeVisible();
|
|
await expect(header.getByRole('heading', { name: 'Docs' })).toBeVisible();
|
|
|
|
// Check the titles
|
|
const h2 = page.locator('h2');
|
|
await expect(h2.getByText('Govs ❤️ Open Source.')).toBeVisible();
|
|
await expect(
|
|
h2.getByText('Collaborative writing, Simplified.'),
|
|
).toBeVisible();
|
|
await expect(
|
|
h2.getByText('An uncompromising writing experience.'),
|
|
).toBeVisible();
|
|
await expect(
|
|
h2.getByText('Simple and secure collaboration.'),
|
|
).toBeVisible();
|
|
await expect(h2.getByText('Flexible export.')).toBeVisible();
|
|
await expect(
|
|
h2.getByText('A new way to organize knowledge.'),
|
|
).toBeVisible();
|
|
|
|
await expect(
|
|
page.getByText('Docs is already available, log in to use it now.'),
|
|
).toBeVisible();
|
|
await expect(
|
|
page.getByRole('button', { name: 'Proconnect Login' }),
|
|
).toHaveCount(2);
|
|
|
|
await expect(footer).toBeVisible();
|
|
});
|
|
|
|
test('it checks the homepage feature flag', async ({ page }) => {
|
|
await overrideConfig(page, {
|
|
FRONTEND_HOMEPAGE_FEATURE_ENABLED: false,
|
|
});
|
|
|
|
await page.goto('/');
|
|
|
|
// Keyclock login page
|
|
await expect(
|
|
page.locator('.login-pf #kc-header-wrapper').getByText('impress'),
|
|
).toBeVisible();
|
|
});
|
|
});
|