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)),
);
}