62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
import { expect } from "@playwright/test";
|
|
|
|
import { bookTimeSlot, selectFirstAvailableTimeSlotNextMonth } from "@calcom/web/playwright/lib/testUtils";
|
|
|
|
import { test } from "./lib/fixtures";
|
|
import { testBothFutureAndLegacyRoutes } from "./lib/future-legacy-routes";
|
|
|
|
test.describe.configure({ mode: "parallel" });
|
|
|
|
testBothFutureAndLegacyRoutes.describe("Payment", (routeVariant) => {
|
|
test.describe("user", () => {
|
|
test.afterEach(async ({ users }) => {
|
|
await users.deleteAll();
|
|
});
|
|
|
|
test("should create a mock payment for a user", async ({ context, users, page }) => {
|
|
test.skip(routeVariant === "future", "Future route not ready yet");
|
|
test.skip(process.env.MOCK_PAYMENT_APP_ENABLED === undefined, "Skipped as Stripe is not installed");
|
|
|
|
const user = await users.create();
|
|
await user.apiLogin();
|
|
await page.goto("/apps");
|
|
|
|
await page.getByPlaceholder("Search").click();
|
|
await page.getByPlaceholder("Search").fill("mock");
|
|
|
|
await page.getByTestId("install-app-button").click();
|
|
|
|
await page.waitForURL((url) => url.pathname.endsWith("/apps/installed/payment"));
|
|
|
|
await page.getByRole("link", { name: "Event Types" }).click();
|
|
|
|
await page.getByRole("link", { name: /^30 min/ }).click();
|
|
await page.getByTestId("vertical-tab-apps").click();
|
|
await page.locator("#event-type-form").getByRole("switch").click();
|
|
await page.getByPlaceholder("Price").click();
|
|
await page.getByPlaceholder("Price").fill("1");
|
|
|
|
await page.locator("#test-mock-payment-app-currency-id").click();
|
|
await page.getByTestId("select-option-USD").click();
|
|
|
|
await page.getByTestId("update-eventtype").click();
|
|
|
|
await page.goto(`${user.username}/30-min`);
|
|
|
|
await page.waitForLoadState("networkidle");
|
|
|
|
await selectFirstAvailableTimeSlotNextMonth(page);
|
|
await bookTimeSlot(page);
|
|
await page.waitForURL((url) => url.pathname.includes("/payment/"));
|
|
|
|
const dataNextJsRouter = await page.evaluate(() =>
|
|
window.document.documentElement.getAttribute("data-nextjs-router")
|
|
);
|
|
|
|
expect(dataNextJsRouter).toEqual("app");
|
|
|
|
await page.getByText("Payment", { exact: true }).waitFor();
|
|
});
|
|
});
|
|
});
|