Sobre esta ferramenta
Documentação de API, relatórios de bug e o “Copy as cURL” do navegador entregam um comando curl, mas a sua suíte de testes precisa de código. Este conversor interpreta o comando como um shell faria (aspas simples e duplas, strings $'…' e continuações de linha do bash, cmd e PowerShell) e o transforma em um teste Playwright usando a fixture request, uma cadeia given/when/then do REST Assured, uma chamada Python requests ou JavaScript fetch. Ele mantém o método, a URL e a query string, os headers, a autenticação Basic de -u, bodies JSON, de formulário e brutos, e as opções -k e --max-time. Opções que não consegue converter, como uploads multipart (-F) ou certificados de cliente, são listadas em vez de descartadas silenciosamente, para você saber o que adicionar à mão. Tudo roda no seu navegador e nada do que você cola é enviado.
Como usar
- Cole um comando curl no painel da esquerda ou clique em “Load sample”.
- Escolha Playwright, REST Assured, Python requests ou fetch. O código é atualizado enquanto você digita.
- Copie o código para o seu teste e substitua as assertions de exemplo pelas que o teste precisa. Para alterar a requisição antes, clique em “Edit in cURL generator”.
Transformando a saída em um teste de verdade
O código convertido envia a mesma requisição, mas uma requisição só vira teste quando valida algo. Comece pelo status (await expect(response).toBeOK() no Playwright, then().statusCode(200) no REST Assured) e depois valide os campos que comprovam o comportamento, não o body inteiro. Ids, timestamps e tokens mudam entre execuções, então verifique o tipo ou o formato em vez do valor.
Tire os segredos do código antes de fazer commit. Um comando copiado do navegador muitas vezes contém um cookie de sessão ou bearer token ativo: leia-o de uma variável de ambiente ou de uma fixture de login e rotacione o token se ele tiver sido compartilhado.
O que o “Copy as cURL” adiciona e o que você pode apagar
- Headers do navegador como sec-ch-ua, sec-fetch-*, user-agent, accept-language e priority. APIs raramente precisam deles, e eles deixam o teste mais difícil de ler.
- Headers Cookie com a sua sessão. Substitua-os por uma etapa de autenticação adequada, como um storageState do Playwright ou uma requisição de token em uma fixture.
- Referer e Origin. Mantenha-os apenas se a API os verificar, por exemplo para proteção contra CSRF.
- As variantes do Windows (“Copy as cURL (cmd)” ou “(PowerShell)”) usam aspas diferentes, e o conversor entende as duas.
Perguntas frequentes: Conversor de cURL para código
Como converter curl em um teste de API no Playwright?
Cole o comando e escolha Playwright. A saída é um teste que usa a fixture request nativa: request.post(url, { headers, data }) seguido de expect(response.ok()).toBeTruthy(). Substitua isso por assertions sobre o status e os campos que importam para o teste. Ele roda com npx playwright test e não precisa de navegador, então é rápido o bastante para checagens de API na mesma suíte dos testes de UI.
Quais opções do curl são suportadas?
-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) e -b (enviado como header Cookie), além de aspas e continuações de linha para bash, cmd e PowerShell. Qualquer outra, como uploads multipart com -F ou --cert, é listada como aviso para você adicionar à mão.
Por que a requisição convertida se comporta diferente do curl?
Geralmente por causa de redirecionamentos ou valores padrão. O curl só segue redirecionamentos com -L, enquanto Playwright, REST Assured, Python requests e fetch os seguem por padrão. O curl também envia um body POST como dados de formulário se você não definir Content-Type, então confira esse header se a API rejeitar a requisição convertida.
Meu comando é enviado para algum servidor?
Não. O parse e a geração de código rodam no seu navegador, e nada é enviado ou registrado. Mesmo assim, remova tokens e cookies antes de colar comandos em relatórios de bug ou código compartilhados.