upskill-event-manager/wordpress-dev/tests/e2e/utils/event-helpers.ts
bengizmo e6bdce4301 feat: Add Email Attendees functionality (Phase 2)
Implements the Email Attendees feature which allows trainers to:
- Email event attendees directly from the Event Summary page
- Filter attendees by ticket type
- Use a rich text editor to compose messages
- Include CC recipients
- Send personalized emails to selected attendees

Includes unit tests, integration tests, and E2E tests to verify functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-20 10:33:03 -03:00

89 lines
No EOL
2.2 KiB
TypeScript

import { Page } from '@playwright/test';
import { DashboardPage } from '../pages/DashboardPage';
import { CreateEventPage } from '../pages/CreateEventPage';
interface EventData {
title: string;
description?: string;
startDate?: string;
endDate?: string;
startTime?: string;
endTime?: string;
ticketType?: string;
price?: string;
venue?: string;
organizer?: string;
}
/**
* Helper function to create a test event
* @param page Playwright Page object
* @param eventData Event data to create
* @returns Event ID of the created event
*/
export async function createTestEvent(page: Page, eventData: EventData): Promise<string> {
// Navigate to dashboard
const dashboardPage = new DashboardPage(page);
await dashboardPage.navigate();
// Click create event button
await dashboardPage.clickCreateEvent();
// Fill event form
const createEventPage = new CreateEventPage(page);
await createEventPage.fillEventTitle(eventData.title);
if (eventData.description) {
await createEventPage.fillEventDescription(eventData.description);
}
// Set dates and times if provided
if (eventData.startDate) {
await createEventPage.setStartDate(eventData.startDate);
}
if (eventData.endDate) {
await createEventPage.setEndDate(eventData.endDate);
}
if (eventData.startTime) {
await createEventPage.setStartTime(eventData.startTime);
}
if (eventData.endTime) {
await createEventPage.setEndTime(eventData.endTime);
}
// Add ticket if price is provided
if (eventData.ticketType && eventData.price) {
await createEventPage.addTicket(eventData.ticketType, eventData.price);
}
// Set venue if provided
if (eventData.venue) {
await createEventPage.setVenue(eventData.venue);
}
// Set organizer if provided
if (eventData.organizer) {
await createEventPage.setOrganizer(eventData.organizer);
}
// Submit the form
const eventId = await createEventPage.submitForm();
return eventId;
}
/**
* Helper function to get event ID from URL
* @param url Event URL
* @returns Event ID extracted from URL
*/
export function extractEventId(url: string): string {
const match = url.match(/event_id=(\d+)/);
if (match && match[1]) {
return match[1];
}
return '';
}