// @ts-check // Tests: N1–N5 — page loads and navigation links const { test, expect } = require('@playwright/test'); // ── N1: /trips/italy-2026-demo/dailies renders ─────────────────────────────── test('N1: /trips/italy-2026-demo/dailies page loads with site header', async ({ page }) => { const errors = []; page.on('pageerror', e => errors.push(e.message)); await page.goto('/trips/italy-2026-demo/dailies'); await expect(page.locator('.site-header')).toBeVisible(); await expect(page).toHaveTitle(/Into the East/i); expect(errors).toHaveLength(0); }); // ── N2: /trips/italy-2026-demo/map renders without JS errors ───────────────── test('N2: /trips/italy-2026-demo/map page loads without JS errors', async ({ page }) => { const errors = []; page.on('pageerror', e => errors.push(e.message)); await page.goto('/trips/italy-2026-demo/map'); await expect(page.locator('.site-header')).toBeVisible(); expect(errors).toHaveLength(0); }); // ── N3: /trips/italy-2026-demo/stats renders ───────────────────────────────── test('N3: /trips/italy-2026-demo/stats page loads with site header', async ({ page }) => { const errors = []; page.on('pageerror', e => errors.push(e.message)); await page.goto('/trips/italy-2026-demo/stats'); await expect(page.locator('.site-header')).toBeVisible(); expect(errors).toHaveLength(0); }); // ── N4: trip page has Journal filter button (replaced nav link) ─────────────── test('N4: trip page filter bar has Journal button', async ({ page }) => { await page.goto('/trips/italy-2026-demo'); await expect(page.locator('.trip-filter-btn[data-filter="journal"]')).toBeVisible(); }); // ── N5: "Map" nav link goes to /map ────────────────────────────────────────── test.skip('N5: Map nav link navigates to /map', async ({ page }) => { await page.goto('/'); await page.click('nav a[href*="map"]'); await expect(page).toHaveURL(/\/map/); });