在使用 jasmine 和量角器进行 运行 e2e 测试时捕获控制台错误
Catch console errors while running e2e tests with jasmine and protractor
虽然 运行 e2e 测试(量角器、selenium)我想捕获应用程序生成的任何控制台错误和警告。
我知道量角器插件 protractor-console-plugin
可以捕获控制台并使测试失败,但它会在最后打印所有测试的所有日志,我不知道日志是在哪个测试用例中创建的。
我也知道 protractor-console
在测试用例后显示控制台日志方面做得很好,但在 console.error.
的情况下它不能将测试标记为失败
我的package.json(这里重要的部分)是:
"jasmine-core": "^2.8.0",
"jasmine-spec-reporter": "^4.2.1",
"karma": "^1.7.1",
"karma-chrome-launcher": "^2.2.0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^1.3.0",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "^5.1.2",
"protractor-console": "^3.0.0",
"protractor-console-plugin": "^0.1.1",
"protractor-jasmine2-screenshot-reporter": "^0.4.1",
我正在使用这样的函数:
public static async browserErrorLogger() {
const browserLogs = await browser.manage().logs().get('browser');
browserLogs.forEach((log) => {
if (log.level.value > 900) { // it's an error log
console.log(`Browser console error: ${log.message}`);
// if you want to fail on warning add this
fail(log.message);
}
});
}
然后你可以在规范文件的beforeEach()
中调用这个函数。
虽然 运行 e2e 测试(量角器、selenium)我想捕获应用程序生成的任何控制台错误和警告。
我知道量角器插件 protractor-console-plugin
可以捕获控制台并使测试失败,但它会在最后打印所有测试的所有日志,我不知道日志是在哪个测试用例中创建的。
我也知道 protractor-console
在测试用例后显示控制台日志方面做得很好,但在 console.error.
我的package.json(这里重要的部分)是:
"jasmine-core": "^2.8.0",
"jasmine-spec-reporter": "^4.2.1",
"karma": "^1.7.1",
"karma-chrome-launcher": "^2.2.0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^1.3.0",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "^5.1.2",
"protractor-console": "^3.0.0",
"protractor-console-plugin": "^0.1.1",
"protractor-jasmine2-screenshot-reporter": "^0.4.1",
我正在使用这样的函数:
public static async browserErrorLogger() {
const browserLogs = await browser.manage().logs().get('browser');
browserLogs.forEach((log) => {
if (log.level.value > 900) { // it's an error log
console.log(`Browser console error: ${log.message}`);
// if you want to fail on warning add this
fail(log.message);
}
});
}
然后你可以在规范文件的beforeEach()
中调用这个函数。