# @memberjunction/testing-cli
Command-line interface for the MemberJunction Testing Framework. Provides commands for running tests, managing suites, viewing history, comparing runs, generating reports, and validating configurations.
## Architecture
```mermaid
graph TD
subgraph "@memberjunction/testing-cli"
A[CLI Entry Point] --> B[Commands]
B --> C[run]
B --> D[suite]
B --> E[list]
B --> F[history]
B --> G[compare]
B --> H[report]
B --> I[validate]
A --> J[Utilities]
J --> K[Config Loader]
J --> L[Output Formatter]
J --> M[Spinner Manager]
J --> N[Variable Parser]
A --> O[MJ Provider]
end
subgraph "Engine Layer"
P["@memberjunction/testing-engine
(Execution)"]
Q["@memberjunction/testing-engine-base
(Metadata)"]
end
C --> P
D --> P
E --> Q
F --> Q
G --> Q
I --> P
style A fill:#2d6a9f,stroke:#1a4971,color:#fff
style C fill:#2d8659,stroke:#1a5c3a,color:#fff
style D fill:#2d8659,stroke:#1a5c3a,color:#fff
style E fill:#7c5295,stroke:#563a6b,color:#fff
style F fill:#7c5295,stroke:#563a6b,color:#fff
style G fill:#b8762f,stroke:#8a5722,color:#fff
style H fill:#b8762f,stroke:#8a5722,color:#fff
style I fill:#7c5295,stroke:#563a6b,color:#fff
style O fill:#2d6a9f,stroke:#1a4971,color:#fff
```
## Overview
This package provides the CLI layer on top of the MemberJunction Testing Engine. It is designed to be used both standalone and as an integrated part of the `mj test` command group in the MemberJunction CLI.
**Available commands:**
| Command | Description |
|---------|-------------|
| `run` | Execute a single test by ID or name |
| `suite` | Execute a test suite with parallel/sequential control |
| `list` | List available tests, suites, and types |
| `history` | View execution history for tests or suites |
| `compare` | Compare results across multiple test runs |
| `report` | Generate execution reports |
| `validate` | Validate test or suite configurations without executing |
## Installation
```bash
npm install @memberjunction/testing-cli
```
## Commands
### run -- Execute a Test
```bash
# Run by test name
mj test run --name "Agent Summarization Test"
# Run by test ID
mj test run --id "test-guid"
# With variables
mj test run --name "My Test" --var AIConfiguration=gpt-4o --var Temperature=0.3
# Verbose output
mj test run --name "My Test" --verbose
# Dry run (validate only)
mj test run --name "My Test" --dry-run
```
### suite -- Execute a Suite
```bash
# Run a suite
mj test suite --name "Regression Suite"
# Parallel execution
mj test suite --name "Suite" --parallel --max-parallel 5
# Stop on first failure
mj test suite --name "Suite" --fail-fast
# Run specific sequence range
mj test suite --name "Suite" --sequence-start 3 --sequence-end 7
```
### list -- List Tests and Suites
```bash
# List all tests
mj test list
# List test suites
mj test list --suites
# List test types
mj test list --types
```
### history -- View History
```bash
# View test run history
mj test history --name "My Test"
# View suite run history
mj test history --suite "My Suite"
```
### compare -- Compare Runs
```bash
# Compare two test runs
mj test compare --run1 "run-id-1" --run2 "run-id-2"
```
### validate -- Validate Configuration
```bash
# Validate a test
mj test validate --name "My Test"
# Validate a suite
mj test validate --suite "My Suite"
```
## Configuration
The CLI uses `cosmiconfig` to load configuration from:
- `.mjtestrc`
- `.mjtestrc.json`
- `mj.config.cjs` (in the `testing` section)
Configuration includes database connection settings for the MJ Provider.
## Utilities
| Utility | Description |
|---------|-------------|
| `ConfigLoader` | Loads CLI configuration via cosmiconfig |
| `OutputFormatter` | Formats test results for terminal display with chalk |
| `SpinnerManager` | Manages ora spinners for long-running operations |
| `VariableParser` | Parses `--var key=value` CLI arguments into typed variables |
| `MJProvider` | Initializes the MemberJunction SQL Server data provider |
## Dependencies
| Package | Purpose |
|---------|---------|
| `@memberjunction/testing-engine` | Test execution engine |
| `@memberjunction/testing-engine-base` | Metadata and types |
| `@memberjunction/core` | Core MJ functionality |
| `@memberjunction/core-entities` | Entity types |
| `@memberjunction/sqlserver-dataprovider` | Database connectivity |
| `@oclif/core` | CLI framework |
| `chalk` | Terminal styling |
| `ora-classic` | Terminal spinners |
| `cosmiconfig` | Configuration loading |
## License
ISC