Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

4 года назад
Открыть в
День 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 содержит множество методов управления браузером и анализа результатов, а также может выполнять и более сложные действия, вроде снимка экрана, который можно сохранить для последующего анализа или сравнения. Источник: dotnetcoretutorials.com/2022/05…th-c-net