记录前端单元测试和e2e测试踩过的坑【持续更新】

1,266 阅读1分钟

方案

  • 单元测试:jest
  • react组件测试:enzyme
  • e2e测试: puppeteer

问题

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