【发布时间】:2020-06-24 14:04:03
【问题描述】:
我需要在 Next.js 应用程序的上下文中合并 Cypress 覆盖率报告和 Jest 覆盖率报告。
Jest 会将文件列为my-app/src/whatever。 Cypress 仅显示 src/whatever。
Cypress 不包含 my-app 而 Jest 包含,这会在尝试使用 Cypress 示例中推荐的方法合并覆盖范围时引发问题。另一种方法是让赛普拉斯也显示该文件夹。
解决方案 1:Jest 匹配 Cypress?
我希望 Jest 计算相对于 rootDir 的覆盖文件路径,而不显示它。
例如,覆盖率报告将显示my-app/src/whatever。它应该只显示src/whatever,而不显示my-app。
这可行吗?
解决方案 2:Cypress 匹配 Jest?
另一种方法是让赛普拉斯考虑另一个根目录,但我还没有找到这样的选项。这是 imo 最没有希望的选择。有没有相关的选项?
补充问题:这两个工具的行数不同,可能是由于 TypeScript + Babel + Webpack 与代码的交互。如何调试此问题?
谢谢
为清晰起见进行编辑
【问题讨论】:
-
你能不能简单地将collectCoverageFrom glob 改为src/**,并留下对rootDir 的引用?
-
从 Cypress 端开始,here 正在发生路径调整。您可以通过在代码覆盖包之后添加它来替换您自己的
combineCoverage(sentCoverage)任务版本,并在其中使用您自己的fixSourcePaths()版本进行不同的路径调整。可以肯定的是,我需要一个 repo 来测试它。 -
@StevenScott 如果代码位于
src文件夹中,您是对的。但是 Next.js 没有单独的src文件夹作为默认文件夹(将代码移动到 src 对我来说确实是一个快速修复)。我很乐意为这个问题找到一个更通用的解决方案,例如当你有两个文件夹时,想象一下src和legacySrc出于某种原因。 -
@RichardMatsen 好的,所以基本上这里的问题是赛普拉斯正在用 Jest 没有的路径做一些魔法?
-
从
fixSourcePaths()的代码中很难分辨出来,但是 cmets 说它做了两件事 1) 将相对路径更改为绝对路径 2) 删除 webpack 相关的东西。您提到您正在寻找相反的(绝对相对路径),或者您只是在寻找赛普拉斯覆盖范围和 Jest 覆盖范围之间的一致性?由于赛普拉斯包旨在合并这些,它们应该已经是一致的。你应该在你的问题中充实一些细节。