@smooai/testing
v1.1.0
Published
Smoo AI Testing SDK — CLI and library for interacting with the Smoo AI Testing API. Report test results, manage test runs, cases, environments, and deployments.
Readme
@smooai/testing
Smoo AI Testing SDK — CLI and library for interacting with the Smoo AI Testing API.
Report test results, manage test runs, cases, environments, and deployments.
Installation
npm install @smooai/testing
# or
pnpm add @smooai/testingQuick Start
CLI: Report test results
# Authenticate
npx @smooai/testing login \
--client-id <M2M_CLIENT_ID> \
--client-secret <M2M_CLIENT_SECRET> \
--org-id <ORG_ID>
# Report CTRF test results
npx @smooai/testing runs report ctrf-report.json \
--environment production \
--name "PR #42 Tests"Library: Programmatic usage
import { SmooTestingClient } from '@smooai/testing';
const client = new SmooTestingClient({
clientId: process.env.SMOOAI_CLIENT_ID,
clientSecret: process.env.SMOOAI_CLIENT_SECRET,
orgId: process.env.SMOOAI_ORG_ID,
});
// High-level: report CTRF file
const run = await client.report('ctrf-report.json', {
name: 'My Test Run',
environment: 'production',
});
// Or use individual methods
const runs = await client.listRuns({ status: 'failed' });
const envs = await client.listEnvironments();CLI Commands
Authentication
smooai-testing login --client-id <id> --client-secret <secret> --org-id <id>
smooai-testing logout
smooai-testing statusTest Runs
smooai-testing runs create --name "Run Name" [--environment prod] [--tool vitest]
smooai-testing runs list [--status passed] [--limit 10]
smooai-testing runs get <run-id>
smooai-testing runs update <run-id> --status completed
smooai-testing runs report <ctrf-file> [--name "Run"] [--environment prod]Test Cases
smooai-testing cases create --title "Test login flow" [--priority high] [--tags "auth,e2e"]
smooai-testing cases list [--tags auth] [--priority high]
smooai-testing cases get <case-id>
smooai-testing cases update <case-id> --title "Updated title"
smooai-testing cases delete <case-id>Environments
smooai-testing envs create --name "production" [--base-url https://app.example.com]
smooai-testing envs list
smooai-testing envs get <env-id>
smooai-testing envs update <env-id> --name "staging"Deployments
smooai-testing deployments create --name "v1.2.3" [--source github] [--ref main]
smooai-testing deployments list [--status success]
smooai-testing deployments get <deployment-id>
smooai-testing deployments update <deployment-id> --status success
smooai-testing deployments delete <deployment-id>JSON Output
All commands support --json for machine-readable output:
smooai-testing runs list --json | jq '.data[].id'JSON mode is auto-enabled when output is piped (no TTY).
CI/CD Usage
Set environment variables instead of using login:
export SMOOAI_CLIENT_ID=...
export SMOOAI_CLIENT_SECRET=...
export SMOOAI_ORG_ID=...
export SMOOAI_API_URL=https://api.production.smoo.ai
export SMOOAI_AUTH_URL=https://auth.production.smoo.ai/tokenGitHub Actions example:
- name: Report test results
run: npx @smooai/testing runs report ctrf-report.json --environment ci --name "${{ github.workflow }}"
env:
SMOOAI_CLIENT_ID: ${{ secrets.SMOOAI_CLIENT_ID }}
SMOOAI_CLIENT_SECRET: ${{ secrets.SMOOAI_CLIENT_SECRET }}
SMOOAI_ORG_ID: ${{ secrets.SMOOAI_ORG_ID }}Development
pnpm install
pnpm build # Build lib + CLI
pnpm test # Run unit tests
pnpm typecheck # TypeScript checks
pnpm lint # Lint
pnpm format # Format code
pnpm check-all # All checks (CI parity)License
MIT
