Saltar al contenido
Buscar
Ver todo el radar
Playwright 1.63

Playwright 1.63: locks entre tests y locators que cruzan frames

Locks para tests que comparten un recurso, locators que buscan en cualquier frame y snapshots de aria en el trace viewer. Repasamos qué trae esta versión para tu suite.

Locks nombrados para tests que comparten recursos

Si tenés tests que tocan un servicio externo o una config global, ahora podés declarar un lock con nombre en la opción del test. Los tests que comparten un lock nunca corren al mismo tiempo, sin importar en qué archivo, worker o proyecto estén, mientras el resto sigue en paralelo. Un test puede tener varios locks, y test.describe() acepta un lock para todo el grupo.

javascript
test('update user settings', { lock: 'user-settings' }, async ({ page }) => {
// never runs at the same time as other tests holding 'user-settings'
});

frameLocator() sin selector busca en todos los frames

Cuando llamás a page.frameLocator() o frame.frameLocator() sin pasarle un selector, la búsqueda se hace en cualquier frame del subárbol. Ya no necesitás ubicar primero el iframe para después buscar el elemento adentro. El resto del locator se resuelve dentro de un único frame, y si matchea elementos en varios frames tira error.

javascript
// Finds the button in any frame on the page.
await page.frameLocator().getByRole('button').click();

locator.visible() reemplaza a :visible

El nuevo método locator.visible() devuelve un locator que solo matchea elementos visibles. Es el reemplazo recomendado para el pseudo-selector CSS :visible.

javascript
await page.locator('button').visible().click();

Subtítulos y params en los steps

Los steps ahora llevan datos estructurados para los reporters. Los steps de la API de Playwright reportan el locator objetivo y los argumentos del call, y test.step() acepta las opciones subtitle y params para tus propios steps. Los reporters reciben esa info vía testStep.subtitle y testStep.params, y se muestran junto al título del step en el trace viewer y el reporte HTML.

javascript
await test.step('Login', async () => {
// ...
}, { subtitle: 'as admin', params: { user: 'admin' } });

Snapshots de aria y pantalla en el trace

La opción snapshots de tracing.start() y de la fixture testOptions.trace ahora acepta un objeto para elegir qué capturar en cada acción: dom, aria y screen. Con los snapshots de aria y screen grabados, el nuevo modo Display Aria del trace viewer muestra el screenshot de la acción al lado del snapshot de aria, y al pasar el mouse sobre un nodo aria se resalta en el screenshot.

typescript
// playwright.config.ts
export default defineConfig({
use: {
trace: {
mode: 'on',
snapshots: { dom: true, aria: true, screen: true }
},
},
});

Otras novedades

httpCredentials acepta ahora un array de credenciales, con la primera que matchee el origin. Se agregaron los eventos dialogclosed en page y context, y una opción opfs para persistir el origin private file system en el storage state. En el test runner sumaron --add-reporter para agregar un reporter sin reemplazar los configurados, un reporter perfetto para timelines por worker, y opciones nuevas como reducedMotion, forcedColors y contrast. Los paquetes experimentales @playwright/experimental-ct-react, ct-react17 y ct-vue dejan de actualizarse, y Ubuntu 20.04 ya no está soportado.

Qué te llevas

  • Los test locks resuelven el caso de tests que pisan un recurso compartido sin sacrificar el paralelismo del resto de la suite.

  • frameLocator() sin selector y locator.visible() simplifican dos patrones comunes que antes requerían más código.

  • Los steps con subtitle y params, más los snapshots de aria en el trace, mejoran lo que ves al debuggear un fallo.

  • Si usás los paquetes experimental-ct-*, hay que migrar al modelo de stories introducido en 1.62.

Este resumen lo escribimos a partir de las notas oficiales del release. Lo que no estaba ahí, no está acá.

Anuncio original de Playwright

¿Quieres una clase de esto?

Si varias personas lo piden, entra al programa. No hace falta dejar mail ni nombre.