Запись выполнения теста Selenium с Expression Encoder 4 SDK не выполняется на сервере сборки

Мы запускаем тесты Selenium каждый вечер на нашем сервере сборки TeamCity.

У нас есть некоторые тесты, которые периодически терпят неудачу во время нашей ночной пробежки.

Скриншоты неудачных тестов на самом деле не дали ответа, поэтому я хочу записать выполнение неудачных тестов.

Я реализовал следующее, чтобы записать выполнение тестов, которые я хочу исследовать.

        ScreenCaptureJob = new ScreenCaptureJob
        {
            CaptureRectangle = Screen.PrimaryScreen.Bounds,
            ShowFlashingBoundary = true,
            OutputPath = outputPath
        };

        ScreenCaptureJob.Start();

        Debug.WriteLine($"Status: {ScreenCaptureJob.Status}");

        Test code...

        ScreenCaptureJob.Stop();

Если тест не пройден, я кодирую захваченное видео и сохраняю его. Это прекрасно работает, когда я запускаю тест локально.

Но когда я запускаю это на сервере сборки, ScreenCaptureJob имеет статус NotStarted.

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

        MediaItem mediaItem = new MediaItem(fileName);
        Job job = new Job();
        job.MediaItems.Add(mediaItem);
        job.ApplyPreset(Presets.VC1HD720pVBR);
        job.OutputDirectory = outputPath;
        job.Encode();

Исключение происходит, когда я пытаюсь создать новый MediaItem из временного файла.

TestCleanup method UITests.FailingTest.TestCleanup threw exception. Microsoft.Expression.Encoder.InvalidMediaFileException: Microsoft.Expression.Encoder.InvalidMediaFileException: File not found.

EE4 установлен на сервере сборки, и я протестировал захват самой программой EE4.

Кто-нибудь имеет представление о том, почему ScreenCaptureJob не запускается на сервере?

1 ответ

Запуск тестов на Windows Server требует добавления функции

Пользовательские интерфейсы

а также

Инфраструктура> Рабочий стол

установить недостающие зависимости, необходимые для Microsoft Expression Encoder.

Если вы уже сделали это, и это не работает, прочитайте эту статью, это очень полезно, и есть ссылка на профиль GitHub с кодом, используемым для записи видео. Автор использует ScreenCaptureJob через интерфейс, который звучит великолепно.

Другие вопросы по тегам