selenium - 为 Selenium 测试运行生成 Ember 代码覆盖率
问题描述
有谁知道如何从 Selenium 测试中生成 Ember 代码覆盖率指标?我有几个用 Groovy/Java 编写的测试。
我发现有人在伊斯坦布尔这样做的文件。一个例子是伊斯坦布尔 Selenium 的前端 Javascript 测试覆盖率。
还有一个Ember CLI 代码覆盖工具,它建立在伊斯坦布尔生产的工具之上。然而,从我目前收集到的信息来看,这个工具似乎完全围绕着伊斯坦布尔工具,因此只允许在构建时间之前为 ember 单元和集成测试生成代码覆盖率统计信息。它存储自己的从伊斯坦布尔结果到 Ember 代码的映射的位置并不明显,至少对于像我这样的 Java 开发人员来说不是。
我正在寻找一种方法来生成仅供内部使用的战争文件,该文件同时具有伊斯坦布尔检测和到 ember 代码的映射,并且 Selenium 可以触发以生成 Ember 代码覆盖率报告。任何有关如何做到这一点的见解将不胜感激。
解决方案
事实证明,上述观点没有解决的主要障碍不是 Ember 本身,它基本上只是 Javascript。问题在于 Ember 基于较新的 ES6 版本的 Javascript,而伊斯坦布尔的原始版本是为 ES5 编写的。
对于 ES6 工具,用于跨浏览器兼容性的应用程序 Babel 有一个可用的 Istanbul 插件。这个伊斯坦布尔教程展示了如何使用它进行单元测试。诀窍在于弄清楚如何引导检测过程以将检测代码放入一个war文件,然后将其分派到浏览器可以访问的服务器。(我们的 Ember 专家发现了这一点,因此我无法在此回复中概述该解决方案。)
一旦服务器使用您的 Selenium 测试可以命中的 war 文件运行,您必须将代码添加到测试的末尾(就在它们离开该站点之前)以访问 window.__coverage__ 对象并将其输出到文件每个测试会话结束。有关如何执行此操作的示例,请参阅类似问题的答案:https ://sqa.stackexchange.com/a/41715/29877 。
假设您编写该代码以将一个或多个覆盖率文件输出到名为“usage”的目录并在其旁边创建另一个名为“coverage”的目录。然后,您可以从它们的公共父目录运行此命令,以在“coverage”目录中生成基本的 html 报告:
nyc report --exclude-after-remap=false --report-dir=./coverage --reporter=html -t ./usage
(请参阅这些说明以安装 nyc 实用程序。)
现在您可以通过在浏览器中打开 coverage/index.html 来查看该报告。当然,nyc 有几个 --reporter 选项可用于生成其他类型的报告。
推荐阅读
- ios - FireBase Crashlytics 未在 iOS 上提供完整的堆栈跟踪
- linux-kernel - Chrony 设置系统时间但不同步 RTC
- javascript - 错误:函数组件不能有引用。?
- c# - 是否有必要使用特定于平台的文件系统,还是可以使用 System.IO?
- file - 在 Dart 中打开一个新创建的文件
- laravel - laravel如何仅恢复软删除删除的最后一项
- python - 如何在 Python 中模糊匹配两个列表
- python - 从存储在 json 格式类型 csv 的列表中检索名称?
- asp.net-core - 带有异常日志记录的 Serilog 附加属性
- reactjs - 如何使用高阶组件将自定义复选框/输入连接到 React 中的 LocalStorage?