Create Data-Driven Tests

Data-driven testing is a procedure when you repeat the same test scenario with different input parameters and then verify the result with the given output values. This example shows how to create a data-driven test case.

Full Example Code

Assume you have a data.json file with data objects (test cases) that consist of two input values (name and comment) and a value that specifies the expected result (resultText).

        "name": "John Heart",
        "comment": "I love TestCafe!",
        "resultText": "Thank you, John Heart!"
        "name": "Olivia Peyton",
        "comment": "TestCafe is awesome!",
        "resultText": "Thank you, Olivia Peyton!"

To create data-driven tests, iterate through the test cases, call the test method at each iteration and write test actions and assertions that use test case parameters.

import { Selector } from 'testcafe';

const dataSet = require('./data.json');

fixture `Data-Driven Tests`
    .page ``;

dataSet.forEach(data => {
    test(`Enter '${}'`, async t => {
        await t
            .typeText('#comments', data.comment)


You can store test cases in objects, arrays, Maps, Sets, etc., and iterate through them as you need. You can place them in a test file or import from .json, .js, .ts, etc.

A test case can include multiple tests:

dataSet.forEach(data => {
    test(`Check one thing`, async t => {
        // ...

    test(`Check something else`, async t => {
        // ...

You can also introduce conditional actions that depend on test case parameters: