Runs tests according to the current configuration. Returns the number of failed tests.

async run(options) → Promise<Number>

Configuration conflicts

Command line options have precedence over TestCafe Runner options. Runner options have precedence over configuration file settings. When TestCafe overrides a configuration file setting, it outputs a description of the conflict to the console.


Make sure the browser tab that runs tests stays active. Do not minimize the browser window. Inactive tabs and minimized browser windows switch to a lower resource consumption mode where tests are not guaranteed to execute correctly.


You can pass the following options to the function:


Type: Boolean

Description: When you launch TestCafe v3.0.0 and up, the framework engages Native Automation mode to automate Chromium-based browsers with the native CDP protocol. Disable Native Automation to automate browsers with the TestCafe proxy.

Specify the disableNativeAutomation option to disable Native Automation.


If you want to run tests in Chrome and other browsers, launch two instances of TestCafe — one with Native Automation, and one without:

testcafe chrome,edge test.js; 
testcafe firefox,safari test.js --disable-native-automation

Default value: false

Related Configuration File Option: disableNativeAutomation


Type: String

Description: Defines the starting URL for all the tests and fixtures in your test suite.

Default value: about:blank

Related Configuration File Option: baseUrl


Main article: Skip JavaScript Errors

Type: Boolean | Object {message, pageUrl, stack} | Object {fn ({message, pageUrl, stack}) => { }, dependencies} | fn ({message, pageUrl, stack}) => { }

Description: Use the skipJsErrors option to ignore JavaScript errors during the test run. Specify the message, page, and stack properties to ignore specific errors. Pass an object with a callback function and its dependencies to set custom error handling logic.

![WARNING] Enclose regular expressions in forward slashes to avoid strict matches for special characters.

Default value: false

Related Configuration File Option: skipJsErrors


Type: Boolean

Description: Defines whether to continue a test after an uncaught error or unhandled promise rejection occurs on the server (true), or consider such a test failed (false).

Default value: false

Related Configuration File Option: skipUncaughtErrors


Type: Boolean | Object

Description: Defines whether to enable the quarantine mode and specify its options.

Default value: false

Related Configuration File Option: quarantineMode


Type: Boolean

Description: Specifies if tests run in the debug mode. If this option is enabled, test execution is paused before the first action or assertion so that you can invoke the developer tools and debug. In the debug mode, you can execute the test step-by-step to reproduce its incorrect behavior. You can also use the Unlock page switch in the footer to unlock the tested page and interact with its elements.

Default value: false

Related Configuration File Option: debugMode


Type: Boolean

Description: Specifies whether to enter the debug mode when a test fails. If enabled, the test is paused at the moment it fails, so that you can explore the tested page to determine what caused the failure.

Default value: false

Related Configuration File Option: debugOnFail


Type: Number

Description: The maximum Selector query resolution time. See Selector Timeout.

Default value: false

Related Configuration File Option: selectorTimeout


Type: Number

Description: Specifies the time (in milliseconds) within which TestCafe makes attempts to execute an assertion if a selector property or a client function was passed as an actual value. See Smart Assertion Query Mechanism.

Default value: 3000

Related Configuration File Option: assertionTimeout


Type: Number

Description: Specifies the time (in milliseconds) TestCafe waits for the window.load event to fire after the DOMContentLoaded event. After the timeout passes or the window.load event is raised (whichever happens first), TestCafe starts the test. You can set this timeout to 0 to skip waiting for window.load.

Default value: 3000

Related Configuration File Option: pageLoadTimeout


Type: Number

Description: Fetch/XHR request wait time (in milliseconds). If the request doesn’t yield a response within the specified period, TestCafe throws an error.

Default value: 120000

Related Configuration File Option: ajaxRequestTimeout


Type: Number

Description: Time (in milliseconds) to wait for HTML pages. If the page isn’t received within the specified period, an error is thrown.

Default value: 25000

Related Configuration File Option: pageRequestTimeout


Type: Number

Description: Time (in milliseconds) for browsers to connect to TestCafe and report that they are ready to test. If one or more browsers fail to connect within this period, TestCafe throws an error.

Default value: 120000 for local browsers, 360000 for remote browsers.

Related Configuration File Option: browserInitTimeout


Type: Number

Description: Specifies test execution speed. A number between 1 (fastest) and 0.01 (slowest). If an individual action’s speed is also specified, the action speed setting overrides the test speed.

Default value: 1

Related Configuration File Option: speed


Type: Boolean

Description: Stops the test run if a test fails. You can focus on the first error before all the tests finish.

Default value: false

Related Configuration File Option: stopOnFirstFail


Type: Boolean

Description: Prevents the browser from caching page content. When navigation to a cached page occurs in role code, local and session storage content is not preserved. Set disablePageCaching to true to retain the storage items after navigation. For more information, see Troubleshooting: Test Actions Fail After Authentication. You can also disable page caching for an individual fixture or test.

Default value: false

Related Configuration File Option: disablePageCaching


Type: Boolean

Description: Prevents TestCafe from taking screenshots. When this option is specified, screenshots are not taken whenever a test fails or when t.takeScreenshot or t.takeElementScreenshot is executed.

Default value: false

Related Configuration File Option: disableScreenshots


Type: Boolean

Description: Disables support for multi-window testing in Chrome and Firefox. Use this option if you encounter compatibility issues with your existing tests.

Related Configuration File Option: disableMultipleWindows


const createTestCafe = require('testcafe');

const testcafe = await createTestCafe('localhost', 1337, 1338);

try {
    const runner = testcafe.createRunner();

    const failed = await{
        skipJsErrors: true,
        quarantineMode: true,
        selectorTimeout: 50000,
        assertionTimeout: 7000,
        pageLoadTimeout: 8000,
        speed: 0.1,
        stopOnFirstFail: true

    console.log('Tests failed: ' + failed);
finally {
    await testcafe.close();

If a browser stops responding while it executes tests, TestCafe restarts the browser and reruns the current test in a new browser instance. If the same problem occurs with this test two more times, the test run finishes and an error is thrown.


When you use a LiveModeRunner, call the method once. To run multiple live mode sessions simultaneously, create multiple TestCafe server instances.

Cancel Test Tasks

To stop an individual test task, cancel a promise returned by

const taskPromise = runner
    .browsers([remoteConnection, 'chrome'])


You can cancel all pending tasks with the runner.stop method.