1

I am trying to run Parametrized Playwright tests created with Node.js in Parallel.
SRC: https://playwright.dev/docs/test-parameterize
SRC: https://playwright.dev/docs/test-parallel

However, when I combine the two, the test cases run sequentially. Can the parametrised tests be executed in parallel in Playwright (Node.js)?

import fs from 'fs';
import path from 'path';
import { test } from '@playwright/test';
import { parse } from 'csv-parse/sync';

 const records = parse(fs.readFileSync(path.join(__dirname, 
 'input.csv')), {
 columns: true,
 skip_empty_lines: true
});

for (const record of records) {
test(`foo: ${record.test_case}`, async ({ page }) => {
console.log(record.test_case, record.some_value, 
record.some_other_value);
// Test Case Goes Here.
});
}
SKR
  • 779
  • 4
  • 17
  • 31

1 Answers1

1

As default, tests in a single file are run sequentially (source). Add this line to your playwright.config to achieve parallell run of same file tests:

fullyParallel: true

Demonstrated by doing the following:

const records = ['a', 'b', 'c']
for(const record of records){
    test('record ' + record, async({page})=>{
        // Printing timestamp
        console.log(`Record ${record} ${new Date().getTime()}`)
    })
}

When fullyParallell is true, all 3 tests are ran in parallell (identical timestamp). Remember to set number of workers > 1 in config file. My current config file:

import {defineConfig, devices} from '@playwright/test'
import * as dotenv from 'dotenv'
export default defineConfig({
    testDir: './tests',
    timeout: 5 * 1000,
    expect: {
        timeout: 5000
    },
    fullyParallel: true,
    workers: 10,
    forbidOnly: !!process.env.CI,
    retries: process.env.CI ? 4 : 0,
    reporter: 'list',
    use: {
        actionTimeout: 0,
        trace: 'retain-on-failure'
    },
    projects: [
        {
            name: 'chrome web',
            use: {
                ...devices['Desktop Chrome']
            }
        }
    ]
})
candre
  • 593
  • 3
  • 8