Utility on top of the Flutter Driver API that facilitates measuring the performance of your app in an automated way created by Very Good Ventures ๐Ÿฆ„

Very Good Performance

Very Good Ventures

Developed with ๐Ÿ’™ by Very Good Ventures ๐Ÿฆ„

ci pub package License: MIT style: very good analysis


Utility on top of the Flutter Driver API that facilitates measuring the performance of your app in an automated way

Usage

very_good_performance.yaml

Add a new file at root of your project named very_good_performance.yaml with the following fields.

You can modify these values to match your own performance expectations.

performance_report:
  directory: performance/reports
integration_test_expectations:
  should_fail_build_on_warning: true
  should_fail_build_on_error: true
performance_metrics:
  missed_frames_threshold:
    warning: 5
    error: 10
  average_frame_build_rate_threshold:
    warning_time_in_milliseconds: 14.0
    error_time_in_milliseconds: 16.0
  worst_frame_build_rate_threshold:
    warning_time_in_milliseconds: 14.0
    error_time_in_milliseconds: 16.0

Running tests with FlutterDrive

Simply wrap your FlutterDriver tests with the method capturePerformanceReport to start collecting performance information

test('tapping on the Increment button updates the counter', () async {
  await driver.capturePerformanceReport(
    reportName: 'counter_performance',
    action: () async {
      await driver.tap(find.byType(FloatingActionButton));
      expect(await driver.getText(find.text('1')), '1');
      await driver.tap(find.byType(FloatingActionButton));
      expect(await driver.getText(find.text('2')), '2');
    },
  );
});

At the end of the execution, you will see a similar report to this one:

Performance Report

Running the example project

You can find an example project that showcases how to use this library.

$> cd example
$> flutter drive --target=e2e/e2e.dart --driver=e2e/counter_test.dart -d macos --profile

You should see the Counter app running and, at the end of the execution, it will print the performance overview in the console, and will generate the performance reports under e2e/performance/reports.

Owner
Very Good Open Source
Open Source Code from Very Good Ventures (@VGVentures)
Very Good Open Source
Similar Resources

CatFrida is a macOS tool for inspecting a running iOS app.

CatFrida is a macOS tool for inspecting a running iOS app.

CatFrida CatFrida is a macOS tool for inspecting a running iOS app. Building with frida-swift, CatFrida provide an awesome easy way to dive into an ap

Nov 18, 2022

A sample app that demonstrates several techniques for rendering real-time shadow maps

Shadows This is a D3D11 sample app that demonstrates several techniques for rendering real-time shadow maps. The following techniques are implemented:

Nov 23, 2022

A C++ commandline for use in servers and chat software. Provides very simple asynchronous input/output.

A C++ commandline for use in servers and chat software. Provides very simple asynchronous input/output.

commandline A C++ commandline for use in servers and terminal chat software. Provides very simple asynchronous input/output. Supports reading and writ

Oct 9, 2022

A very stupid window manager.

vswm - very stupid window manager ================================= Probably the most stupid window manager ever created, written over an ancient rel

Sep 27, 2022

Ipsys Particle System Yey letS go, very cool particle system generator and fast renderer

Ipsys Particle System Yey letS go, very cool particle system generator and fast renderer

ipsys - Ipsys Particle System Yey letS go About Ipsys is a piece of software that focuces on running and displaying cool randomly generated particule

May 26, 2022

SMAA is a very efficient GPU-based MLAA implementation (DX9, DX10, DX11 and OpenGL)

SMAA is a very efficient GPU-based MLAA implementation (DX9, DX10, DX11 and OpenGL), capable of handling subpixel features seamlessly, and featuring an improved and advanced pattern detection & handling mechanism.

Nov 26, 2022

Simple and efficient screen recording utility for Windows.

simple and efficient screen recording utility for Windows

Nov 28, 2022

This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer GPU libraries.

OpenGL Cube Demo using PVR_PSP2 Driver layer GPU libraries This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer

Oct 31, 2021
Comments
  • feat: add dependabot

    feat: add dependabot

    Description

    feat: add dependabot

    Type of Change

    • [x] โœจ New feature (non-breaking change which adds functionality)
    • [ ] ๐Ÿ› ๏ธ Bug fix (non-breaking change which fixes an issue)
    • [ ] โŒ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] ๐Ÿงน Code refactor
    • [ ] โœ… Build configuration change
    • [ ] ๐Ÿ“ Documentation
    • [ ] ๐Ÿ—‘๏ธ Chore
  • Support additional metrics

    Support additional metrics

    If I understand correctly this library currently only measures frame rate performance, right? (How much time is spent building / rendering each frame.)

    It could also be extended to include metrics like:

Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.
Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.

This project is not actively maintained. NanoVG NanoVG is small antialiased vector graphics rendering library for OpenGL. It has lean API modeled afte

Nov 22, 2022
Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui
Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui

Orbit Engine Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui and more... The development of the engine is documented via

Jul 3, 2021
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Cross-platform, graphics API agnostic,

bgfx - Cross-platform rendering library GitHub Discussions Discord Chat What is it? Cross-platform, graphics API agnostic, "Bring Your Own Engine/Fram

Nov 27, 2022
This module is a simple, lightweight and flexible way to generate QR codes in Godot
This module is a simple, lightweight and flexible way to generate QR codes in Godot

QRCodeTexture Godot Module Summary This module is a simple, lightweight and flexible way to generate QR codes in Godot. It provides a new type of text

Oct 20, 2022
Easily view the unexplored korok seeds and locations in your BotW savefile on your Switch
Easily view the unexplored korok seeds and locations in your BotW savefile on your Switch

BotW Unexplored Easily view what hasn't been discovered in your Breath of the Wild savefile, on your Nintendo Switch. The korok seeds that haven't bee

Sep 11, 2022
An awesome videogame / graphic motor created in OpenGL
An awesome videogame / graphic motor created in OpenGL

MarioRPG-OpenGL An awesome videogame / graphic motor created in OpenGL ! Table of Contents About The Project Built With Getting Started Prerequisites

Nov 17, 2022
WebGL Texture plugin for Flutter

So far there is no way to render 3D objects efficiently in Flutter. Also directly accessing and programming the GPU from Dart isn't supported yet. This plugin shall close this gap.

Aug 9, 2022
A simple animation challenge made with Flutter
A simple animation challenge made with Flutter

Slide Show - Flutter Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is your fi

Dec 2, 2021
[WIP] A media playback library for Dart & Flutter apps on Windows & Linux. Based on libVLC & libVLC++.
[WIP] A media playback library for Dart & Flutter apps on Windows & Linux. Based on libVLC & libVLC++.

dart_vlc Bringing power of VLC to Flutter & Dart apps on Windows & Linux Installation dependencies: ... dart_vlc: ^0.0.1 Documentation Create a ne

Nov 29, 2022
Flutter package that lets you simply animate a widget into a visible state.
Flutter package that lets you simply animate a widget into a visible state.

Entry This Flutter package introduces a new widget : Entry. It lets you simply animate a widget into a visible state. Don't just display widgets : mak

Aug 14, 2022