Установка
Введение
Playwright был создан специально для удовлетворения потребностей в сквозном тестировании. Playwright поддерживает все современные движки рендеринга, включая Chromium, WebKit и Firefox. Тестируйте на Windows, Linux и macOS, локально или на CI, в безголовом или с графическим интерфейсом режиме с эмуляцией мобильных устройств.
Вы можете выбрать использование базовых классов MSTest, NUnit или xUnit base classes, которые предоставляет Playwright, для написания сквозных тестов. Эти классы поддерживают выполнение тестов на нескольких движках браузеров, параллелизацию тестов, настройку параметров запуска/контекста и получение экземпляра Page/BrowserContext для каждого теста из коробки. В качестве альтернативы вы можете использовать библиотеку для ручного написания инфраструктуры тестирования.
- Начните с создания нового проекта с помощью
dotnet new
. Это создаст директориюPlaywrightTests
, которая включает файлUnitTest1.cs
:
- MSTest
- NUnit
- xUnit
dotnet new nunit -n PlaywrightTests
cd PlaywrightTests
dotnet new mstest -n PlaywrightTests
cd PlaywrightTests
dotnet new xunit -n PlaywrightTests
cd PlaywrightTests
- Установите необходимые зависимости Playwright:
- MSTest
- NUnit
- xUnit
dotnet add package Microsoft.Playwright.NUnit
dotnet add package Microsoft.Playwright.MSTest
dotnet add package Microsoft.Playwright.Xunit
- Соберите проект, чтобы
playwright.ps1
был доступен внутри директорииbin
:
dotnet build
- Установите необходимые браузеры. В этом примере используется
net8.0
, если вы используете другую версию .NET, вам нужно будет скорректировать команду и изменитьnet8.0
на вашу версию.
pwsh bin/Debug/net8.0/playwright.ps1 install
Если pwsh
недоступен, вам придется установить PowerShell.
Добавление примерных тестов
Отредактируйте файл UnitTest1.cs
с кодом ниже, чтобы создать пример сквозного теста:
- MSTest
- NUnit
- xUnit
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
using NUnit.Framework;
namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
[TestFixture]
public class ExampleTest : PageTest
{
[Test]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// Ожидается, что заголовок "содержит" подстроку.
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[Test]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// Нажмите на ссылку "Get started".
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// Ожидается, что на странице будет заголовок с именем Installation.
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
using System.Text.RegularExpressions;
using Microsoft.Playwright;
using Microsoft.Playwright.MSTest;
namespace PlaywrightTests;
[TestClass]
public class ExampleTest : PageTest
{
[TestMethod]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// Ожидается, что заголовок "содержит" подстроку.
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[TestMethod]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// Нажмите на ссылку "Get started".
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// Ожидается, что на странице будет заголовок с именем Installation.
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
using System.Text.RegularExpressions;
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit;
namespace PlaywrightTests;
public class UnitTest1: PageTest
{
[Fact]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// Ожидается, что заголовок "содержит" подстроку.
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[Fact]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// Нажмите на ссылку "Get started".
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// Ожидается, что на странице будет заголовок с именем Installation.
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
Запуск примерных тестов
По умолчанию тесты будут выполняться на Chromium. Это можно настроить через переменную окружения BROWSER
или путем настройки опций конфигурации запуска. Тесты выполняются в безголовом режиме, что означает, что браузер не будет открываться при выполнении тестов. Результаты тестов и журналы тестов будут отображаться в терминале.
dotnet test
Смотрите нашу документацию по Запуску и отладке тестов, чтобы узнать больше о запуске тестов в режиме с графическим интерфейсом, запуске нескольких тестов, запуске определенных конфигураций и т.д.
Системные требования
- Playwright распространяется как библиотека .NET Standard 2.0. Мы рекомендуем .NET 8.
- Windows 10+, Windows Server 2016+ или Windows Subsystem for Linux (WSL).
- macOS 13 Ventura или более поздняя версия.
- Debian 12, Ubuntu 22.04, Ubuntu 24.04 на архитектурах x86-64 и arm64.
Что дальше
- Пишите тесты, используя утверждения, ориентированные на веб, фикстуры страниц и локаторы
- Запуск одного теста, нескольких тестов, режим с графическим интерфейсом
- Генерация тестов с помощью Codegen
- Просмотр трассировки ваших тестов
- Запуск тестов на CI
- Узнайте больше о базовых классах MSTest, NUnit и xUnit