【发布时间】:2020-11-02 15:46:10
【问题描述】:
我在与 mocha 和 devtools-service 同步模式下使用 WebdriverIO
//package.json
"dependencies": {
"@babel/cli": "^7.11.6",
"@babel/core": "^7.11.6",
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/preset-env": "^7.11.5",
"@babel/register": "^7.11.5",
"@wdio/allure-reporter": "^6.6.0",
"@wdio/cli": "^6.6.0",
"@wdio/devtools-service": "^6.6.0",
"@wdio/junit-reporter": "^6.6.0",
"@wdio/local-runner": "^6.6.0",
"@wdio/mocha-framework": "^6.6.0",
"@wdio/spec-reporter": "^6.6.0",
"@wdio/sync": "^6.6.0",
"chai": "^4.2.0",
"chromedriver": "^86.0.0",
"moment": "^2.29.1",
"wdio-chromedriver-service": "^6.0.4"
},
在其中一项测试中,我有以下应该打开 url 的代码,检查 API 响应是否为 500 并等待一些 UI 元素出现:
const puppeteer = browser.getPuppeteer();
const page = browser.call(() => puppeteer.pages())[0];
browser.call(() =>
page.on('response', response => {
expect(response.status()).not.toEqual(500);
})
);
browser.call(() => page.goto(item.url, { waitUntil: 'networkidle0' }));
browser.call(() => page.waitForSelector('div.headline'));
问题是当我运行这个测试并出现错误 500 时,我可以在日志中看到 expect 失败了,但测试本身并没有失败。
这是控制台输出的一部分,清楚地表明期望失败:
[0-0] (node:14952) UnhandledPromiseRejectionWarning: Error: expect(received).not.toEqual(expected) // deep equality
Expected: not 500
at d:\Robocze\bos-frontend-tests\healthcheck\/healthcheck.gen.js:50:55
at D:\Robocze\bos-frontend-tests\node_modules\puppeteer-core\lib\cjs\vendor\mitt\src\index.js:51:62
at Array.map (<anonymous>)
at Object.emit (D:\Robocze\bos-frontend-tests\node_modules\puppeteer-core\lib\cjs\vendor\mitt\src\index.js:51:43)
at Page.emit (D:\Robocze\bos-frontend-tests\node_modules\puppeteer-core\lib\cjs\puppeteer\common\EventEmitter.js:72:22)
at D:\Robocze\bos-frontend-tests\node_modules\puppeteer-core\lib\cjs\puppeteer\common\Page.js:165:101
at D:\Robocze\bos-frontend-tests\node_modules\puppeteer-core\lib\cjs\vendor\mitt\src\index.js:51:62
at Array.map (<anonymous>)
at Object.emit (D:\Robocze\bos-frontend-tests\node_modules\puppeteer-core\lib\cjs\vendor\mitt\src\index.js:51:43)
at NetworkManager.emit (D:\Robocze\bos-frontend-tests\node_modules\puppeteer-core\lib\cjs\puppeteer\common\EventEmitter.js:72:22)
以及测试总结:
"spec" Reporter:
------------------------------------------------------------------
[chrome 86.0.4240.111 windows #0-0] Spec: d:\Robocze\bos-frontend-tests\healthcheck\healthcheck.gen.js
[chrome 86.0.4240.111 windows #0-0] Running: chrome (v86.0.4240.111) on windows
[chrome 86.0.4240.111 windows #0-0] Session ID: 99e20f03ca9b29678d70c8293aa176d2
[chrome 86.0.4240.111 windows #0-0]
[chrome 86.0.4240.111 windows #0-0] Health check tests generator
[chrome 86.0.4240.111 windows #0-0] ✓ get all menus
[chrome 86.0.4240.111 windows #0-0] ✓ perform healthcheck
[chrome 86.0.4240.111 windows #0-0]
[chrome 86.0.4240.111 windows #0-0] 2 passing (13m 38.2s)
Spec Files: 1 passed, 1 total (100% completed) in 00:13:47
所以我的问题是为什么失败的期望没有通过测试(准确地说是执行健康检查测试),我该如何解决?
【问题讨论】:
标签: javascript puppeteer webdriver-io