在Cypress中配置屏幕截图文件夹

在Cypress中配置屏幕截图文件夹,cypress,mochawesome,Cypress,Mochawesome,我正在使用Cypress作为我的用户界面测试自动化框架。 目前,我的等级库文件(测试文件的逻辑组织)的文件夹结构为: ~/myAccount/header/header.spec.js ~/myAccount/footer/footer.spec.js ~/myAccount/mainTabs/home.spec.js 等等…… 现在,当我在cypress.json中将我的屏幕截图文件夹配置为屏幕截图并保存失败测试用例的屏幕截图时,cypress在屏幕截图文件夹中内部创建了一个文件夹结构。例如,

我正在使用Cypress作为我的用户界面测试自动化框架。
目前,我的等级库文件(测试文件的逻辑组织)的文件夹结构为:

~/myAccount/header/header.spec.js

~/myAccount/footer/footer.spec.js

~/myAccount/mainTabs/home.spec.js

等等……
现在,当我在cypress.json中将我的屏幕截图文件夹配置为屏幕截图并保存失败测试用例的屏幕截图时,cypress在屏幕截图文件夹中内部创建了一个文件夹结构。例如,如果footer.spec.js中的测试失败,它会将屏幕截图保存在

~/screenshots/myAccount/footer/footer.spec.js

我想摆脱这种递归文件夹结构,将所有屏幕截图保存在screenshots文件夹中(这样我就可以轻松访问这些屏幕截图并将其添加到我的mochawesome报表中)。
有什么办法吗? 如果我不能正确地提出问题,我们将非常感谢您的帮助,并让我知道。我愿意添加更多信息。

是的,您可以使用:

例如:

//cypress/plugins/index.js
常量fs=require('fs')
module.exports=(打开,配置)=>{
on('after:screenshot',(细节)=>{
//详细信息如下所示:
// {
//尺码:10248
//塔克纳特:“2018-06-27T20:17:19.537Z”
//持续时间:4071
//尺寸:{宽:1000,高:660}
//多部分:false
//像素比例:1
//名称:“我的截图”
//specName:'integration/my-spec.js'
//testFailure:true
//路径:'/path/to/my screenshot.png'
//比例:对
//停电:[]
// }
//重命名屏幕截图文件的示例
const newPath='/new/path/to/screenshot.png'
返回新承诺((解决、拒绝)=>{
fs.rename(details.path,newPath,(err)=>{
如果(错误)返回拒绝(错误)
//因为我们重命名/移动了图像,所以使用新路径进行解析
//因此,测试结果是准确的
解析({path:newPath})
})
})
})
}

例如,如果需要在两个位置创建图像,您还可以创建符号链接。

是否可以确保您的完整答案可见。看起来有一些标记问题。我认为您的解决方案不起作用,因为只有在调用cy.screenshot()时才会触发“after:screenshot”事件。对于我的用例(成功地将失败TC的屏幕截图连接到mochawesome),一旦我检测到TC失败(在事件“test:after:run”下),我就无法触发cy.screenshot()(在测试:after:run块内)。事件应该仍然会触发,请参阅此文档页面:我不知道这是Cypress中的错误还是我做错了什么,但如果TC故障导致屏幕截图,则不会触发此事件。我可以清楚地看到,在cy.screenshot()的情况下,它会被解雇。我仍然会接受你的答案,因为根据文档,这应该是理想的行为。谢谢@bkucera。帮助很大。为什么不在cypress.json
的“screenshotsFolder”中指定“:”screenshots“,
它只会配置默认的根目录。在根目录中,它将根据您的测试用例结构生成子目录。