Documentação/Relatórios de teste
FEATURE ROLLOUT · DOCUMENTAÇÃO

Relatórios de teste

Importe o output que seu runner já produz. CTRF é o contrato recomendado; JUnit, Playwright JSON e o resultado de cypress.run() entram por adapters nativos.

Formatos aceitos

Use CTRF JSON para máxima portabilidade. O endpoint também detecta JUnit XML, Playwright JSON e o objeto JSON retornado por cypress.run(). O corpo pode ter até 4 MB; artefatos grandes devem permanecer no CI e entrar como referências.

CTRFRecomendado — testes, retries, flaky, labels e attachments
JUNITFallback universal para Selenium e runners xUnit/JUnit
PWSaída nativa do reporter JSON do Playwright
CYResultado serializado da Module API do Cypress

Envie no final do job

Crie uma chave em Dashboard → Integrações, salve-a como secret do CI e envie o arquivo sem transformações adicionais. Antes da primeira execução, o painel mostra o inventário do catálogo como não executado; aprovação, falha e métricas só aparecem depois que um relatório real é importado.

shell
curl --fail-with-body --request POST \
  'https://feature-rollout.dev/api/v1/test-results?featureId=LBP-PIX-001&format=auto' \
  --header 'Authorization: Bearer $FEATURE_ROLLOUT_TOKEN' \
  --header 'Content-Type: application/json' \
  --header 'X-Git-SHA: $GITHUB_SHA' \
  --header 'X-CI-Pipeline: e2e' \
  --data-binary '@ctrf-report.json'
Idempotente por conteúdo

Reenviar o mesmo relatório para a mesma feature devolve a execução já criada e não duplica métricas ou evidências.

Prefira o contrato v2 em novos pipelines

O v2 resolve projeto, portfólio e repositório, registra revisão Git e exige X-Run-ID. A chave de idempotência padrão combina provider, run, tentativa, job e shard.

shell
curl --fail-with-body --request POST   "$FEATURE_ROLLOUT_URL/api/v2/test-runs?project=lb-pay&application=pix-automatico&repository=conta-facil%2Flb-pay&featureId=LBP-PIX-001&format=ctrf"   --header "Authorization: Bearer $FEATURE_ROLLOUT_TOKEN"   --header 'Content-Type: application/json'   --header 'X-Run-ID: 9834217'   --header 'X-Run-Attempt: 1'   --header 'X-CI-Provider: github'   --header 'X-CI-Workflow: e2e'   --header 'X-CI-Job: playwright'   --header 'X-Git-Branch: main'   --header 'X-Git-SHA: a4f21c9'   --header 'X-Environment: homologation'   --data-binary '@ctrf-report.json'

Use a resposta como recibo

HTTP 201 indica nova execução; HTTP 200 com duplicate: true indica reenvio idempotente. Guarde executionId para anexar cobertura.

json
{
  "executionId": "f28ccafa-a2d7-4faf-a071-a8cb0c0312c7",
  "format": "ctrf",
  "tool": "playwright",
  "summary": {
    "total": 1,
    "passed": 1,
    "failed": 0,
    "skipped": 0,
    "pending": 0,
    "other": 0,
    "flaky": 0
  },
  "duplicate": false,
  "revision": {
    "branch": "main",
    "testedSha": "a4f21c9"
  }
}

Vincule cenários automaticamente

Adicione uma label scenario/scenarioId ou inclua IDs como CT-03, SC-02 ou TC-18 no nome ou nas tags.

Cobertura de código

Cobertura é um sinal separado do resultado funcional. Depois de importar a execução, envie Istanbul JSON Summary ou Cobertura XML para /api/v1/test-results/<executionId>/coverage?format=auto.