/hrk_flutter_test_batteries

A library to accumulate required flutter test helper and utility codes

Primary LanguageDartBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

ci pub package link codecov link

A library to accumulate required flutter test helper and utility codes

Features

Convenient Helpers

Getting started

flutter pub add dev:hrk_flutter_test_batteries

Usage

import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:hrk_flutter_test_batteries/hrk_flutter_test_batteries.dart';

void main() {
  test('$getTestType() Test', () {
    // To know whether in Widget Test or Integration Test.
    // For commands
    //   - flutter test
    //   - flutter test integration_test
    //   - flutter driver
  });

  testWidgets('Simulate Android Back Button', (tester) async {
    // await tester.pumpWidget(deep-link code);
    simulateAndroidBackButton(tester);
    // expect(find.byType(HomeScreen), findsOneWidget);
  });

  testWidgets('Pump app and press back', (tester) async {
    // await pumpApp(tester);
    await verifySystemNavigatorPop(tester);
    // To verify pressing back button, leaves the app
  });

  testWidgets('tester.getOverflowRenderFlexList()', (tester) async {
    disableOverflowError();
    tester.view.physicalSize = Size(280, tester.view.physicalSize.height);
    addTearDown(() => tester.view.resetPhysicalSize());
    // await tester.pumpWidget(widget under test);
    final overflowRenderFlexList = tester.getOverflowRenderFlexList();
    expect(overflowRenderFlexList.length, 0);
  });

  testWidgets('tester.expectNoOverflow()', (tester) async {
    disableOverflowError();
    tester.view.physicalSize = Size(280, tester.view.physicalSize.height);
    addTearDown(() => tester.view.resetPhysicalSize());
    // await tester.pumpWidget(widget under test);
    tester.expectNoOverflow();
  });

  testWidgets('tester.view.setLogicalSize()', (tester) async {
    // Saves atleast 3 lines
    // tester.view.physicalSize = Size(280, 653);
    // tester.view.devicePixelRatio = 1.0;
    // addTearDown(() => tester.view.resetPhysicalSize());
    // addTearDown(() => tester.view.resetDevicePixelRatio());
    tester.view.setLogicalSize(width: 280, height: 653);
  });

  testWidgets('useGoldenFileComparatorWithThreshold()', (tester) async {
    const double viewWidth = 100;
    const double viewHeight = 100;
    tester.view.setLogicalSize(width: viewWidth, height: viewHeight);
    await tester.pumpWidget(
      const SizedBox(
        width: viewWidth,
        height: viewHeight,
        child: ColoredBox(
          color: Colors.blue,
        ),
      ),
    );
    useGoldenFileComparatorWithThreshold(0.50); // 50.00%
    await expectLater(
      find.byType(ColoredBox),
      matchesGoldenFile('within-threshold.png'),
    );
  });
}