【问题标题】:Catch console errors while running e2e tests with jasmine and protractor使用 jasmine 和量角器运行 e2e 测试时捕获控制台错误
【发布时间】:2019-09-02 13:34:34
【问题描述】:

在运行 e2e 测试(量角器、硒)时,我想捕获应用程序生成的任何控制台错误和警告。

我知道量角器插件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",

【问题讨论】:

    标签: angular jasmine protractor angular-test angular-e2e


    【解决方案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);
          }
        });
      }
    

    那么你就可以在spec文件的beforeEach()中调用这个函数了。

    【讨论】:

    • 它按预期工作 - 显示错误日志但不会使测试用例失败。
    • 如果你想警告失败,只需在console.log之后添加fail();
    • 你把这个函数放在哪里了?
    • 就我而言,我有一个带有静态方法的类Utils,其中我有这样的功能。然后,我在 e2e 规范文件中的 beforeEach() 中调用它。
    猜你喜欢
    • 2015-06-11
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2015-03-23
    • 1970-01-01
    • 2017-01-02
    相关资源
    最近更新 更多