Я использую отчеты spec и xunit. Мой .testcaferc.json:
{
"screenshotPath": "artifacts/screenshots",
"takeScreenshotsOnFails": true,
"screenshotPathPattern": "${DATE}_${TIME}/${USERAGENT}/test-${TEST_INDEX}.png"
}
Когда тест не удался, в отчетах spec и xunit отображается ссылка на снимок экрана, но эта ссылка имеет абсолютный путь. Это нормально, когда я запускаю тесты локально. При запуске в Jenkins CI / CD отчет о публикации xunit не может найти снимок экрана с использованием абсолютного пути из-за использования относительного пути из папки «рабочая область». Есть ли способ настроить Testcafe, чтобы поместить относительный путь в testRunInto.screenshotPath. Мне нужен относительный путь к скриншотам для любых поставщиков отчетов.
Upd: Я использую сервер агента Jenkins для запуска теста. Абсолютный путь к рабочему пространству в данном случае: /home/jenkins/workspace/e2e
. Снимки экрана расположены по относительному пути: artifacts/screenshots
или по абсолютному пути /home/jenkins/workspace/e2e/artifacts/screenshots
. В отчете xunit (или любом другом) мы получили абсолютный путь для скриншотов. Когда все тесты завершены, агент Jenkins отправляет всю рабочую область на главный сервер Jenkins, и абсолютный путь к рабочей области становится: /home/jenkins/job/test/ws/e2e
, а путь к снимкам экрана: /home/jenkins/job/test/ws/e2e/artifacts/screenshots
. Затем после сборки Jenkins публикует «Отчет о результатах тестирования Junit». Но внутри этого отчета у нас есть абсолютный путь к снимку экрана, полученному с сервера Jenkins Agent Server. В результате мастер Дженкинс не может найти снимок экрана, когда показывает отчет о результатах теста. Раньше я использовал Selenium и Maven или Gradle для запуска теста, и был относительный путь к скриншотам.