Acerca de esta herramienta
La documentación de APIs, los reportes de bugs y el «Copy as cURL» del navegador te dan un comando curl, pero tu suite de tests necesita código. Este conversor analiza el comando como lo haría una shell (comillas simples y dobles, cadenas $'…' y continuaciones de línea de bash, cmd y PowerShell) y lo convierte en un test de Playwright con el fixture request, una cadena given/when/then de REST Assured, una llamada de Python requests o un fetch de JavaScript. Conserva el método, la URL y la query string, las cabeceras, la autenticación Basic de -u, los bodies JSON, de formulario y en bruto, y las opciones -k y --max-time. Las opciones que no puede convertir, como las subidas multipart (-F) o los certificados de cliente, se enumeran en lugar de descartarse en silencio, para que sepas qué añadir a mano. Todo se ejecuta en tu navegador y nada de lo que pegas se envía a ningún sitio.
Cómo usarla
- Pega un comando curl en el panel izquierdo o pulsa “Load sample”.
- Elige Playwright, REST Assured, Python requests o fetch. El código se actualiza mientras escribes.
- Copia el código en tu test y sustituye las assertions de ejemplo por las que necesite tu test. Para modificar antes la petición, pulsa “Edit in cURL generator”.
Convertir la salida en un test de verdad
El código convertido envía la misma petición, pero una petición no es un test hasta que comprueba algo. Empieza por el estado (await expect(response).toBeOK() en Playwright, then().statusCode(200) en REST Assured) y después comprueba los campos que demuestran el comportamiento, no el body completo. Los ids, las marcas de tiempo y los tokens cambian entre ejecuciones, así que verifica su tipo o formato en lugar de su valor.
Saca los secretos del código antes de hacer commit. Un comando copiado del navegador suele contener una cookie de sesión o un bearer token vigentes: léelos de una variable de entorno o de un fixture de login, y rota el token si se ha compartido.
Qué añade «Copy as cURL» y qué puedes borrar
- Cabeceras del navegador como sec-ch-ua, sec-fetch-*, user-agent, accept-language y priority. Las APIs rara vez las necesitan y hacen el test más difícil de leer.
- Cabeceras Cookie con tu sesión. Sustitúyelas por un paso de autenticación adecuado, como un storageState de Playwright o una petición de token en un fixture.
- Referer y Origin. Mantenlas solo si la API las comprueba, por ejemplo como protección CSRF.
- Las variantes de Windows («Copy as cURL (cmd)» o «(PowerShell)») usan comillas distintas, y el conversor entiende ambas.
Preguntas frecuentes: Conversor de cURL a código
¿Cómo convierto curl en un test de API de Playwright?
Pega el comando y elige Playwright. La salida es un test que usa el fixture request integrado: request.post(url, { headers, data }) seguido de expect(response.ok()).toBeTruthy(). Sustitúyelo por assertions sobre el estado y los campos que le importan a tu test. Se ejecuta con npx playwright test y no necesita navegador, así que es lo bastante rápido para comprobaciones de API en la misma suite que tus tests de UI.
¿Qué opciones de curl son compatibles?
-X, -H, -d, --data, --data-raw, --data-binary, --data-urlencode, --json, -u, -G, -I, -i, -L, -k, --compressed, --max-time, -A (user agent), -e (referer) y -b (enviada como cabecera Cookie), además de las comillas y continuaciones de línea de bash, cmd y PowerShell. Todo lo demás, como las subidas multipart con -F o --cert, aparece como aviso para que lo añadas a mano.
¿Por qué la petición convertida se comporta distinto que curl?
Normalmente por las redirecciones o los valores por defecto. curl solo sigue redirecciones con -L, mientras que Playwright, REST Assured, Python requests y fetch las siguen por defecto. Además, curl envía un body POST como datos de formulario salvo que definas Content-Type, así que revisa esa cabecera si la API rechaza la petición convertida.
¿Se envía mi comando a un servidor?
No. El análisis y la generación de código se ejecutan en tu navegador, y no se sube ni se registra nada. Aun así, elimina tokens y cookies antes de pegar comandos en reportes de bugs o código compartidos.