方案
- 单元测试:jest
- react 组件测试:enzyme
- e2e 测试: puppeteer
问题
- 安装 puppeteer 需要设置 chromium 国内镜像
https://github.com/cnpm/cnpmjs.org/issues/1246 - jest 和 puppeteer 结合使用的时候如何保持之前的 JSDOM 环境还能使用
当设置 jest.config.js 为如下配置之后之前的 JSDOM 环境就没有了,取而代之的是 nodejs 执行环境,如果想要 e2e 测试和 单元测试共存的话,我的方案是设置了两个 jest 配置文件,一个用于配置单元测试,一个用于配置 e2e 测试。javascript module.exports = { preset: 'jest-puppeteer', testMatch: ["**/__tests__/**/*.e2e.[jt]s?(x)"], }
- 如何在启动 devserver 之后启动 e2e 测试
我的 e2e 测试需要依赖本地启动一个 devserver,所以我需要等本地 server 启动之后再测试,找了半天终于在 github 上找到一个库 start-server-and-test 专门解决这个问题。 - 如何在 puppeteer 里面是用 DOM 操作
其实这个不算是个坑,只不过新人对 puppeteer 可能不熟悉,其实 puppeteer 是提供了一套 api 专门去做 DOM 的操作的。
https://pptr.dev/#?product=Puppeteer&version=v1.19.0&show=api-pageselector
https://stackoverflow.com/questions/55702626/why-i-got-document-is-not-defined-error-in-puppeteer - 如何依次执行单元测试和 e2e 测试
可以试试这个库 npm-run-all 它可以控制你的多个 npm script 任务并行或是串行执行。