cenfun / monocart-reporter

A playwright test reporter (Node.js)
https://cenfun.github.io/monocart-reporter/
MIT License
194 stars 11 forks source link

[Bug] 测试报告的附件模块无法下载文件 #128

Closed jiawen94 closed 2 months ago

jiawen94 commented 2 months ago

Describe the bug

  1. playwright 使用如下代码下载文件,将文件作为附件上传到测试报告中
    const downloadPromise = page.waitForEvent('download');
    await page.getByRole('button', { name: 'Download' }).click();
    const download = await downloadPromise;
    const filePath = await download.path();
    await testInfo.attach('downloaded', { contentType:'application/zip' ,path: filePath });
  2. 测试报告附件只显示附件路径,没有显示文件名称可供下载 image
  3. playwright build-in reporter可以点击文件下载 image

To Reproduce

Expected behavior 测试报告中可以下载附件文件

cenfun commented 2 months ago

嗯,这个应该是改新版的弄丢了,等会补上,看还有没有其他问题?

jiawen94 commented 2 months ago

暂时没有其他问题,后续使用遇到其他的再提

cenfun commented 2 months ago

新发了monocart-reporter@2.5.1 试试

jiawen94 commented 2 months ago
  1. 能下载了,不过下载下来的文件后缀后带上了一串类似UUID的东西,扩展名的.变成了- 比如download.zip 下载下来是downloaded-zip-a6445f65411f7fa65d9dd0c5f42ffc717d12113d
  2. 好像页面的版本号没有改?我后台命令行看是2.5.1 image image
cenfun commented 2 months ago

1,是的,我试了也是这样,这个好像自定义报告里没法控制,链接是playwright提供的,官方的html报告也是这样的,这应该是最新版本的playwright修改了附件的文件名机制,可能为了防止重名之类的 2,这个可能是你的缓存问题,加载的js没有更新,我看到在线网已经是2.5.1了,https://cenfun.github.io/monocart-reporter/#page=report

jiawen94 commented 2 months ago

playwright确实会把附件重命名,不过官方的报告能展现正确的文件名,是不是可以借鉴下实现方式。不然每次下载都手工修改文件命名,不是太友好。 image

cenfun commented 2 months ago

我研究一下,这个文件名可能牵涉到修改http请求头

cenfun commented 2 months ago

应该修正了,monocart-reporter@2.5.2 在a链接加个download指定文件名即可 但需要在http或https下才能有效,以文件形式直接在浏览器打开html好像不生效

npx monocart show-report .temp/monocart/index.html
jiawen94 commented 2 months ago

谢谢,2.5.2版本http(s)可以正确下载文件了,已经满足我这边的需求。