test: Create E2E tests for bookings with custom/required Select + other questions (teste2e-selectQuestion) (#11564)
Co-authored-by: gitstart-calcom <gitstart-calcom@users.noreply.github.com> Co-authored-by: GitStart-Cal.com <121884634+gitstart-calcom@users.noreply.github.com> Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>pull/12119/head^2
parent
678ab3f453
commit
f80dc0738a
|
@ -0,0 +1,441 @@
|
||||||
|
import { loginUser } from "../fixtures/regularBookings";
|
||||||
|
import { test } from "../lib/fixtures";
|
||||||
|
|
||||||
|
test.describe("Booking With Phone Question and Each Other Question", () => {
|
||||||
|
const bookingOptions = { hasPlaceholder: true, isRequired: true };
|
||||||
|
|
||||||
|
test.beforeEach(async ({ page, users, bookingPage }) => {
|
||||||
|
await loginUser(users);
|
||||||
|
await page.goto("/event-types");
|
||||||
|
await bookingPage.goToEventType("30 min");
|
||||||
|
await bookingPage.goToTab("event_advanced_tab_title");
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and Address Question", () => {
|
||||||
|
test("Select required and Address required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("address", "address-test", "address test", true, "address test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and Address question (both required)",
|
||||||
|
secondQuestion: "address",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and Address not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("address", "address-test", "address test", false, "address test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and Address question (only select required)",
|
||||||
|
secondQuestion: "address",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and checkbox group Question", () => {
|
||||||
|
test("Select required and checkbox group required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("checkbox", "checkbox-test", "checkbox test", true);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and Checkbox question (both required)",
|
||||||
|
secondQuestion: "checkbox",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and checkbox group not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("checkbox", "checkbox-test", "checkbox test", false);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and Checkbox question (only Select required)",
|
||||||
|
secondQuestion: "checkbox",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and checkbox Question", () => {
|
||||||
|
test("Select required and checkbox required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("boolean", "boolean-test", "boolean test", true);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and boolean question (both required)",
|
||||||
|
secondQuestion: "boolean",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and checkbox not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("boolean", "boolean-test", "boolean test", false);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and boolean question (only select required)",
|
||||||
|
secondQuestion: "boolean",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and Long text Question", () => {
|
||||||
|
test("Select required and Long text required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("textarea", "textarea-test", "textarea test", true, "textarea test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and textarea question (both required)",
|
||||||
|
secondQuestion: "textarea",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and Long text not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("textarea", "textarea-test", "textarea test", false, "textarea test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and textarea question (only select required)",
|
||||||
|
secondQuestion: "textarea",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and Multi email Question", () => {
|
||||||
|
test("Select required and Multi email required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion(
|
||||||
|
"multiemail",
|
||||||
|
"multiemail-test",
|
||||||
|
"multiemail test",
|
||||||
|
true,
|
||||||
|
"multiemail test"
|
||||||
|
);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and multiemail question (both required)",
|
||||||
|
secondQuestion: "multiemail",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and Multi email not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion(
|
||||||
|
"multiemail",
|
||||||
|
"multiemail-test",
|
||||||
|
"multiemail test",
|
||||||
|
false,
|
||||||
|
"multiemail test"
|
||||||
|
);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and multiemail question (only select required)",
|
||||||
|
secondQuestion: "multiemail",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and multiselect Question", () => {
|
||||||
|
test("Select required and multiselect text required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("multiselect", "multiselect-test", "multiselect test", true);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and multiselect question (both required)",
|
||||||
|
secondQuestion: "multiselect",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and multiselect text not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("multiselect", "multiselect-test", "multiselect test", false);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and multiselect question (only select required)",
|
||||||
|
secondQuestion: "multiselect",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and Number Question", () => {
|
||||||
|
test("Select required and Number required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("number", "number-test", "number test", true, "number test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and number question (both required)",
|
||||||
|
secondQuestion: "number",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and Number not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("number", "number-test", "number test", false, "number test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and number question (only select required)",
|
||||||
|
secondQuestion: "number",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and Phone Question", () => {
|
||||||
|
test("Select required and select required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("phone", "phone-test", "phone test", true, "phone test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and phone question (both required)",
|
||||||
|
secondQuestion: "phone",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and Phone not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("phone", "phone-test", "phone test", false, "phone test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and phone question (only select required)",
|
||||||
|
secondQuestion: "phone",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and Radio group Question", () => {
|
||||||
|
test("Select required and Radio group required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("radio", "radio-test", "radio test", true);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and radio question (both required)",
|
||||||
|
secondQuestion: "radio",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and Radio group not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("radio", "radio-test", "radio test", false);
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and radio question (only select required)",
|
||||||
|
secondQuestion: "radio",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe("Booking With Select Question and Short text question", () => {
|
||||||
|
test("Select required and Short text required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("text", "text-test", "text test", true, "text test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and text question (both required)",
|
||||||
|
secondQuestion: "text",
|
||||||
|
options: bookingOptions,
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Select and Short text not required", async ({ bookingPage }) => {
|
||||||
|
await bookingPage.addQuestion("select", "select-test", "select test", true, "select test");
|
||||||
|
await bookingPage.addQuestion("text", "text-test", "text test", false, "text test");
|
||||||
|
await bookingPage.updateEventType();
|
||||||
|
const eventTypePage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimeSlot(eventTypePage);
|
||||||
|
await bookingPage.fillAndConfirmBooking({
|
||||||
|
eventTypePage,
|
||||||
|
placeholderText: "Please share anything that will help prepare for our meeting.",
|
||||||
|
question: "select",
|
||||||
|
fillText: "Test Select question and text question (only select required)",
|
||||||
|
secondQuestion: "text",
|
||||||
|
options: { ...bookingOptions, isRequired: false },
|
||||||
|
});
|
||||||
|
await bookingPage.rescheduleBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingRescheduled(eventTypePage);
|
||||||
|
await bookingPage.cancelBooking(eventTypePage);
|
||||||
|
await bookingPage.assertBookingCanceled(eventTypePage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -111,7 +111,6 @@ const fillQuestion = async (eventTypePage: Page, questionType: string, customLoc
|
||||||
await eventTypePage.getByPlaceholder(`${questionType} test`).fill("text test");
|
await eventTypePage.getByPlaceholder(`${questionType} test`).fill("text test");
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (questionActions[questionType]) {
|
if (questionActions[questionType]) {
|
||||||
await questionActions[questionType]();
|
await questionActions[questionType]();
|
||||||
}
|
}
|
||||||
|
@ -236,7 +235,7 @@ export function createBookingPageFixture(page: Page) {
|
||||||
|
|
||||||
// Change the selector for specifics cases related to select question
|
// Change the selector for specifics cases related to select question
|
||||||
const shouldChangeSelectLocator = (question: string, secondQuestion: string): boolean =>
|
const shouldChangeSelectLocator = (question: string, secondQuestion: string): boolean =>
|
||||||
question === "select" && ["multiemail", "multiselect"].includes(secondQuestion);
|
question === "select" && ["multiemail", "multiselect", "address"].includes(secondQuestion);
|
||||||
|
|
||||||
const shouldUseLastRadioGroupLocator = (question: string, secondQuestion: string): boolean =>
|
const shouldUseLastRadioGroupLocator = (question: string, secondQuestion: string): boolean =>
|
||||||
question === "radio" && secondQuestion === "checkbox";
|
question === "radio" && secondQuestion === "checkbox";
|
||||||
|
|
Loading…
Reference in New Issue