forked from pebble-dev/mobile-app
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflutter_test_config.dart
65 lines (60 loc) · 1.71 KB
/
flutter_test_config.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import 'dart:async';
import 'package:cobble/localization/localization.dart';
import 'package:cobble/ui/router/cobble_scaffold.dart';
import 'package:cobble/ui/theme/cobble_scheme.dart';
import 'package:cobble/ui/theme/cobble_theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:golden_toolkit/golden_toolkit.dart';
Future<void> testExecutable(FutureOr<void> Function() testMain) async {
await loadAppFonts();
Localization.load(Locale('en'));
return testMain();
}
Widget wrapper({required Widget child, Brightness? brightness}) {
final theme = CobbleTheme.appTheme(brightness);
final scheme = CobbleSchemeData.fromBrightness(brightness);
return CobbleScheme(
schemeData: scheme,
child: MaterialApp(
debugShowCheckedModeBanner: false,
theme: theme,
home: CobbleScaffold.tab(
child: child,
),
),
);
}
extension DeviceBuilderX on DeviceBuilder {
void addBothScenarios(Widget child) {
this
..addScenario(
name: 'Dark theme',
widget: wrapper(
child: child,
brightness: Brightness.dark,
),
)
..addScenario(
name: 'Light theme',
widget: wrapper(
child: child,
brightness: Brightness.light,
),
);
}
}
void testUi(String name, Widget child, [List<Device>? devices]) {
devices ??= [
Device.phone,
];
testGoldens(name, (WidgetTester tester) async {
final devicesBuilder = DeviceBuilder()
..overrideDevicesForAllScenarios(devices: devices!)
..addBothScenarios(
child,
);
await tester.pumpDeviceBuilder(devicesBuilder);
await screenMatchesGolden(tester, name);
});
}