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

Тестовые фреймворки

Введение

Хотя Playwright для .NET не привязан к какому-либо конкретному тестовому фреймворку или среде выполнения тестов, по нашему опыту, самый простой способ начать — это использовать базовые классы, которые мы предоставляем для MSTest, NUnit или xUnit. Эти классы поддерживают запуск тестов на нескольких движках браузеров, настройку параметров запуска/контекста и получение экземпляра Page/BrowserContext для каждого теста из коробки.

Экземпляры Playwright и Browser будут повторно использоваться между тестами для повышения производительности. Мы рекомендуем запускать каждый тестовый случай в новом BrowserContext, чтобы состояние браузера было изолировано между тестами.

Playwright предоставляет базовые классы для написания тестов с использованием MSTest через пакет Microsoft.Playwright.MSTest.

Ознакомьтесь с руководством по установке, чтобы начать.

Запуск тестов в параллельном режиме

По умолчанию MSTest будет запускать все классы параллельно, а тесты внутри каждого класса последовательно (ExecutionScope.ClassLevel). Он создаст столько процессов, сколько ядер на хост-системе. Вы можете настроить это поведение, используя следующий параметр CLI или файл .runsettings, см. ниже. Запуск тестов в параллельном режиме на уровне метода (ExecutionScope.MethodLevel) не поддерживается.

dotnet test --settings:.runsettings -- MSTest.Parallelize.Workers=4

Настройка параметров BrowserContext

Чтобы настроить параметры контекста, вы можете переопределить метод ContextOptions вашего тестового класса, производного от Microsoft.Playwright.MSTest.PageTest или Microsoft.Playwright.MSTest.ContextTest. См. следующий пример:

using System.Threading.Tasks;
using Microsoft.Playwright;
using Microsoft.Playwright.MSTest;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace PlaywrightTests;

[TestClass]
public class ExampleTest : PageTest
{
[TestMethod]
public async Task TestWithCustomContextOptions()
{
// Следующий экземпляр Page (и BrowserContext) имеет установленные пользовательские colorScheme, viewport и baseURL:
await Page.GotoAsync("/login");
}

public override BrowserNewContextOptions ContextOptions()
{
return new BrowserNewContextOptions()
{
ColorScheme = ColorScheme.Light,
ViewportSize = new()
{
Width = 1920,
Height = 1080
},
BaseURL = "https://github.com",
};
}
}

Настройка параметров запуска Browser

Параметры запуска Browser могут быть переопределены либо с использованием файла настроек запуска, либо путем установки параметров настроек запуска непосредственно через CLI. См. следующий пример:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Headless>false</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Headless=false Playwright.LaunchOptions.Channel=msedge

Использование подробных логов API

Когда вы включили подробный лог API через переменную окружения DEBUG, вы увидите сообщения в стандартном потоке ошибок. В Visual Studio это будет панель Tests окна Output. Это также будет отображаться в Test Log для каждого теста.

Использование файла .runsettings

При запуске тестов из Visual Studio вы можете воспользоваться файлом .runsettings. Ниже приведена ссылка на поддерживаемые значения.

Например, чтобы указать количество рабочих потоков, вы можете использовать MSTest.Parallelize.Workers. Вы также можете включить логи DEBUG через RunConfiguration.EnvironmentVariables.

<RunSettings>
<!-- Адаптер MSTest -->
<MSTest>
<Parallelize>
<Workers>4</Workers>
<Scope>ClassLevel</Scope>
</Parallelize>
</MSTest>
<!-- Общая конфигурация запуска -->
<RunConfiguration>
<EnvironmentVariables>
<!-- Для отладки селекторов рекомендуется установить следующую переменную окружения -->
<DEBUG>pw:api</DEBUG>
</EnvironmentVariables>
</RunConfiguration>
<!-- Playwright -->
<Playwright>
<BrowserName>chromium</BrowserName>
<ExpectTimeout>5000</ExpectTimeout>
<LaunchOptions>
<Headless>false</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>

Базовые классы для Playwright

В пространстве имен Microsoft.Playwright.MSTest доступны несколько базовых классов:

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

Примечание: Вы можете переопределить метод ContextOptions в каждом тестовом файле, чтобы управлять параметрами контекста, которые обычно передаются в метод Browser.NewContextAsync(). Таким образом, вы можете указать все виды параметров эмуляции для вашего тестового файла индивидуально.
ContextTestКаждый тест получит свежую копию BrowserContext. Вы можете создать столько страниц в этом контексте, сколько захотите. Использование этого теста — самый простой способ тестирования многопользовательских сценариев, где вам нужно больше одной вкладки.

Примечание: Вы можете переопределить метод ContextOptions в каждом тестовом файле, чтобы управлять параметрами контекста, которые обычно передаются в метод Browser.NewContextAsync(). Таким образом, вы можете указать все виды параметров эмуляции для вашего тестового файла индивидуально.
BrowserTestКаждый тест получит браузер и может создать столько контекстов, сколько захочет. Каждый тест несет ответственность за очистку всех созданных им контекстов.
PlaywrightTestЭто дает каждому тесту объект Playwright, чтобы тест мог запускать и останавливать столько браузеров, сколько захочет.