前端自动化测试是现代开发工作流中不可或缺的一环。而 Cypress 作为一款易于使用的前端测试工具,近年来受到了广泛的欢迎和运用。然而,官方提供的测试报告器并不总是能够满足我们对于可视化和自定义性方面的需求。因此,本文将向大家介绍如何给 Cypress 贡献一个自定义 UI Reporter,来提高测试结果的可读性和可定制性。
1. UI Reporter 是什么
Cypress 的报告器可以在终端输出结果,但是终端输出结果只能提供测试结果的基本信息,往往并不足够。UI Reporter 的作用在于将测试结果可视化,更加明了和易于阅读。部分示例 UI Reporter 如下图:
来自 cypress-html-reporter
来自 mochawesome
2. 为什么需要自定义 UI Reporter
2.1 满足特定需求
Cypress 官方提供的测试报告器并不总是足够满足我们的个性化需求。因此,我们需要自定义 UI Reporter。比如,我们需要将测试结果以 PDF 形式导出,或者需要将测试结果整合到项目的管理平台中。
2.2 增强用户体验
自定义的 UI Reporter 在视觉上设计出来更具有吸引力和易读性,提高测试结果的可视化程度,并且可以增强用户体验。
2.3 对项目的贡献
作为开源测试工具,Cypress 是大家的共同财富。通过贡献 UI Reporter 插件,可以向 Cypress 社区和其他开发者分享自己的经验和技能,并对项目做出贡献。
3. 如何为 Cypress 自定义 UI Reporter
npm install cypress-cucumber-preprocessor cypress-steps --save-dev npm install moment --save npm install serve --save-dev
上述代码是为了安装 cypress-cucumber-preprocessor 和 moment 依赖库,以及 serve 服务器模块。
-- -------------------- ---- ------- -- ------------------------ ----- -------- - ------------------------------------------------ ----- ----- - ---------------- ----- ------ - ----------------- -------------- - ---- ------- -- - ----- ------- - - ----- ----- -------- ----- ------- ---- - --------------- - ----------------- -------- ---------- - ---------- -- -- - ----- -------- - -------------------------------------- ----- ------- - --------- - ----------------- - -------- ----- ---------- - ------------------------ - -------- - ------------------- ------ --------- ----------- - -- ----------------------- ----------- -
上述代码是将 moment,serve 服务器模块以及 Cypress 的 plugin 一同使用情况的代码,这将在代码中进行使用到。
-- -------------------- ---- ------- -- --------------------------- ------------------------------------------------- ------ -- - ----- ------ - --------------- --- --- - -- --- ---- - - -- - - -------------- ---- - --- -- --------- - --- -- --------------------- - ----------------- - - -- --------------------------------- ------ ----- -- - ---------------------------------- ------------------ -------------------- ----- --- -- ----------------------------------------- ----------- ----- ----- -- - ----- ---- - ----------------- - --- - ---- ---------------------------------- ------------------ ----- --
上述代码将目录创建和文件写入的操作集成在 Cypress 的自定义 command 中,方便日后调用。
// cypress/support/index.js import './commands' import 'cypress-failed-log' import 'cypress-xpath' require('cypress-cucumber-preprocessor/register')
上述代码是整合了 Cypress 自定义 command,以及引入 Cypress 的其他命令套件。
至此,我们已经完成了自定义 UI Reporter 的配置。同时,在 Cypress 的配置文件中,也要进行如下配置:
-- -------------------- ---- ------- -- ------------ - ----------- ------------------------------- -------------- --------------------------- -------------------- ---------------------- -------------------- ---------------------- --------------- ----------------- -------------- --------------------------- ------------------- ---------- ------------------ - ------------ ---------- --------- ------- ------- ------ ----------------- --------- ----------- ----- - -
注意,reporter
的选项应该是自定义的 Reporter 插件名。这些插件可以从 Cyress 官方文档或者 npm 等地方获取到。
4. 自定义 UI Reporter 示例
-- -------------------- ---- ------- -- ------------------------------------ ----- ----- - ---------------- ----- ------ - ------------------------------- ----- ------ - ----------------- ----- -- - ------------- ----- ---------- - ---------- ----- -------------- - ------------------- - ----------- - ------ --------------- - ---------- - ----- ------------- - --- ---------------------- ----- ---- - - -------- -- - --- ---- - - -- - - -------------------------------- ---- - ----- ----- - --------------------------- ----- --------- - - ----- ------------ ------ -- - --- ---- - - -- - - ------------------- ---- - ----- ---- - -------------- ----- ---------- - - ----- ----------- ------- ---------- --- --------- --------- ------------- - -------------------------------- - ---------------------------- - ----------------------- -- -- - ----- -------- - -------------------------------------- ----- ---------- - --------------------------------- ----- ---------- - ---------------------------- ----- --------------- - --------------------------- ---------------------------- ---------------- -- - - -------------- - --------------
上述代码是一个基于 Mocha 的 Custom Reporter 实现示例,该 Reporter 的功能在于将测试结果以 HTML 形式生成,并保存至 reports 目录中。由于篇幅限制,本文仅提供代码样例作为参考,完整代码可以在 Github 上找到。
4.1 效果展示
生成的测试报告效果如下图所示:
5. 结论
本文向大家介绍了为 Cypress 自定义 UI Reporter 的方法,并提供了一个基于 Mocha 的示例。通过自定义 UI Reporter 可以增强测试结果可视化和可定制化,同时,这也是向 Cypress 社区和其他开发者分享自己的经验和技能的机会。希望本文能够对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674a7a6aa1ce006354903807