Initialize fork and rebrand app to event_manager
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { BookingPage } from "../pages";
|
||||
|
||||
// Unique suffix per run to avoid rate limits
|
||||
const uid = Date.now();
|
||||
|
||||
test.describe("Guest Booking UX", () => {
|
||||
test("guest details auto-fill to Attendee 1", async ({ page }) => {
|
||||
const bookingPage = new BookingPage(page);
|
||||
await bookingPage.goto("guest-no-otp-e2e");
|
||||
await bookingPage.waitForFormLoad();
|
||||
|
||||
await page.locator('input[placeholder="Enter your first name"]').fill("Test");
|
||||
await page.locator('input[placeholder="Enter your last name"]').fill("Guest");
|
||||
await page.locator('input[placeholder="Enter your email"]').fill("test@example.com");
|
||||
await page.locator('input[placeholder="Enter your email"]').blur();
|
||||
|
||||
await expect(page.locator('input[placeholder="Enter first name"]').first()).toHaveValue("Test");
|
||||
await expect(page.locator('input[placeholder="Enter last name"]').first()).toHaveValue("Guest");
|
||||
await expect(page.locator('input[placeholder="Enter email address"]').first()).toHaveValue("test@example.com");
|
||||
});
|
||||
});
|
||||
|
||||
test.describe("Guest Booking", () => {
|
||||
test("guest booking without OTP", async ({ page }) => {
|
||||
const email = `guest-no-otp-${uid}@test.com`;
|
||||
const bookingPage = new BookingPage(page);
|
||||
await bookingPage.goto("guest-no-otp-e2e");
|
||||
await bookingPage.waitForFormLoad();
|
||||
|
||||
await page.locator('input[placeholder="Enter your first name"]').fill("Test");
|
||||
await page.locator('input[placeholder="Enter your last name"]').fill("Guest");
|
||||
await page.locator('input[placeholder="Enter your email"]').fill(email);
|
||||
await page.locator('input[placeholder="Enter your email"]').blur();
|
||||
|
||||
await bookingPage.submit();
|
||||
|
||||
await expect(page.getByText("Booking Confirmed!")).toBeVisible({ timeout: 30000 });
|
||||
});
|
||||
|
||||
test("guest booking with Email OTP", async ({ page }) => {
|
||||
const email = `guest-email-otp-${uid}@test.com`;
|
||||
const bookingPage = new BookingPage(page);
|
||||
await bookingPage.goto("guest-email-otp-e2e");
|
||||
await bookingPage.waitForFormLoad();
|
||||
|
||||
await page.locator('input[placeholder="Enter your first name"]').fill("Test");
|
||||
await page.locator('input[placeholder="Enter your last name"]').fill("Guest Email");
|
||||
await page.locator('input[placeholder="Enter your email"]').fill(email);
|
||||
await page.locator('input[placeholder="Enter your email"]').blur();
|
||||
|
||||
const otpResponsePromise = page.waitForResponse(
|
||||
(resp) => resp.url().includes("send_guest_booking_otp") && resp.status() === 200,
|
||||
);
|
||||
|
||||
await bookingPage.submit();
|
||||
|
||||
const otpResponse = await otpResponsePromise;
|
||||
const otpData = (await otpResponse.json()) as { message?: { otp?: string } };
|
||||
const otp = otpData.message?.otp;
|
||||
expect(otp).toBeTruthy();
|
||||
|
||||
await expect(page.getByText("Verify Your Email")).toBeVisible({ timeout: 10000 });
|
||||
|
||||
await page.locator('input[placeholder="123456"]').fill(otp!);
|
||||
await page.getByRole("button", { name: "Verify & Book" }).click();
|
||||
|
||||
await expect(page.getByText("Booking Confirmed!")).toBeVisible({ timeout: 30000 });
|
||||
});
|
||||
|
||||
test("guest booking with Phone OTP", async ({ page }) => {
|
||||
const email = `guest-phone-otp-${uid}@test.com`;
|
||||
const phone = `9${uid.toString().slice(-9)}`;
|
||||
const bookingPage = new BookingPage(page);
|
||||
await bookingPage.goto("guest-phone-otp-e2e");
|
||||
await bookingPage.waitForFormLoad();
|
||||
|
||||
await page.locator('input[placeholder="Enter your first name"]').fill("Test");
|
||||
await page.locator('input[placeholder="Enter your last name"]').fill("Guest Phone");
|
||||
await page.locator('input[placeholder="Enter your email"]').fill(email);
|
||||
await page.locator('input[placeholder="Enter your email"]').blur(); // triggers auto-fill
|
||||
await page.locator('input[placeholder="Enter your phone number"]').fill(phone);
|
||||
|
||||
const otpResponsePromise = page.waitForResponse(
|
||||
(resp) => resp.url().includes("send_guest_booking_otp") && resp.status() === 200,
|
||||
);
|
||||
|
||||
await bookingPage.submit();
|
||||
|
||||
const otpResponse = await otpResponsePromise;
|
||||
const otpData = (await otpResponse.json()) as { message?: { otp?: string } };
|
||||
const otp = otpData.message?.otp;
|
||||
expect(otp).toBeTruthy();
|
||||
|
||||
await expect(page.getByText("Verify Your Phone")).toBeVisible({ timeout: 10000 });
|
||||
|
||||
await page.locator('input[placeholder="123456"]').fill(otp!);
|
||||
await page.getByRole("button", { name: "Verify & Book" }).click();
|
||||
|
||||
await expect(page.getByText("Booking Confirmed!")).toBeVisible({ timeout: 30000 });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user