Skip to main content

Convert Azure DevOps / TFS xlsx test case exports into a self-contained HTML execution kit with evidence capture and PDF export.

Project description

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.

Project details


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.2.tar.gz (39.3 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.2-py3-none-any.whl (35.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tfs_test_runner-2.1.2.tar.gz
  • Upload date:
  • Size: 39.3 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.2.tar.gz
Algorithm Hash digest
SHA256 67cd4a01fec0aaebd264519efd39d3f79814984cfe896ab41aede9d419d77bbd
MD5 11635e48c1414be02d03af330374b0bc
BLAKE2b-256 50d018911b4596e22bf8a1b02305181f7eb1b7680e4a4dd60ce7c7e38e73efb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tfs_test_runner-2.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: tfs_test_runner-2.1.2-py3-none-any.whl
  • Upload date:
  • Size: 35.5 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ee938f7587013003aa15a7af46e5b584dab72e30b10016e079b1e20515ea23bc
MD5 df7d5ec2e167443ec5376ef66b6ba549
BLAKE2b-256 2828bc4342a8b8ba08d2d2ef8ea3cd872753203a0a0d88e849b10c57bac35d77

See more details on using hashes here.

Provenance

The following attestation bundles were made for tfs_test_runner-2.1.2-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.

Supported by

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