feat(e2e): add fixtures and data seeding
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { Locator, Page } from "@playwright/test";
|
||||
|
||||
export class BaseModal {
|
||||
page: Page;
|
||||
container: Locator;
|
||||
mobileContainer: Locator;
|
||||
closeModalButton: Locator;
|
||||
mobileModalSlider: Locator;
|
||||
|
||||
constructor(page: Page) {
|
||||
this.page = page;
|
||||
this.container = page.getByTestId("modal-container");
|
||||
this.mobileContainer = page.getByTestId("mobile-modal-container");
|
||||
this.closeModalButton = this.container.getByTestId("close-modal-button");
|
||||
this.mobileModalSlider = this.mobileContainer.getByTestId(
|
||||
"mobile-modal-slider"
|
||||
);
|
||||
}
|
||||
|
||||
async close() {
|
||||
if (await this.container.isVisible()) {
|
||||
await this.closeModalButton.click();
|
||||
}
|
||||
if (await this.mobileContainer.isVisible()) {
|
||||
const box = await this.mobileModalSlider.boundingBox();
|
||||
if (!box) {
|
||||
return;
|
||||
}
|
||||
const pageHeight = await this.page.evaluate(() => window.innerHeight);
|
||||
const startX = box.x + box.width / 2;
|
||||
const startY = box.y + box.height / 2;
|
||||
await this.page.mouse.move(startX, startY);
|
||||
await this.page.mouse.down();
|
||||
await this.page.mouse.move(startX, startY + pageHeight / 2);
|
||||
await this.page.mouse.up();
|
||||
}
|
||||
}
|
||||
|
||||
async isOpen() {
|
||||
return (
|
||||
(await this.container.isVisible()) ||
|
||||
(await this.mobileContainer.isVisible())
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user