TF-3493 Refactor integration test code for performance and maintainability

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-02-21 01:51:19 +07:00
committed by Dat H. Pham
parent 23f5121f03
commit abdcb614ce
25 changed files with 157 additions and 401 deletions
@@ -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();
}
+22 -11
View File
@@ -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);
};
}
}