blob: 47ba72345cef6ea6219afcd9dcda7c86a2cc081f [file] [log] [blame] [view]
<!-- FIXME(alexeagle): generate the docs from the sources -->
## Don't expect promises toBeTruthy()
Don't write expectations like this:
expect(returnsPromise()).toBeTruthy();
Promises are always truthy, so this assertion will never fail. Usually, the
intention was to match the result of the promise. If that's the case, simply
add an `await`.
expect(await returnsPromise()).toBeTruthy();
### In Protractor tests
If you're not writing a Protractor test, you can safely ignore this section.
In the past, Protractor tests have patched `expect()` to automatically unwrap
promises, which made these assertions work as expected without needing an
`await`. However, the [control flow is deprecated][1] and will be removed in
Selenium WebDriver 4.0, and these assertions are now a bug. You'll
need to `await` the promise as above.
If you can't `await` the promise because your tests need the control flow, you
can use a more specific matcher.
expect(returnsPromise()).toBe(true);
This assertion will work as expected for now and will fail when the control flow
is finally removed.
[1]: https://github.com/SeleniumHQ/selenium/issues/2969