Open Source

Setting Up CI

Get real test results flowing into your published report, using the qualflare-action GitHub Action or the qf CLI directly.

Setting Up CI

A published report with no launches just shows "No runs yet." This page is the fastest path from there to a report that actually reflects your test history — full detail lives in the CLI Tool docs; this is the short version for an open-source project on GitHub Actions.

Qualflare ships no reporter plugin for any test framework. Every upload path below works the same way: your test runner writes a results file it already knows how to write (JUnit XML, or one of 22 other formats), and something uploads that file to Qualflare afterward. There's no "add this to your test config" step.

A GitHub Action that wraps the CLI — one uses: step instead of a manual binary install:

- name: Run tests
  run: pytest --junitxml=results.xml
  continue-on-error: true   # let the upload step run even when tests fail

- name: Upload results to Qualflare
  uses: Qualflare/qualflare-action@v1
  with:
    token: ${{ secrets.QF_TOKEN }}
    project: myapp
    results: results.xml

continue-on-error: true on the test step matters: GitHub Actions aborts a job on a failing step by default, which would skip the upload exactly when you most want the failure analysis. Full reference — every input, the runner support matrix, version pinning — is in the qualflare-action reference.

Option 2: the CLI directly

Works on any CI platform, not just GitHub Actions, and exposes every qf collect flag the Action doesn't (--environment, --milestone, --branch, --dry-run, and more):

qf login ci "$QF_TOKEN" --force
qf ci collect results.xml

See CI/CD Integration for the full multi-platform guide (GitHub Actions, GitLab CI, Jenkins, Azure DevOps) and Collect Command for the full flag reference.

Getting a token

Both options need a Qualflare access token. Mint one at Project Settings → Access Tokens, then store it as a CI secret — the examples above name it QF_TOKEN, but the name is yours to choose as long as it matches what you reference in your workflow.