Skip to main content

tfs-test-runner

Convert Azure DevOps / TFS test case xlsx exports into a self-contained HTML test execution kit with screenshot capture, status tracking, notes, and PDF evidence export. No server, works offline. Optional GPT translation.

Tests Docs License: MIT Python 3.10+ PT-BR

📖 Full docs: luizhcrs.github.io/tfs-test-runner (PT-BR)

Dark theme (default) Light theme
Hero dark Light theme
Settings panel (theme + PDF options) Case detail with evidence
Settings Case
More screenshots — failures filter, PDF evidence, PDF with status badges, full plan, mobile, empty state
Filter "Failures" PDF evidence (default)
Filter PDF
PDF with status pills (toggle ON) Mobile / narrow viewport
PDF status Narrow
Empty state Full plan (long screenshot)
Empty 03-full-plan.png

Quick start

pip install tfs-test-runner

# Scaffold a fresh QA plan directory with templates
tfs-test-runner init my-qa-plan
cd my-qa-plan
# … fill in cases.xlsx …

# Validate the schema
tfs-test-runner validate cases.xlsx

# Generate the HTML execution kit
tfs-test-runner plan cases.xlsx -o plan.html

Open plan.html in any browser. The tester pastes screenshots (Ctrl+V) at each step, marks PASS/FAIL/N/A, writes notes, then clicks PDF for an evidence deliverable.

No Azure DevOps? Use init

tfs-test-runner init scaffolds a directory with a blank xlsx template (cell comments documenting each column) plus example phases.yaml and glossary.yaml. Fill the xlsx manually — same schema as Azure DevOps Test Plans → Export to Excel.

Subcommands

tfs-test-runner --help                    # full command list
tfs-test-runner plan cases.xlsx           # generate HTML kit
tfs-test-runner validate cases.xlsx       # check schema, print stats
tfs-test-runner init my-plan              # scaffold new plan
tfs-test-runner screenshots               # regen docs prints (maintainers)

Common flags

# GPT translation (paid, best quality)
export OPENAI_API_KEY=sk-...
tfs-test-runner plan cases.xlsx --llm --lang pt-BR -o plan.html

# Argos translation (free, offline; auto-installs language pair)
pip install 'tfs-test-runner[argos]'
tfs-test-runner plan cases.xlsx --argos --lang pt-BR -o plan.html

# Phase grouping + custom title + logo
tfs-test-runner plan cases.xlsx \
    --phases phases.yaml \
    --title "Sprint 42 — Acceptance" \
    --logo company.png -o plan.html

# Validate before generating
tfs-test-runner validate cases.xlsx --strict

Features

  • Phase / case / step tree, search (/), filter chips, expand/collapse
  • Per-step PASS / FAIL / N/A, notes textarea, paste/drop/pick screenshot
  • Per-image captions, lightbox zoom
  • Per-case PDF (evidence-only) and full-plan PDF with cover sheet
  • Settings panel (gear icon): light/dark/auto theme + status-in-PDF toggle
  • JSON backup/restore (state + images)
  • Keyboard: / search, Ctrl+P PDF, Esc close lightbox/settings

💡 In the print dialog, uncheck "Headers and footers" so the browser doesn't inject file:///… and date/time at every page.

Documentation

YAML configs (examples in examples/)

# phases.yaml — group cases
phases:
  - id: p1
    title: "Phase 1  Smoke"
    level: easy
    case_ids: ["101", "104"]
  - id: p2
    title: "Phase 2  Failures"
    match: ["failure", "invalid", "error"]
# glossary.yaml — refine LLM translation (optional)
preserve: ["Sign In", "Save", "Cancel"]
notes: "Domain: web QA. Tone: technical, imperative."

Python API

from tfs_test_runner import parse_xlsx, translate_cases, assign_phases, render

cases = parse_xlsx("cases.xlsx")
translate_cases(cases, backend="llm", target_lang="pt-BR")
render(assign_phases(cases), "plan.html", page_title="My Plan")

Development

pip install -e .[dev]
pytest -q

CI matrix: Ubuntu / macOS / Windows × Python 3.10 / 3.11 / 3.12.

License

MIT — © 2026 luizhcrs. PRs welcome.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tfs_test_runner-2.1.3.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tfs_test_runner-2.1.3-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file tfs_test_runner-2.1.3.tar.gz.

File metadata

  • Download URL: tfs_test_runner-2.1.3.tar.gz
  • Upload date:
  • Size: 39.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tfs_test_runner-2.1.3.tar.gz
Algorithm Hash digest
SHA256 7ae5450018a5c430f2d11cdebe57e5badccc3f8f7fcece34f75b1e248373f784
MD5 74a437cc12433d5ccf0def81ef01a403
BLAKE2b-256 4ac353f8b06a388a637d4bb0f8a8fb3e96fe050d37e7c5cda777f688a1acbd96

See more details on using hashes here.

Provenance

The following attestation bundles were made for tfs_test_runner-2.1.3.tar.gz:

Publisher: release.yml on Luizhcrs/tfs-test-runner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tfs_test_runner-2.1.3-py3-none-any.whl.

File metadata

  • Download URL: tfs_test_runner-2.1.3-py3-none-any.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tfs_test_runner-2.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ab9947a1b8a22155fde7f58f521e37b561d56904929704aa02744081bf15d2d1
MD5 a9dcd71ada6741d814d72f1af02bd0a8
BLAKE2b-256 ac1e69ff12aaa9ac153d7070b66839e40b84d6a46ca4c5ac3a09d601a50e85bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for tfs_test_runner-2.1.3-py3-none-any.whl:

Publisher: release.yml on Luizhcrs/tfs-test-runner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.1.3 This release

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page