TF-3493 Refactor integration test code for performance and maintainability
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
|
||||
import '../mixin/requires_login_mixin.dart';
|
||||
import '../mixin/scenario_utils_mixin.dart';
|
||||
import 'base_scenario.dart';
|
||||
|
||||
abstract class BaseTestScenario extends BaseScenario
|
||||
with RequiresLoginMixin, ScenarioUtilsMixin {
|
||||
|
||||
const BaseTestScenario(super.$);
|
||||
|
||||
@override
|
||||
Future<void> execute() async {
|
||||
await executeLoginScenario();
|
||||
await runTestLogic();
|
||||
}
|
||||
|
||||
Future<void> runTestLogic();
|
||||
}
|
||||
@@ -3,10 +3,17 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:patrol/patrol.dart';
|
||||
import 'package:tmail_ui_user/main.dart' as app;
|
||||
|
||||
import 'base_scenario.dart';
|
||||
|
||||
class TestBase {
|
||||
static final TestBase _instance = TestBase._internal();
|
||||
factory TestBase() => _instance;
|
||||
|
||||
TestBase._internal();
|
||||
|
||||
void runPatrolTest({
|
||||
required String description,
|
||||
required Function(PatrolIntegrationTester $) test,
|
||||
required BaseScenario Function(PatrolIntegrationTester $) scenarioBuilder,
|
||||
}) {
|
||||
patrolTest(
|
||||
description,
|
||||
@@ -19,15 +26,19 @@ class TestBase {
|
||||
findTimeout: Duration(seconds: 10),
|
||||
),
|
||||
framePolicy: LiveTestWidgetsFlutterBindingFramePolicy.benchmarkLive,
|
||||
($) async {
|
||||
await app.runTmail();
|
||||
// https://github.com/leancodepl/patrol/issues/1602#issuecomment-1665317814
|
||||
final originalOnError = FlutterError.onError!;
|
||||
FlutterError.onError = (FlutterErrorDetails details) {
|
||||
originalOnError(details);
|
||||
};
|
||||
|
||||
await test($);
|
||||
});
|
||||
($) async {
|
||||
await setupTest();
|
||||
await scenarioBuilder($).execute();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> setupTest() async {
|
||||
await app.runTmail();
|
||||
|
||||
final originalOnError = FlutterError.onError!;
|
||||
FlutterError.onError = (FlutterErrorDetails details) {
|
||||
originalOnError(details);
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user