Lo que las pruebas de API con Playwright hacen bien
Un contexto de peticiones de primera clase. Las llamadas a la API no necesitan una página del navegador, así que las comprobaciones se ejecutan a la velocidad de una petición.
Estado autenticado reutilizable. Inicias sesión una vez, guardas el estado y lo reutilizas en todas las pruebas. Es la mayor mejora práctica frente a los frameworks más antiguos.
El mismo runner para ambas capas. Un único reporter, un único job de CI, una única forma de ejecutar las cosas. Se infravalora hasta que eres tú quien lo mantiene.
Para un equipo que ya vive dentro de Playwright y necesita una cobertura de API moderada, es un sitio realmente cómodo donde estar.
Dónde deja de ayudarte
El estado guardado se queda obsoleto
La autenticación guardada es una foto fija. Los tokens expiran, y la lógica de refresco te toca escribirla y mantenerla a ti.
Dependencias de datos
Qué prueba crea el registro que otra necesita, y qué pasa cuando la primera falla.
Codificado a mano en forma de fixtures, orden de ejecución y skips.
Limpieza bajo concurrencia
Playwright ejecuta las pruebas en paralelo por diseño, lo que vuelve insegura la limpieza basada en patrones.
La limpieza tiene que estar atada a lo que creó cada ejecución.
Nada de esto es un defecto del framework. Son las partes de las pruebas de API que ningún runner resuelve por ti, y también la mayor parte del costo a largo plazo.
Una cobertura moldeada por lo que se te ocurrió
El problema más silencioso es que una suite escrita a mano cubre los endpoints que alguien recordó. Los códigos de error, los valores límite y los parámetros que casi nunca se usan son justo los casos que se rompen, y justo los que nadie escribe a las once de la noche.
Generar la cobertura a partir de una especificación o de un barrido de descubrimiento sobre el servicio en ejecución cambia la forma de lo que cubres, y eso pesa más que la ergonomía de cualquier aserción concreta.
De qué se encarga una capa creada para esto
Cuatro cosas deciden si una suite de API sobrevive a su primer año, sea cual sea la herramienta que uses: sesiones que expiran, valores que solo existen en tiempo de ejecución, llamadas que dependen unas de otras y registros que nadie limpia. TestSprite las llama Auto-Authentication, Dynamic Variables, Dependency Chains y Auto-Cleanup, y la documentación de pruebas de API explica el funcionamiento.
Lo que el storage state no resiste
Reutilizar el storage state autenticado es la mayor ganancia de ergonomía que ofrece Playwright para el trabajo con APIs, y tiene tres aristas que conviene conocer antes de construir sobre ella.
Un estado guardado es una foto fija, así que todo lo que tenga una vida corta de token expirará a mitad de la ejecución y producirá fallos idénticos a los de un error de autorización. Un estado guardado pertenece además a un solo usuario, así que cualquier prueba que necesite una segunda cuenta para comprobar permisos tiene que montarla aparte. Y un estado guardado captura el entorno contra el que se creó, lo que significa que apuntar la suite a staging con un archivo de estado generado en local produce una clase de fallo muy confusa.
Nada de esto es motivo para evitarlo. Son los motivos por los que un proyecto acaba desarrollando un pequeño módulo para gestionar archivos de estado por usuario y por entorno, que es justo el punto en el que has empezado a construir aquello que intentabas no construir.
Ejecutarlos juntos
Quédate con Playwright para los flujos de navegador y para las comprobaciones entre capas en las que de verdad necesitas los dos lados en una misma prueba. Deja que la cobertura generada se encargue de la amplitud sobre toda la superficie de la API. Ambos se ejecutan desde el mismo pipeline sin saber el uno del otro.
La GitHub App es un webhook que configuras en el panel de TestSprite. Escucha el evento de despliegue que tu pipeline ya produce, así que nada cambia en tu repositorio.
GitHub Actions coloca el paso dentro de tu propio workflow, configurado desde la terminal. Los comandos actuales están en el repositorio del CLI.
Dónde toma el relevo TestSprite
Playwright se queda con los flujos de navegador y las pruebas entre capas. TestSprite asume la amplitud y el manejo del estado, que son las partes que siguen siendo tuyas por muy bueno que sea el contexto de peticiones.
En concreto, eso significa Auto-Authentication en lugar de un módulo de storage state que mantienes por usuario y por entorno, Dependency Chains en lugar de fixtures y convenciones de orden, y Auto-Cleanup atada a cada ejecución en lugar de un borrado por prefijos que tiene que ser seguro en paralelo. La cobertura sale de tu especificación y del servicio en ejecución, no de lo que alguien se acordó de escribir.
El resultado es que ese medio día de código auxiliar nunca tiene que convertirse en la responsabilidad permanente de nadie, que siempre fue el costo real, más que escribirlo.
¿Playwright basta por sí solo para las pruebas de API?
Para una superficie moderada y con un equipo que la mantenga, sí. La pregunta es si quieres hacerte cargo del refresco de sesiones, del orden de las dependencias y de una limpieza segura bajo concurrencia, porque vienen incluidos en el paquete.
¿El storage state resuelve la autenticación?
Resuelve la repetición, no la expiración. Un estado guardado es una foto fija y algo tiene que seguir refrescándolo.
¿Pueden ambas suites compartir credenciales?
Comparte el origen, no la sesión. Que cada capa obtenga su propia sesión evita que un fallo en una se propague a la otra.
¿Y las pruebas de contrato?
Otro instrumento. Las pruebas de contrato verifican que dos servicios coinciden en un esquema; esto verifica que el servicio en ejecución se comporta correctamente.
¿La cobertura generada duplicará nuestras pruebas?
Algo de solapamiento está bien y sale barato. Apunta la capa generada a la amplitud y reserva las pruebas escritas a mano para los flujos que especificaste a propósito.
Gran ergonomía, el mismo problema de estado.
Las pruebas de API con Playwright eliminan casi toda la fricción que tienen otros frameworks. Lo que queda es la vida útil de las sesiones, las dependencias de datos y la limpieza segura bajo concurrencia, además de una cobertura limitada a lo que alguien se acordó de escribir. Quédate con Playwright para los flujos y deja que una capa creada para esto cargue con la amplitud.