How to test Flutter widgets on different screen sizes?
You can specify custom surface size by using WidgetTester
The following code will run a test with a screen size of 42x42
import 'package:flutter/widgets.dart';import 'package:flutter_test/flutter_test.dart';void main() { testWidgets("foo", (tester) async { tester.binding.window.physicalSizeTestValue = Size(42, 42); // resets the screen to its orinal size after the test end addTearDown(tester.binding.window.clearPhysicalSizeTestValue); // TODO: do something });}
Not sure why but solution of @rémi-rousselet didn't work for me. I've had to specify screen size using binding.window.physicalSizeTestValue
and binding.window.devicePixelRatioTestValue
so that output is fully deterministic
I've added a little bit more code for flutter beginners like me. Check this:
void main() { final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized(); testWidgets("Basic layout test (mobile device)", (tester) async { binding.window.physicalSizeTestValue = Size(400, 200); binding.window.devicePixelRatioTestValue = 1.0; await tester.pumpWidget(new MyApp()); expect(find.byType(MyHomePage), findsOneWidget); // etc. });}
There is a package called device_preview that can simulate your flutter app running on different devices.