Compare commits

...

26 Commits

Author SHA1 Message Date
GitStart-Cal.com 20aa6dac93
Merge branch 'main' into teste2e-availability 2024-01-10 07:51:17 +05:45
GitStart-Cal.com 0a29d9aa76
Merge branch 'main' into teste2e-availability 2024-01-09 17:26:31 +05:45
GitStart-Cal.com 5575ea8cef
Merge branch 'main' into teste2e-availability 2024-01-05 05:18:49 +08:00
gitstart-calcom df8a222b24 Change way to grab element 2024-01-04 16:18:05 +00:00
gitstart-calcom 763434ef5f Merge commit 'c19799e2755438da9cd6ebce560765585407d4cc' into teste2e-availability 2024-01-04 16:17:38 +00:00
Keith Williams f69a08cc2b
Merge branch 'main' into teste2e-availability 2024-01-02 16:44:26 -05:00
GitStart-Cal.com c8d18f9b25
Merge branch 'main' into teste2e-availability 2023-12-19 00:14:37 +05:45
GitStart-Cal.com cbcf19962e
Merge branch 'main' into teste2e-availability 2023-12-11 19:39:36 +08:00
GitStart-Cal.com f53b91b26a
Merge branch 'main' into teste2e-availability 2023-12-08 04:19:22 +08:00
GitStart-Cal.com 079dace7c0
Merge branch 'main' into teste2e-availability 2023-12-07 01:30:41 +08:00
GitStart-Cal.com 6e621a34ec
Merge branch 'main' into teste2e-availability 2023-12-05 02:46:38 +05:45
GitStart-Cal.com 7041a73ae4
Merge branch 'main' into teste2e-availability 2023-12-04 17:21:13 +05:45
GitStart-Cal.com 31a08478f8
Merge branch 'main' into teste2e-availability 2023-12-04 07:14:39 +05:45
GitStart-Cal.com fb47c7f0ae
Merge branch 'main' into teste2e-availability 2023-12-03 20:23:29 +05:45
GitStart-Cal.com ca6ae7cf22
Merge branch 'main' into teste2e-availability 2023-12-03 03:04:17 +05:45
gitstart-calcom d3519d4ecc Requested changes 2023-12-02 19:24:22 +00:00
gitstart-calcom e63cb91586 Merge commit '44e4f4c644031bc5041852f0cbe8f0643a82eafc' into teste2e-availability 2023-12-02 19:23:47 +00:00
Morgan 1374444c07
Merge branch 'main' into teste2e-availability 2023-12-01 10:38:31 +02:00
GitStart-Cal.com b61e2c13ca
Merge branch 'main' into teste2e-availability 2023-11-22 22:30:55 +05:45
GitStart-Cal.com 51cc7f4ac5
Merge branch 'main' into teste2e-availability 2023-11-22 19:23:19 +05:45
GitStart-Cal.com fae80c2643
Merge branch 'main' into teste2e-availability 2023-11-21 01:25:58 +05:45
gitstart-calcom e42273e140 add changes 2023-11-19 23:52:35 +00:00
gitstart-calcom 9544b7d884 add changes 2023-11-19 23:49:11 +00:00
gitstart-calcom 7b20c8f48e add changes 2023-11-19 19:25:44 +00:00
gitstart-calcom 57ce15fc24 add changes 2023-11-19 19:20:07 +00:00
gitstart-calcom 44b308b875 add changes 2023-11-19 19:14:31 +00:00
5 changed files with 118 additions and 2 deletions

View File

@ -0,0 +1,15 @@
import { loginUser } from "../fixtures/regularBookings";
import { test } from "../lib/fixtures";
test.describe("Check availability tab in a event-type", () => {
test("Check availability in event type", async ({ eventTypePage, users }) => {
await loginUser(users);
await eventTypePage.goToEventTypesPage();
await eventTypePage.goToEventType("30 min");
await eventTypePage.goToTab("availability");
await eventTypePage.checkAvailabilityTab();
await eventTypePage.goToAvailabilityPage();
await eventTypePage.checkAvailabilityPage();
});
});

View File

@ -0,0 +1,93 @@
import { expect, type Page } from "@playwright/test";
import { localize } from "../lib/testUtils";
export function createEventTypeFixture(page: Page) {
return {
goToEventType: async (eventType: string) => {
await page.getByRole("link", { name: eventType }).click();
},
goToTab: async (tabName: string) => {
await page.getByTestId(`vertical-tab-${tabName}`).click();
},
goToEventTypesPage: async () => {
await page.goto("/event-types");
},
checkAvailabilityTab: async () => {
const editAvailability = (await localize("en"))("edit_availability");
// Verify if the icon is rendered
await expect(page.locator("span").filter({ hasText: "Europe/London" }).locator("svg")).toBeVisible();
await expect(page.getByText("Europe/London")).toBeVisible();
await page.getByRole("link", { name: editAvailability }).click();
},
goToAvailabilityPage: async () => {
const workingHours = (await localize("en"))("default_schedule_name");
await page.goto("/availability");
await page
.getByTestId("schedules")
.locator("div")
.filter({
hasText: workingHours,
})
.first()
.click();
},
checkAvailabilityPage: async () => {
const sunday = (await localize("en"))("sunday");
const monday = (await localize("en"))("monday");
const wednesday = (await localize("en"))("wednesday");
const saturday = (await localize("en"))("saturday");
const save = (await localize("en"))("save");
const copyTimesTo = (await localize("en"))("copy_times_to");
await page.getByTestId("availablity-title").click();
// change availability name
await page.getByTestId("availablity-title").fill("Working Hours test");
await expect(page.getByTestId("subtitle")).toBeVisible();
await page.getByTestId(sunday).getByRole("switch").click();
await page.getByTestId(monday).first().click();
await page.getByTestId(wednesday).getByRole("switch").click();
await page.getByTestId(saturday).getByRole("switch").click();
await page
.locator("div")
.filter({ hasText: "Sunday9:00am - 5:00pm" })
.getByTestId("add-time-availability")
.first()
.click();
await expect(page.locator("div").filter({ hasText: "6:00pm" }).nth(1)).toBeVisible();
await page.getByRole("button", { name: save }).click();
await expect(page.getByText("Sun - Tue, Thu - Sat, 9:00 AM - 5:00 PM")).toBeVisible();
await expect(page.getByText("Sun, 5:00 PM - 6:00 PM")).toBeVisible();
await page
.locator("div")
.filter({ hasText: "Sunday9:00am - 5:00pm" })
.getByTestId("copy-button")
.first()
.click();
await expect(page.getByText(copyTimesTo)).toBeVisible();
await page.getByRole("checkbox", { name: monday }).check();
await page.getByRole("button", { name: "Apply" }).click();
await page.getByRole("button", { name: save }).click();
await page
.locator("#availability-form div")
.filter({ hasText: "TimezoneEurope/London" })
.locator("svg")
.click();
await page.locator("#react-select-3-input").fill("bras");
await page.getByTestId("select-option-America/Sao_Paulo").click();
await page.getByRole("button", { name: save }).click();
await expect(page.getByTestId("toast-success").last()).toBeVisible();
await page.getByTestId("add-override").click();
await page.getByTestId("incrementMonth").click();
await page.getByRole("button", { name: "20" }).click();
await page.getByTestId("date-override-mark-unavailable").click();
await page.getByTestId("add-override-submit-btn").click();
await page.getByTestId("dialog-rejection").click();
await page.getByTestId("date-overrides-list").getByRole("button").nth(1).click();
await page.getByRole("button", { name: save }).click();
await expect(page.getByTestId("toast-success").last()).toBeVisible();
},
};
}

View File

@ -7,6 +7,7 @@ import type { ExpectedUrlDetails } from "../../../../playwright.config";
import { createBookingsFixture } from "../fixtures/bookings";
import { createEmailsFixture } from "../fixtures/emails";
import { createEmbedsFixture } from "../fixtures/embeds";
import { createEventTypeFixture } from "../fixtures/eventTypes";
import { createFeatureFixture } from "../fixtures/features";
import { createOrgsFixture } from "../fixtures/orgs";
import { createPaymentsFixture } from "../fixtures/payments";
@ -28,6 +29,7 @@ export interface Fixtures {
routingForms: ReturnType<typeof createRoutingFormsFixture>;
bookingPage: ReturnType<typeof createBookingPageFixture>;
features: ReturnType<typeof createFeatureFixture>;
eventTypePage: ReturnType<typeof createEventTypeFixture>;
}
declare global {
@ -92,4 +94,8 @@ export const test = base.extend<Fixtures>({
await features.init();
await use(features);
},
eventTypePage: async ({ page }, use) => {
const eventTypePage = createEventTypeFixture(page);
await use(eventTypePage);
},
});

View File

@ -55,7 +55,7 @@ const ScheduleDay = <TFieldValues extends FieldValues>({
const watchDayRange = watch(name);
return (
<div className="mb-4 flex w-full flex-col last:mb-0 sm:flex-row sm:px-0">
<div className="mb-4 flex w-full flex-col last:mb-0 sm:flex-row sm:px-0" data-testid={weekday}>
{/* Label & switch container */}
<div className="flex h-[36px] items-center justify-between sm:w-32">
<div>
@ -107,6 +107,7 @@ const CopyButton = ({
"text-default",
open && "ring-brand-500 !bg-subtle outline-none ring-2 ring-offset-1"
)}
data-testid="copy-button"
type="button"
tooltip={t("copy_times_to_tooltip")}
color="minimal"
@ -192,6 +193,7 @@ export const DayRanges = <TFieldValues extends FieldValues>({
{index === 0 && (
<Button
disabled={disabled}
data-testid="add-time-availability"
tooltip={t("add_time_availability")}
className="text-default mx-2 "
type="button"

View File

@ -1031,7 +1031,7 @@ export function ShellMain(props: LayoutProps) {
</h3>
)}
{props.subtitle && (
<p className="text-default hidden text-sm md:block">
<p className="text-default hidden text-sm md:block" data-testid="subtitle">
{!isLocaleReady ? <SkeletonText invisible /> : props.subtitle}
</p>
)}