runPendingTests method
Future<TestSuiteReport>
runPendingTests(
- List<
PendingTest> tests, [ - Duration waitTimeout = _kSuiteStartTimeout
Runs a series of tests
. For full runs, this is more memory efficient as
it will only load the tests as needed.
Implementation
Future<TestSuiteReport> runPendingTests(
List<PendingTest> tests, [
Duration waitTimeout = _kSuiteStartTimeout,
]) async {
var startTime = DateTime.now();
while (_testControllerState.runningSuite == true) {
if (DateTime.now().millisecondsSinceEpoch -
startTime.millisecondsSinceEpoch >=
waitTimeout.inMilliseconds) {
throw Exception(
'[TIMEOUT]: Could not start tests, suite is still running.',
);
}
await Future.delayed(Duration(milliseconds: 100));
}
var testSuiteReport = TestSuiteReport();
_testControllerState.runningSuite = true;
if (tests.isNotEmpty == true) {
try {
for (var pendingTest in tests) {
if (pendingTest.active == true) {
try {
var test = await pendingTest.loader.load(ignoreImages: true);
await reset();
await execute(
name: test.name,
reset: false,
steps: test.steps,
submitReport: true,
suiteName: test.suiteName,
testSuiteReport: testSuiteReport,
version: test.version,
);
} catch (e, stack) {
_logger.severe(e, stack);
}
}
}
} finally {
_testControllerState.runningSuite = false;
}
await _navigatorKey.currentState!.push(
MaterialPageRoute(
builder: _testSuiteReportBuilder ??
((BuildContext context) => TestSuiteReportPage()),
settings: RouteSettings(
arguments: testSuiteReport,
),
),
);
}
return testSuiteReport;
}