Изоляция
Введение
Тесты, написанные с помощью Playwright, выполняются в изолированных средах, называемых контекстами браузера. Эта модель изоляции повышает воспроизводимость и предотвращает цепные сбои тестов.
Что такое изоляция тестов?
Изоляция тестов подразумевает, что каждый тест полностью изолирован от других тестов. Каждый тест выполняется независимо от других тестов. Это означает, что каждый тест имеет собственное локальное хранилище, хранилище сеансов, куки и т. д. Playwright достигает этого, используя BrowserContextы, которые эквивалентны профилям в режиме инкогнито. Они быстро создаются и полностью изолированы, даже при запуске в одном браузере. Playwright создает контекст для каждого теста и предоставляет в этом контексте по умолчанию Page.
Почему важна изоляция тестов?
- Отсутствие переноса ошибок. Если один тест завершается ошибкой, это не влияет на другие тесты.
- Легко отлаживать ошибки или нестабильность, поскольку вы можете запускать один тест столько раз, сколько нужно.
- Не нужно думать о порядке при параллельном запуске, фрагментации и т. д.
Два способа изоляции тестов
Существуют две стратегии изоляции тестов: начать с нуля или очищать между тестами. Проблема с очисткой между тестами заключается в том, что легко забыть об очистке, и некоторые вещи невозможно очистить, например, «посещенные ссылки». Состояние одного теста может просочиться в следующий тест, что может привести к ошибке теста и усложнить отладку, поскольку проблема исходит из другого теста. Начало с нуля означает, что всё новое, поэтому если тест завершается ошибкой, нужно искать причину только в этом тесте для отладки.
Как Playwright достигает изоляции тестов
Playwright использует контексты браузера для достижения изоляции тестов. Каждый тест имеет свой собственный контекст браузера. Запуск теста каждый раз создает новый контекст браузера. При использовании Playwright в качестве исполнителя тестов контексты браузера создаются по умолчанию. В противном случае вы можете создавать контексты браузера вручную.
- Тест
- Библиотека
import { test } from '@playwright/test';
test('example test', async ({ page, context }) => {
// "context" is an isolated BrowserContext, created for this specific test.
// "page" belongs to this context.
});
test('another test', async ({ page, context }) => {
// "context" and "page" in this second test are completely
// isolated from the first test.
});const browser = await chromium.launch(); const context = await browser.newContext(); const page = await context.newPage();
Контексты браузера также можно использовать для эмуляции многостраничных сценариев, включающих мобильные устройства, разрешения, локаль и цветовые схемы. Подробности см. в нашем руководстве по Эмуляции.
Несколько контекстов в одном тесте
Playwright может создавать несколько контекстов браузера в одном сценарии. Это полезно при тестировании многопользовательских функций, например, чата.
- Тест
- Библиотека
import { test } from '@playwright/test';
test('admin and user', async ({ browser }) => {
// Create two isolated browser contexts
const adminContext = await browser.newContext();
const userContext = await browser.newContext();
// Create pages and interact with contexts independently
const adminPage = await adminContext.newPage();
const userPage = await userContext.newPage();
});const { chromium } = require('playwright');
// Create a Chromium browser instance
const browser = await chromium.launch();
// Create two isolated browser contexts
const userContext = await browser.newContext();
const adminContext = await browser.newContext();
// Create pages and interact with contexts independently
const adminPage = await adminContext.newPage();
const userPage = await userContext.newPage();
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/browser-contexts