Tengo una prueba de monitoreo sintético que ha estado funcionando bien. Agregué un código para bloquear el seguimiento de anuncios de terceros y los scripts analíticos para acelerar las pruebas (y no sesgar los análisis), como se recomienda aquí: https://scrapingant.com/blog/block-requests-playwright .
En la parte superior de cada prueba tengo esto:
await page.route('**/*', filterResources) Y el método filterResources se define de la siguiente manera:
const DOMAIN_EXCLUSIONS = [ 'connect.facebook.net', 'px.ads.linkedin.com', [...] ] module.exports = (route) => { let matches = DOMAIN_EXCLUSIONS.filter((domain) => { return route.request().url().startsWith('https://' + domain) }) return matches.length ? route.abort() : route.continue() }Ahora, ocasionalmente, se lanzará el siguiente error y la prueba falla:
route.continue: Target page, context or browser has been closedEsto puede suceder en uno cada 6-8 ejecuciones.
¿Se debe a que la página se aleja mientras algunas solicitudes aún están pendientes, porque Playwright cree que la página ya está completamente cargada? Estoy usando las esperas adecuadas y la prueba funcionaba bien antes.
Estoy capturando y resolviendo la promesa ahora, y el problema ya no parece suceder:
if (matches.length) { return route.abort() } return route.continue().catch(() => {})