Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

266
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!