Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

300
Vistas
Nodo: ejecuta el comando de forma asíncrona y lee los resultados al finalizar

Tengo un conjunto de pruebas escritas con Playwright . Estoy tratando de ejecutar estas pruebas desde un conjunto de pruebas separado. En este conjunto separado de pruebas, necesito examinar los resultados de los resultados originales. Esto me lleva a la siguiente estructura de directorios:

 / /checks checks1.spec.js /tests tests1.spec.js tests2.spec.js playwright.config.js

Mis archivos se ven así:

dramaturgo.config.js

 // @ts-check const { devices } = require('@playwright/test'); /** * @see https://playwright.dev/docs/test-configuration * @type {import('@playwright/test').PlaywrightTestConfig} */ const config = { testDir: '.', timeout: 30 * 1000, expect: { timeout: 5000 }, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: [ ['html', { outputFolder: 'reports' } ] ], use: { actionTimeout: 0, trace: 'on-first-retry', }, /* Configure projects for major browsers */ projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'], }, } ] }; module.exports = config;

pruebas1.spec.js

 const { test, expect } = require('@playwright/test'); test.describe('Field Tests', () => { test('Should be required', async({ page }) => { await page.goto('http://localhost:8080'); await expect(true).toBe(true); }); });

controles1.spec.js

 const { exec } = require('child_process'); const { test, expect } = require('@playwright/test'); const command = 'npx playwright test --reporter=json ./tests/tests1.spec.js'; test.describe('Field', () => { test(`Require state`, async () => { const { stdout, stderr } = await exec(command); // Execute the test and get the results const buffer = child_process.execSync(command); const json = JSON.parse(buffer.toString()); const results = json.suites[0].suites[0].specs; const status = results[0].tests[0].results[0].status; expect(status).toBe('passed'); }); });

Cuando ejecuto npx playwright test --reporter=json ./tests/test1.spec.js , recibo el resultado JSON como esperaba. Sin embargo, cuando ejecuto verificaciones de npx playwright test checks , recibo un Socket en lugar del JSON. ¿Cómo ejecuto el command y espero a que se devuelva el JSON? Gracias.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No está claro por qué está ejecutando el comando tour dos veces (una con la palabra clave await y otra con la función execSync ). Sin embargo, se puede resolver usando eventos:

 test.describe('Field', () => { test(`Require state`, async () => { const process = await exec(command); process.stdout.on('data', data => { // do something with the data here }) process.on('exit', () => { // final checks (eg - expect) go here }) }); });

Si lo desea, puede crear un asistente que devolverá el resultado de la ejecución como promesa, por lo tanto, admita las palabras clave await + async

 async cmd(command) { return new Promise((resolve, reject) => { const process = await exec(command); let result = data process.stdout.on('data', data => { result = data // any other format manipulations should be added here }) process.stderr.on('data', reject) process.on('exit', () => resolve(result)) }) }

Luego, en algún lugar de su código, simplemente use:

 const result = await cmd('your command goes here')
over 4 years ago · Santiago Trujillo Denunciar

0

Según la pregunta, creo que primero desea ejecutar el playwright para la carpeta de tests y luego esperar a que se genere el JSON. Y, después de generar el JSON, le gustaría ejecutar playwright para la carpeta de checks .

Para esto, simplemente puede dividir su comando en dos partes de la siguiente manera:

  1. npx playwright tests --reporter=json
  2. npx playwright checks

Y luego ejecútelos como un comando usando el operador && de la siguiente manera: npx playwright tests --reporter=json && npx playwright checks .

De esta forma, las pruebas se ejecutan primero, el JSON se generaría al final de la prueba. Y después de generar JSON, se ejecutarían las comprobaciones.

Explicación:

  • En su comando, estaba ejecutando verificaciones de npx playwright test checks , ya que playwrite genera el informe al final de la ejecución (para consolidar todos los resultados), el JSON se generará después de que se complete la ejecución de la carpeta de check .
  • Por lo tanto, simplemente dividimos ese comando en 2. Primero generaremos un informe JSON para tests y luego ejecutaremos las checks .
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda