92 lines
3.0 KiB
TypeScript
92 lines
3.0 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { BookingPage } from "../pages";
|
|
|
|
// Verifies that the booking form displays correctly with ticket types, add-ons, and booking button.
|
|
test.describe("Event Registration Page", () => {
|
|
const testEventRoute = "test-event-e2e";
|
|
|
|
test("should display event booking page", async ({ page }) => {
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto(testEventRoute);
|
|
await bookingPage.waitForFormLoad();
|
|
await bookingPage.expectFormVisible();
|
|
|
|
console.log("Event booking page loaded successfully");
|
|
});
|
|
|
|
test("should display add-ons section", async ({ page }) => {
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto(testEventRoute);
|
|
await bookingPage.waitForFormLoad();
|
|
|
|
const addOnCount = await bookingPage.addOnCheckboxes.count();
|
|
console.log(`Found ${addOnCount} add-on related elements`);
|
|
|
|
if (addOnCount > 0) {
|
|
await bookingPage.expectAddOnsVisible();
|
|
console.log("Add-ons section is displayed");
|
|
} else {
|
|
console.log("No add-on elements found");
|
|
}
|
|
});
|
|
|
|
test("should display booking button", async ({ page }) => {
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto(testEventRoute);
|
|
await bookingPage.waitForFormLoad();
|
|
await bookingPage.expectBookButtonVisible();
|
|
|
|
const buttonText = await bookingPage.getBookButtonText();
|
|
console.log(`Booking button found with text: "${buttonText}"`);
|
|
});
|
|
|
|
test("should display attendee form fields", async ({ page }) => {
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto(testEventRoute);
|
|
await bookingPage.waitForFormLoad();
|
|
|
|
const hasNameInput = await bookingPage.attendeeNameInput.isVisible().catch(() => false);
|
|
const hasEmailInput = await bookingPage.attendeeEmailInput.isVisible().catch(() => false);
|
|
|
|
expect(hasNameInput && hasEmailInput).toBeTruthy();
|
|
console.log("Attendee form fields are displayed");
|
|
});
|
|
|
|
test("should fill booking form with attendee details and select add-ons", async ({ page }) => {
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto(testEventRoute);
|
|
await bookingPage.waitForFormLoad();
|
|
|
|
// Fill in attendee details
|
|
const testName = "John Doe";
|
|
const testEmail = "john.doe@example.com";
|
|
|
|
await bookingPage.fillAttendeeDetails(testName, testEmail);
|
|
|
|
// Verify the values were entered
|
|
await expect(bookingPage.attendeeNameInput).toHaveValue(testName);
|
|
await expect(bookingPage.attendeeEmailInput).toHaveValue(testEmail);
|
|
console.log("Attendee details filled successfully");
|
|
|
|
// Select add-ons if available
|
|
const addOnCount = await bookingPage.addOnCheckboxes.count();
|
|
if (addOnCount > 0) {
|
|
// Click the first add-on checkbox
|
|
await bookingPage.addOnCheckboxes.first().click();
|
|
|
|
// Verify it's checked
|
|
await expect(bookingPage.addOnCheckboxes.first()).toBeChecked();
|
|
console.log("Add-on selected successfully");
|
|
}
|
|
|
|
// Verify booking button is still visible and ready
|
|
await bookingPage.expectBookButtonVisible();
|
|
console.log("Form is ready to submit");
|
|
});
|
|
});
|