DEV Community

Cover image for Como Executar Coleções Postman em CI Sem Newman
Lucas
Lucas

Posted on • Originally published at apidog.com

Como Executar Coleções Postman em CI Sem Newman

Em resumo

Newman, o executor CLI oficial do Postman, requer npm e Node.js em pipelines de CI, aumentando riscos na cadeia de suprimentos e sobrecarga de dependências. Além disso, o Postman impõe limites de execução via API no plano gratuito. Este guia mostra como executar testes de API em CI sem Newman, usando três alternativas: o executor CLI do Apidog, k6 e Hurl. Se você já possui coleções Postman, o Apidog é o caminho mais direto, pois importa coleções nativamente e não impõe limites de execução.

Experimente o Apidog hoje

💡 Apidog é uma plataforma gratuita e completa para desenvolvimento de APIs. Seu executor CLI roda coleções compatíveis com Postman em CI, sem necessidade de npm e sem limites de execução. Teste o Apidog gratuitamente, sem exigir cartão de crédito.

Introdução

Newman tornou fácil rodar coleções Postman em pipelines de CI, com integração via GitHub Actions e ampla adoção. Porém, surgiram três problemas críticos:

  1. Dependência do npm: Todo pipeline com Newman puxa pacotes do npm na build. Incidentes como o do ua-parser-js e node-ipc em 2021/22 ilustraram riscos reais de segurança. Times de segurança questionam a dependência do npm só para testes de API.

  2. Limites de execução: O Postman passou a limitar execuções de coleções via API em planos gratuitos e pagos básicos, forçando equipes a atualizar planos ou redesenhar pipelines.

  3. Manutenção lenta: O ritmo de atualização do Newman caiu, com issues abertos por meses e suporte inconsistente a scripts mais recentes do Postman.

Resultado: desenvolvedores buscam alternativas para testes de API em CI. Veja as principais opções.

Opção 1: Apidog CLI (recomendado para usuários de coleções Postman)

O executor CLI do Apidog é o substituto mais direto ao Newman para quem já utiliza coleções Postman.

Suporta:

  • Formato Postman Collection v2 e v2.1
  • Ambientes Postman (exportação JSON)
  • pm.test, pm.expect, pm.environment.set, pm.collectionVariables.set
  • Scripts de pré e pós-requisição
  • Testes orientados a dados com CSV e JSON
  • Saída JUnit XML e JSON para relatórios em CI

Não exige npm. O Apidog CLI é distribuído como binário standalone. Basta baixar, adicionar ao PATH e rodar.

Sem limites por execução. Não há limites de execução em nenhum plano. Rodando 5 ou 500 execuções, o comportamento é o mesmo.

Instalação

Baixe o binário CLI para sua plataforma em apidog.com/cli ou use o instalador shell:

# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh | sh

# Verifique a instalação
apidog --version
Enter fullscreen mode Exit fullscreen mode

Para ambientes CI baseados em Docker, use a imagem oficial:

FROM apidog/cli:latest
Enter fullscreen mode Exit fullscreen mode

Executando uma coleção Postman

  1. Exporte a coleção no Postman: Arquivo > Exportar > Coleção (v2.1).
  2. Exporte o ambiente: Gerenciar Ambientes > Exportar.

Execute:

apidog run collection.json \
  --environment environment.json \
  --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

Exemplo de GitHub Actions

name: API Tests

on: [push, pull_request]

jobs:
  api-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Apidog CLI
        run: curl -sSf https://apidog.com/cli/install.sh | sh

      - name: Run API tests
        run: |
          apidog run ./tests/collection.json \
            --environment ./tests/env.json \
            --reporter-junit test-results.xml

      - name: Upload test results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: api-test-results
          path: test-results.xml
Enter fullscreen mode Exit fullscreen mode

Sem npm install, sem package.json, sem matriz de Node.js. O job roda mais rápido e reduz a superfície de dependências.

Exemplo de GitLab CI

api-tests:
  image: apidog/cli:latest
  script:
    - apidog run ./tests/collection.json
        --environment ./tests/env.json
        --reporter-junit test-results.xml
  artifacts:
    reports:
      junit: test-results.xml
Enter fullscreen mode Exit fullscreen mode

Opção 2: k6

k6 é uma ferramenta de teste de carga da Grafana Labs que também executa testes funcionais de API. É ideal para quem precisa validar performance e funcionalidade em conjunto.

Suporta:

  • HTTP/1.1, HTTP/2, WebSocket, gRPC
  • Scripts de teste em JavaScript (ES6+)
  • Limiares para asserções de performance
  • Saída para InfluxDB, Prometheus, Datadog

Limitações:

  • Não importa coleções Postman nativamente. Use o conversor postman-to-k6, mas scripts complexos podem exigir ajustes manuais.
  • API pm.* é parcialmente emulada pela conversão, com limitações.

Quando usar:

Se você precisa de testes de carga e funcionais integrados – por exemplo, validar APIs sob estresse – o investimento na migração para k6 vale a pena. Para substituir Newman apenas em testes funcionais, o Apidog é mais simples.

Uso básico no CI:

# Instalar (Linux)
sudo apt-get install k6

# Rodar um script de teste
k6 run api-tests.js
Enter fullscreen mode Exit fullscreen mode

A aprovação/reprovação no CI depende dos thresholds definidos no script. Para saída JUnit XML, utilize o pacote k6-reporter.

Opção 3: Hurl

Hurl é uma ferramenta de testes HTTP open source em Rust. Rápida, sem dependências de runtime, usa uma DSL simples para definir requisições e asserções.

Suporta:

  • HTTP/1.1 e HTTP/2
  • Asserções JSON, XPath e regex
  • Variáveis e encadeamento de requests
  • Saída HTML, JUnit, JSON

Limitações:

  • Não importa coleções Postman. Usa arquivos .hurl próprios, sem conversor automático.
  • Não suporta scripts JavaScript; apenas asserções declarativas.

Quando usar:

Ótima opção se você está começando do zero ou disposto a reescrever testes em DSL. O binário é pequeno (~10 MB) e sem runtime externo — ideal para ambientes enxutos.

Exemplo básico de teste Hurl:

GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString
Enter fullscreen mode Exit fullscreen mode

Hurl no GitHub Actions:

- name: Install Hurl
  run: |
    curl -LO https://github.com/Orange-OpenSource/hurl/releases/latest/download/hurl-x86_64-unknown-linux-gnu.tar.gz
    tar -xf hurl-*.tar.gz
    sudo mv hurl /usr/local/bin/

- name: Run API tests
  run: hurl --test tests/*.hurl
Enter fullscreen mode Exit fullscreen mode

Comparando as três opções

Característica Apidog CLI k6 Hurl
Importação Postman Nativo Conversor (com perda) Não
Dependência npm Não Não Não
Scripting JavaScript Sim (API pm.*) Sim (ES6) Não (apenas DSL)
Teste de desempenho Não Sim Não
Tamanho do binário ~50 MB ~30 MB ~10 MB
Limites de execução gratuitos Nenhum Nenhum Nenhum
Saída JUnit Sim Via plugin Sim

Migrando do Newman: passos práticos

Se seu pipeline atual usa Newman, siga este processo para migrar ao Apidog CLI:

1. Exporte suas coleções e ambientes:

No Postman, clique com o botão direito na coleção e exporte como v2.1. Exporte os ambientes separadamente.

2. Instale o Apidog CLI:

Inclua a etapa de instalação no seu CI.

3. Substitua o comando Newman:

Exemplo Newman:

newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
Enter fullscreen mode Exit fullscreen mode

Equivalente Apidog:

apidog run collection.json --environment environment.json --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

As flags são semelhantes.

4. Verifique scripts personalizados:

Rode a coleção localmente com o Apidog CLI antes de atualizar o CI. Scripts pm.* funcionam na maioria dos casos. Scripts que usam pm.require para módulos externos podem precisar ser ajustados.

5. Remova Node.js do CI:

Se o Node.js só era usado para o Newman, pode remover setup-node e npm install do pipeline.

Perguntas Frequentes

Newman está descontinuado?

Ainda não — início de 2026 o Newman segue mantido pelo Postman, mas com manutenção lenta e issues reais acumuladas. Novos pipelines sobre ele têm risco crescente.

O Apidog CLI exige conta Apidog?

Para rodar coleções exportadas localmente, não. Para sincronizar coleções de um workspace Apidog, sim. Se estiver migrando do Postman, basta rodar arquivos JSON exportados.

O Apidog CLI executa testes orientados a dados?

Sim. Use a flag --iteration-data apontando para arquivos CSV ou JSON, equivalente à flag -d do Newman.

Qual o risco de cadeia de suprimentos com npm?

Pacotes do npm em CI são uma potencial superfície de ataque. Pacotes comprometidos podem vazar variáveis de ambiente — inclusive chaves e tokens. Um executor binário baixado via HTTPS e verificado por checksum evita esse risco.

k6 suporta testes gRPC?

Sim, k6 tem suporte nativo a gRPC, permitindo testar REST e gRPC no mesmo suite — diferencial relevante.

Hurl suporta cabeçalhos de autenticação?

Sim. Hurl aceita headers customizados, incluindo Authorization, Bearer e autenticação por cookie. Variáveis permitem injetar segredos de ambiente em runtime.

A era do Newman como padrão de CI para testes de API está terminando. Riscos de cadeia de suprimentos e limites do plano gratuito mudaram o cenário, e há opções melhores disponíveis. Migrar para um pipeline sem Newman é simples, especialmente usando o Apidog CLI com coleções Postman existentes.

Top comments (0)