Spec-Zone.ru › Playwright

Изоляция

Введение​

Тесты, написанные с помощью Playwright, выполняются в изолированных средах, называемых контекстами браузера. Эта модель изоляции повышает воспроизводимость и предотвращает цепные сбои тестов.

Что такое изоляция тестов?​

Изоляция тестов подразумевает, что каждый тест полностью изолирован от других тестов. Каждый тест выполняется независимо от других тестов. Это означает, что каждый тест имеет собственное локальное хранилище, хранилище сеансов, куки и т. д. Playwright достигает этого, используя BrowserContextы, которые эквивалентны профилям в режиме инкогнито. Они быстро создаются и полностью изолированы, даже при запуске в одном браузере. Playwright создает контекст для каждого теста и предоставляет в этом контексте по умолчанию Page.

Почему важна изоляция тестов?​

  • Отсутствие переноса ошибок. Если один тест завершается ошибкой, это не влияет на другие тесты.
  • Легко отлаживать ошибки или нестабильность, поскольку вы можете запускать один тест столько раз, сколько нужно.
  • Не нужно думать о порядке при параллельном запуске, фрагментации и т. д.

Два способа изоляции тестов​

Существуют две стратегии изоляции тестов: начать с нуля или очищать между тестами. Проблема с очисткой между тестами заключается в том, что легко забыть об очистке, и некоторые вещи невозможно очистить, например, «посещенные ссылки». Состояние одного теста может просочиться в следующий тест, что может привести к ошибке теста и усложнить отладку, поскольку проблема исходит из другого теста. Начало с нуля означает, что всё новое, поэтому если тест завершается ошибкой, нужно искать причину только в этом тесте для отладки.

Как Playwright достигает изоляции тестов​

Playwright использует контексты браузера для достижения изоляции тестов. Каждый тест имеет свой собственный контекст браузера. Запуск теста каждый раз создает новый контекст браузера. При использовании Playwright в качестве исполнителя тестов контексты браузера создаются по умолчанию. В противном случае вы можете создавать контексты браузера вручную.

  • Тест
  • Библиотека
import { test } from '@playwright/test';

test('example test', async ({ page, context }) => {
  // "context" is an isolated BrowserContext, created for this specific test.
  // "page" belongs to this context.
});

test('another test', async ({ page, context }) => {
  // "context" and "page" in this second test are completely
  // isolated from the first test.
});
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();

Контексты браузера также можно использовать для эмуляции многостраничных сценариев, включающих мобильные устройства, разрешения, локаль и цветовые схемы. Подробности см. в нашем руководстве по Эмуляции.

Несколько контекстов в одном тесте​

Playwright может создавать несколько контекстов браузера в одном сценарии. Это полезно при тестировании многопользовательских функций, например, чата.

  • Тест
  • Библиотека
import { test } from '@playwright/test';

test('admin and user', async ({ browser }) => {
  // Create two isolated browser contexts
  const adminContext = await browser.newContext();
  const userContext = await browser.newContext();

  // Create pages and interact with contexts independently
  const adminPage = await adminContext.newPage();
  const userPage = await userContext.newPage();
});
const { chromium } = require('playwright');

// Create a Chromium browser instance
const browser = await chromium.launch();

// Create two isolated browser contexts
const userContext = await browser.newContext();
const adminContext = await browser.newContext();

// Create pages and interact with contexts independently
const adminPage = await adminContext.newPage();
const userPage = await userContext.newPage();

© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/browser-contexts

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API