# @memberjunction/ng-testing
Angular components, widgets, and services for building testing and evaluation interfaces within MemberJunction applications. This package provides a comprehensive UI toolkit for running tests, reviewing results, providing feedback, and visualizing evaluation data.
## Overview
The `@memberjunction/ng-testing` package delivers a full suite of Angular components purpose-built for MemberJunction's testing framework. It includes dialog components for executing tests and collecting feedback, a collection of reusable widget components for displaying scores, statuses, costs, and evaluation data, and services that orchestrate test execution and manage evaluation preferences.
```mermaid
graph TD
A[TestingModule] --> B[Dialog Components]
A --> C[Widget Components]
A --> D[Services]
B --> B1[TestRunDialogComponent]
B --> B2[TestFeedbackDialogComponent]
C --> C1[TestStatusBadgeComponent]
C --> C2[ScoreIndicatorComponent]
C --> C3[CostDisplayComponent]
C --> C4[TestResultsMatrixComponent]
C --> C5[EvaluationBadgeComponent]
C --> C6[EvaluationModeToggleComponent]
C --> C7[ReviewStatusIndicatorComponent]
C --> C8[ExecutionContextComponent]
D --> D1[TestingDialogService]
D --> D2[TestingExecutionService]
D --> D3[EvaluationPreferencesService]
style A fill:#2d6a9f,stroke:#1a4971,color:#fff
style B fill:#7c5295,stroke:#563a6b,color:#fff
style C fill:#2d8659,stroke:#1a5c3a,color:#fff
style D fill:#b8762f,stroke:#8a5722,color:#fff
```
## Installation
```bash
npm install @memberjunction/ng-testing
```
## Usage
### Import the Module
```typescript
import { TestingModule } from '@memberjunction/ng-testing';
@NgModule({
imports: [
TestingModule,
// ... other imports
]
})
export class YourModule { }
```
### Dialog Components
#### Test Run Dialog
Opens a dialog for executing and monitoring test runs:
```html
```
#### Test Feedback Dialog
Collects user feedback on individual test results:
```html
```
### Widget Components
#### Test Status Badge
Displays a color-coded badge indicating test status (passed, failed, running, etc.):
```html
```
#### Score Indicator
Visual indicator for numeric scores with color gradients:
```html
```
#### Cost Display
Formats and displays execution cost data:
```html
```
#### Test Results Matrix
Grid display comparing test results across multiple suite runs:
```html
```
#### Evaluation Badge and Mode Toggle
```html
```
#### Review Status Indicator and Execution Context
```html
```
### Services
#### TestingDialogService
Programmatically open testing dialogs:
```typescript
import { TestingDialogService } from '@memberjunction/ng-testing';
constructor(private testingDialog: TestingDialogService) {}
openTestRun() {
this.testingDialog.openTestRunDialog(testSuiteId);
}
```
#### TestingExecutionService
Manages test execution lifecycle:
```typescript
import { TestingExecutionService } from '@memberjunction/ng-testing';
constructor(private testExecution: TestingExecutionService) {}
async runTests() {
const result = await this.testExecution.executeTestSuite(suiteId);
}
```
#### EvaluationPreferencesService
Manages user preferences for evaluation settings:
```typescript
import { EvaluationPreferencesService } from '@memberjunction/ng-testing';
constructor(private evalPrefs: EvaluationPreferencesService) {}
getPreferences() {
return this.evalPrefs.getPreferences();
}
```
## Models and Types
The package exports several TypeScript interfaces for working with test data:
- **TestTag** -- Tag metadata applied to test runs with optional category and color
- **TagsHelper** -- Utility class for parsing, serializing, and managing test tags
- **TestRunDataPoint** -- Analytics data point for charting test run results
- **TestAnalyticsSummary** -- Aggregated analytics for a time period
- **TestRunComparison** -- Comparison data between two test suite runs
- **TestAnalyticsFilter** -- Filter options for test analytics queries
- **MatrixCellData / MatrixColumnData / MatrixRowData** -- Data structures for the test results matrix component
## Dependencies
### Runtime Dependencies
| Package | Description |
|---------|-------------|
| `@memberjunction/core` | Core MemberJunction framework |
| `@memberjunction/core-entities` | Entity type definitions |
| `@memberjunction/global` | Global utilities and event system |
| `@memberjunction/graphql-dataprovider` | GraphQL data access |
| `@memberjunction/ng-base-types` | Base Angular component types |
| `@memberjunction/ng-code-editor` | Code editor component |
| `@memberjunction/ng-container-directives` | Layout directives |
| `@memberjunction/ng-notifications` | Notification system |
| `@memberjunction/ng-shared` | Shared Angular utilities |
| `@memberjunction/testing-engine-base` | Testing engine core |
| `@progress/kendo-angular-*` | Kendo UI components |
### Peer Dependencies
- `@angular/common` ^21.x
- `@angular/core` ^21.x
- `@angular/forms` ^21.x
- `@angular/platform-browser` ^21.x
## Build
```bash
cd packages/Angular/Generic/Testing
npm run build
```
## License
ISC