add changes
commit
42ffaaedb1
|
@ -0,0 +1,38 @@
|
||||||
|
import { login } from "../fixtures/users";
|
||||||
|
import { test } from "../lib/fixtures";
|
||||||
|
|
||||||
|
test.describe("Test the timezone behavior in specific cases", () => {
|
||||||
|
test("Change timezone in booking page", async ({ page, bookingPage }) => {
|
||||||
|
await login({ username: "pro", email: "pro@example.com", password: "pro" }, page);
|
||||||
|
await page.goto("/event-types");
|
||||||
|
await bookingPage.checkUpdateTimezone();
|
||||||
|
await bookingPage.goToEventTypePage();
|
||||||
|
|
||||||
|
// Create a new event type
|
||||||
|
await bookingPage.createRegularEventType("15 min test timezone");
|
||||||
|
|
||||||
|
// Schedule a booking changing the timezone to America/New_York
|
||||||
|
const bookingSchedulingPage = await bookingPage.previewEventType();
|
||||||
|
await bookingPage.selectTimezone("America/New York", bookingSchedulingPage);
|
||||||
|
await bookingPage.assertRightTimezone("America/New York", bookingSchedulingPage);
|
||||||
|
await bookingPage.selectFirstAvailableTime(bookingSchedulingPage);
|
||||||
|
|
||||||
|
// Check if the correct timezone is displayed and if the meeting was scheduled successfully
|
||||||
|
await bookingPage.assertRightTimezone("America/New York", bookingSchedulingPage, {
|
||||||
|
inConfirmationPage: true,
|
||||||
|
shouldConfirmBooking: true,
|
||||||
|
});
|
||||||
|
await bookingPage.goToEventType("Back to bookings", bookingSchedulingPage);
|
||||||
|
|
||||||
|
// Check if the icon globe is displayed in the bookings page and if the correct timezone is displayed when we click on it
|
||||||
|
await bookingPage.assertCorrectTimezoneInGlobeButton("America/New York", bookingSchedulingPage);
|
||||||
|
|
||||||
|
// Cancel the meeting in upcoming bookings page
|
||||||
|
await bookingPage.cancelUpcomingBooking("15 min test timezone", bookingSchedulingPage);
|
||||||
|
await bookingPage.assertBookingCanceled(bookingSchedulingPage);
|
||||||
|
|
||||||
|
// Delete the event-type
|
||||||
|
await bookingPage.goToEventTypePage(bookingSchedulingPage);
|
||||||
|
await bookingPage.deleteEventType("15 min test timezone", bookingSchedulingPage);
|
||||||
|
});
|
||||||
|
});
|
|
@ -115,8 +115,11 @@ export async function loginUser(users: UserFixture) {
|
||||||
|
|
||||||
export function createBookingPageFixture(page: Page) {
|
export function createBookingPageFixture(page: Page) {
|
||||||
return {
|
return {
|
||||||
goToEventType: async (eventType: string) => {
|
goToEventTypePage: async (page?: Page) => {
|
||||||
await page.getByRole("link", { name: eventType }).click();
|
page?.goto("/event-types");
|
||||||
|
},
|
||||||
|
goToEventType: async (eventType: string, page?: Page) => {
|
||||||
|
await page?.getByRole("link", { name: eventType }).first().click();
|
||||||
},
|
},
|
||||||
goToTab: async (tabName: string) => {
|
goToTab: async (tabName: string) => {
|
||||||
await page.getByTestId(`vertical-tab-${tabName}`).click();
|
await page.getByTestId(`vertical-tab-${tabName}`).click();
|
||||||
|
@ -166,8 +169,8 @@ export function createBookingPageFixture(page: Page) {
|
||||||
await page.getByRole("button", { name: "View next" }).click();
|
await page.getByRole("button", { name: "View next" }).click();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectFirstAvailableTime: async () => {
|
selectFirstAvailableTime: async (page?: Page) => {
|
||||||
await page.getByTestId("time").first().click();
|
await page?.getByTestId("time").first().click();
|
||||||
},
|
},
|
||||||
fillRescheduleReasonAndConfirm: async () => {
|
fillRescheduleReasonAndConfirm: async () => {
|
||||||
await page.getByPlaceholder(reschedulePlaceholderText).click();
|
await page.getByPlaceholder(reschedulePlaceholderText).click();
|
||||||
|
@ -251,5 +254,80 @@ export function createBookingPageFixture(page: Page) {
|
||||||
await scheduleSuccessfullyPage.waitFor({ state: "visible" });
|
await scheduleSuccessfullyPage.waitFor({ state: "visible" });
|
||||||
await expect(scheduleSuccessfullyPage).toBeVisible();
|
await expect(scheduleSuccessfullyPage).toBeVisible();
|
||||||
},
|
},
|
||||||
|
selectTimezoneInSettings: async (name: string, settingsPage: Page) => {
|
||||||
|
await settingsPage.locator("#timezone svg").click();
|
||||||
|
name.includes(" ") && (name = name.replace(" ", "_"));
|
||||||
|
await settingsPage.getByTestId(`select-option-${name}`).click();
|
||||||
|
await settingsPage.getByRole("button", { name: "Update" }).click();
|
||||||
|
await settingsPage.getByRole("button", { name: "Don't update" }).click();
|
||||||
|
},
|
||||||
|
assertRightTimezone: async (
|
||||||
|
timezone: string,
|
||||||
|
bookingSchedulingPage: Page,
|
||||||
|
options?: { inConfirmationPage: boolean; shouldConfirmBooking?: boolean }
|
||||||
|
) => {
|
||||||
|
if (options?.inConfirmationPage) {
|
||||||
|
await expect(bookingSchedulingPage.getByText("America/New_York")).toBeVisible();
|
||||||
|
if (options.shouldConfirmBooking) {
|
||||||
|
await bookingSchedulingPage.getByTestId("confirm-book-button").click();
|
||||||
|
await expect(bookingSchedulingPage.getByText("This meeting is scheduled")).toBeVisible();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await expect(
|
||||||
|
bookingSchedulingPage
|
||||||
|
.locator("div")
|
||||||
|
.filter({ hasText: `${timezone}` })
|
||||||
|
.nth(1)
|
||||||
|
).toBeVisible();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
checkUpdateTimezone: async () => {
|
||||||
|
if (await page.getByRole("button", { name: "Update timezone" }).isVisible()) {
|
||||||
|
page.getByRole("button", { name: "Update timezone" }).click();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
createRegularEventType: async (name: string) => {
|
||||||
|
await page.getByTestId("new-event-type").click();
|
||||||
|
await page.getByPlaceholder("Quick Chat").click();
|
||||||
|
await page.getByPlaceholder("Quick Chat").fill(`${name}`);
|
||||||
|
await page.getByRole("button", { name: "Continue" }).dblclick();
|
||||||
|
await page.getByTestId("update-eventtype").click();
|
||||||
|
},
|
||||||
|
selectTimezone: async (timezone: string, bookingSchedulingPage: Page) => {
|
||||||
|
await bookingSchedulingPage.locator("span").filter({ hasText: "/" }).locator("svg").first().click();
|
||||||
|
timezone.includes(" ") && (timezone = timezone.replace(" ", "_"));
|
||||||
|
await bookingSchedulingPage.getByTestId(`select-option-${timezone}`).click();
|
||||||
|
},
|
||||||
|
assertCorrectTimezoneInGlobeButton: async (timezone: string, page?: Page) => {
|
||||||
|
await page?.getByRole("link", { name: "m - " }).first().hover();
|
||||||
|
await page?.getByRole("link", { name: "m - " }).first().getByRole("button").click();
|
||||||
|
timezone.includes(" ") && (timezone = timezone.replace(" ", "_"));
|
||||||
|
page !== undefined && (await expect(page?.getByText("timezone").first()).toBeVisible());
|
||||||
|
},
|
||||||
|
deleteEventType: async (bookingName: string, page?: Page) => {
|
||||||
|
await page
|
||||||
|
?.getByRole("link", { name: `${bookingName}` })
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
await page
|
||||||
|
?.locator("header")
|
||||||
|
.filter({ hasText: `${bookingName}Save` })
|
||||||
|
.getByRole("button")
|
||||||
|
.nth(2)
|
||||||
|
.click();
|
||||||
|
await page?.getByRole("button", { name: "Yes, delete" }).click();
|
||||||
|
page !== undefined && (await expect(page?.getByText("Event type deleted successfully")).toBeVisible());
|
||||||
|
},
|
||||||
|
cancelUpcomingBooking: async (bookingName: string, page?: Page) => {
|
||||||
|
await page?.getByRole("link", { name: "Bookings" }).click();
|
||||||
|
await page
|
||||||
|
?.getByRole("row", {
|
||||||
|
name: ` ${bookingName} between Pro Example and Pro Example You and Pro Example Cancel Edit`,
|
||||||
|
})
|
||||||
|
.getByTestId("cancel")
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
await page?.getByTestId("confirm_cancel").click();
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue