我正在尝试使用
@web/test-runner
作为 snowpack
之上的测试运行程序。
到目前为止,我成功地使用 @web/test-runner-playwright
启动了无头浏览器来运行我的测试。
现在我需要一个测试框架(即 jest
)来利用其 test
和 expect
结构。
如何通过上述设置使用
jest
?
我尝试直接从
@jest/globals
导入这些内容,但收到错误提示 Do not import '@jest/globals' outside of the Jest test environment
,这是可以理解的。
我不想使用
jest
作为我的测试运行程序,因为我想在测试中利用我的 snowpack
管道以及在实际的无头浏览器中运行测试。这就是我使用@web/test-runner
的原因。
如何将
jest
与@web/test-runner
整合?
我能够让它与 jest-browser-globals:
一起工作const { esbuildPlugin } = require('@web/dev-server-esbuild')
module.exports = {
nodeResolve: true,
files: ['src/**/*.spec.{ts,tsx}'],
plugins: [
esbuildPlugin({
ts: true,
tsx: true,
jsxFactory: 'h',
jsxFragment: 'Fragment',
}),
],
coverageConfig: {
include: ['src/**/*.{ts,tsx}'],
},
testRunnerHtml: testFramework => `
<html>
<head>
<script type="module" src="${testFramework}"></script>
<script type="module">import 'jest-browser-globals';</script>
</head>
</html>
`,
}
此配置使用 esbuild 插件进行捆绑,其工作速度非常快,我推荐,但您可以删除它。
相同的测试在浏览器中的 jest (node+jsdom) 和 web-test-runner 中运行。调试和源映射都工作得很好。
我认为要走的路是在玩笑配置中设置一个自定义跑步者。如果我有什么工作,我会把它发布在这里!
除非您有非常具体的要求,否则不要使用 Jest。 Jest 不完全支持 ECMAScript 模块。当您使用现代网络提供的工具时,我假设您会对使用 ECMAScript 最新版本感兴趣。您可以在这里阅读更多相关信息 - https://jestjs.io/docs/ecmascript-modules
您可以将 mocha + chai 组合与 Web 测试运行器结合使用。您可以从这里参考此设置 - https://github.com/snowpackjs/snowpack/tree/main/create-snowpack-app/app-template-react-typescript