t.expect.notOk Method

Assertion method. Succeeds if x is falsy.

t.expect(x).notOk(message, options) → this | Promise<unknown>
Parameter Type Description
x Any type The only operand of the assertion (see the x parameter).
message (optional) String Custom assertion error message.
options (optional) Object See Options.


try {
    await t.expect('ok').notOk('this assertion will fail');
catch (e) {
    await t.expect(e.errMsg).eql('AssertionError: this assertion will fail: expected \'ok\' to be falsy');
await t.expect(false).notOk('this assertion will pass');
import { Selector } from 'testcafe';


test('Element shouldn\'t exists', async t => {
    await t.expect(Selector('#element').exists).notOk();

the x parameter

x is the only operand of the assertion.

If x contains a selector property, a client function, or any other compatible function, the assertion becomes subject to the Smart Assertion Query Mechanism.



Type: Number

If x contains a compatible function, the assertion is subject to the Smart Assertion Query Mechanism.

If such an assertion fails, TestCafe executes it again until it meets either of the following criteria:

  • The assertion succeeds.
  • The assertion timeout elapses.
await t.expect(Selector('h1').innerText).eql('text', 'check element text', { timeout: 20000 });

To set the timeout for the entire test run, define the assertion timeout in one of the following ways:


The timeout option applies to built-in TestCafe assertion methods. Use the t.wait() method to specify timeouts for third-party assertion methods (assert or chai).


TestCafe awaits Promises from compatible asynchronous functions. If your assertion includes a custom function that returns a Promise, the assertion fails.

When you create assertions, avoid the use of custom functions that return a Promise. If you can’t work around this limitation, use the allowUnawaitedPromise option:

await t
        .expect(new Promise(resolve => setTimeout(resolve, 100)))
        .ok('received a promise', { allowUnawaitedPromise: true });