testDeviceComponent function

  1. @isTest
void testDeviceComponent({
  1. required String name,
  2. required List<Component> scenarios,
  3. String? groupName,
  4. Future<TestGesture?> gestureBuilder(
    1. WidgetTester tester
    )?,
  5. List<Device>? devices,
  6. Size surfaceSize = const Size(800, 740),
  7. Key? touchKey,
  8. Widget wrap(
    1. Widget child
    )?,
  9. bool? autoHeight = true,
  10. double? textScaleSize,
  11. Iterable<LocalizationsDelegate>? localizationsDelegates,
  12. Iterable<Locale>? supportedLocales,
  13. WildnessProperties? config,
  14. TextStyle? defaultTextStyle,
  15. Color? primaryColor,
})

Implementation

@isTest
void testDeviceComponent({
  required String name,
  required List<Component> scenarios,
  String? groupName,
  Future<TestGesture?> Function(WidgetTester tester)? gestureBuilder,
  List<Device>? devices,
  Size surfaceSize = const Size(800, 740),
  Key? touchKey,
  Widget Function(Widget child)? wrap,
  bool? autoHeight = true,
  double? textScaleSize,
  Iterable<LocalizationsDelegate<dynamic>>? localizationsDelegates,
  Iterable<Locale>? supportedLocales,
  WildnessProperties? config,
  TextStyle? defaultTextStyle,
  Color? primaryColor,
}) {
  testGoldens(name, (WidgetTester tester) async {
    final builder = DeviceBuilder(wrap: wrap);
    if (devices != null) {
      builder.overrideDevicesForAllScenarios(devices: devices);
    }

    for (var scenario in scenarios) {
      builder.addScenario(
        name: scenario.name,
        widget: scenario.widget,
      );
    }

    await tester.pumpDeviceAndMatch(
      groupTitle: 'components/${(groupName ?? name).toLowerCase()}',
      builder: builder,
      autoHeight: true,
      config: config,
      defaultTextStyle: defaultTextStyle,
      localizationsDelegates: localizationsDelegates,
      primaryColor: primaryColor,
      supportedLocales: supportedLocales,
      gestureBuilder: () async {
        if (touchKey != null) {
          await tester.startGesture(
            tester.getRect(find.byKey(touchKey)).center,
          );
        }

        await gestureBuilder?.call(tester);
      },
    );
  });
}