将 Jest 与 @web/test-runner 一起使用

问题描述 投票:0回答:3

我正在尝试使用

@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
整合?

jestjs playwright headless web-test-runner
3个回答
3
投票

我能够让它与 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 中运行。调试和源映射都工作得很好。


1
投票

我认为要走的路是在玩笑配置中设置一个自定义跑步者。如果我有什么工作,我会把它发布在这里!


-2
投票

除非您有非常具体的要求,否则不要使用 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

© www.soinside.com 2019 - 2024. All rights reserved.