import { test, expect } from '@playwright/test'; import { TEST_USERS } from './setup/test-users.js'; import { loginAsLocalUser, ensureSelfProfile } from './helpers/auth.js'; import { createTrip, openAddToTripMenuItem, uniqueSuffix } from './helpers/trip.js'; function formatDate(offsetDays: number): string { const date = new Date(); date.setDate(date.getDate() + offsetDays); return date.toISOString().slice(0, 10); } async function addActivity( page: import('@playwright/test').Page, values: { name: string; startDate: string; startTime: string } ) { await openAddToTripMenuItem(page, 'Attractions & Activities'); const dialog = page .locator('[role="dialog"]') .filter({ has: page.getByRole('heading', { name: /Attraction & activity/i }) }) .first(); await expect(dialog).toBeVisible(); await dialog.getByLabel('Name', { exact: false }).fill(values.name); await dialog.getByLabel('Start date').fill(values.startDate); await dialog.getByLabel('Start time', { exact: true }).fill(values.startTime); await dialog.getByRole('button', { name: 'Add' }).click(); await expect(dialog).toBeHidden(); } test.beforeEach(async ({ context }) => { await context.clearCookies(); }); test('day and week views filter itinerary items', async ({ page }) => { const suffix = uniqueSuffix(); const startDate = formatDate(0); const endDate = formatDate(9); const dayOneActivity = `Museum visit ${suffix}`; const dayEightActivity = `Harbor walk ${suffix}`; await loginAsLocalUser(page, TEST_USERS.regular.username, TEST_USERS.regular.password); await ensureSelfProfile(page); await createTrip(page, { name: `E2E Date Views Trip ${suffix}`, startDate, endDate, description: 'Date view coverage' }); await addActivity(page, { name: dayOneActivity, startDate, startTime: '09:00' }); await addActivity(page, { name: dayEightActivity, startDate: formatDate(7), startTime: '11:00' }); await page.reload(); await expect(page.getByText(dayOneActivity)).toBeVisible(); await page.getByRole('button', { name: 'Day' }).click(); await expect(page.getByText('Day 1')).toBeVisible(); await expect(page.getByText(dayOneActivity)).toBeVisible(); await expect(page.getByText(dayEightActivity)).toBeHidden(); await page.getByRole('button', { name: 'Week' }).click(); await expect(page.getByText('Week 1')).toBeVisible(); await expect(page.getByText(dayOneActivity)).toBeVisible(); await expect(page.getByText(dayEightActivity)).toBeHidden(); await page.getByRole('button', { name: 'Next week' }).click(); await expect(page.getByText('Week 2')).toBeVisible(); await expect(page.getByText(dayEightActivity)).toBeVisible(); await expect(page.getByText(dayOneActivity)).toBeHidden(); });