Testcafe - Как установить относительный, а не абсолютный путь к скриншоту в отчетах

Я использую отчеты 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 для запуска теста, и был относительный путь к скриншотам.


person Dmitry    schedule 25.02.2019    source источник
comment
В настоящее время TestCafe не имеет возможности использовать относительные пути в отчетах. Мне непонятен ваш вариант использования. Не могли бы вы подробно описать свой сценарий?   -  person mlosev    schedule 26.02.2019
comment
Обновил мой вопрос   -  person Dmitry    schedule 26.02.2019


Ответы (1)


В настоящее время TestCafe не имеет возможности использовать относительные пути в отчетах. Я создал предложение в репозитории TestCafe для вашего случая - https://github.com/DevExpress/testcafe/issues/3497. Если эта функция важна для вас, то вы можете попробовать реализовать ее самостоятельно. Это не сложно. Вам необходимо сделать следующее: добавить новую опцию (см. Пример здесь) и измените механизм разрешения пути в зависимости от этого параметра (см. пример здесь).

person mlosev    schedule 27.02.2019
comment
Спасибо, это помогает. Но как я могу внести свою реализацию в пакет Testcafe, если он устанавливается каждый раз в конвейере с помощью команды yarn и package.json? - person Dmitry; 27.02.2019
comment
Вы можете создать форк github.com/DevExpress/testcafe, изменить имя пакета в пакете TestCafe. json и опубликуйте свою версию в npm. Или вы можете заменить версию TestCafe в своем package.json ссылкой или путем к архиву дистрибутива TestCafe, созданному с помощью npm pack. - person Andrey Belym; 06.03.2019