Установка
Введение
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
- xUnit v3
dotnet new nunit -n PlaywrightTests
cd PlaywrightTests
dotnet new mstest -n PlaywrightTests
cd PlaywrightTests
dotnet new xunit -n PlaywrightTests
cd PlaywrightTests
dotnet new xunit3 -n PlaywrightTests
cd PlaywrightTests
- Установите необходимые зависимости Playwright:
- MSTest
- NUnit
- xUnit
- xUnit v3
dotnet add package Microsoft.Playwright.NUnit
dotnet add package Microsoft.Playwright.MSTest
dotnet add package Microsoft.Playwright.Xunit
dotnet add package Microsoft.Playwright.Xunit.v3
- Соберите проект, чтобы
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
- xUnit v3
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();
}
}
using System.Text.RegularExpressions;
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit.v3;
namespace PlaywrightTests;
public class UnitTest1: PageTest
{
[Fact]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// Expect a title "to contain" a substring.
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[Fact]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// Click the get started link.
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// Expects page to have a heading with the name of Installation.
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
Запуск примерных тестов
По умолчанию тесты будут выполняться на Chromium. Это можно настроить через переменную окружения BROWSER или путем настройки опций конфигурации запуска. Тесты выполняются в безголовом режиме, что означает, что браузер не будет открываться при выполнении тестов. Результаты тестов и журналы тестов будут отображаться в терминале.
dotnet test
Смотрите нашу документацию по Запуску и отладке тестов, чтобы узнать больше о запуске тестов в режиме с графическим интерфейсом, запуске нескольких тестов, запуске определенных конфигураций и т.д.
Системные требования
- Playwright распространяется как библиотека .NET Standard 2.0. Мы рекомендуем .NET 8.
- Windows 11+, Windows Server 2019+ или Windows Subsystem for Linux (WSL).
- macOS 14 Ventura или более поздняя версия.
- Debian 12, Debian 13, Ubuntu 22.04, Ubuntu 24.04 на архитектурах x86-64 и arm64.
Что дальше
- Пишите тесты, используя web-first утверждения, фикстуры страниц и локаторы
- Запускайте один тест, несколько тестов, в режиме с интерфейсом
- Генерируйте тесты с помощью Codegen
- Просматривайте трассировку ваших тестов
- Запускайте тесты в CI
- Узнайте больше о базовых классах MSTest, NUnit, xUnit и xUnit v3