Date: Thu, 23 Jan 2025 11:25:19 +0530
Subject: [PATCH 05/13] Update Booker.tsx
---
packages/features/bookings/Booker/Booker.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/features/bookings/Booker/Booker.tsx b/packages/features/bookings/Booker/Booker.tsx
index c06616f1f9aa46..2443b01e12ffed 100644
--- a/packages/features/bookings/Booker/Booker.tsx
+++ b/packages/features/bookings/Booker/Booker.tsx
@@ -504,7 +504,7 @@ const BookerComponent = ({
{shouldRenderCaptcha && (
{
bookingForm.setValue("cfToken", token);
}}
From e42d01959d9a981a90609ba4cd018c3137446fc7 Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Thu, 23 Jan 2025 12:21:10 +0530
Subject: [PATCH 06/13] Update AvailableTimeSlots.tsx
---
.../features/bookings/Booker/components/AvailableTimeSlots.tsx | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/features/bookings/Booker/components/AvailableTimeSlots.tsx b/packages/features/bookings/Booker/components/AvailableTimeSlots.tsx
index 0ad76584cc91a1..fae80c8dd70466 100644
--- a/packages/features/bookings/Booker/components/AvailableTimeSlots.tsx
+++ b/packages/features/bookings/Booker/components/AvailableTimeSlots.tsx
@@ -36,6 +36,7 @@ type AvailableTimeSlotsProps = {
onSubmit: (timeSlot?: string) => void;
skipConfirmStep: boolean;
shouldRenderCaptcha?: boolean;
+ watchedCfToken?: string;
};
/**
From 9b015d1cd0030ff4c214ad332d41152619ee74ee Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Thu, 23 Jan 2025 15:44:21 +0530
Subject: [PATCH 07/13] made optional to fix type errors
---
.../bookings/components/AvailableTimes.tsx | 26 +++++++++----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/packages/features/bookings/components/AvailableTimes.tsx b/packages/features/bookings/components/AvailableTimes.tsx
index f060b75b5a49cb..e70ce201bae78b 100644
--- a/packages/features/bookings/components/AvailableTimes.tsx
+++ b/packages/features/bookings/components/AvailableTimes.tsx
@@ -46,10 +46,10 @@ type SlotItemProps = {
data?: Pick | null;
};
customClassNames?: string;
- loadingStates: IUseBookingLoadingStates;
- isVerificationCodeSending: boolean;
- renderConfirmNotVerifyEmailButtonCond: boolean;
- skipConfirmStep: boolean;
+ loadingStates?: IUseBookingLoadingStates;
+ isVerificationCodeSending?: boolean;
+ renderConfirmNotVerifyEmailButtonCond?: boolean;
+ skipConfirmStep?: boolean;
shouldRenderCaptcha?: boolean;
watchedCfToken?: string;
};
@@ -134,10 +134,10 @@ const SlotItem = ({
disabled={
bookingFull ||
!!(slot.bookingUid && slot.bookingUid === bookingData?.uid) ||
- loadingStates.creatingBooking ||
- loadingStates.creatingRecurringBooking ||
+ loadingStates?.creatingBooking ||
+ loadingStates?.creatingRecurringBooking ||
isVerificationCodeSending ||
- loadingStates.creatingInstantBooking ||
+ loadingStates?.creatingInstantBooking ||
(skipConfirmStep && !!shouldRenderCaptcha && !watchedCfToken)
}
data-testid="time"
@@ -188,17 +188,17 @@ const SlotItem = ({
}
disabled={
(!!shouldRenderCaptcha && !watchedCfToken) ||
- loadingStates.creatingBooking ||
- loadingStates.creatingRecurringBooking ||
+ loadingStates?.creatingBooking ||
+ loadingStates?.creatingRecurringBooking ||
isVerificationCodeSending ||
- loadingStates.creatingInstantBooking
+ loadingStates?.creatingInstantBooking
}
color="primary"
loading={
- (selectedTimeslot === slot.time && loadingStates.creatingBooking) ||
- loadingStates.creatingRecurringBooking ||
+ (selectedTimeslot === slot.time && loadingStates?.creatingBooking) ||
+ loadingStates?.creatingRecurringBooking ||
isVerificationCodeSending ||
- loadingStates.creatingInstantBooking
+ loadingStates?.creatingInstantBooking
}>
{renderConfirmNotVerifyEmailButtonCond
? isPaidEvent
From b36f5078c632acb2204445358305299abc175291 Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Thu, 23 Jan 2025 15:44:38 +0530
Subject: [PATCH 08/13] Update Booker.tsx
---
packages/features/bookings/Booker/Booker.tsx | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/features/bookings/Booker/Booker.tsx b/packages/features/bookings/Booker/Booker.tsx
index 2443b01e12ffed..895f965753e0c8 100644
--- a/packages/features/bookings/Booker/Booker.tsx
+++ b/packages/features/bookings/Booker/Booker.tsx
@@ -271,6 +271,7 @@ const BookerComponent = ({
verifyCode?.verifyCodeWithSessionRequired,
isPlatform,
shouldRenderCaptcha,
+ isVerificationCodeSending,
]);
/**
From 0d59d80af9ee886b74f184ec7ae14585889f6313 Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Thu, 23 Jan 2025 15:57:35 +0530
Subject: [PATCH 09/13] Update getBookingResponsesSchema.ts
---
.../bookings/lib/getBookingResponsesSchema.ts | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/packages/features/bookings/lib/getBookingResponsesSchema.ts b/packages/features/bookings/lib/getBookingResponsesSchema.ts
index 0abc554b786ad7..24fff7905c51ac 100644
--- a/packages/features/bookings/lib/getBookingResponsesSchema.ts
+++ b/packages/features/bookings/lib/getBookingResponsesSchema.ts
@@ -157,14 +157,11 @@ function preprocess({
if (bookingField.hideWhenJustOneOption) {
hidden = hidden || numOptions <= 1;
}
+ let isRequired = false;
// If the field is hidden, then it can never be required
- const isRequired = hidden
- ? false
- : isFieldApplicableToCurrentView
- ? checkOptional
- ? true
- : bookingField.required
- : false;
+ if (!hidden && isFieldApplicableToCurrentView) {
+ isRequired = checkOptional || !!bookingField.required;
+ }
if ((isPartialSchema || !isRequired) && value === undefined) {
continue;
From 7d4165a8c80fd6ab583b8012a9323b8520661fec Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Fri, 24 Jan 2025 11:23:42 +0530
Subject: [PATCH 10/13] Update Booker.tsx
---
packages/features/bookings/Booker/Booker.tsx | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/features/bookings/Booker/Booker.tsx b/packages/features/bookings/Booker/Booker.tsx
index 895f965753e0c8..06b88e8ab741bd 100644
--- a/packages/features/bookings/Booker/Booker.tsx
+++ b/packages/features/bookings/Booker/Booker.tsx
@@ -163,6 +163,7 @@ const BookerComponent = ({
// Cloudflare Turnstile Captcha
const shouldRenderCaptcha = !!(
+ !process.env.NEXT_PUBLIC_IS_E2E &&
renderCaptcha &&
CLOUDFLARE_SITE_ID &&
CLOUDFLARE_USE_TURNSTILE_IN_BOOKER === "1" &&
From fcc6933d28cc92309d4287a965c171da6c9125c2 Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Fri, 24 Jan 2025 13:24:06 +0530
Subject: [PATCH 11/13] fixed failing tests
---
packages/features/bookings/Booker/Booker.tsx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/packages/features/bookings/Booker/Booker.tsx b/packages/features/bookings/Booker/Booker.tsx
index 06b88e8ab741bd..11d58ef4a7a6e1 100644
--- a/packages/features/bookings/Booker/Booker.tsx
+++ b/packages/features/bookings/Booker/Booker.tsx
@@ -178,6 +178,7 @@ const BookerComponent = ({
}, [event, selectedDate, selectedTimeslot, setBookerState, skipConfirmStep]);
const slot = getQueryParam("slot");
+
useEffect(() => {
setSelectedTimeslot(slot || null);
}, [slot, setSelectedTimeslot]);
@@ -197,7 +198,7 @@ const BookerComponent = ({
setSeatedEventData({ ...seatedEventData, bookingUid: undefined, attendees: undefined });
}
}}
- onSubmit={renderConfirmNotVerifyEmailButtonCond ? handleBookEvent : handleVerifyEmail}
+ onSubmit={() => (renderConfirmNotVerifyEmailButtonCond ? handleBookEvent() : handleVerifyEmail())}
errorRef={bookerFormErrorRef}
errors={{ ...formErrors, ...errors }}
loadingStates={loadingStates}
From 8617e578b7c23461d6796b1a4fb69ac5df9df1d1 Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Fri, 24 Jan 2025 15:17:35 +0530
Subject: [PATCH 12/13] added tests
---
apps/web/playwright/booking-pages.e2e.ts | 17 +++++++++++++++++
.../playwright/manage-booking-questions.e2e.ts | 2 --
.../bookings/components/AvailableTimes.tsx | 1 +
3 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/apps/web/playwright/booking-pages.e2e.ts b/apps/web/playwright/booking-pages.e2e.ts
index 5d83253fd27b9c..e10bc3fa33ad13 100644
--- a/apps/web/playwright/booking-pages.e2e.ts
+++ b/apps/web/playwright/booking-pages.e2e.ts
@@ -401,6 +401,23 @@ test.describe("prefill", () => {
await expect(page.locator('[name="email"]')).toHaveValue(testEmail);
});
});
+
+ test("skip confirm step if all fields are prefilled from query params", async ({ page }) => {
+ await page.goto("/pro/30min");
+ const url = new URL(page.url());
+ url.searchParams.set("name", testName);
+ url.searchParams.set("email", testEmail);
+ url.searchParams.set("guests", "guest1@example.com");
+ url.searchParams.set("guests", "guest2@example.com");
+ url.searchParams.set("notes", "This is an additional note");
+ await page.goto(url.toString());
+ await selectFirstAvailableTimeSlotNextMonth(page);
+
+ await expect(page.locator('[data-testid="skip-confirm-book-button"]')).toBeVisible();
+ await page.click('[data-testid="skip-confirm-book-button"]');
+
+ await expect(page.locator("[data-testid=success-page]")).toBeVisible();
+ });
});
test.describe("Booking on different layouts", () => {
diff --git a/apps/web/playwright/manage-booking-questions.e2e.ts b/apps/web/playwright/manage-booking-questions.e2e.ts
index 3a040c118be8f4..9443f13f1b7a71 100644
--- a/apps/web/playwright/manage-booking-questions.e2e.ts
+++ b/apps/web/playwright/manage-booking-questions.e2e.ts
@@ -172,7 +172,6 @@ test.describe("Manage Booking Questions", () => {
prefillUrl.searchParams.append("email", "john@example.com");
prefillUrl.searchParams.append("guests", "guest1@example.com");
prefillUrl.searchParams.append("guests", "guest2@example.com");
- prefillUrl.searchParams.append("notes", "This is an additional note");
await page.goto(prefillUrl.toString());
await bookTimeSlot({ page, skipSubmission: true });
await expectSystemFieldsToBeThereOnBookingPage({
@@ -185,7 +184,6 @@ test.describe("Manage Booking Questions", () => {
},
email: "john@example.com",
guests: ["guest1@example.com", "guest2@example.com"],
- notes: "This is an additional note",
},
});
});
diff --git a/packages/features/bookings/components/AvailableTimes.tsx b/packages/features/bookings/components/AvailableTimes.tsx
index e70ce201bae78b..238f7dd739affd 100644
--- a/packages/features/bookings/components/AvailableTimes.tsx
+++ b/packages/features/bookings/components/AvailableTimes.tsx
@@ -186,6 +186,7 @@ const SlotItem = ({
onClick={() =>
onTimeSelect(slot.time, slot?.attendees || 0, seatsPerTimeSlot, slot.bookingUid)
}
+ data-testid="skip-confirm-book-button"
disabled={
(!!shouldRenderCaptcha && !watchedCfToken) ||
loadingStates?.creatingBooking ||
From 704407cae573abca7cda44cd047dea7e9ca77e1d Mon Sep 17 00:00:00 2001
From: Somay Chauhan
Date: Fri, 24 Jan 2025 19:04:12 +0530
Subject: [PATCH 13/13] fix: fixed failing embed tests
---
packages/embeds/embed-core/playground.ts | 2 --
1 file changed, 2 deletions(-)
diff --git a/packages/embeds/embed-core/playground.ts b/packages/embeds/embed-core/playground.ts
index 74b51218f8da99..f1f71d85848746 100644
--- a/packages/embeds/embed-core/playground.ts
+++ b/packages/embeds/embed-core/playground.ts
@@ -63,7 +63,6 @@ if (only === "all" || only === "ns:default") {
},
name: "John",
email: "johndoe@gmail.com",
- notes: "Test Meeting",
guests: ["janedoe@example.com", "test@example.com"],
theme: "dark",
"flag.coep": "true",
@@ -454,7 +453,6 @@ if (only === "all" || only == "ns:floatingButton") {
"flag.coep": "true",
name: "John",
email: "johndoe@gmail.com",
- notes: "Test Meeting",
guests: ["janedoe@example.com", "test@example.com"],
...(theme ? { theme } : {}),
},