À propos de cet outil
Documentation d’API, rapports de bug et « Copy as cURL » (copier en tant que cURL) du navigateur vous donnent tous une commande curl, mais votre suite de tests a besoin de code. Ce convertisseur analyse la commande comme le ferait un shell (guillemets simples et doubles, chaînes $'…' et continuations de ligne de bash, cmd et PowerShell) et la transforme en test Playwright utilisant la fixture request, en chaîne REST Assured given/when/then, en appel Python requests ou en fetch JavaScript. Il conserve la méthode, l’URL et la query string, les en-têtes, l’auth Basic de -u, les corps JSON, formulaire et bruts, ainsi que les options -k et --max-time. Les options qu’il ne sait pas convertir, comme les uploads multipart (-F) ou les certificats client, sont listées au lieu d’être ignorées en silence : vous savez ce qu’il faut ajouter à la main. Tout s’exécute dans votre navigateur et rien de ce que vous collez n’est envoyé.
Mode d’emploi
- Collez une commande curl dans le panneau de gauche, ou cliquez sur « Load sample » (charger un exemple).
- Choisissez Playwright, REST Assured, Python requests ou fetch. Le code se met à jour pendant la saisie.
- Copiez le code dans votre test, puis remplacez les assertions d’exemple par celles dont votre test a besoin. Pour modifier d’abord la requête, cliquez sur « Edit in cURL generator » (modifier dans le générateur cURL).
Transformer le résultat en vrai test
Le code converti envoie la même requête, mais une requête n’est pas un test tant qu’elle n’affirme rien. Commencez par le statut (await expect(response).toBeOK() dans Playwright, then().statusCode(200) dans REST Assured), puis vérifiez les champs qui prouvent le comportement, pas le corps entier. Les ids, horodatages et tokens changent d’une exécution à l’autre : vérifiez leur type ou leur format plutôt que leur valeur.
Sortez les secrets du code avant de le committer. Une commande copiée depuis un navigateur contient souvent un cookie de session ou un bearer token valide : lisez-le plutôt depuis une variable d’environnement ou une fixture de connexion, et faites tourner le token s’il a été partagé.
Ce qu’ajoute « Copy as cURL », et ce que vous pouvez supprimer
- Les en-têtes du navigateur comme sec-ch-ua, sec-fetch-*, user-agent, accept-language et priority. Les API en ont rarement besoin, et ils rendent le test moins lisible.
- Les en-têtes Cookie contenant votre session. Remplacez-les par une vraie étape d’authentification, comme un storageState Playwright ou une requête de token dans une fixture.
- Referer et Origin. Ne les gardez que si l’API les vérifie, par exemple pour la protection CSRF.
- Les variantes Windows (« Copy as cURL (cmd) » ou « (PowerShell) ») utilisent un échappement différent, et le convertisseur comprend les deux.
FAQ : Convertisseur cURL vers code
Comment convertir curl en test API Playwright ?
Collez la commande et choisissez Playwright. Vous obtenez un test qui utilise la fixture request intégrée : request.post(url, { headers, data }) suivi de expect(response.ok()).toBeTruthy(). Remplacez cela par des assertions sur le statut et les champs qui comptent pour votre test. Il s’exécute avec npx playwright test sans navigateur, donc assez vite pour des vérifications d’API dans la même suite que vos tests UI.
Quelles options curl sont prises en charge ?
-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) et -b (envoyé comme en-tête Cookie), ainsi que l’échappement et les continuations de ligne de bash, cmd et PowerShell. Tout le reste, comme les uploads multipart -F ou --cert, est signalé par un avertissement pour que vous l’ajoutiez à la main.
Pourquoi la requête convertie se comporte-t-elle différemment de curl ?
Le plus souvent à cause des redirections ou des valeurs par défaut. curl ne suit les redirections qu’avec -L, alors que Playwright, REST Assured, Python requests et fetch les suivent par défaut. curl envoie aussi un corps POST comme données de formulaire si vous ne définissez pas Content-Type : vérifiez cet en-tête si l’API rejette la requête convertie.
Ma commande est-elle envoyée à un serveur ?
Non. L’analyse et la génération de code s’exécutent dans votre navigateur, et rien n’est envoyé ni journalisé. Retirez tout de même tokens et cookies avant de coller des commandes dans des rapports de bug ou du code partagés.