Изоляция
Введение
Тесты, написанные с использованием Playwright, выполняются в изолированных средах с чистым состоянием, называемых контекстами браузера. Эта модель изоляции улучшает воспроизводимость и предотвращает каскадные сбои тестов.
Что такое изоляция тестов?
Изоляция тестов означает, что каждый тест полностью изолирован от другого теста. Каждый тест выполняется независимо от любого другого теста. Это означает, что у каждого теста есть свое собственное локальное хранилище, хранилище сессий, куки и т.д. Playwright достигает этого с помощью BrowserContext, которые эквивалентны профилям, похожим на режим инкогнито. Они создаются быстро и дешево и полностью изолированы, даже при запуске в одном браузере. Playwright создает контекст для каждого теста и предоставляет страницу по умолчанию (Page) в этом контексте.
Почему изоляция тестов важна?
- Отсутствие переноса сбоев. Если один тест не проходит, это не влияет на другой тест.
- Легко отлаживать ошибки или нестабильность, так как вы можете запускать только один тест столько раз, сколько захотите.
- Не нужно думать о порядке выполнения при параллельном запуске, шардировании и т.д.
Два способа изоляции тестов
Существует две разные стратегии изоляции тестов: начинать с нуля или очищать между тестами. Проблема с очисткой между тестами заключается в том, что можно легко забыть очистить, и некоторые вещи невозможно очистить, такие как "посещенные ссылки". Состояние из одного теста может просочиться в следующий тест, что может привести к сбою теста и усложнить отладку, так как проблема исходит из другого теста. Начинать с нуля означает, что все новое, поэтому если тест не проходит, вам нужно искать проблему только в этом тесте.
Как Playwright достигает изоляции тестов
Playwright использует контексты браузера для достижения изоляции тестов. Каждый тест имеет свой собственный контекст браузера. Запуск теста создает новый контекст браузера каждый раз. При использовании Playwright в качестве тестового раннера контексты браузера создаются по умолчанию. В противном случае, вы можете создать контексты браузера вручную.
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
Контексты браузера также могут использоваться для эмуляции многопользовательских сценариев, включающих мобильные устройства, разрешения, локализацию и цветовую схему. Ознакомьтесь с нашим руководством по Эмуляции для получения более подробной информации.
Несколько контекстов в одном тесте
Playwright может создавать несколько контекстов браузера в рамках одного сценария. Это полезно, когда вы хотите протестировать функциональность для нескольких пользователей, например, чат.
using Microsoft.Playwright;
using System.Threading.Tasks;
class Program
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
// Создаем экземпляр браузера Chromium
await using var browser = await playwright.Chromium.LaunchAsync();
await using var userContext = await browser.NewContextAsync();
await using var adminContext = await browser.NewContextAsync();
// Создаем страницы и взаимодействуем с контекстами независимо.
}
}