Playwright es un marco para pruebas y automatización web. Permite probar Chromium, Firefox y WebKit con una única API. Playwright está diseñado para permitir una automatización web en todos los navegadores que sea permanente , capaz , confiable y rápida .
linux | macos | ventanas | |
---|---|---|---|
Cromo 131.0.6778.33 | ✅ | ✅ | ✅ |
WebKit 18.0 | ✅ | ✅ | ✅ |
Firefox 132.0 | ✅ | ✅ | ✅ |
La ejecución sin cabeza es compatible con todos los navegadores en todas las plataformas. Consulte los requisitos del sistema para obtener más detalles.
¿Busca Playwright para Python, .NET o Java?
Playwright tiene su propio ejecutor de pruebas para pruebas de un extremo a otro, lo llamamos Playwright Test.
La forma más sencilla de comenzar con Playwright Test es ejecutar el comando init.
# Run from your project's root directory
npm init playwright@latest
# Or create a new project
npm init playwright@latest new-project
Esto creará un archivo de configuración, opcionalmente agregará ejemplos, un flujo de trabajo de GitHub Action y una primera prueba example.spec.ts. Ahora puede saltar directamente a la sección de redacción de afirmaciones.
Agregue dependencia e instale navegadores.
npm i -D @playwright/test
# install supported browsers
npx playwright install
Opcionalmente, puede instalar solo navegadores seleccionados; consulte instalación de navegadores para obtener más detalles. O puede no instalar ningún navegador y utilizar los canales de navegador existentes.
Espera automática . El dramaturgo espera que los elementos sean procesables antes de realizar acciones. También tiene un rico conjunto de eventos de introspección. La combinación de los dos elimina la necesidad de tiempos de espera artificiales, una de las principales causas de las pruebas inestables.
"Afirmaciones basadas en la web" . Las afirmaciones de los dramaturgos se crean específicamente para la web dinámica. Las comprobaciones se reintentan automáticamente hasta que se cumplan las condiciones necesarias.
Rastreo . Configure la estrategia de reintento de prueba, capture el seguimiento de ejecución, videos y capturas de pantalla para eliminar fallas.
Los navegadores ejecutan contenido web que pertenece a diferentes orígenes en diferentes procesos. Playwright está alineado con la arquitectura de los navegadores modernos y ejecuta pruebas fuera de proceso. Esto libera a Playwright de las limitaciones típicas de los ejecutores de pruebas durante el proceso.
Múltiples de todo . Pruebe escenarios que abarcan múltiples pestañas, múltiples orígenes y múltiples usuarios. Cree escenarios con diferentes contextos para diferentes usuarios y ejecútelos en su servidor, todo en una sola prueba.
Eventos de confianza . Coloque el cursor sobre elementos, interactúe con controles dinámicos y produzca eventos confiables. Playwright utiliza un canal de entrada de navegador real que no se puede distinguir del usuario real.
Marcos de prueba, perforar Shadow DOM. Los selectores de dramaturgos perforan el DOM de sombra y permiten ingresar fotogramas sin problemas.
Contextos del navegador . Playwright crea un contexto de navegador para cada prueba. El contexto del navegador equivale a un perfil de navegador completamente nuevo. Esto ofrece un aislamiento de prueba completo sin gastos generales. Crear un nuevo contexto de navegador solo lleva unos pocos milisegundos.
Inicie sesión una vez . Guarde el estado de autenticación del contexto y reutilícelo en todas las pruebas. Esto evita las operaciones de inicio de sesión repetitivas en cada prueba, pero ofrece un aislamiento total de las pruebas independientes.
Codegen . Genera pruebas registrando tus acciones. Guárdalos en cualquier idioma.
Inspectora de dramaturgos . Inspeccione la página, genere selectores, recorra la ejecución de la prueba, vea los puntos de clic y explore los registros de ejecución.
Visor de seguimiento . Capture toda la información para investigar el error de la prueba. Playwright trace contiene screencast de ejecución de prueba, instantáneas de DOM en vivo, explorador de acciones, fuente de prueba y mucho más.
¿Busca dramaturgo para TypeScript, JavaScript, Python, .NET o Java?
Para aprender cómo ejecutar estos ejemplos de Playwright Test, consulte nuestros documentos de introducción.
Este fragmento de código navega a la página de inicio de Playwright y guarda una captura de pantalla.
import { test } from '@playwright/test' ;
test ( 'Page Screenshot' , async ( { page } ) => {
await page . goto ( 'https://playwright.dev/' ) ;
await page . screenshot ( { path : `example.png` } ) ;
} ) ;
Este fragmento emula Mobile Safari en un dispositivo en una ubicación geográfica determinada, navega a maps.google.com, realiza la acción y toma una captura de pantalla.
import { test , devices } from '@playwright/test' ;
test . use ( {
... devices [ 'iPhone 13 Pro' ] ,
locale : 'en-US' ,
geolocation : { longitude : 12.492507 , latitude : 41.889938 } ,
permissions : [ 'geolocation' ] ,
} )
test ( 'Mobile and geolocation' , async ( { page } ) => {
await page . goto ( 'https://maps.google.com' ) ;
await page . getByText ( 'Your location' ) . click ( ) ;
await page . waitForRequest ( / .*preview/pwa / ) ;
await page . screenshot ( { path : 'colosseum-iphone.png' } ) ;
} ) ;
Este fragmento de código navega a example.com y ejecuta un script en el contexto de la página.
import { test } from '@playwright/test' ;
test ( 'Evaluate in browser context' , async ( { page } ) => {
await page . goto ( 'https://www.example.com/' ) ;
const dimensions = await page . evaluate ( ( ) => {
return {
width : document . documentElement . clientWidth ,
height : document . documentElement . clientHeight ,
deviceScaleFactor : window . devicePixelRatio
}
} ) ;
console . log ( dimensions ) ;
} ) ;
Este fragmento de código configura el enrutamiento de solicitudes para que una página registre todas las solicitudes de red.
import { test } from '@playwright/test' ;
test ( 'Intercept network requests' , async ( { page } ) => {
// Log and continue all network requests
await page . route ( '**' , route => {
console . log ( route . request ( ) . url ( ) ) ;
route . continue ( ) ;
} ) ;
await page . goto ( 'http://todomvc.com' ) ;
} ) ;