@ionic/core
Version:
Base components for Ionic
34 lines (33 loc) • 1.45 kB
JavaScript
/*!
* (C) Ionic http://ionicframework.com - MIT License
*/
import { expect } from "@playwright/test";
export const openPopover = async (page, buttonID, useEvalClick = false) => {
const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent');
const trigger = page.locator(`#${buttonID}`);
await trigger.evaluate((el) => el.scrollIntoView({ block: 'center' }));
/**
* Some tests aim to have many popovers open at once. When clicking a locator, Playwright
* will simply click on that coordinate, which may instead trigger the backdrop for the
* previous popover. Rather than set backdropDismiss=false on all popovers, we can call
* the click method on the button directly to avoid this behavior.
*/
if (useEvalClick) {
await trigger.evaluate((el) => el.click());
}
else {
await trigger.click();
}
await ionPopoverDidPresent.next();
};
export const closePopover = async (page, popover) => {
const ionPopoverDidDismiss = await page.spyOnEvent('ionPopoverDidDismiss');
popover = popover || page.locator('ion-popover');
await popover.evaluate((el) => el.dismiss());
await ionPopoverDidDismiss.next();
};
export const screenshotPopover = async (page, screenshot, buttonID, testName) => {
await page.setIonViewport();
await openPopover(page, buttonID);
await expect(page).toHaveScreenshot(screenshot(`popover-${testName}-${buttonID}`));
};