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

Изоляция

Введение​

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