performE2eSampleSuite function

Future<E2eSuiteVerdict> performE2eSampleSuite(
  1. E2eService service, {
  2. required String appDir,
  3. required E2eModel model,
  4. String? modelId,
  5. String? device,
  6. required List<String> extensions,
  7. required List<String> cliPrefix,
  8. required List<E2eScenario> scenarios,
})

Sequentially runs scenarios through E2eService.runSession.

Implementation

Future<E2eSuiteVerdict> performE2eSampleSuite(
  E2eService service, {
  required String appDir,
  required E2eModel model,
  String? modelId,
  String? device,
  required List<String> extensions,
  required List<String> cliPrefix,
  required List<E2eScenario> scenarios,
}) async {
  if (scenarios.isEmpty) {
    throw const E2ePhaseFailure(
      E2eFailureCode.invalidRequest,
      'e2e sample suite refused: scenarios must not be empty',
    );
  }
  final List<E2eScenarioVerdict> results = <E2eScenarioVerdict>[];
  for (final E2eScenario scenario in scenarios) {
    final E2eVerdict verdict = await service.runSession(
      E2eSessionRequest(
        goal: scenario.goal,
        appDir: appDir,
        model: model,
        modelId: modelId,
        device: device,
        extensions: extensions,
        cliPrefix: cliPrefix,
        doneReasonPattern: scenario.doneReasonPattern,
        doneEvidencePattern: scenario.doneEvidencePattern,
        expectation: scenario.expectation,
      ),
    );
    results.add(E2eScenarioVerdict(scenario: scenario, verdict: verdict));
  }
  return E2eSuiteVerdict(
    status: results.every((E2eScenarioVerdict result) => result.verdict.passed)
        ? E2eVerdictStatus.pass
        : E2eVerdictStatus.fail,
    model: model,
    scenarios: results,
  );
}