Use Testlight to run .mmt files from a terminal or CI pipeline. The npm package is mmt-testlight; the command you run is testlight (and mmt, depending on how you install).
Global install:
npm install -g mmt-testlightOr run without a global install:
npx mmt-testlight run path/to/test.mmtQuick try with the repo examples:
npx testlight run examples/basic/02_simple_test/echo_test.mmt --quietOne version number is shared by Testlight, the VS Code extension, and the GitHub Action. The tag decides the channel:
| Tag | Channel | What you get |
|---|---|---|
v1.41.2 |
stable | npm @latest, Docker :latest, Marketplace stable, GitHub latest |
v1.41.2-pre |
pre-release | npm @pre, Docker :pre, Marketplace 1.41.2 pre-release, GitHub prerelease |
Default installs stay on stable. Opt in to pre-release:
npm install -g mmt-testlight@pre
docker pull mshobeyri/mmt-testlight:pre
CHANNEL=pre curl -fsSL https://raw.githubusercontent.com/mshobeyri/multimeter/main/scripts/install-testlight.sh | bashIn VS Code, use Switch to Pre-Release Version. Homebrew stays on the last stable.
Try it first on testlight-action: Actions → CI → Run workflow. On a fork, enable Actions once, then run the same way.
- uses: actions/checkout@v6
- uses: mshobeyri/testlight-action@v1
with:
file: tests/suite.mmt
report: junit
report-file: results/junit.xmlSee the action README.
Install the Testlight Azure Pipelines extension on the org, then use Testlight@1 (same inputs as the GitHub Action with: block, as YAML inputs:):
- task: Testlight@1
inputs:
file: tests/suite.mmt
report: junit
reportFile: results/junit.xmlSource and packaging live in mmtazure/ in this repo. Full pipeline copy-paste: Run in CI.
brew tap mshobeyri/multimeter
brew install mmt-testlightLinux, Windows, and Docker installs are listed on the Downloads page.
For pipelines, use a self-contained binary built with @yao-pkg/pkg (SEA / Node 22, Brotli-compressed archive) — no Node.js required on the runner.
Build locally from the repo (Node ≥ 22):
cd mmtcli
npm install
npm run pkgBinaries land under bin/<platform>/ at the repo root (for example
bin/macos-arm64/testlight, bin/linux-x64/testlight,
bin/win-x64/testlight.exe). Upload the platform folder or the GitHub Release
archive to your artifact store and invoke it in CI:
# macOS (Apple Silicon)
./bin/macos-arm64/testlight run path/to/test.mmt --quiet
# Linux
./bin/linux-x64/testlight run path/to/test.mmt --quietIf you installed the GitHub Release binary (or a portal copy of it), refresh it in place:
testlight update # latest stable from GitHub Releases
testlight update --check # print whether an update is available
testlight update --to 1.38.1
testlight update --channel betanpm installs should use npm instead (testlight update prints the command):
npm install -g mmt-testlight@latestHomebrew:
brew upgrade mmt-testlightHost the same asset names under a versioned prefix and point the CLI at it:
export TESTLIGHT_RELEASE_BASE_URL=https://portal.example/artifacts/testlight
# expects: $TESTLIGHT_RELEASE_BASE_URL/v1.38.1/testlight-linux-x64.tar.gz
testlight update --to 1.38.1Optional: TESTLIGHT_REPO=owner/name to resolve “latest” from another GitHub repo’s releases.