3

While running e2e tests (protractor, selenium) I want to catch any console errors and warnings generated by application.

I know protractor plugin protractor-console-plugin which catches console and make tests fail but it prints all logs from all tests at the end and I don't know during which test case the log was created.

Also I know protractor-console which does good job in presenting console logs after the test case but it can't mark test as failed in case of console.error.

My package.json (important part here) is:

"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",
koral
  • 2,807
  • 3
  • 37
  • 65

1 Answers1

1

I'm using a function like this:

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);
      }
    });
  }

Then you can call this function in beforeEach() in spec file.

Kuba Lubas
  • 81
  • 3