import { expect, test } from '@playwright/test'; import { keyCloakSignIn } from './common'; test.beforeEach(async ({ page, browserName }) => { await page.goto('/'); await keyCloakSignIn(page, browserName); }); test.describe('Footer', () => { test('checks all the elements are visible', async ({ page }) => { const footer = page.locator('footer').first(); await expect(footer.getByAltText('Marianne Logo')).toBeVisible(); await expect( footer.getByAltText('Freedom Equality Fraternity Logo'), ).toBeVisible(); await expect( footer.getByRole('link', { name: 'legifrance.gouv.fr' }), ).toBeVisible(); await expect( footer.getByRole('link', { name: 'info.gouv.fr' }), ).toBeVisible(); await expect( footer.getByRole('link', { name: 'service-public.fr' }), ).toBeVisible(); await expect( footer.getByRole('link', { name: 'data.gouv.fr' }), ).toBeVisible(); await expect( footer.getByRole('link', { name: 'Legal Notice' }), ).toBeVisible(); await expect( footer.getByRole('link', { name: 'Personal data and cookies' }), ).toBeVisible(); await expect( footer.getByRole('link', { name: 'Accessibility' }), ).toBeVisible(); await expect( footer.getByText( 'Unless otherwise stated, all content on this site is under licence', ), ).toBeVisible(); }); const legalPages = [ { name: 'Legal Notice', url: '/legal-notice/' }, { name: 'Personal data and cookies', url: '/personal-data-cookies/' }, { name: 'Accessibility', url: '/accessibility/' }, ]; for (const { name, url } of legalPages) { test(`checks ${name} page`, async ({ page }) => { const footer = page.locator('footer').first(); await footer.getByRole('link', { name }).click(); await expect( page .getByRole('heading', { name, }) .first(), ).toBeVisible(); await expect(page).toHaveURL(url); }); } });