Recientemente comencé a escribir algunas pruebas usando jest y necesito ejecutar un código en un navegador real, así que decidí usar jest-puppeteer
, el problema que tengo con el paquete es que cuando usamos jsdom tenemos acceso a globalThis que tiene todo lo que tiene un navegador, es decir, el código ejecutado en un contexto de pseudo-navegador, que es aceptado.
// example.test.js /** * @jest-environment jsdom */ test('something', () => { expect(navigator.vendor).toBeDefined() // Will Pass Successfully })
pero cuando usamos jest-puppeteer
no tenemos un efecto similar.
// example.test.js /** * @jest-environment puppeteer */ test('something', () => { expect(navigator.vendor).toBeDefined() // Will Fail })
ofrece browser
, page
y context
para usar, lo que anula la razón por la que usamos el navegador real para probar en primer lugar porque no tenemos acceso directo al contexto del navegador y, si necesitáramos probar algún código sin HTML, debe serializar e inyectar el código que pierde todas las buenas características de broma, como cobertura y burla, no actúa como lo que tenemos con el entorno jsdom
. no importa cuán similar sea jsdom al navegador real, el resultado de las pruebas puede ser diferente en algunas situaciones.