gitech

Форк
0
/
utils_e2e.js 
60 строк · 2.1 Кб
1
import {expect} from '@playwright/test';
2

3
const ARTIFACTS_PATH = `tests/e2e/test-artifacts`;
4
const LOGIN_PASSWORD = 'password';
5

6
// log in user and store session info. This should generally be
7
//  run in test.beforeAll(), then the session can be loaded in tests.
8
export async function login_user(browser, workerInfo, user) {
9
  // Set up a new context
10
  const context = await browser.newContext();
11
  const page = await context.newPage();
12

13
  // Route to login page
14
  // Note: this could probably be done more quickly with a POST
15
  const response = await page.goto('/user/login');
16
  await expect(response?.status()).toBe(200); // Status OK
17

18
  // Fill out form
19
  await page.type('input[name=user_name]', user);
20
  await page.type('input[name=password]', LOGIN_PASSWORD);
21
  await page.click('form button.ui.primary.button:visible');
22

23
  await page.waitForLoadState('networkidle');
24

25
  await expect(page.url(), {message: `Failed to login user ${user}`}).toBe(`${workerInfo.project.use.baseURL}/`);
26

27
  // Save state
28
  await context.storageState({path: `${ARTIFACTS_PATH}/state-${user}-${workerInfo.workerIndex}.json`});
29

30
  return context;
31
}
32

33
export async function load_logged_in_context(browser, workerInfo, user) {
34
  let context;
35
  try {
36
    context = await browser.newContext({storageState: `${ARTIFACTS_PATH}/state-${user}-${workerInfo.workerIndex}.json`});
37
  } catch (err) {
38
    if (err.code === 'ENOENT') {
39
      throw new Error(`Could not find state for '${user}'. Did you call login_user(browser, workerInfo, '${user}') in test.beforeAll()?`);
40
    }
41
  }
42
  return context;
43
}
44

45
export async function save_visual(page) {
46
  // Optionally include visual testing
47
  if (process.env.VISUAL_TEST) {
48
    await page.waitForLoadState('networkidle');
49
    // Mock page/version string
50
    await page.locator('footer div.ui.left').evaluate((node) => node.innerHTML = 'MOCK');
51
    await expect(page).toHaveScreenshot({
52
      fullPage: true,
53
      timeout: 20000,
54
      mask: [
55
        page.locator('.secondary-nav span>img.ui.avatar'),
56
        page.locator('.ui.dropdown.jump.item span>img.ui.avatar'),
57
      ],
58
    });
59
  }
60
}
61

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

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

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

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