Gestión de sesiones en Playwright CLI: múltiples sesiones de navegador, aislamiento, persistencia y limpieza

Basado en la referencia oficial de session-management, este artículo organiza formas comunes de usar sesiones nombradas, aislamiento, perfiles persistentes, uso concurrente y comandos de limpieza en Playwright CLI.

Si usas Playwright CLI para automatización, pronto aparece una pregunta práctica: ¿puedes abrir varias sesiones de navegador al mismo tiempo sin que interfieran entre sí? La respuesta es sí, y Playwright CLI ya hace que este mecanismo sea bastante directo.

Siguiendo la referencia oficial session-management, este artículo se centra en sus piezas más prácticas: sesiones nombradas, aislamiento de sesiones, perfiles persistentes, patrones concurrentes y comandos comunes de limpieza. Se conservan las líneas de comando y las explicaciones de bloques de comandos de la referencia.

01 Sesiones de navegador nombradas

La recomendación oficial es usar el parámetro -s para aislar diferentes contextos de navegador:

1
2
3
4
5
6
7
8
9
# Browser 1: Authentication flow
playwright-cli -s=auth open https://app.example.com/login

# Browser 2: Public browsing (separate cookies, storage)
playwright-cli -s=public open https://example.com

# Commands are isolated by browser session
playwright-cli -s=auth fill e1 "user@example.com"
playwright-cli -s=public snapshot

El punto clave es que distintos nombres de session se asignan a distintos contextos de navegador. Puedes usar auth para el flujo de login y public para navegación anónima, y no compartirán cookies ni estado local.

02 Qué separa el aislamiento de sesiones

Cada sesión de navegador mantiene de forma independiente:

  • Cookies
  • LocalStorage / SessionStorage
  • IndexedDB
  • Caché
  • Historial de navegación
  • Pestañas abiertas

Eso significa que si inicias sesión en un sitio dentro de la sesión auth, no afectará automáticamente a la sesión public. Esto es especialmente importante para pruebas multi-cuenta, verificación de estado de login y comparaciones entre navegación anónima y autenticada.

03 Comandos relacionados con sesiones de navegador

La documentación oficial agrupa los comandos de gestión de sesiones más usados:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# List all browser sessions
playwright-cli list

# Stop a browser session (close the browser)
playwright-cli close                 # stop the default browser
playwright-cli -s=mysession close   # stop a named browser

# Stop all browser sessions
playwright-cli close-all

# Forcefully kill all daemon processes (for stale/zombie processes)
playwright-cli kill-all

# Delete browser session user data (profile directory)
playwright-cli delete-data              # delete default browser data
playwright-cli -s=mysession delete-data # delete named browser data

Puedes pensarlos como tres tipos de operaciones:

  • list: ver qué sesiones existen actualmente
  • close / close-all / kill-all: detener sesiones o limpiar procesos de navegador atascados
  • delete-data: eliminar el directorio de datos de usuario de una sesión concreta

Si solo quieres cerrar un navegador, close suele ser la primera opción. Si ya quedaron procesos residuales, kill-all encaja mejor.

04 Definir una sesión predeterminada con variable de entorno

Si no quieres repetir -s=mysession en cada comando, la documentación oficial también ofrece un enfoque con variable de entorno:

1
2
export PLAYWRIGHT_CLI_SESSION="mysession"
playwright-cli open example.com  # Uses "mysession" automatically

Después de eso, cuando no especifiques -s, el comando usará mysession como sesión de navegador predeterminada.

05 Patrón común: scraping concurrente

La referencia da un ejemplo muy típico de scraping concurrente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/bash
# Scrape multiple sites concurrently

# Start all browsers
playwright-cli -s=site1 open https://site1.com &
playwright-cli -s=site2 open https://site2.com &
playwright-cli -s=site3 open https://site3.com &
wait

# Take snapshots from each
playwright-cli -s=site1 snapshot
playwright-cli -s=site2 snapshot
playwright-cli -s=site3 snapshot

# Cleanup
playwright-cli close-all

Este patrón funciona bien cuando quieres abrir varios sitios a la vez, capturar el estado de cada página y luego limpiarlo todo junto. Como cada sitio corre en una sesión independiente, no contaminan el estado local de los demás.

06 Patrón común: sesiones de A/B testing

Otro escenario común es comparar distintas variantes de experimento al mismo tiempo:

1
2
3
4
5
6
7
# Test different user experiences
playwright-cli -s=variant-a open "https://app.com?variant=a"
playwright-cli -s=variant-b open "https://app.com?variant=b"

# Compare
playwright-cli -s=variant-a screenshot
playwright-cli -s=variant-b screenshot

Este estilo es muy útil para comparaciones A/B de páginas porque las dos variantes se ejecutan en sesiones separadas, haciendo más fácil gestionar capturas y comprobaciones de estado de forma independiente.

07 Persistencia de perfiles de navegador

La documentación oficial señala específicamente que, por defecto, los perfiles de navegador se almacenan solo en memoria.

Si quieres persistir un perfil en disco, añade --persistent al ejecutar open:

1
2
3
4
5
# Use persistent profile (auto-generated location)
playwright-cli open https://example.com --persistent

# Use persistent profile with custom directory
playwright-cli open https://example.com --profile=/path/to/profile

Esta capacidad es útil cuando necesitas reutilizar estado de login, caché local o un entorno de depuración con extensiones durante más tiempo. Al depurar repetidamente el mismo sitio, un perfil persistente suele ser mucho más eficiente que empezar desde cero cada vez.

08 La sesión de navegador predeterminada

Si no se proporciona -s explícitamente, el comando usa la sesión de navegador predeterminada:

1
2
3
4
# These use the same default browser session
playwright-cli open https://example.com
playwright-cli snapshot
playwright-cli close  # Stops default browser

En otras palabras, los comandos sin -s se ejecutan de forma continua dentro de la misma sesión predeterminada.

09 Configuración de arranque relacionada con sesiones

Además del nombre de sesión, la documentación oficial muestra varios patrones comunes de configuración de arranque:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Open with config file
playwright-cli open https://example.com --config=.playwright/my-cli.json

# Open with specific browser
playwright-cli open https://example.com --browser=firefox

# Open in headed mode
playwright-cli open https://example.com --headed

# Open with persistent profile
playwright-cli open https://example.com --persistent

Estos parámetros pueden combinarse con la gestión de sesiones. Por ejemplo, puedes hacer que una sesión nombrada siempre use firefox, o que una sesión concreta arranque siempre en modo headed para inspección manual más cómoda.

10 Buenas prácticas de la documentación oficial

La referencia enumera tres buenas prácticas.

1. Usar nombres de sesión significativos

1
2
3
4
5
6
# GOOD: Clear purpose
playwright-cli -s=github-auth open https://github.com
playwright-cli -s=docs-scrape open https://docs.example.com

# AVOID: Generic names
playwright-cli -s=s1 open https://github.com

Los nombres de sesión deberían comunicar directamente su propósito. Nombres como github-auth y docs-scrape hacen mucho más claro el mantenimiento posterior de scripts.

2. Limpiar puntualmente después de usar

1
2
3
4
5
6
7
8
9
# Stop browsers when done
playwright-cli -s=auth close
playwright-cli -s=scrape close

# Or stop all at once
playwright-cli close-all

# If browsers become unresponsive or zombie processes remain
playwright-cli kill-all

Si no cierras el navegador al terminar una tarea, la sesión y los procesos en segundo plano permanecen. Puede no parecer grave al principio, pero cuando las tareas se acumulan, el entorno se vuelve desordenado rápidamente.

3. Eliminar datos de navegador obsoletos

1
2
# Remove old browser data to free disk space
playwright-cli -s=oldsession delete-data

Cuando algunas sesiones antiguas ya no hacen falta, borrar sus directorios de datos ahorra espacio y también ayuda a evitar reutilizar accidentalmente estado obsoleto.

11 Resumen rápido

Si solo quieres lo esencial, recuerda estos puntos:

  • -s=<name> crea y usa una sesión de navegador independiente
  • Distintas sesiones aíslan cookies, distintos tipos de storage, caché, historial y pestañas
  • close-all sirve para cierre unificado, mientras kill-all ayuda a limpiar procesos anormales
  • --persistent escribe el perfil en disco y es útil para reutilizar estado a largo plazo
  • Los nombres de sesión deberían ser significativos, y los datos antiguos deberían limpiarse regularmente

Si tu flujo ya incluye reutilización de estados de login, trabajo paralelo multi-cuenta, comparaciones A/B o scraping por lotes, entonces session management es una de las partes de Playwright CLI que más vale la pena aprender primero.

Referencias

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy