The QAgentExt CLI

Version 2.3.0 · one npm package · no account, no repository

The companion command line runs the tests you save in the extension headlessly in CI, with the same engine, and runs exported iOS flows through an Appium server. It bundles the production extension, so it needs no download beyond Chromium.

Install

Node.js 18 or later. The second command downloads the Chromium build that can load extensions (the default headless shell cannot).

npm install -g https://qagentext.netlify.app/cli/qagentext-cli-2.3.0.tgz
npx playwright-core install chromium
qagent --version

qagentext-cli-2.3.0.tgz · SHA-256 5a2c37e88fc3c7d020061560e34ade65f6f71dd43a8b3d271e93bc695478fafc

The package contains the same code the Chrome Web Store serves. Its only dependency is playwright-core, pinned to the version it was tested with.

Run a saved test

Export a test from the extension's library, then:

qagent run my-test.json --url https://staging.example.com -o test-results

Writes a JUnit report. Accessibility findings gate the build by default (--a11y blocking); --a11y threshold --a11y-min-score 95 gates on a conformance score, --a11y off disables the gate, and --acr adds an ACR/VPAT-style report.

Run a regression plan

In the extension, open Library → Runs → Export plan. Then:

qagent plan qagent-plan.json --url https://staging.example.com -o test-results
qagent plan qagent-plan.json --retries 1 --max-failures 3 --tag smoke

Retries, failure limits, tag and name selection, environments and CSV data sets behave as they do in the extension. Exit code 0 means the quality gate passed.

Run an iOS flow (preview)

Export a flow from the extension's iOS tab (Export plan) and point the CLI at an Appium server with the XCUITest driver. The server needs macOS and Xcode; the CLI can run anywhere that reaches it.

QAGENT_IOS_APPIUM_URL=http://127.0.0.1:4723 qagent adapter run ios-appium my-flow.plan.json --target sim.target.json -o test-results
qagent adapter run ios-appium my-flow.plan.json --dry-run

The target file holds the Appium capabilities, for example { "platformName": "iOS", "appium:automationName": "XCUITest", "appium:deviceName": "iPhone 15", "appium:bundleId": "com.example.app" }. Secrets declared in a flow are read from QAGENT_SECRET_<NAME> and masked in every output. On failure the output folder gains a screenshot and the element tree.

Exit codes of qagent adapter run
CodeMeaning
0Pass, or flaky under --soft-failures flaky
1Fail, setup failure, interrupted, or flaky under the default --soft-failures fail
2Cannot run here: no Appium server, server down, bad target profile
3The flow was refused before anything started

In a pipeline

A GitHub Actions job installs the package and Chromium, then runs a plan:

- uses: actions/setup-node@v4
  with: { node-version: '20' }
- run: npm install -g https://qagentext.netlify.app/cli/qagentext-cli-2.3.0.tgz
- run: npx playwright-core install --with-deps chromium
- run: qagent plan qagent-plan.json --url ${{ vars.STAGING_URL }} -o test-results
- uses: actions/upload-artifact@v4
  if: always()
  with: { name: qagent-results, path: test-results }

For iOS on a macOS runner (boot a simulator, start Appium, run exported flows), the same steps apply with Appium installed on the runner; the first session on a fresh simulator takes a few minutes while Appium installs its helper app.

Privacy

The CLI runs locally and contacts only the pages, APIs and Appium server you name. Downloading this package from this site is an ordinary web request to the host, Netlify. See the privacy policy.