universo-platform-2d
65 строк · 1.7 Кб
1import type { Page } from '@playwright/test';2
3const IS_MAC = process.platform === 'darwin';4
5async function keyDownCtrlOrMeta(page: Page) {6if (IS_MAC) {7await page.keyboard.down('Meta');8} else {9await page.keyboard.down('Control');10}11}
12
13async function keyUpCtrlOrMeta(page: Page) {14if (IS_MAC) {15await page.keyboard.up('Meta');16} else {17await page.keyboard.up('Control');18}19}
20
21// It's not good enough, but better than calling keyDownCtrlOrMeta and keyUpCtrlOrMeta separately
22export const withCtrlOrMeta = async (page: Page, fn: () => Promise<void>) => {23await keyDownCtrlOrMeta(page);24await fn();25await keyUpCtrlOrMeta(page);26};27
28export async function pressEnter(page: Page) {29// avoid flaky test by simulate real user input30await page.keyboard.press('Enter', { delay: 50 });31}
32
33export async function pressTab(page: Page) {34await page.keyboard.press('Tab', { delay: 50 });35}
36
37export async function pressShiftTab(page: Page) {38await page.keyboard.down('Shift');39await page.keyboard.press('Tab', { delay: 50 });40await page.keyboard.up('Shift');41}
42
43export async function pressShiftEnter(page: Page) {44await page.keyboard.down('Shift');45await page.keyboard.press('Enter', { delay: 50 });46await page.keyboard.up('Shift');47}
48
49export async function copyByKeyboard(page: Page) {50await keyDownCtrlOrMeta(page);51await page.keyboard.press('c', { delay: 50 });52await keyUpCtrlOrMeta(page);53}
54
55export async function cutByKeyboard(page: Page) {56await keyDownCtrlOrMeta(page);57await page.keyboard.press('x', { delay: 50 });58await keyUpCtrlOrMeta(page);59}
60
61export async function pasteByKeyboard(page: Page) {62await keyDownCtrlOrMeta(page);63await page.keyboard.press('v', { delay: 50 });64await keyUpCtrlOrMeta(page);65}
66