Изоляция
Введение
Тесты, написанные с использованием 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();
// Создаем страницы и взаимодействуем с контекстами независимо
}
}
}