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

Изоляция

Введение

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

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

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

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

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

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

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

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

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

browser = playwright.chromium.launch()
context = browser.new_context()
page = context.new_page()

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

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

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

from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):
# создайте экземпляр браузера chromium
chromium = playwright.chromium
browser = chromium.launch()

# создайте два изолированных контекста браузера
user_context = browser.new_context()
admin_context = browser.new_context()

# создайте страницы и взаимодействуйте с контекстами независимо

with sync_playwright() as playwright:
run(playwright)