GuíaBásico
Guía de Testing E2E con Playwright
Aprende testing end-to-end (E2E) a través del navegador con Playwright, en su versión para Python (`pytest-playwright`). E2E es la punta de la pirámide de tests: pocos, más caros de correr, pero prueban el sistema COMPLETO como lo haría un usuario real. Sobre una página mínima de Reservo (elegir sala, tier y horas, cotizar el precio, reservar y ver la confirmación), practicas locators centrados en el usuario (`get_by_role`, `get_by_label`, `get_by_test_id`) en vez de selectores CSS/XPath frágiles, acciones con auto-waiting, y aserciones web-first con `expect()` que reintentan automáticamente hasta un timeout — la técnica que elimina el flakiness de raíz, sin un solo `sleep` fijo. Cubres cómo estructurar una suite con la fixture `page`, `conftest.py` y aislamiento de contexto de navegador por test, cómo manejar UI del mundo real (diálogos, navegación, archivos), y cómo depurar con el trace viewer y el UI mode antes de correr todo en CI. Cierra con un proyecto final: la suite E2E completa del flujo de reservas de Reservo, con casos borde y el pipeline de CI.
- 64
- lecciones
- 8
- módulos
- Inglés · Español
- disponible en
- Sí
- certificado
- Gratis
- acceso
Resultados
Lo que vas a poder hacer
- Entender qué es testing E2E (probar el sistema completo por el navegador, como un usuario real) y su lugar en la pirámide de tests: pocos, caros, valiosos
- Instalar y configurar Playwright para Python (`pytest-playwright`) y escribir el primer test navegando y verificando el título de una página
- Usar locators centrados en el usuario (`get_by_role`, `get_by_label`, `get_by_text`, `get_by_test_id`) en vez de selectores CSS/XPath frágiles, y ejecutar acciones (`click`, `fill`, `select_option`) con auto-waiting
- Escribir aserciones web-first con `expect(locator)` que reintentan automáticamente hasta un timeout, eliminando el flakiness de raíz
- Testear el flujo real de una página: cotizar por sala y tier, validar entradas inválidas, reservar y verificar la confirmación
- Estructurar una suite con la fixture `page`, `conftest.py`, hooks de scope y aislamiento de contexto de navegador por test
- Manejar UI del mundo real (esperas de red y navegación, diálogos, navegación entre páginas, subir archivos) sin recurrir jamás a un `sleep` fijo
- Depurar fallos con el trace viewer y el UI mode, y correr la suite en CI (GitHub Actions) con retries y ejecución en paralelo
- Construir una suite E2E completa del flujo de reservas de Reservo, con casos borde, fixtures organizadas y el pipeline de CI
Antes de empezar
Qué necesitas traer
Es para ti si...
- Devs que ya escriben tests unitarios o de integración con pytest y quieren cubrir el flujo completo de una aplicación web desde el navegador
- Equipos frontend o full-stack que necesitan una suite E2E confiable, sin `sleep`s ni tests que fallan al azar
- Devs migrando desde Selenium u otras herramientas de automatización de navegador hacia Playwright
- QA engineers que quieren automatizar flujos de usuario críticos con locators resistentes a cambios de UI
Requisitos y materiales
- Guía de Fundamentos de Testing y TDD completada (o equivalente: manejo de pytest, fixtures, ejecución de tests)
- Conocimientos básicos de HTML y del DOM (formularios, botones, atributos)
- Python 3.14, `pip`, y capacidad de instalar `playwright` + `pytest-playwright` y descargar el navegador Chromium localmente
Contenido
El temario, módulo por módulo
Abre cualquiera para ver sus lecciones.
- 1. Presentación del módulo: un test E2E maneja el sistema completo
- 2. Qué es E2E y la punta de la pirámide
- 3. E2E vs unitario: cuándo usar cada uno
- 4. Qué es Playwright y el auto-waiting
- 5. Instalar pytest-playwright y Chromium
- 6. La página Reservo y cómo servirla
- 7. El primer test: navegar y afirmar
- 8. Mini-proyecto: tu primer test E2E
- 1. Presentación del módulo: encontrar y actuar, como lo haría un usuario
- 2. Locators centrados en el usuario: `get_by_role` y `get_by_label`
- 3. Por qué NO localizar por CSS o XPath frágil
- 4. Localizar por texto, test id y placeholder
- 5. Acciones: `click`, `fill`, `check`, `select_option`, `press`
- 6. El auto-waiting: por qué NUNCA pones un `sleep`
- 7. Encadenar, filtrar y el strict mode
- 8. Mini-proyecto: localizar y actuar sobre Reservo
- 1. Presentación del módulo: verificar el estado de la página
- 2. Qué es una aserción web-first y `expect(locator)`
- 3. El auto-retry que mata el flakiness
- 4. `to_have_text`, `to_have_value` y `to_be_visible`
- 5. `to_be_enabled`, `to_be_checked` y `to_have_count`
- 6. Aserciones sobre la página y negativas
- 7. El timeout de las aserciones
- 8. Mini-proyecto: afirma el precio de Reservo
- 1. Presentación del módulo: la vuelta completa a la pista
- 2. Servir la página y la fixture de URL base
- 3. El test de cotización: basic → $75.00
- 4. Cambiar sala/plan y el precio recalcula
- 5. El flujo de reservar y la confirmación
- 6. Validación: horas inválidas
- 7. Parametrizar sala × plan × horas
- 8. Mini-proyecto: testea el flujo de Reservo
- 1. Presentación del módulo: la estructura de una suite
- 2. La fixture `page` de `pytest-playwright`
- 3. El `conftest.py` y la fixture del servidor local con `yield`
- 4. El `scope` de una fixture: `function` vs `session`
- 5. El aislamiento: un contexto fresco por test
- 6. Fixtures propias que preparan estado: `booked_page`
- 7. Parametrizar tests con fixtures
- 8. Mini-proyecto: una suite bien estructurada
- 1. Presentación del módulo: la UI del mundo real
- 2. Esperar sin `wait_for_timeout`
- 3. Diálogos del navegador con `page.on("dialog")`
- 4. Navegación entre páginas
- 5. Iframes con `frame_locator`
- 6. Subir un archivo con `set_input_files`
- 7. Flakiness: por qué nunca un `sleep`, y los retries
- 8. Mini-proyecto: maneja un flujo multi-paso
- 1. Presentación del módulo: ver qué pasó y correr sin ti
- 2. El trace viewer y el `trace.zip`
- 3. Screenshots y videos al fallar
- 4. Modo headed, slowmo y PWDEBUG para depurar
- 5. El YAML de GitHub Actions y el headless en CI
- 6. Retries en CI para el flakiness residual
- 7. Paralelo y sharding con pytest-xdist
- 8. Mini-proyecto: depura y corre en CI
- 1. Presentación del módulo: de las piezas al producto
- 2. La página bajo prueba y la fixture `live_server`
- 3. Los tests de cotización
- 4. El flujo de reservar y el diálogo de confirmación
- 5. Casos borde y validación
- 6. Estructura: `conftest.py`, parametrize y aislamiento
- 7. Config, tracing y el workflow de CI
- 8. Proyecto: la suite E2E de Reservo
Dudas frecuentes
Lo que suele preguntarse
Sin límite. Es una guía gratuita: entras cuando quieras, las veces que quieras.
No. Los módulos están ordenados de menos a más, pero puedes saltar al que necesites. Tu progreso se guarda por lección.
Lo que haga falta está en «Qué necesitas traer», arriba. Si no aparece nada ahí, puedes empezar desde cero.
En el grupo de WhatsApp del Club, y cada quince días hay un live con un instructor donde se resuelven dudas en vivo.
Sí. Al terminar todas las lecciones se emite automáticamente, con un código verificable que puedes compartir en LinkedIn.
Empieza cuando quieras
Lo que dicen los estudiantes
Estas reseñas son de estudiantes inscritos que completaron al menos el 50% del curso. Moderamos las reseñas solo por motivos de contenido (spam, lenguaje ofensivo, datos personales), nunca por ser críticas o negativas.
Aún no hay reseñas aprobadas.
¡Sé el primero en compartir tu experiencia!