Compare commits
26 Commits
main
...
teste2e-av
Author | SHA1 | Date | |
---|---|---|---|
20aa6dac93 | |||
0a29d9aa76 | |||
5575ea8cef | |||
df8a222b24 | |||
763434ef5f | |||
f69a08cc2b | |||
c8d18f9b25 | |||
cbcf19962e | |||
f53b91b26a | |||
079dace7c0 | |||
6e621a34ec | |||
7041a73ae4 | |||
31a08478f8 | |||
fb47c7f0ae | |||
ca6ae7cf22 | |||
d3519d4ecc | |||
e63cb91586 | |||
1374444c07 | |||
b61e2c13ca | |||
51cc7f4ac5 | |||
fae80c2643 | |||
e42273e140 | |||
9544b7d884 | |||
7b20c8f48e | |||
57ce15fc24 | |||
44b308b875 |
|
@ -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();
|
||||
});
|
||||
});
|
|
@ -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();
|
||||
},
|
||||
};
|
||||
}
|
|
@ -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);
|
||||
},
|
||||
});
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
)}
|
||||
|
|
Loading…
Reference in New Issue
Block a user