TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.74K subscribers
Post #1564 1.96K
День 1261. #Testing
E2E-тесты с Помощью Playwright в .NET
Playwright – это система end-to-end тестирования, поддерживающая тесты, написанные на NodeJS, Java, Python и C#. Допустим, нам нужно протестировать следующий сценарий:
- Учитывая, что я на https://www.google.com
- Когда я набираю "netdeveloperdiary" в поле поиска
- И нажимаю кнопку "Поиск в Google"
- Тогда первым результатом будет ссылка
https://t.me/NetDeveloperDiary

Очевидно, что результат может не всегда быть одинаковым. Но это простейший пример. Playwright – это просто NuGet пакет, который можно использовать в MSTest, NUnit, XUnit или любой другой тестовой среде. В данном случае используем MSTest и пакет Microsoft.Playwright.MSTest. Вот тестовый класс:
[TestClass]
public class MyUnitTests : PageTest
{
[TestMethod]
public async Task TestGoogleSearch()
{
//Учитывая, что я на https://www.google.com
await Page.GotoAsync("https://www.google.com");
//Когда я набираю "netdeveloperdiary" в поле поиска
await Page.FillAsync("[title=\"Поиск\"]", "netdeveloperdiary");
//И нажимаю кнопку "Поиск в Google"
await Page.ClickAsync("[value=\"Поиск в Google\"] >> nth=1");
//Тогда первым результатом будет https://t.me › NetDeveloperDiary
var firstResult = await Page.Locator("//cite >> nth=0").InnerTextAsync();
Assert.AreEqual("https://t.me › NetDeveloperDiary", firstResult);
}
}

Вот на что стоит обратить внимание.
1. Тестовый класс наследует от PageTest
Пакет PlayWright.MSTest содержит код настройки объекта браузера, а также поддерживает параллельные тесты. Без использования этого пакета мы могли бы настроить объект браузера сами, и получить большую свободу:
IPage Page;
[TestInitialize]
public async Task TestInitialize()
{
var plwrt = await Playwright.CreateAsync();
var brw = await plwrt.Chromium.LaunchAsync(
new BrowserTypeLaunchOptions
{
Headless = false
});
Page = await brw.NewPageAsync();
}

2. Мы не используем таймауты и все методы асинхронные.
Нам не нужно ожидать запуска браузера и момента, пока элементы отобразятся на экране. Всё это берёт на себя Playwright. Например, когда вы хотите заполнить поле для ввода, Playwright предполагает, что оно должно появиться на странице, и ждёт его появления (по умолчанию 30 секунд). Помимо этого, то, что всё происходит асинхронно означает, что вы не столкнётесь с замиранием экрана во время ожидания следующей операции.

В остальном тесты должны быть понятны. Мы заполняем поле для ввода, нажимаем на кнопку поиска и проверяем первый результат.

Примечание. При первом использовании Playwright на вашей машине, нужно выполнить следующую команду из вашего проекта для установки движков браузеров:
bin\Debug\net6.0\playwright.ps1 install

Playwright содержит множество методов управления браузером и анализа результатов, а также может выполнять и более сложные действия, вроде снимка экрана, который можно сохранить для последующего анализа или сравнения.

Источник: https://dotnetcoretutorials.com/2022/05/20/using-playwright-e2e-tests-with-c-net/
  • 👍 5
More from @netdeveloperdiary
  1. Sep 26, 2026День 2796. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Продолжение Начало Три…
  2. Sep 25, 2026День 2795. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Начало Проблема с позиц…
  3. Sep 24, 2026День 2794. #Оффтоп #Здоровье Сегодня будет необычный пост. Завтра в Москве стартует конфер…
  4. Sep 23, 2026День 2793. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  5. Sep 22, 2026День 2792. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  6. Sep 21, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 22 сентября(уже завтра!) в 1…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →