Skip to content

Commit 9133bc5

Browse files
authored
test: fixed flaky e2e tests (calcom#24490)
* test: fixed flaky e2e tests * fix
1 parent 94ae3a5 commit 9133bc5

4 files changed

Lines changed: 34 additions & 23 deletions

File tree

apps/web/playwright/booking-seats.e2e.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -541,9 +541,10 @@ test.describe("Reschedule for booking with seats", () => {
541541
data: bookingSeats,
542542
});
543543

544-
const references = await prisma.bookingSeat.findMany({
545-
where: { bookingId: booking.id },
546-
orderBy: { id: "asc" },
544+
const secondAttendeeId = bookingAttendees.find((attendee)=> attendee.email === "second+seats@cal.com");
545+
546+
const references = await prisma.bookingSeat.findFirst({
547+
where: { bookingId: booking.id, attendeeId: secondAttendeeId?.id },
547548
});
548549

549550
const secondUser = await users.create({
@@ -556,13 +557,14 @@ test.describe("Reschedule for booking with seats", () => {
556557
await page.waitForSelector('[data-testid="bookings"]');
557558

558559
await page.locator('[data-testid="booking-actions-dropdown"]').nth(0).click();
560+
const href = await page.locator('[data-testid="reschedule"]').getAttribute("href");
561+
expect(href).toBeTruthy();
562+
const url = new URL(href!, page.url());
563+
const seatReferenceUid = url.searchParams.get('seatReferenceUid');
564+
expect(seatReferenceUid).toBeTruthy();
565+
expect(seatReferenceUid).toBe(references?.referenceUid);
559566
await page.locator('[data-testid="reschedule"]').click();
560567

561-
await page.waitForURL((url) => {
562-
const rescheduleUid = url.searchParams.get("rescheduleUid");
563-
return !!rescheduleUid && rescheduleUid === references[1].referenceUid;
564-
});
565-
566568
await selectFirstAvailableTimeSlotNextMonth(page);
567569

568570
const nameElement = page.locator("input[name=name]");

apps/web/playwright/fixtures/apps.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ export function createAppsFixture(page: Page) {
117117
},
118118
goToAppsTab: async () => {
119119
await page.getByTestId("vertical-tab-apps").click();
120+
await expect(page.getByTestId("vertical-tab-apps")).toHaveAttribute("aria-current", "page");
120121
},
121122
activeApp: async (app: string) => {
122123
await page.locator(`[data-testid='${app}-app-switch']`).click();
@@ -126,7 +127,7 @@ export function createAppsFixture(page: Page) {
126127
},
127128
verifyAppsInfoNew: async (app: string, eventTypeId: number) => {
128129
await page.goto(`event-types/${eventTypeId}?tabName=apps`);
129-
await expect(page.getByTestId("vertical-tab-basics")).toContainText("Basics"); // fix the race condition
130+
await expect(page.getByTestId("vertical-tab-apps")).toHaveAttribute("aria-current", "page"); // fix the race condition
130131
await expect(page.locator(`[data-testid='${app}-app-switch'][data-state="checked"]`)).toBeVisible();
131132
},
132133
};

apps/web/playwright/out-of-office.e2e.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -653,11 +653,12 @@ test.describe("Out of office", () => {
653653
test("Default date range filter set to `Last 7 Days`", async ({ page, users }) => {
654654
const user = await users.create({ name: `userOne=${Date.now()}` });
655655
await user.apiLogin();
656-
await page.goto("/settings/my-account/out-of-office");
657-
await page.waitForLoadState("domcontentloaded");
658-
await page.waitForResponse(
656+
const responsePromise = page.waitForResponse(
659657
(response) => response.url().includes("outOfOfficeEntriesList") && response.status() === 200
660658
);
659+
await page.goto("/settings/my-account/out-of-office");
660+
await page.waitForLoadState("domcontentloaded");
661+
await responsePromise;
661662
await addFilter(page, "dateRange");
662663
await expect(
663664
page.locator('[data-testid="filter-popover-trigger-dateRange"]', { hasText: "Last 7 Days" }).first()
@@ -667,11 +668,12 @@ test.describe("Out of office", () => {
667668
test("Can choose date range presets", async ({ page, users }) => {
668669
const user = await users.create({ name: `userOne=${Date.now()}` });
669670
await user.apiLogin();
670-
await page.goto("/settings/my-account/out-of-office");
671-
await page.waitForLoadState("domcontentloaded");
672-
await page.waitForResponse(
671+
const responsePromise = page.waitForResponse(
673672
(response) => response.url().includes("outOfOfficeEntriesList") && response.status() === 200
674673
);
674+
await page.goto("/settings/my-account/out-of-office");
675+
await page.waitForLoadState("domcontentloaded");
676+
await responsePromise;
675677
await addFilter(page, "dateRange");
676678

677679
await expect(page.locator('[data-testid="date-range-options-tdy"]')).toBeVisible(); //Today

apps/web/playwright/payment-apps.e2e.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import { expect } from "@playwright/test";
22

33
import prisma from "@calcom/prisma";
4+
import type { Page } from "@playwright/test";
45

56
import { test } from "./lib/fixtures";
67
import { selectFirstAvailableTimeSlotNextMonth, submitAndWaitForResponse } from "./lib/testUtils";
78

89
test.describe.configure({ mode: "parallel" });
910
test.afterEach(({ users }) => users.deleteAll());
1011

12+
async function goToAppsTab(page: Page, eventTypeId?: number) {
13+
await page.goto(`event-types/${eventTypeId}?tabName=apps`);
14+
await expect(page.getByTestId("vertical-tab-apps")).toHaveAttribute("aria-current", "page");
15+
}
16+
1117
test.describe("Payment app", () => {
1218
test("Should be able to edit alby price, currency", async ({ page, users }) => {
1319
const user = await users.create();
@@ -29,7 +35,7 @@ test.describe("Payment app", () => {
2935
},
3036
});
3137

32-
await page.goto(`event-types/${paymentEvent?.id}?tabName=apps`);
38+
await goToAppsTab(page, paymentEvent?.id);
3339

3440
await page.locator("#event-type-form").getByRole("switch").click();
3541
await page.getByPlaceholder("Price").click();
@@ -75,7 +81,7 @@ test.describe("Payment app", () => {
7581
},
7682
});
7783

78-
await page.goto(`event-types/${paymentEvent?.id}?tabName=apps`);
84+
await goToAppsTab(page, paymentEvent?.id);
7985
await page.locator("#event-type-form").getByRole("switch").click();
8086
await page.getByTestId("stripe-currency-select").click();
8187
await page.getByTestId("select-option-usd").click();
@@ -115,7 +121,7 @@ test.describe("Payment app", () => {
115121
},
116122
});
117123

118-
await page.goto(`event-types/${paymentEvent?.id}?tabName=apps`);
124+
await goToAppsTab(page, paymentEvent?.id);
119125

120126
await page.locator("#event-type-form").getByRole("switch").click();
121127

@@ -158,7 +164,7 @@ test.describe("Payment app", () => {
158164
},
159165
});
160166

161-
await page.goto(`event-types/${paymentEvent?.id}?tabName=apps`);
167+
await goToAppsTab(page, paymentEvent?.id);
162168

163169
await page.locator("#event-type-form").getByRole("switch").click();
164170

@@ -185,7 +191,7 @@ test.describe("Payment app", () => {
185191
},
186192
});
187193

188-
await page.goto(`event-types/${paymentEvent?.id}?tabName=apps`);
194+
await goToAppsTab(page, paymentEvent?.id);
189195

190196
await page.locator("#event-type-form").getByRole("switch").click();
191197

@@ -220,7 +226,7 @@ test.describe("Payment app", () => {
220226
},
221227
});
222228

223-
await page.goto(`event-types/${paymentEvent?.id}?tabName=apps`);
229+
await goToAppsTab(page, paymentEvent?.id);
224230

225231
await page.locator("#event-type-form").getByRole("switch").click();
226232
// make sure Tracking ID is displayed
@@ -267,7 +273,7 @@ test.describe("Payment app", () => {
267273
],
268274
});
269275

270-
await page.goto(`event-types/${paymentEvent.id}?tabName=apps`);
276+
await goToAppsTab(page, paymentEvent?.id);
271277

272278
await page.locator("[data-testid='paypal-app-switch']").click();
273279
await page.locator("[data-testid='stripe-app-switch']").isDisabled();
@@ -314,7 +320,7 @@ test.describe("Payment app", () => {
314320
],
315321
});
316322

317-
await page.goto(`event-types/${paymentEvent.id}?tabName=apps`);
323+
await goToAppsTab(page, paymentEvent?.id);
318324

319325
await page.getByTestId("paypal-app-switch").click();
320326
await page.getByTestId("paypal-price-input").fill("100");

0 commit comments

Comments
 (0)