Не удалось выполнить тесты Selenium в GitLab CI Runner (Windows) и локально увидеть белый экран в безголовом режимеC#

Место общения программистов C#
Anonymous
Не удалось выполнить тесты Selenium в GitLab CI Runner (Windows) и локально увидеть белый экран в безголовом режиме

Сообщение Anonymous »

Я столкнулся с проблемой при тестировании Selenium в проекте .NET/C#, использующем платформу NUnit, и вижу две связанные проблемы между моим локальным компьютером и средой CI.
Обзор настройки и проблем
Тесты проходят гладко на моем локальном компьютере как в управляемом, так и в автономном режиме. Однако они постоянно терпят неудачу в бегуне GitLab CI (среда Windows) как в головном, так и в безголовом режиме.
В дополнение к сбоям в бегуне CI, когда я запускаю эти тесты в безголовом режиме локально , я также получаю кратковременный белый экран, который мигает между тестами. Этого не происходит в режиме Head, где все работает как положено.
Ошибка в CI Runner
В GitLab CI Runner я обнаружение исключения WebDriverTimeoutException, указывающее, что тесты не могут найти элемент с помощью селектора .loading-indicator. Вот сообщение об ошибке:

Код: Выделить всё

Failed GroupingMenu [1 m 4 s]
Error Message:
OpenQA.Selenium.WebDriverTimeoutException : Timed out after 60 seconds
----> OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"css selector","selector":".loading\-indicator"}
(Session info: chrome=129.0.6668.91)
Тесты успешно обнаруживают этот элемент и взаимодействуют с ним на моем локальном компьютере, но он не отображается в средстве выполнения CI. Хотя я пытался делать снимки экрана для отладки этой проблемы, мне не удалось получить к ним доступ из-за проблемы с конвейером, из-за которой отчеты исчезали (я планирую решить эту проблему отдельно).
< strong>Конфигурация драйвера Chrome
Вот настройки ChromeOptions, которые я сейчас использую:

Код: Выделить всё

ChromeOptions options = new ChromeOptions();
options.AddArguments("--headless");  // Only used if headless mode is enabled
options.AddArguments("--window-size=1920,1080");
options.AddArguments("--disable-gpu");
options.AddArguments("--no-sandbox");
options.AddArguments("--disable-dev-shm-usage");
options.AddArguments("test-type=browser");
options.AddArguments("--enable-automation");
options.AddArguments("--disable-infobars");
driver = new ChromeDriver(options);
Предпринятые действия по устранению неполадок
  • Увеличенное время ожидания: Увеличено время ожидания WebDriverWait до 90 секунд, чтобы дать больше времени для появления индикатора .loading-indicator, но элемент по-прежнему не был обнаружен.
  • Ожидание загрузки страницы: добавлено ожидание, проверяющее, что документ ReadyState страницы является «завершенным», прежде чем пытаться найти элемент:

    < /ол>

    Код: Выделить всё

    driver.Navigate().GoToUrl(url);
    driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
    IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
    String readyState = (string)js.ExecuteScript("return document.readyState");
    log.Info("Ready State: " + readyState);
    
  • Заголовочный режим в CI: конвейер CI запускался в заголовочном режиме на бегуне GitLab, но тесты также не прошли, что позволяет предположить, что проблема может быть специфичной для среды CI, а не для автономного режима.
  • Белый экран в локальном автономном режиме: при запуске тестов в автономном режиме на На моем локальном компьютере между тестами я вижу кратковременную вспышку ярко-белого экрана. Экран не имеет интерактивного окна и исчезает, как только начинается следующий тест. Эта проблема не возникает в режиме заголовка.
Моя гипотеза
Мне интересно, может ли среда выполнения CI GitLab в Windows вызывать какие-либо проблемы с рендерингом или синхронизацией. Возможно, элемент .loading-indicator ведет себя по-другому в CI-исполнителе из-за задержек в сети, различий в среде или некоторых аспектов автономной обработки Chrome в Windows.
Вопрос
Кто-нибудь сталкивался с подобным поведением при использовании Selenium в Windows-версиях GitLab? Или локально столкнулись с белой вспышкой экрана в безголовом режиме? Буду признателен за любые предложения, настройки или способы отладки, которые помогут решить эту проблему.
Будем очень признательны за любую информацию!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -screen-in

Вернуться в «C#»