Files
www-deepwatersurvival-de/themes/adritian/tests/e2e/language-switch.spec.ts
T
2026-05-18 11:46:02 +02:00

89 lines
3.7 KiB
TypeScript

import { test, expect } from '@playwright/test';
const BASE_URL = 'http://localhost:1313';
test.describe('Language switching functionality', () => {
test('switches between languages and verifies lang attribute', async ({ page }) => {
test.skip(process.env.TEST_NO_MENUS === 'true', 'Skipping test because TEST_NO_MENUS is true');
// Go to homepage
await page.goto(BASE_URL);
// Verify initial English state
await expect(page.locator('html')).toHaveAttribute('lang', 'en');
await expect(page.getByText('Language').last()).toBeVisible();
await expect(page.getByText('Experience').first()).toBeVisible();
// Switch to Spanish
await page.locator('div#footer-language-selector button').click();
await page.getByText('Español').last().click();
// Verify Spanish
await expect(page.locator('html')).toHaveAttribute('lang', 'es');
await expect(page.getByText('Idioma').last()).toBeVisible();
await expect(page.getByText('Experiencia').first()).toBeVisible();
// Switch to French
await page.locator('div#footer-language-selector button').click();
await page.getByText('Français').last().click();
// Verify French
await expect(page.locator('html')).toHaveAttribute('lang', 'fr');
await expect(page.getByText('Langue').last()).toBeVisible();
await expect(page.getByText('Expérience').first()).toBeVisible();
});
test('maintains language when navigating to experience pages', async ({ page }) => {
// Start in Spanish
await page.goto(`${BASE_URL}/es/`);
await expect(page.locator('html')).toHaveAttribute('lang', 'es');
// Click on an experience link
await page.getByText('Ver todo').click();
// Verify URL and language maintained
await expect(page).toHaveURL(`${BASE_URL}/es/experience/`);
await expect(page.locator('html')).toHaveAttribute('lang', 'es');
await expect(page.getByText('Experiencia').first()).toBeVisible();
});
test('preserves translations across page types', async ({ page }) => {
test.skip(process.env.TEST_NO_MENUS === 'true', 'Skipping test because TEST_NO_MENUS is true');
// Go to French experience page
await page.goto(`${BASE_URL}/fr/experience`);
// Verify French state
await expect(page.locator('html')).toHaveAttribute('lang', 'fr');
await expect(page.getByText('Expérience').first()).toBeVisible();
// Navigate to home
await page.getByText('ACCUEIL').first().click();
// Verify language maintained
await expect(page.locator('html')).toHaveAttribute('lang', 'fr');
await expect(page.getByText('Langue').last()).toBeVisible();
});
test('section IDs are translated in Spanish and French', async ({ page }) => {
// Spanish
await page.goto(`${BASE_URL}/es/`);
await expect(page.locator('#sobre-mi')).toBeVisible();
await expect(page.locator('#social')).toBeVisible();
await expect(page.locator('#sobre-mi')).toBeVisible();
await expect(page.locator('#formacion-academica')).toBeVisible();
await expect(page.locator('#experiencia-laboral')).toBeVisible();
await expect(page.locator('#trabajo')).toBeVisible();
await expect(page.locator('#testimonios')).toBeVisible();
// French
await page.goto(`${BASE_URL}/fr/`);
await expect(page.locator('#section-vedette')).toBeVisible();
await expect(page.locator('#liens-plateforme')).toBeVisible();
await expect(page.locator('#a-propos')).toBeVisible();
await expect(page.locator('#formation-academique')).toBeVisible();
await expect(page.locator('#experience-professionnelle')).toBeVisible();
await expect(page.locator('#travail')).toBeVisible();
await expect(page.locator('#temoignages')).toBeVisible();
});
});