TeamCity + NUnit + Selenium C# запуск тестов на сервере

Автоматические тесты для ASP.NET-MVC-приложения

Проблема следующая: При запуске из TeamCity тесты валятся по непонятным причинам.

Ошибка такая на первых тестах. Остальные тесты проходят. Если поменять порядок тестов, то валятся всегда первые тесты.

OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:63877/session/1b2b0226f81e539ea39ee6645bd179d5/element/ad4c432b-7921-44e4-82e3-30b680d57e62/click timed out after 60 seconds.
  ----> System.Net.WebException : The request was aborted: The operation has timed out.
   at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters)

P.S. Если в ручную запустить тесты на сервере, они проходят.


Есть агент на TeamCity, который при создании merge request стягивает код МР на сервер, билдит проект, очищает базу данных и публикует её ну и собственно запускает автотесты.

Автоматические тесты написаны с использованием NUnit, в качестве браузера - Chrome.

Шаг на котором запускаются тесты сконфигурирован вот так:

  • Runner Type: .Net
  • Command: vstest

Запускается всё это дело в консоли вот с такими параметрами: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe Sources\CI\AutomatedTests\HR_DMS_Tests\bin\Release\HR_DMS_Tests.dll /Platform:x86 /logger:logger://teamcity /TestAdapterPath:C:\TeamCity\WindowsBuildAgent\plugins\dotnet\tools\vstest15 /logger:console;verbosity=normal

Пробовал многое. Вплоть до того, что перешел с MSTest на NUnit. (последнее нужно для параллелизации) Изрядно поигрался с оптимизацией IIS и что я только не пробовал.



Ответы (1 шт):

Автор решения: arby

Причины, по которым следующая инициализация не влияла на таймаут запуска мне не известны.

Driver = new ChromeDriver(ChromeDriverService.CreateDefaultService(), options, TimeSpan.FromMinutes(5));

Проблема решилась, когда я инициализировал чуть по-другому свой хром драйвер:

var outputDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
return new ChromeDriver(outputDirectory, options, TimeSpan.FromMinutes(3));

Сделал вывод, что лучше атачиться к конкретному exe файлу

→ Ссылка