我正在使用规范和 xunit 报告。我的 .testcaferc.json 是:
{
"screenshotPath": "artifacts/screenshots",
"takeScreenshotsOnFails": true,
"screenshotPathPattern": "${DATE}_${TIME}/${USERAGENT}/test-${TEST_INDEX}.png"
}
当规范中的测试失败时,xunit 报告会显示屏幕截图的链接,但该链接具有绝对路径。当我在本地运行测试时这是可以的。在 Jenkins CI/CD 中运行时,由于使用“workspace”文件夹中的相对路径,发布 xunit 报告无法使用绝对路径找到屏幕截图。有没有办法配置 Testcafe 将相对路径放入 testRunInto.screenshotPath 中。我需要任何报告提供程序的屏幕截图的相对路径。
更新:我正在使用 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 代理服务器的屏幕截图的绝对路径。结果Jenkins大师在显示测试结果报告时找不到截图。
之前我使用 Selenium 和 Maven 或 Gradle 来运行测试,并且屏幕截图有相对路径。
最佳答案
目前,TestCafe 没有在报告中使用相对路径的选项。我在 TestCafe 存储库中为您的案例创建了一条建议 - https://github.com/DevExpress/testcafe/issues/3497 。如果这个功能对你来说很重要,那么你可以尝试自己实现它。 这并不难。您需要执行以下操作:添加一个新选项(请参阅示例 here )并根据此选项更改路径解析机制(请参阅示例 here )。
关于testing - Testcafe - 如何在报告中设置相对而不是绝对的屏幕截图路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54874056/