web icon indicating copy to clipboard operation
web copied to clipboard

[web-test-runner] Allow web test runner to fail a test / suite when there are uncaught promise rejections

Open skortchmark9 opened this issue 4 years ago • 3 comments

We noticed that our test suite was passing, but unit tests were printing an error like this one:

build	18-Oct-2021 17:26:54	      An error was thrown in a Promise outside a test. Did you forget to await a function or assertion?
build	18-Oct-2021 17:26:54	      TypeError: Cannot read property 'getBoundingClientRect' of undefined

Upon further investigation, this revealed a real bug. We would like to consider these failures. Is there a good way to fail the tests based on uncaught promise resolutions at the test runner level?

I thought of a couple solutions:

  • pipe logs into grep
  • add an unhandled promise rejection listener to before before all test suites

But, I know there's already some mechanism for filtering logs and it seems like it might be possible to hook into it in a neat way.

I'm using mocha, if it makes a difference.

It seems like @LarsDenBakker wrote most of the logging stuff, so I'm curious to hear his opinion.

skortchmark9 avatar Oct 19 '21 03:10 skortchmark9

Hi, thanks for the issue. Lars was on vacation the last time I checked with him. But this does seem like a bug. Feel free to submit a PR if you would like to contribute, I can help with reviewing and merging it.

web-padawan avatar Nov 09 '21 12:11 web-padawan

This is an issue with mocha, not with WTR. Mocha runs the actual tests in the browser.

LarsDenBakker avatar Dec 21 '21 20:12 LarsDenBakker

This issue seems to indicate that unhandled rejections were included in mocha's exit code at one point, but not as of 8.2.1: https://github.com/mochajs/mocha/issues/2640

Here is where WTR is doing the helpful logging: https://github.com/modernweb-dev/web/blob/f878640188dd28def54705ee05dee05ff49c9cee/packages/browser-logs/src/logUncaughtErrors.ts#L8

I will look into adding a userland patch until mocha is fixed. Will post it on here if I come up with something good.

skortchmark9 avatar Dec 27 '21 17:12 skortchmark9