近期,Astro 在其官方博客中宣布,虽然我们对 Mocha 感到满意,但也在寻求让我们的 CI 作业更快的方法。最终将超过 500 多个测试从 Mocha 迁移到了 Node.js。
先了解下 Astro 是什么?Astro 是适合构建像博客、营销网站、电子商务网站这样的以内容驱动的网站的 Web 框架。没有强绑定一些 UI 框架,它支持像 React、Preact、Svelte、Vue、Solid、Lit、HTMX、Web 组件等这些前端 UI 框架。
一开始,Astro 只是迁移了一个尚未使用 astro 集成套件的软件包:create-astro
,由 Mocha 转为使用 Node.js 内置断言库 node:assert
。
当成功迁移了第一个包后,潘多拉的盒子便已打开。之后开始尝试迁移 @astrojs/node
包的测试套件。这个集成是 Astro 下载量最大的集成之一。
根据其博客描述,对最终的结果是感到满意的。在迁移之后没有看到性能出现任何显著退化。
Node.js 内置测试模块毕竟还比较新,在实现过程中也有遇到一些问题的,例如:
--test-name-pattern
而不是 --match
,-m
参数;--test-timeout
而不是 --timeout
,-t
参数,等等。--test-only
参数运行 CLI.only
添加到包含要运行的 it.only
的 describe 中。对于 Astro 来讲,使用 Node.js 内置测试运行器,对于它们的主 monorepo 有一些优势:
Astro 在其博客最后由提到以下两句话:
“Node.js 测试运行器仍然年轻,并且在积极开发中,有望变得更好。例如,Node.js 项目目前正在评估在我们提出使用案例后使用主进程运行测试”。
“以真正的开源合作精神,我们很高兴通过将我们的测试切换到 Node.js 来改进 Astro,反过来也将改进 Node.js 本身!”
这也是一种相互合作,相互成就吧!感谢 Astro 能够促进 Node.js 内置测试模块的发展!
参考 https://astro.build/blog/node-test-migration/
- END -