Estoy tratando de descargar algunas medidas clave para consolar cuando se ejecuta mi prueba, en lugar de obtenerlas de la salida del reportero, pero no puedo ver cómo tomar el tiempo necesario para ejecutar el último paso. Aquí hay una versión simplificada basada en los documentos de request.timing() pero no creo que lo que estoy haciendo se clasifique como una solicitud:
const { test, expect } = require('@playwright/test'); test('ApplicationLoadTime', async ({ page }) => { // Wait for applications to load await page.waitForSelector('img[alt="Application"]'); // Not working! - get time for step execution const [fir] = await Promise.all([ page.click('text=Further information requested'), page.waitForSelector('img[alt="Application"]') ]); console.log(fir.timing()); });El clic en "Más información solicitada" hace que la página se modifique en función de una llamada AJAX en segundo plano y la aparición de la aplicación img me dice que ha terminado. ¿Es esto posible o debo confiar en los informes en su lugar?
fir no estará undefined en su código ya que page.click() no devuelve nada. Debe esperar la solicitud cuyo tiempo le interesa, use page.waitForEvent('requestfinished') o waitForNavigation :
const { test, expect } = require('@playwright/test'); test('ApplicationLoadTime', async ({ page }) => { // Wait for applications to load await page.waitForSelector('img[alt="Application"]'); const [fir] = await Promise.all([ // Wait for the request page.waitForEvent('requestfinished', r => r.url() == '<url of interest>'), page.click('text=Further information requested'), page.waitForSelector('img[alt="Application"]') ]); console.log(fir.timing()); });