Búsqueda de sitios web

¿Cómo implementar métodos basados en datos en Playwright usando Playwright/Test con TypeScript?


¿Cómo implementar métodos basados en datos en Playwright usando Playwright/Test con TypeScript? ¿Cómo se obtiene datos externos (Excel o CSV) en el script y se realizan múltiples iteraciones con diferentes conjuntos de datos?

Respuesta #1

Ejemplo completo de código basado en datos:

1). Primero cree un CSV con los datos requeridos:

"test_case","Name","Age"
"TC1","John","46"
"TC2","Chris","28"

2). Luego léelo en tu archivo de prueba usando la biblioteca CSV:

   import fs from 'fs';
    import path from 'path';
    import { parse } from 'csv-parse/sync';
    
    const csvFilePath = path.join(__dirname, 'input.csv');
    const csvData = fs.readFileSync(csvFilePath, 'utf8');
    const testData = parse(csvData, { columns: true });
    
    // Now testData contains an array of test data representing each row in the CSV.

import { test } from '@playwright/test';

for (const row of testData) {
  test(`Test case: ${row.test_case}`, async ({ page }) => {
    // Use the data from the CSV file
    console.log(`Name of User=> ${row.Name}`)
    console.log(`Age of User=> ${row.Age}`)
  });
}

Para leer más:

https://playwright.dev/docs/test-parameterize

https://github.com/microsoft/playwright/issues/7036#issuecomment-925164212

¿Cómo pasar diferentes datos de prueba a una prueba en el ejecutor de pruebas de Playwright?

Respuesta #2

Según la documentación de Playwright sobre pruebas parametrizadas (DDT), esta es la manera oficial:

const names = ["foo", "bar"];
for (const name of names) {
  test(`testing with ${name}`, async ({ page }) => {
    await page.goto("/");
    console.log(name);
  });
}

Al ejecutar esta prueba, se ejecutará dos veces y aparecerá en el registro como dos pruebas.