universo-platform-2d

Форк
0
65 строк · 1.7 Кб
1
import type { Page } from '@playwright/test';
2

3
const IS_MAC = process.platform === 'darwin';
4

5
async function keyDownCtrlOrMeta(page: Page) {
6
  if (IS_MAC) {
7
    await page.keyboard.down('Meta');
8
  } else {
9
    await page.keyboard.down('Control');
10
  }
11
}
12

13
async function keyUpCtrlOrMeta(page: Page) {
14
  if (IS_MAC) {
15
    await page.keyboard.up('Meta');
16
  } else {
17
    await page.keyboard.up('Control');
18
  }
19
}
20

21
// It's not good enough, but better than calling keyDownCtrlOrMeta and keyUpCtrlOrMeta separately
22
export const withCtrlOrMeta = async (page: Page, fn: () => Promise<void>) => {
23
  await keyDownCtrlOrMeta(page);
24
  await fn();
25
  await keyUpCtrlOrMeta(page);
26
};
27

28
export async function pressEnter(page: Page) {
29
  // avoid flaky test by simulate real user input
30
  await page.keyboard.press('Enter', { delay: 50 });
31
}
32

33
export async function pressTab(page: Page) {
34
  await page.keyboard.press('Tab', { delay: 50 });
35
}
36

37
export async function pressShiftTab(page: Page) {
38
  await page.keyboard.down('Shift');
39
  await page.keyboard.press('Tab', { delay: 50 });
40
  await page.keyboard.up('Shift');
41
}
42

43
export async function pressShiftEnter(page: Page) {
44
  await page.keyboard.down('Shift');
45
  await page.keyboard.press('Enter', { delay: 50 });
46
  await page.keyboard.up('Shift');
47
}
48

49
export async function copyByKeyboard(page: Page) {
50
  await keyDownCtrlOrMeta(page);
51
  await page.keyboard.press('c', { delay: 50 });
52
  await keyUpCtrlOrMeta(page);
53
}
54

55
export async function cutByKeyboard(page: Page) {
56
  await keyDownCtrlOrMeta(page);
57
  await page.keyboard.press('x', { delay: 50 });
58
  await keyUpCtrlOrMeta(page);
59
}
60

61
export async function pasteByKeyboard(page: Page) {
62
  await keyDownCtrlOrMeta(page);
63
  await page.keyboard.press('v', { delay: 50 });
64
  await keyUpCtrlOrMeta(page);
65
}
66

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.