runEnsembleYamlTests function

void runEnsembleYamlTests()

Flutter test entry: discovers app-local tests/*.test.yaml and runs them.

Implementation

void runEnsembleYamlTests() {
  EnsembleTestHarness.ensureTestPlugins();
  tearDown(() {
    TestErrorTracker.reset();
    EnsembleTestHarness.resetTestRuntime();
    YamlTestSession.dispose();
  });

  testWidgets(
    'Ensemble app *.test.yaml',
    (tester) async {
      final target = await EnsembleTestDiscovery.loadAppTarget();
      final plan = await EnsembleTestExecutionPlanner.build(
        target: target,
        selection: _selectionFromEnvironment(),
      );
      final harness = EnsembleTestHarness(
        appPath: target.appPath,
        appHome: target.appHome,
        i18nPath: target.i18nPath,
      );

      final runner = EnsembleTestRunner(harness: harness);
      final resultsById = await runner.runPlan(plan, tester);

      final failures = <String>[];
      final orderedResults = <EnsembleSingleTestResult>[];

      for (final def in plan.ordered) {
        final result = resultsById[def.testCase.id]!;
        orderedResults.add(
          EnsembleSingleTestResult(
            testId: '${result.testId}  (${def.assetPath})',
            metadata: result.metadata,
            status: result.status,
            durationMs: result.durationMs,
            failedStepIndex: result.failedStepIndex,
            failedStep: result.failedStep,
            message: result.message,
            stackTrace: result.stackTrace,
            logs: result.logs,
            report: result.report,
          ),
        );

        if (result.status == TestStatus.failed) {
          failures.add(def.assetPath);
        }
      }

      final runResult = EnsembleTestRunResult(results: orderedResults);
      final suiteSummary = TestReporter().formatSummary(
        runResult,
        testFile: '${target.testsAssetPrefix}*.test.yaml',
      );
      print(suiteSummary);
      _emitMachineReport(runResult);

      if (failures.isNotEmpty) {
        fail(
          'Failed YAML tests:\n'
          '${failures.map((p) => '- $p').join('\n')}\n\n'
          '$suiteSummary',
        );
      }
    },
    timeout: Timeout(Duration(seconds: _timeoutSeconds)),
  );
}