Skip to content
The docs are now organized by product area. Old links still work. Report a broken link

qf command reference

Every qf command in the Qualflare CLI, with flags, output and exit codes: validate result files without a token, list the formats and print the version.

Last updated

This page lists every command of the Qualflare CLI (qf) with its flags, output and exit codes: qf validate checks result files without uploading them and needs no login, qf list-formats lists the 31 formats, and qf version prints the installed version. Commands that read or upload data run as qf <identifier> <command>, with the token saved by qf login.

Command summary

CommandNeeds qf loginWhat it does
qf login <identifier> [token]NoSave an access token under a local identifier
qf logout <identifier>NoRemove a saved identifier and its token
qf projectsNoList the saved identifiers
qf <identifier> collect <files…>YesParse result files and upload them as a launch
qf validate <files…> (also qf <identifier> validate)NoCheck result files without uploading them
qf <identifier> suites list / suite get <seq>YesList test suites, or get one
qf <identifier> cases list / case get <seq> / case steps <seq>YesList a suite's cases, or get one case or its steps
qf <identifier> plans list / plan get <seq> / plan cases <seq>YesList test plans, or get one plan or its cases
qf <identifier> launches list / launch get <seq>YesList launches, or get one
qf <identifier> defects list / defect get <seq>YesList defects, or get one
qf <identifier> clusters list / cluster get <id>YesList failure clusters, or get one
qf <identifier> milestones list / milestone get <seq>YesList milestones, or get one
qf list-formatsNoList the formats --format accepts
qf versionNoPrint the installed version
qf completion <shell>NoPrint a shell completion script for bash, zsh, fish or powershell

Every command takes the global flags, and qf <command> --help prints its own help.

qf validate

qf validate checks that result files parse, without uploading them:

qf validate [files...] [flags]
qf <identifier> validate [files...] [flags]

The first form needs no saved identifier and never calls the API; the second works too.

FlagShortDescription
--format-fThe format to validate against, a slug from qf list-formats. Auto-detected if not set. An unknown slug prints Error: unsupported format: <slug>
--quiet-qGlobal flag. Hides the progress and OK lines; ERR lines still print

Each argument is one file or an Allure results directory. Your shell expands unquoted globs. Unlike collect, validate does not read a directory of .json reports, so pass the files, for example qualflare-results/*.json.

qf validate results.xml
qf validate results.json --format playwright
qf validate test-results/*.xml
qf validate allure-results/
qf validate pytest-report.xml --format python

Validating an Allure results directory qf ≥ 0.4.0 (requires qf 0.4.0 or later) uses the same detection as collect; an older qf reports failed to detect framework for the directory. See Allure results, and upgrade qf if qf list-formats doesn't list allure.

qf validate prints one line per file on stderr. A valid file:

$ qf validate results.xml
Validating 1 test result file(s)...
OK results.xml: valid (junit, 42 tests)

An invalid file:

$ qf validate invalid.xml
Validating 1 test result file(s)...
ERR invalid.xml: invalid - parse error: failed to parse file content: <parser message>
Error: one or more files failed validation

The OK line names the format qf detected (or the one you passed) and the number of tests. An ERR line gives one of these reasons:

  • file does not exist
  • failed to detect framework: …: no --format was given and qf couldn't tell the format
  • unsupported framework: …: the format has no parser
  • parse error: …: the file doesn't parse as that format

qf validate exits 0 when every file is valid, and 1 for an invalid file, an unknown --format or no file argument.

Check reports before you upload

Check a new reporter's output. Run your tests once, then run qf validate on the report. The OK line shows the format qf detected and the test count. If the format is wrong, pass the same --format to validate and collect.

pytest --junitxml=pytest-report.xml
qf validate pytest-report.xml

Check reports in a job without a token. qf validate needs no saved identifier, so a CI job with no access token can still fail on a missing or unreadable report: this command exits 1 if the file is missing or doesn't parse.

qf validate test-results/junit.xml

qf list-formats

qf list-formats lists the formats --format accepts, in six groups:

qf list-formats [flags]

Its aliases are qf formats and qf lf. --category (-c) shows one group: generic, unit, bdd, e2e, api or security. An unknown category lists no format and exits 0.

qf list-formats
qf list-formats --category unit
qf lf -c security
$ qf list-formats

Generic (JUnit-compatible):
  - junit
  - ctrf
  - allure
  - qualflare-json

Unit Testing:
  - python
  - golang
  - jest
  - vitest
  - mocha
  - rspec
  - phpunit
  - testng

BDD / Behavior-Driven:
  - cucumber
  - karate

UI / E2E / Mobile Testing:
  - detox
  - playwright
  - cypress
  - selenium
  - testcafe
  - maestro
  - xctest
  - espresso
  - webdriverio
  - appium
  - flutter

API Testing:
  - newman
  - k6

Security Testing:
  - zap
  - trivy
  - snyk
  - sonarqube

The CLI supports 27 frameworks and 4 generic formats. Your installed version may list more; Supported frameworks gives each format's --format example.

qf version

qf version prints the installed version of the Qualflare CLI, and --short (-s) prints only the version number:

qf version [flags]
$ qf version

qf 0.4.0 (commit: <commit>, built: <build date>, <os>/<arch>, <go version>)
$ qf version -s

qf 0.4.0
FieldDescription
VersionSemantic version of the CLI
CommitGit commit hash (first 7 characters)
BuiltBuild timestamp
OS/ArchOperating system and architecture
Go VersionGo runtime version used to build the CLI

Print qf version --short at the start of a CI job so its log shows which qf ran. qf has no --version flag: qf --version fails with Error: unknown flag: --version.

Exit codes

qf validate exits 0 or 1; qf list-formats and qf version exit 0. Commands that call the API use the codes in collect's exit codes; see also read command errors.

Limits

qf validate reads each file up to 100 MB, the same cap as collect; a larger file prints ERR <file>: invalid - failed to detect framework: file <file> is too large (…).