87 lines
3.2 KiB
TypeScript
87 lines
3.2 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { BookingPage } from "../pages";
|
|
|
|
const uid = Date.now();
|
|
|
|
test.describe("Offline Payment Flow", () => {
|
|
test("complete booking with offline payment", async ({ page }) => {
|
|
const email = `offline-${uid}@test.com`;
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto("offline-payment-e2e");
|
|
await bookingPage.waitForFormLoad();
|
|
|
|
// Fill attendee details
|
|
await page.locator('input[placeholder="Enter first name"]').first().fill("Test");
|
|
await page.locator('input[placeholder="Enter last name"]').first().fill("User");
|
|
await page.locator('input[placeholder="Enter email address"]').first().fill(email);
|
|
|
|
// Submit booking form
|
|
await bookingPage.submit();
|
|
|
|
// Wait for offline payment dialog
|
|
await expect(page.getByText("Bank Transfer")).toBeVisible({ timeout: 10000 });
|
|
await expect(page.getByText("Transfer to Account: 123456789")).toBeVisible();
|
|
|
|
// Submit offline payment (no file upload required in test setup)
|
|
const submitButton = page.getByRole("button", { name: "Submit" });
|
|
await submitButton.click();
|
|
|
|
// Verify booking created with verification pending status
|
|
await expect(page.getByText("Payment Confirmation Pending")).toBeVisible({ timeout: 30000 });
|
|
});
|
|
|
|
test("offline payment dialog shows amount", async ({ page }) => {
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto("offline-payment-e2e");
|
|
await bookingPage.waitForFormLoad();
|
|
|
|
await page.locator('input[placeholder="Enter first name"]').first().fill("Amount");
|
|
await page.locator('input[placeholder="Enter last name"]').first().fill("Test");
|
|
await page.locator('input[placeholder="Enter email address"]').first().fill(`amount-${uid}@test.com`);
|
|
|
|
await bookingPage.submit();
|
|
|
|
// Wait for dialog and verify amount is displayed in dialog
|
|
const dialog = page.getByRole("dialog");
|
|
await expect(dialog.getByText("₹500.00", { exact: true })).toBeVisible({ timeout: 10000 });
|
|
});
|
|
|
|
test("can cancel offline payment dialog", async ({ page }) => {
|
|
const bookingPage = new BookingPage(page);
|
|
|
|
await bookingPage.goto("offline-payment-e2e");
|
|
await bookingPage.waitForFormLoad();
|
|
|
|
await page.locator('input[placeholder="Enter first name"]').first().fill("Cancel");
|
|
await page.locator('input[placeholder="Enter last name"]').first().fill("Test");
|
|
await page.locator('input[placeholder="Enter email address"]').first().fill(`cancel-${uid}@test.com`);
|
|
|
|
await bookingPage.submit();
|
|
|
|
await expect(page.getByText("Bank Transfer")).toBeVisible({ timeout: 10000 });
|
|
|
|
// Click cancel
|
|
await page.getByRole("button", { name: "Cancel" }).click();
|
|
|
|
// Dialog should close
|
|
await expect(page.getByText("Bank Transfer")).not.toBeVisible({ timeout: 5000 });
|
|
});
|
|
});
|
|
|
|
test.describe("Booking Details - Offline Payment", () => {
|
|
test("shows verification pending status", async ({ page }) => {
|
|
// This test assumes a booking already exists
|
|
// Navigate to bookings list
|
|
await page.goto("/dashboard/bookings");
|
|
await page.waitForLoadState("networkidle");
|
|
|
|
// Look for verification pending badge
|
|
const pendingBadge = page.locator('text=/Verification Pending|Approval Pending/i').first();
|
|
if (await pendingBadge.isVisible({ timeout: 5000 })) {
|
|
await expect(pendingBadge).toBeVisible();
|
|
}
|
|
});
|
|
});
|