Перейти к основному содержимому

Изоляция

Введение

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

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

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

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

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

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

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

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

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

Browser browser = chromium.launch();
BrowserContext context = browser.newContext();
Page page = context.newPage();

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

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

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

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType chromium = playwright.chromium();
// Создаем экземпляр браузера Chromium
Browser browser = chromium.launch();
// Создаем два изолированных контекста браузера
BrowserContext userContext = browser.newContext();
BrowserContext adminContext = browser.newContext();
// Создаем страницы и взаимодействуем с контекстами независимо
}
}
}