Puppeteer: Evaluation failed: ReferenceError: cov_16gqc9ptx4 is not defined

发表于:2020-05-12

Puppeteer: Evaluation failed: ReferenceError: cov_16gqc9ptx4 is not defined

出现问题

在写自动化测试时遇到这么个问题,记录下。

无法使用 evaluate / eval 等浏览器执行环境的API。

这个问题整的我怀疑人生了, 看下面最小化代码

这段代码执行完全没问题。

// index.spec.js
test('', async () => {
  const inputEl = global.page.$('input')
  inputEl.evaluate(node => node.value = '')
});

把代码块移到顶层,报错 Evaluation failed: ReferenceError: cov_16gqc9ptx4 is not defined, 你说气不气人。

// index.spec.js
async function clearValue() {
  const inputEl = global.page.$('input')
  inputEl.evaluate(node => node.value = '')
}

test('', async () => {
  await clearValue()
});

从代码的角度来看这个是没问题的。

解决

在 jest.config 中配置 collectCoverage 设为 false 即可。

{
  "collectCoverage": false
}

解释下这个字段字面意思, 在jest默认配置中这个字段为 false , 指出是否收集测试时的覆盖率信息。 由于要带上覆盖率搜集语句重新访问所有执行过的文件,这可能会让你的测试执行速度被明显减慢。

true

false

JavaScript