fab-test
BetaOne CLI for Power BI Validation
The Power BI tooling ecosystem is scattered. Tabular Editor's Best Practice Analyzer, PBIR Inspector, accessibility checks, DAX tests, and Playwright each have their own install, their own invocation, and their own output format. Wiring them all into a pipeline means writing glue for every one of them.
fab-test puts them behind a single command with a consistent result shape, so a local check, a deployment gate, and an AI agent can all ask the same question and read the same answer.
Install
Note the package name
PyPI reserves names that are too similar to existing projects, so the distribution is published as cft-fab-test rather than fab-test. Only the distribution name carries the prefix — the command you run, the fab_test import package, and every subcommand are all still fab-test.
# Beta releases require the --pre flag
pip install --pre cft-fab-test
fab-test --versionCommands
fab-test local
Run the local analyzer bundle against every discovered .pbip project — no cloud required.
fab-test bpa
Tabular Editor Best Practice Analyzer, on SemanticModel artifacts.
fab-test pbir
PBIR Inspector static report analysis, on Report artifacts.
fab-test a11y
pbir-a11y accessibility checks, on Report artifacts.
fab-test pql-test
The pql-test DAX test runner, on SemanticModel artifacts.
fab-test playwright
Playwright visual and error validation, on Report artifacts.
fab-test all
Run all analyzers in sequence.
fab-test doctor
Check whether each analyzer's prerequisites are ready to run.
fab-test auth
Report or acquire Fabric credentials. fab-test stores none of its own.
fab-test list
List available analyzers with their artifact glob, matched count, and required tool.
fab-test explain
Show the resolved command for one analyzer without running it.
fab-test init
Scaffold a commented fab-test.yml and .env.example.
Run fab-test --help for the full set, including dependencies, playwright-impact, config, and clean-tools.
Who It's For
Developers
Run every applicable check against a PBIP project on your machine before you push, without deploying anything to the cloud first.
CI/CD Pipelines
Gate a deployment on structured results. --format json gives machine-readable output, exit codes reflect the verdict, and run.json manifests carry remediation detail for each finding.
AI Agents
One command surface and one output format means an agent does not need a separate integration for each underlying tool.
Requirements
- ✓PBIP projects saved in TMDL and PBIR formats
- ✓Artifacts are discovered automatically by folder suffix — *.SemanticModel and *.Report
- ✓Run fab-test doctor to confirm tools and credentials are in place
Resources
Download the package or raise an issue on GitHub.
The fab-test pql-test subcommand delegates to pql-test, which runs the DAX assertions in your semantic models.
Learn about pql-test