ozzie 2.2.3

ozzie.flutter #

Build Status codecov Pub

ozzie icon art

Ozzie is your testing friend. Ozzie will take an screenshot during integration tests whenever you need. Ozzie will capture performance reports for you.

How it works #

Add ozzie to your pubspec.yaml as a dev_dependency:

dev_dependencies:
  ozzie: <latest_version_here>

In your Flutter integration tests, create an instance of Ozzie, pass the FlutterDriver, give it a groupName and ask it to takeScreenshot. That simple! And whenever you have finished with tests, you can create an HTML report by asking Ozzie to generateHtmlReport.

If you want to measure the performance of your app, simple wrap your integration tests in profilePerformance and it will be added to the HTML report.

Here's an example:

import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
import 'package:ozzie/ozzie.dart';

void main() {
  FlutterDriver driver;
  Ozzie ozzie;

  setUpAll(() async {
    driver = await FlutterDriver.connect();
    ozzie = Ozzie.initWith(driver, groupName: 'counter');
  });

  tearDownAll(() async {
    if (driver != null) driver.close();
    ozzie.generateHtmlReport();
  });

  test('initial counter is 0', () async {
    await ozzie.profilePerformance('counter0', () async {
      await driver.waitFor(find.text('0'));
      await ozzie.takeScreenshot('initial_counter_is_0');
    });
  });

  test('initial counter is 0', () async {
    await ozzie.profilePerformance('counter1', () async {
      await driver.tap(find.byType('FloatingActionButton'));
      await driver.waitFor(find.text('1'));
      await ozzie.takeScreenshot('counter_is_1');
    });
  });
}

After this, a report will be generated inside your project as ozzie/index.html:

report example

Using ozzie.yaml to control performance thresholds #

You can declare, at the root of your project, an ozzie.yaml file to control the different thresholds of your performance tests. If this file is not declared, Ozzie will use internal default values:

ozzie.yaml:

integration_test_expectations:
  should_fail_build_on_warning: true
  should_fail_build_on_error: true
performance_metrics:
  missed_frames_threshold:
    warning_percentage: 5.0
    error_percentage: 10.0
  frame_build_rate_threshold:
    warning_time_in_millis: 14.0
    error_time_in_millis: 16.0
  frame_rasterizer_rate_threshold:
    warning_time_in_millis: 14.0
    error_time_in_millis: 16.0

Optional screenshots #

Taking screenshots can take a while, and sometimes you might want to run your integration tests without taking screenshots. If that's the case, you can set shouldTakeScreenshots to false and skip that part, saving you some precious time:

setUpAll(() async {
  driver = await FlutterDriver.connect();
  ozzie = Ozzie.initWith(
    driver,
    groupName: 'counter',
    shouldTakeScreenshots: false,
  );
});

License #

Copyright 2018 Jorge Coca

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Changelog #

Version 2.2.3 #

  • test to ^1.0.0
  • Dart SDK: ^2.2.0

Version 2.2.2 (2019-05-03) #

  • test dependency: ^1.5.3

Version 2.2.1 (2019-05-03) #

  • Update dependencies
  • Complete documentation
  • Fix warnings for better package health

Version 2.2.0 (2019-05-01) #

  • Added ability to capture profile reports with traceAction from FlutterDriver
  • Added support for using a ozzie.yaml to determine custom thresholds
  • Added functionality to fail builds based on having warnings and/or errors in the profile reports

Version 2.1.0 #

  • Added an optional shouldTakeScreenshots flag to skip taking screenshots

Version 2.0.1 (2018-01-02) #

  • Fixed bug where the HTML report would display all the groups with the same name

Version 2.0.0 (2018-12-30) #

  • Be able to download all the screenshots generated from the web report
  • Be able to download all the screenshots generated for a particular group from the web report
  • You can preview all the group screenshots in a slideshow
  • Updated documentation
  • Updated test dependencies

Version 1.0.2(2018-11-27) #

  • Update Mockito to 4.+

Version 1.0.1(2018-10-10) #

  • Reorganize folder support for better package management
  • Added code coverage

Version 1.0.0 (2018-10-09) #

  • Added ability to take screenshots and group them in folders
  • Added ability to generate an HTML report that lists all the screenshots taken

example/README.md

example #

A new Flutter project.

Getting Started #

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  ozzie: ^2.2.3

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:ozzie/ozzie.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
67
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
80
Overall:
Weighted score of the above. [more]
79
Learn more about scoring.

We analyzed this package on Aug 21, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.4.0
  • pana: 0.12.19
  • Flutter: 1.7.8+hotfix.4

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Maintenance issues and suggestions

Support latest dependencies. (-20 points)

The version constraint in pubspec.yaml does not support the latest published versions for 2 dependencies (meta, test).

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.2.0 <3.0.0
archive ^2.0.5 2.0.10
flutter 0.0.0
flutter_driver 0.0.0
meta ^1.1.1 1.1.6 1.1.7
test ^1.0.0 1.6.3 1.6.7
yaml ^2.1.0 2.1.16
Transitive dependencies
analyzer 0.36.4 0.38.1
args 1.5.2
async 2.2.0 2.3.0
boolean_selector 1.0.4 1.0.5
charcode 1.1.2
collection 1.14.11 1.14.12
convert 2.1.1
crypto 2.0.6 2.1.2
csslib 0.16.1
file 5.0.8 5.0.8+1
front_end 0.1.19 0.1.23
fuchsia_remote_debug_protocol 0.0.0
glob 1.1.7
html 0.14.0+2
http 0.12.0+2
http_multi_server 2.1.0
http_parser 3.1.3
intl 0.15.8
io 0.3.3
js 0.6.1+1
json_rpc_2 2.1.0
kernel 0.3.19 0.3.23
matcher 0.12.5
mime 0.9.6+3
multi_server_socket 1.0.2
node_preamble 1.4.6
package_config 1.1.0
package_resolver 1.0.10
path 1.6.2 1.6.4
pedantic 1.7.0 1.8.0+1
platform 2.2.0 2.2.1
pool 1.4.0
process 3.0.9 3.0.11
pub_semver 1.4.2
quiver 2.0.3 2.0.5
shelf 0.7.5
shelf_packages_handler 1.0.4
shelf_static 0.2.8
shelf_web_socket 0.2.3
sky_engine 0.0.99
source_map_stack_trace 1.1.5
source_maps 0.10.8
source_span 1.5.5
stack_trace 1.9.3
stream_channel 2.0.0
string_scanner 1.0.4 1.0.5
term_glyph 1.1.0
test_api 0.2.5 0.2.6
test_core 0.2.5 0.2.8
typed_data 1.1.6
vector_math 2.0.8
vm_service_client 0.2.6+2 0.2.6+3
watcher 0.9.7+12
web_socket_channel 1.0.13 1.0.15
Dev dependencies
flutter_test 0.0.0
mockito ^4.0.0