Did you know?
You can run a widget test multiple times with different variants using the variant
argument.
This is quite useful if you have a responsive app and want to run a golden image test for different screen sizes. 👇
Example Code
import 'dart:ui';
import 'package:flutter_test/flutter_test.dart';
void main() {
final sizeVariant = ValueVariant<Size>({
const Size(300, 600),
const Size(600, 800),
const Size(1000, 1000),
});
testWidgets(
'Golden - products list',
(tester) async {
final r = Robot(tester);
final currentSize = sizeVariant.currentValue!;
await r.golden.setSurfaceSize(currentSize);
await r.golden.loadRobotoFont();
await r.golden.loadMaterialIconFont();
await r.pumpMyApp();
await r.golden.precacheImages();
await expectLater(
find.byType(MyApp),
matchesGoldenFile(
'products_list_${currentSize.width.toInt()}x${currentSize.height.toInt()}.png',
),
);
},
variant: sizeVariant,
tags: ['golden'],
);
}
Note: the example above uses
golden
as a test tag. To learn more about this, read: How to Use Tags in Your Unit and Widget Tests.