diff --git a/apps/web/playwright/manage-booking-questions.e2e.ts b/apps/web/playwright/manage-booking-questions.e2e.ts index a680b44414..088219f1e9 100644 --- a/apps/web/playwright/manage-booking-questions.e2e.ts +++ b/apps/web/playwright/manage-booking-questions.e2e.ts @@ -135,6 +135,24 @@ test.describe("Manage Booking Questions", () => { }); }); }); + + await test.step("Verify that we can prefill name field with no lastname", async () => { + const searchParams = new URLSearchParams(); + searchParams.append("name", "FirstName"); + await doOnFreshPreviewWithSearchParams(searchParams, page, context, async (page) => { + await selectFirstAvailableTimeSlotNextMonth(page); + await expectSystemFieldsToBeThereOnBookingPage({ + page, + isFirstAndLastNameVariant: true, + values: { + name: { + firstName: "FirstName", + lastName: "", + }, + }, + }); + }); + }); }); }); @@ -506,6 +524,27 @@ async function doOnFreshPreview( return previewTabPage; } +async function doOnFreshPreviewWithSearchParams( + searchParams: URLSearchParams, + page: Page, + context: PlaywrightTestArgs["context"], + callback: (page: Page) => Promise, + persistTab = false +) { + const previewUrl = (await page.locator('[data-testid="preview-button"]').getAttribute("href")) || ""; + const previewUrlObj = new URL(previewUrl); + searchParams.forEach((value, key) => { + previewUrlObj.searchParams.append(key, value); + }); + const previewTabPage = await context.newPage(); + await previewTabPage.goto(previewUrlObj.toString()); + await callback(previewTabPage); + if (!persistTab) { + await previewTabPage.close(); + } + return previewTabPage; +} + async function toggleQuestionAndSave({ name, page }: { name: string; page: Page }) { await page.locator(`[data-testid="field-${name}"]`).locator('[data-testid="toggle-field"]').click(); await saveEventType(page); diff --git a/packages/prisma/zod-utils.ts b/packages/prisma/zod-utils.ts index fd05ce23bb..d3fb0b9e31 100644 --- a/packages/prisma/zod-utils.ts +++ b/packages/prisma/zod-utils.ts @@ -123,9 +123,7 @@ export const bookingResponses = z nonEmptyString(), z.object({ firstName: nonEmptyString(), - lastName: nonEmptyString() - .refine((value: string) => value.trim().length > 0) - .optional(), + lastName: z.string().optional(), }), ]), guests: z.array(z.string()).optional(),