trip) add day and week trip filtering
All checks were successful
PR Checks / lint-test-and-docker-build (pull_request) Successful in 2m15s
All checks were successful
PR Checks / lint-test-and-docker-build (pull_request) Successful in 2m15s
This commit is contained in:
@@ -12,7 +12,7 @@ export function uniqueSuffix(): string {
|
||||
|
||||
export async function createTrip(
|
||||
page: Page,
|
||||
values: { name: string; startDate?: string; description?: string }
|
||||
values: { name: string; startDate?: string; endDate?: string; description?: string }
|
||||
): Promise<{ tripUrl: string; tripId: string }> {
|
||||
await page.goto(NEW_TRIP_URL);
|
||||
await expect(page.getByRole('heading', { name: 'Plan New Trip' })).toBeVisible();
|
||||
@@ -22,6 +22,9 @@ export async function createTrip(
|
||||
} else {
|
||||
await form.getByRole('checkbox', { name: "I don't know yet" }).first().check();
|
||||
}
|
||||
if (values.endDate) {
|
||||
await form.getByLabel('End date').fill(values.endDate);
|
||||
}
|
||||
if (values.description) {
|
||||
await form.getByLabel('Description').fill(values.description);
|
||||
}
|
||||
|
||||
74
e2e/trip-date-view.test.ts
Normal file
74
e2e/trip-date-view.test.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { TEST_USERS } from './setup/test-users.js';
|
||||
import { loginAsLocalUser, ensureSelfProfile } from './helpers/auth.js';
|
||||
import { addPackingList, 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}`;
|
||||
const packingListName = `Carry-on ${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 addPackingList(page, { name: packingListName, items: ['Sunscreen'] });
|
||||
|
||||
await expect(page.getByText(packingListName)).toBeVisible();
|
||||
await expect(page.getByRole('button', { name: 'Today' })).toBeVisible();
|
||||
|
||||
await page.getByRole('button', { name: 'Today' }).click();
|
||||
await expect(page.getByText('Day 1')).toBeVisible();
|
||||
await expect(page.getByText(dayOneActivity)).toBeVisible();
|
||||
await expect(page.getByText(dayEightActivity)).toBeHidden();
|
||||
await expect(page.getByText(packingListName)).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();
|
||||
});
|
||||
Reference in New Issue
Block a user