Member Junction
    Preparing search index...

    Module @memberjunction/testing-engine - v6.2.0-edge.5

    @memberjunction/testing-engine

    Core test execution and evaluation engine for the MemberJunction Testing Framework. Provides the driver/oracle architecture for running tests, evaluating results with multiple oracle strategies, and recording outcomes.

    graph TD
        subgraph "@memberjunction/testing-engine"
            A[TestEngine] --> B[Test Drivers]
            A --> C[Oracles]
            A --> D[Utilities]
    
            B --> E[BaseTestDriver]
            E --> F[AgentEvalDriver]
    
            C --> G[ExactMatchOracle]
            C --> H[LLMJudgeOracle]
            C --> I[SchemaValidatorOracle]
            C --> J[SQLValidatorOracle]
            C --> K[TraceValidatorOracle]
    
            D --> L[Variable Resolver]
            D --> M[Scoring Calculator]
            D --> N[Cost Calculator]
            D --> O[Result Formatter]
            D --> P[Execution Context]
        end
    
        subgraph "Base Layer"
            Q["TestEngineBase
    (from engine-base)"] end A -->|extends| Q style A fill:#2d6a9f,stroke:#1a4971,color:#fff style E fill:#2d8659,stroke:#1a5c3a,color:#fff style F fill:#b8762f,stroke:#8a5722,color:#fff style G fill:#7c5295,stroke:#563a6b,color:#fff style H fill:#7c5295,stroke:#563a6b,color:#fff style I fill:#7c5295,stroke:#563a6b,color:#fff style J fill:#7c5295,stroke:#563a6b,color:#fff style K fill:#7c5295,stroke:#563a6b,color:#fff style Q fill:#2d6a9f,stroke:#1a4971,color:#fff

    This is the server-side execution engine for MemberJunction tests. It implements a plugin-based architecture where:

    • Drivers handle test execution (running agents, calling APIs, etc.)
    • Oracles evaluate test outputs against expected outcomes
    • Utilities handle variable resolution, scoring, cost tracking, and result formatting

    Key capabilities:

    • Execute individual tests or full test suites with parallel/sequential modes
    • Multiple oracle strategies for evaluating test results
    • Variable resolution system with priority cascading (run > suite > test > type)
    • Automatic cost and duration tracking
    • Progress callbacks for real-time execution monitoring
    • Result persistence to MJ: Test Runs and MJ: Test Suite Runs entities
    npm install @memberjunction/testing-engine
    
    graph LR
        A[Test Definition] --> B[Driver]
        B -->|Executes| C[Target System]
        C -->|Output| D[Oracle 1]
        C -->|Output| E[Oracle 2]
        C -->|Output| F[Oracle N]
        D --> G[Combined Score]
        E --> G
        F --> G
    
        style A fill:#2d6a9f,stroke:#1a4971,color:#fff
        style B fill:#2d8659,stroke:#1a5c3a,color:#fff
        style D fill:#7c5295,stroke:#563a6b,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
    
    1. The driver executes the test target (e.g., runs an AI agent)
    2. Multiple oracles independently evaluate the output
    3. Scores are combined using configurable weights
    Driver Description
    BaseTestDriver Abstract base class for all test drivers
    AgentEvalDriver Executes AI agents and captures their outputs
    Oracle Description
    ExactMatchOracle Compares output against an expected string
    LLMJudgeOracle Scores the test's inline criteria with RubricScoring, through the same metadata prompts as the LLM rubric evaluator: the criteria render through Rubric Criterion, the judge named in judgePrompt (default Rubric Evaluator - Default Judge) fills Rubric Evaluator's slot, and the input, expected and actual outputs travel as one delimited subject message. model pins the model and timeoutMS bounds the call. It does not read MJ: Test Rubrics
    SchemaValidatorOracle Validates output against a JSON schema
    SQLValidatorOracle Validates output by running SQL queries
    TraceValidatorOracle Validates execution trace/steps of an agent run
    RubricOracle Judges the test run with a rubric. The subject is the test run and the context is the test

    A test run picks one rubric. The first source that names one wins: the run override, the rubric oracle's own config, Test.RubricID, TestSuite.RubricID walking up ParentID, then the agent's default Evaluation rubric. The published version is pinned when the suite run starts, so a publish during the run does not split the suite. An explicitly named version is used as given. When a rubric is resolved and the test did not configure a rubric oracle, the driver adds one. A test that already has an llm-judge oracle keeps that list, and the agent's Evaluation rubric is not added. The added rubric oracle always gates status. It contributes to the score when scoringWeights is absent or already names rubric.

    Variables cascade through four levels with the highest priority winning:

    Run Variables > Suite Variables > Test Variables > Type Variables
    

    The resolver tracks the source of each resolved value for auditing.

    import { TestEngine } from '@memberjunction/testing-engine';

    const engine = TestEngine.Instance;
    await engine.Config(false, contextUser);

    const result = await engine.RunTest(testId, contextUser, {
    verbose: true,
    variables: { AIConfiguration: 'gpt-4o' },
    progressCallback: (p) => console.log(`${p.percentage}%: ${p.message}`)
    });

    console.log(`Status: ${result.status}, Score: ${result.score}`);
    const suiteResult = await engine.RunSuite(suiteId, contextUser, {
    parallel: true,
    maxParallel: 5,
    failFast: false,
    variables: { Temperature: 0.3 }
    });

    console.log(`Passed: ${suiteResult.passedTests}/${suiteResult.totalTests}`);
    console.log(`Average Score: ${suiteResult.averageScore}`);
    Utility Description
    variable-resolver Resolves variables through the priority cascade
    scoring Combines oracle scores using weighted averages
    cost-calculator Tracks and sums execution costs
    result-formatter Formats test results for storage and display
    execution-context Captures environment details (OS, Node.js version, CI/CD info)
    npm test
    npm run test:coverage
    Package Purpose
    @memberjunction/testing-engine-base Base engine, metadata caching, shared types
    @memberjunction/ai AI model access for LLM oracles
    @memberjunction/ai-agents Agent execution for AgentEvalDriver
    @memberjunction/ai-prompts Prompt execution
    @memberjunction/core Metadata, RunView, UserInfo
    @memberjunction/core-entities Test entity types
    @memberjunction/global Class factory
    zod Schema validation
    rxjs Observable patterns

    Business Source License 1.1 — see LICENSE for details.

    Classes

    AgentDecisionOracle
    AgentEvalDriver
    AgentPromptComposer
    BaseTestDriver
    DecisionCorpusError
    DecisionEvalDriver
    DecisionJudgeOracle
    DecisionLabelMatchOracle
    DiscoveryLabelMatchOracle
    ExactMatchOracle
    LLMJudgeOracle
    OutputCollisionError
    OutputInsideRepoError
    OutputNotEmptyError
    PinnedDecisionRunner
    PromptEvalDriver
    PublishedVersionPin
    ResponseWellFormedOracle
    RubricCalibrationTestDriver
    RubricOracle
    SchemaValidatorOracle
    SQLValidatorOracle
    TestEngine
    TraceSubAgentValidatorOracle
    TraceValidatorOracle
    VariableResolutionError
    VariableResolver

    Interfaces

    AgentEvalConfig
    AgentEvalExpectedOutcomes
    AgentEvalInput
    AgentEvalJudgeEvidenceConfig
    AgentEvalTurn
    AgentRubricResolution
    AmbiguousSummary
    CalibrationExpectation
    CalibrationPair
    CalibrationSummary
    CalibrationThresholds
    CaseRepeatability
    ConfidenceInterval
    CorpusCase
    CorpusExpectation
    CorpusExpectedAction
    CorpusParamMatcher
    CostSummary
    CriterionAgreement
    DecisionEvalAgentCatalog
    DecisionEvalCall
    DecisionEvalCellMetrics
    DecisionEvalCellObservation
    DecisionEvalEnvironment
    DecisionEvalMetricOptions
    DecisionEvalObservation
    DecisionEvalRoutingRun
    DecisionEvalRunEstimate
    DecisionEvalRunRow
    DecisionEvalScorecard
    DecisionEvalScorecardCell
    DecisionEvalScorecardOptions
    DecisionEvaluation
    DecisionEvalUnreadableRun
    DecisionExpectation
    DiscoveryBaselineAgent
    DiscoveryBaselineCellMetrics
    DiscoveryCalibrationSummary
    DiscoveryCaseRepeatability
    DiscoveryCatalogDrift
    DiscoveryDecisionCellMetrics
    DiscoveryEvalCall
    DiscoveryEvalCellObservation
    DiscoveryEvalEnvironment
    DiscoveryEvalObservation
    DiscoveryEvalScorecard
    DiscoveryEvalScorecardCell
    DiscoveryEvalScorecardOptions
    DiscoveryMetricOptions
    DiscoveryNoneBelowFloorSummary
    DiscoveryNoneKindSummary
    DiscoveryOnTimeSummary
    DiscoveryProbabilityCalibration
    DiscoveryProductionVerdict
    DiscoveryRepeatabilitySummary
    DiscoveryRunCounts
    DiscoveryScoredRun
    DiscoveryTop1Summary
    DriverExecutionContext
    DriverExecutionResult
    ExpectedAction
    GeneratedFile
    InjectionOperatingPoint
    InjectionRun
    IOracle
    JoinedDecisionCorpus
    JoinedDiscoveryCorpus
    LabelledDecisionPoint
    LabelledDiscoveryRequest
    LabelledProbability
    LatencySummary
    NumberedLine
    ObservedAction
    ObservedDecision
    ObservedSubAgent
    OperatingPoint
    OracleConfig
    OracleConfigLike
    OracleInput
    OracleResult
    ParamExpectation
    ParamMatchResult
    ParsedDecisionEvalTest
    ParsedDiscoveryEvalTest
    PlattParameters
    PriorAttemptSummary
    ProbabilityMetrics
    PromoteCriteriaStore
    PromotedCriterion
    PromotedRubric
    PromptEvalActualOutput
    PromptEvalConfig
    PromptEvalInput
    PromptEvalOracleConfig
    RawTurn
    ReliabilityBin
    RepeatabilitySummary
    ReplayTelemetry
    ResolvedTestVariables
    RoutingShare
    RoutingVerdictRates
    RoutingVerdictSummary
    RubricChoice
    RubricOracleEngine
    RubricSuiteRow
    RunContextDetails
    RunCounts
    ScoringWeights
    SuiteFixtureContext
    SuiteRunOptions
    SyncRecord
    TestLogMessage
    TestProgress
    TestRunOptions
    TestRunOutputItem
    TestRunResult
    TestSuiteRunResult
    TestSuiteVariablesConfig
    TestTypeVariablesSchema
    TestVariableDefinition
    TestVariableOverride
    TestVariablePossibleValue
    TestVariablesConfig
    TurnResult
    ValidationError
    ValidationResult
    ValidationWarning
    WellFormedConfig
    WellFormedInput
    WellFormedResult
    WriteGeneratedFilesOptions
    WriteGeneratedFilesResult

    Type Aliases

    ControlToolRole
    DecisionCorpusArtifact
    DecisionCorpusHistoryRow
    DecisionCorpusLabel
    DecisionCorpusPoint
    DecisionEncoding
    DecisionEvalActualOutput
    DecisionEvalAnswerSummary
    DecisionEvalConfig
    DecisionEvalDecision
    DecisionEvalExpected
    DecisionEvalInput
    DecisionEvalLabel
    DecisionEvalMatrix
    DecisionEvalMatrixCell
    DecisionEvalModelRecord
    DecisionEvalRoutingPolicy
    DecisionEvalRunner
    DecisionEvalSampling
    DecisionEvalStateLayout
    DecisionKind
    DecisionLabelMatchConfig
    DecisionLabelMatchDetails
    DiscoveryBaselineCandidate
    DiscoveryBaselineRecord
    DiscoveryCatalogAgent
    DiscoveryCatalogSnapshot
    DiscoveryCellMetrics
    DiscoveryCorpusLabel
    DiscoveryCorpusRequest
    DiscoveryEvalActualOutput
    DiscoveryEvalArm
    DiscoveryEvalBaseline
    DiscoveryEvalConfig
    DiscoveryEvalExpected
    DiscoveryEvalInput
    DiscoveryEvalLabel
    DiscoveryEvalMatrix
    DiscoveryEvalMatrixCell
    DiscoveryLabel
    DiscoveryLabelMatchDetails
    DiscoveryNoneKind
    DiscoveryOptionsRecord
    InlineCriterion
    ParamMatcher
    PromoteCriteriaPlan
    TestVariableDataType
    TestVariableValue
    TestVariableValueSource

    Variables

    BINARY_SCALE_NAME
    CONVERSATION_MANAGER_NAME
    DECISION_EVAL_BOOTSTRAP_RESAMPLES
    DECISION_EVAL_CALIBRATION_FOLDS
    DECISION_EVAL_DECISIONS
    DECISION_EVAL_DEFAULT_THRESHOLD
    DECISION_EVAL_ECE_BINS
    DECISION_EVAL_LABELS
    DECISION_EVAL_LOGIT_CLAMP
    DECISION_EVAL_OPERATING_THRESHOLDS
    DECISION_EVAL_ROUTING_CONTINUE_PRIOR
    DECISION_EVAL_SEED
    DECISION_EVAL_STATE_LAYOUTS
    DECISION_EVAL_TEST_TYPE_NAME
    DecisionCorpusArtifactSchema
    DecisionCorpusHistoryRowSchema
    DecisionCorpusLabelSchema
    DecisionCorpusPointSchema
    DecisionEvalActualOutputSchema
    DecisionEvalAnswerSummarySchema
    DecisionEvalCellLabelSchema
    DecisionEvalConfigSchema
    DecisionEvalExpectedSchema
    DecisionEvalInputSchema
    DecisionEvalKindSchema
    DecisionEvalMatrixCellSchema
    DecisionEvalMatrixSchema
    DecisionEvalModelRecordSchema
    DecisionEvalOracleSpecSchema
    DecisionEvalRoutingPolicySchema
    DecisionEvalSamplingSchema
    DecisionLabelMatchConfigSchema
    DecisionLabelMatchDetailsSchema
    DEFAULT_DECISION_EVAL_REPS
    DEFAULT_DECISION_EVAL_SUITE_NAME
    DEFAULT_DECISION_PROMPT_NAME
    DEFAULT_DISCOVERY_EVAL_MATRIX
    DEFAULT_DISCOVERY_EVAL_SUITE_NAME
    DEFAULT_LABEL_SOURCE
    DEFAULT_TEST_TIMEOUT_MS
    DISCOVERY_EVAL_ARMS
    DISCOVERY_EVAL_BASELINES
    DISCOVERY_EVAL_LABELS
    DISCOVERY_INJECTION_THRESHOLDS
    DISCOVERY_LABEL_MATCH_ORACLE
    DISCOVERY_NONE_KINDS
    DiscoveryBaselineCandidateSchema
    DiscoveryBaselineRecordSchema
    DiscoveryCatalogAgentSchema
    DiscoveryCatalogSnapshotSchema
    DiscoveryCorpusLabelSchema
    DiscoveryCorpusRequestSchema
    DiscoveryEvalActualOutputSchema
    DiscoveryEvalConfigSchema
    DiscoveryEvalExpectedSchema
    DiscoveryEvalInputSchema
    DiscoveryEvalMatrixCellSchema
    DiscoveryEvalMatrixSchema
    DiscoveryLabelMatchDetailsSchema
    DiscoveryLabelSchema
    DiscoveryOptionsRecordSchema
    FIND_CANDIDATE_AGENTS_MAX_RESULTS
    FIND_CANDIDATE_AGENTS_MIN_SIMILARITY
    FIND_CANDIDATE_AGENTS_TOP_K
    GENERATED_FILES_MANIFEST
    JUDGE_ORACLE_TYPES

    Functions

    Accuracy
    aggregateTestRunCosts
    AggregateTestRunCosts
    AgreementByCriterion
    applyMatcher
    ApplyMatcher
    ApplyPlatt
    AssertOutputOutsideRepo
    AssignCaseFolds
    BalancedAccuracy
    BootstrapInterval
    BrierScore
    BuildBaselineEvalActualOutput
    BuildDecisionEvalActualOutput
    BuildDecisionEvalConfiguration
    BuildDecisionEvalParams
    BuildDecisionEvalScorecard
    BuildDecisionEvalSuiteRecord
    BuildDecisionEvalTestRecord
    BuildDiscoveryDecisionParams
    BuildDiscoveryEvalActualOutput
    BuildDiscoveryEvalConfiguration
    BuildDiscoveryEvalScorecard
    BuildDiscoveryEvalTestRecord
    BuildPromotedRubric
    calculateAgentRunCost
    CalculateAgentRunCost
    calculateAverageCost
    CalculateAverageCost
    calculateAverageScore
    CalculateAverageScore
    calculateCostBreakdown
    CalculateCostBreakdown
    calculateCostEfficiency
    CalculateCostEfficiency
    calculateOracleCosts
    CalculateOracleCosts
    calculatePassRate
    CalculatePassRate
    calculateScoreStatistics
    CalculateScoreStatistics
    calculateWeightedScore
    CalculateWeightedScore
    CalibrateDiscoveryOutOfFold
    CalibrationBins
    CalibrationEvaluatorConfig
    CalibrationOracles
    CalibrationPairs
    CaseBootstrapInterval
    ClampedLogit
    ClampScore
    ClassRecall
    CompareDiscoveryCatalog
    ComputeCellMetrics
    ComputeDiscoveryBaselineMetrics
    ComputeDiscoveryCellMetrics
    ComputeDiscoveryDecisionMetrics
    ComputeProbabilityMetrics
    countConcatenatedObjects
    CountConcatenatedObjects
    CreateSeededRandom
    DecisionEvalTestName
    DescribeDiscoveryLabel
    DescribeRoutingPolicy
    DescribeZodError
    determineTestStatus
    DetermineTestStatus
    DiscoveryCellRepeats
    DiscoveryDecisionState
    DiscoverySkipReason
    DiscoveryTimedOutReason
    encodeHistoryForArm
    EncodeHistoryForArm
    EnsureImplicitRubricOracle
    EstimateDecisionEvalRun
    EstimateDiscoveryEvalRun
    estimateSuiteCost
    EstimateSuiteCost
    evaluateCorpusExpectation
    EvaluateCorpusExpectation
    evaluateDecision
    EvaluateDecision
    evaluateWellFormed
    EvaluateWellFormed
    ExtractOutputPayload
    FindCandidateAgentsScore
    FindRepoRoot
    FitPlatt
    formatCost
    FormatCost
    formatDuration
    FormatDuration
    formatOracleResult
    FormatOracleResult
    formatSuiteRunResult
    FormatSuiteRunResult
    formatSuiteRunResultAsJSON
    FormatSuiteRunResultAsJSON
    formatSuiteRunResultAsMarkdown
    FormatSuiteRunResultAsMarkdown
    formatTestRunResult
    FormatTestRunResult
    formatTestRunResultAsJSON
    FormatTestRunResultAsJSON
    formatTestRunResultAsMarkdown
    FormatTestRunResultAsMarkdown
    formatTestRunResultsAsCSV
    FormatTestRunResultsAsCSV
    formatTestSummary
    FormatTestSummary
    gatherExecutionContext
    GatherExecutionContext
    generateSummaryStatistics
    GenerateSummaryStatistics
    getMachineIdentifier
    GetMachineIdentifier
    getMachineName
    GetMachineName
    groupResultsByType
    GroupResultsByType
    HistoryBeforeMessage
    InjectionOperatingPoints
    InlineOracleFromVerdicts
    InlineOracleResult
    InlineVersion
    IsDecidableOffline
    IsDiscoveryCorrect
    IsDiscoveryOnTime
    IsFailoverAllowed
    IsPathInside
    isPlaceholderCall
    IsPlaceholderCall
    IsUsableDiscoveryDecisionRun
    JoinDecisionCorpus
    JoinDiscoveryCorpus
    MapPointToRoutingInput
    matchParams
    MatchParams
    Mean
    MeanExecutedScore
    MeasureCaseRepeatability
    MessageWhenNoOracleJudged
    normalizeDecision
    NormalizeDecision
    normalizeScores
    NormalizeScores
    OperatingPoints
    OraclesWithNamedRubric
    OutOfFoldPlatt
    parseCorpusCase
    ParseCorpusCase
    ParseDecisionCorpus
    ParseDecisionEvalMatrix
    ParseDecisionEvalTest
    ParseDecisionLabels
    ParseDiscoveryCorpus
    ParseDiscoveryEvalMatrix
    ParseDiscoveryEvalTest
    ParseDiscoveryLabels
    ParseEvalMatrixFile
    ParseJsonLines
    PassesFindCandidateAgentsFloor
    PopulationStdDev
    PromoteInlineCriteria
    QuadraticWeightedKappa
    Quantile
    RankLevels
    RankSemanticSearchBaseline
    ReadDecisionEvalKind
    ReadDecisionEvalRun
    ReadDiscoveryEvalRun
    ReadLikelihood
    RenderDecisionEvalScorecard
    RenderDiscoveryEvalScorecard
    ResolveRealPath
    ResolveRubric
    RocAuc
    RubricOracleContent
    ScoreDiscoveryRun
    ScoreInline
    SelectDiscoveryLabelSource
    SelectLabelSource
    SplitDecisionEvalTestName
    StableEvalId
    stripJsonFence
    StripJsonFence
    SummarizeDecisionEvalAnswers
    SummarizeDiscoveryOnTime
    SummarizeRepeatability
    SummarizeRoutingVerdicts
    toDecisionExpectation
    ToDecisionExpectation
    ToDiscoveryLabel
    ToDiscoveryObservation
    toParamMatcher
    ToParamMatcher
    ToRoutingArtifactSummary
    WeightsForImplicitRubric
    WouldInjectOnTime
    WriteGeneratedFiles