From 6081476458015573e9f5c59df55c4b49bbef5af8 Mon Sep 17 00:00:00 2001 From: Yegor Date: Thu, 6 Oct 2016 10:20:58 -0700 Subject: [PATCH] improve devicelab docs (#6206) --- dev/devicelab/README.md | 94 +++++++++++++++++---------- dev/devicelab/images/broken-test.png | Bin 0 -> 30426 bytes 2 files changed, 60 insertions(+), 34 deletions(-) create mode 100644 dev/devicelab/images/broken-test.png diff --git a/dev/devicelab/README.md b/dev/devicelab/README.md index 8ded2af2b4..2e354eb0eb 100644 --- a/dev/devicelab/README.md +++ b/dev/devicelab/README.md @@ -1,8 +1,65 @@ # Flutter devicelab -This package contains the test framework and tests that run on physical devices. -More generally the tests are referred to as "tasks" in the API, but since we -primarily use it for testing, this document refers to them as "tests". +"Devicelab" (a.k.a. "cocoon") is a physical lab that tests Flutter on real +Android and iOS devices. + +This package contains the code for test framework and the tests. More generally +the tests are referred to as "tasks" in the API, but since we primarily use it +for testing, this document refers to them as "tests". + +You can see the continuous build results from the master branch at +http://go/flutter-dashboard/build.html. + +# Running tests locally + +Do make sure your tests pass locally before deploying to the CI environment. +Below is a handful of commands that run tests in a similar way to how the +CI environment runs them. These commands are also useful when you need to +reproduce a CI test failure locally. + +To run a test, use option `-t` (`--task`): + +```sh +dart bin/run.dart -t {NAME_OF_TEST} +``` + +To run multiple tests, repeat option `-t` (`--task`) multiple times: + +```sh +dart bin/run.dart -t test1 -t test2 -t test3 +``` + +To run all tests defined in `manifest.yaml`, use option `-a` (`--all`): + +```sh +dart bin/run.dart -a +``` + +To run tests from a specific stage, use option `-s` (`--stage`): + +```sh +dart bin/run.dart -s {NAME_OF_STAGE} +``` + +# Reproducing broken builds locally + +If a commit caused a test to fail, +[the dashboard](http://go/flutter-dashboard/build.html) might look something +like this: + +![Broken Test](images/broken-test.png) + +The red circle tells you that a test failed. The number inside tells you how +many times the devicelab attempted to run the test before giving up on it. + +To reproduce the breakage locally `git checkout` the corresponding Flutter +revision. Note the name of the test that failed. In the example above the +failing test is `flutter_gallery__transition_perf`. This name can be passed to +the `run.dart` command. For example: + +```sh +dart bin/run.dart -t flutter_gallery__transition_perf +``` # Writing tests @@ -63,34 +120,3 @@ Where: - `{CAPABILITIES}` is an array that lists the capabilities required of the test agent (the computer that runs the test) to run your test. Available capabilities are: `has-android-device`, `has-ios-device`. - -# Running tests locally - -Do make sure your tests pass locally before deploying to the CI environment. -Below is a handful of commands that run tests in a fashion very close to how the -CI environment runs them. These commands are also useful when you need to -reproduce a CI test failure locally. - -To run a test use option `-t` (`--task`): - -```sh -dart bin/run.dart -t {NAME_OF_TEST} -``` - -To run multiple tests repeat option `-t` (`--task`) multiple times: - -```sh -dart bin/run.dart -t test1 -t test2 -t test3 -``` - -To run all tests defined in `manifest.yaml` use option `-a` (`--all`): - -```sh -dart bin/run.dart -a -``` - -To run tests from a specific stage use option `-s` (`--stage`): - -```sh -dart bin/run.dart -s {NAME_OF_STAGE} -``` diff --git a/dev/devicelab/images/broken-test.png b/dev/devicelab/images/broken-test.png new file mode 100644 index 0000000000000000000000000000000000000000..6450f653b271dc483b214b4cc2231912a370f2bb GIT binary patch literal 30426 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 literal 0 HcmV?d00001