Rewrite the constraint specs and docs for the service-led information architecture.
Assertions now follow the eighteen prerenderable paths, the gist dialog, and the six-case evidence set. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
import { SIGNATURE_COPY } from '../src/app/core/content/signature-copy';
|
||||
import { pagePath } from './helpers';
|
||||
|
||||
test.describe('Systems Map', () => {
|
||||
test('keeps the card list visible and shows the SVG from 1024px', async ({ page }) => {
|
||||
await page.goto(pagePath('services', 'de'));
|
||||
|
||||
for (const width of [390, 768, 1024, 1440]) {
|
||||
for (const width of [320, 390, 768, 1024, 1440]) {
|
||||
await page.setViewportSize({ width, height: 900 });
|
||||
const list = page.locator('.systems-map-list');
|
||||
await expect(list).toBeVisible();
|
||||
@@ -59,8 +60,41 @@ test.describe('Systems Map', () => {
|
||||
|
||||
expect(hrefs.length).toBeGreaterThan(0);
|
||||
for (const href of hrefs) {
|
||||
const response = await request.get(href);
|
||||
const path = href.split('#')[0];
|
||||
const response = await request.get(path);
|
||||
expect(response.status(), href).toBe(200);
|
||||
}
|
||||
});
|
||||
|
||||
test('plain activation opens the gist dialog without navigating', async ({ page }) => {
|
||||
const copy = SIGNATURE_COPY.de.systemsMap;
|
||||
await page.goto(pagePath('services', 'de'));
|
||||
await page.setViewportSize({ width: 390, height: 844 });
|
||||
|
||||
const first = page.locator('.systems-map-cards a').first();
|
||||
const href = await first.getAttribute('href');
|
||||
expect(href).toContain('#infrastructure-network');
|
||||
|
||||
await first.click();
|
||||
const dialog = page.getByRole('dialog');
|
||||
await expect(dialog).toBeVisible();
|
||||
await expect(page).toHaveURL(new RegExp(`${pagePath('services', 'de')}$`));
|
||||
await expect(dialog.getByRole('link')).toHaveAttribute('href', href ?? '');
|
||||
await expect(dialog.getByRole('button', { name: copy.closeLabel })).toBeVisible();
|
||||
|
||||
const dialogBox = await dialog.boundingBox();
|
||||
expect(dialogBox, 'dialog readable at 390px').toBeTruthy();
|
||||
expect(dialogBox!.width).toBeGreaterThan(200);
|
||||
|
||||
await page.keyboard.press('Escape');
|
||||
await expect(dialog).toHaveCount(0);
|
||||
await expect(first).toBeFocused();
|
||||
});
|
||||
|
||||
test('a modified click follows the node href', async ({ page }) => {
|
||||
await page.goto(pagePath('services', 'de'));
|
||||
const first = page.locator('.systems-map-cards a').first();
|
||||
await first.click({ modifiers: ['Control'] });
|
||||
await expect(page.getByRole('dialog')).toHaveCount(0);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user