How to Run Multiple Test Variants

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.

Want More?

Invest in yourself with my high-quality Flutter courses.

Flutter In Production

Flutter In Production

Learn about flavors, environments, error monitoring, analytics, release management, CI/CD, and finally ship your Flutter apps to the stores. 🚀

Flutter Foundations Course

Flutter Foundations Course

Learn about State Management, App Architecture, Navigation, Testing, and much more by building a Flutter eCommerce app on iOS, Android, and web.

Flutter & Firebase Masterclass

Flutter & Firebase Masterclass

Learn about Firebase Auth, Cloud Firestore, Cloud Functions, Stripe payments, and much more by building a full-stack eCommerce app with Flutter & Firebase.

The Complete Dart Developer Guide

The Complete Dart Developer Guide

Learn Dart Programming in depth. Includes: basic to advanced topics, exercises, and projects. Last updated to Dart 2.15.

Flutter Animations Masterclass

Flutter Animations Masterclass

Master Flutter animations and build a completely custom habit tracking application.