universo-platform-2d
43 строки · 1.3 Кб
1import { expect, type Page } from '@playwright/test';
2
3export function locateModeSwitchButton(
4page: Page,
5mode: 'page' | 'edgeless',
6active?: boolean
7) {
8// switch is implemented as RadioGroup button,
9// so we can use aria-checked to determine the active state
10const checkedSelector = active ? '[aria-checked="true"]' : '';
11
12return page.locator(
13`[data-testid="switch-${mode}-mode-button"]${checkedSelector}`
14);
15}
16
17export async function clickEdgelessModeButton(page: Page) {
18await locateModeSwitchButton(page, 'edgeless').click({ delay: 50 });
19await ensureInEdgelessMode(page);
20}
21
22export async function clickPageModeButton(page: Page) {
23await locateModeSwitchButton(page, 'page').click({ delay: 50 });
24await ensureInPageMode(page);
25}
26
27export async function ensureInPageMode(page: Page) {
28await expect(locateModeSwitchButton(page, 'page', true)).toBeVisible();
29}
30
31export async function ensureInEdgelessMode(page: Page) {
32await expect(locateModeSwitchButton(page, 'edgeless', true)).toBeVisible();
33}
34
35export async function getPageMode(page: Page): Promise<'page' | 'edgeless'> {
36if (await locateModeSwitchButton(page, 'page', true).isVisible()) {
37return 'page';
38}
39if (await locateModeSwitchButton(page, 'edgeless', true).isVisible()) {
40return 'edgeless';
41}
42throw new Error('Unknown mode');
43}
44