1. 27 Jul, 2016 2 commits
  2. 14 Jul, 2016 1 commit
    • YoungSeok Yoon's avatar
      Flutter driver commands for controlling the Input widget (#4913) · a10cd03b
      YoungSeok Yoon authored
      * Driver commands for controlling the Input widget
      
      This commit introduces two new driver commands for controlling the
      material Input widget.
      
      * setInputText(SerializableFinder finder, String text)
      * submitInputText(SerializableFinder finder)
      
      Since it is not possible to directly modify the Input widget text,
      these driver commands invokes the handler functions of the Input
      widget: onChanged and onSubmitted, respectively. The `submitInputText`
      command returns the submitted String as a result.
      
      * Make input command handler methods private
      
      Addressing comments from @yjbanov.
      a10cd03b
  3. 25 Jun, 2016 1 commit
    • Kaiyuan Wang's avatar
      Fix the issue that flutter driver does not close _peer (#4755) · ccf87bd0
      Kaiyuan Wang authored
      * Fix the issue that flutter driver does not close _peer when
      driver.close() is invoked.  The problem introduces the following
      unexpected behavior:
      
        1. Launch an app using "flutter run ..." command
        2. Run the flutter driver test using "dart flutter_test.dart"
      
      The test will not exit after running.  The problem will be solved
      if _peer is closed.
      
      * Fix formatting issue
      ccf87bd0
  4. 19 Jun, 2016 1 commit
  5. 28 May, 2016 1 commit
  6. 26 May, 2016 2 commits
  7. 10 May, 2016 1 commit
  8. 04 May, 2016 2 commits
    • pq's avatar
      Literals get type annotations. · bcede8df
      pq authored
      As per the recent fix to the `always_specify_types` lint (https://github.com/dart-lang/linter/issues/199), literal maps and lists are now expected to be explicitly typed.
      
      Running that lint on the repo identifies quite a few spots to update.  This focuses on `flutter_driver` and `flutter_sprites` (somewhat arbitrarily) but the changes are fairly representative.
      
      Note there are a number of places where I made a quick judgement on how specific to make the types.  Feedback on those is welcome.  (Especially as we move forward with more.)
      bcede8df
    • Hans Muller's avatar
      Gallery demo start-time performance test (#3655) · a9b965cb
      Hans Muller authored
      *  Gallery demo start-time performance test
      a9b965cb
  9. 03 May, 2016 2 commits
  10. 29 Apr, 2016 1 commit
    • Ian Hickson's avatar
      Refactor the test framework (#3622) · 91dd9699
      Ian Hickson authored
      * Refactor widget test framework
      
      Instead of:
      
      ```dart
        test("Card Collection smoke test", () {
          testWidgets((WidgetTester tester) {
      ```
      
      ...you now say:
      
      ```dart
        testWidgets("Card Collection smoke test", (WidgetTester tester) {
      ```
      
      Instead of:
      
      ```dart
        expect(tester, hasWidget(find.text('hello')));
      ```
      
      ...you now say:
      
      ```dart
        expect(find.text('hello'), findsOneWidget);
      ```
      
      Instead of the previous API (exists, widgets, widget, stateOf,
      elementOf, etc), you now have the following comprehensive API. All these
      are functions that take a Finder, except the all* properties.
      
      * `any()` - true if anything matches, c.f. `Iterable.any`
      * `allWidgets` - all the widgets in the tree
      * `widget()` - the one and only widget that matches the finder
      * `firstWidget()` - the first widget that matches the finder
      * `allElements` - all the elements in the tree
      * `element()` - the one and only element that matches the finder
      * `firstElement()` - the first element that matches the finder
      * `allStates` - all the `State`s in the tree
      * `state()` - the one and only state that matches the finder
      * `firstState()` - the first state that matches the finder
      * `allRenderObjects` - all the render objects in the tree
      * `renderObject()` - the one and only render object that matches the finder
      * `firstRenderObject()` - the first render object that matches the finder
      
      There's also `layers' which returns the list of current layers.
      
      `tap`, `fling`, getCenter, getSize, etc, take Finders, like the APIs
      above, and expect there to only be one matching widget.
      
      The finders are:
      
       * `find.text(String text)`
       * `find.widgetWithText(Type widgetType, String text)`
       * `find.byKey(Key key)`
       * `find.byType(Type type)`
       * `find.byElementType(Type type)`
       * `find.byConfig(Widget config)`
       * `find.byWidgetPredicate(WidgetPredicate predicate)`
       * `find.byElementPredicate(ElementPredicate predicate)`
      
      The matchers (for `expect`) are:
      
       * `findsNothing`
       * `findsWidgets`
       * `findsOneWidget`
       * `findsNWidgets(n)`
       * `isOnStage`
       * `isOffStage`
       * `isInCard`
       * `isNotInCard`
      
      Benchmarks now use benchmarkWidgets instead of testWidgets.
      
      Also, for those of you using mockers, `serviceMocker` now automatically
      handles the binding initialization.
      
      This patch also:
      
      * changes how tests are run so that we can more easily swap the logic
        out for a "real" mode instead of FakeAsync.
      
      * introduces CachingIterable.
      
      * changes how flutter_driver interacts with the widget tree to use the
        aforementioned new API rather than ElementTreeTester, which is gone.
      
      * removes ElementTreeTester.
      
      * changes the semantics of a test for scrollables because we couldn't
        convince ourselves that the old semantics made sense; it only worked
        before because flushing the microtasks after every event was broken.
      
      * fixes the flushing of microtasks after every event.
      
      * Reindent the tests
      
      * Fix review comments
      91dd9699
  11. 28 Apr, 2016 1 commit
  12. 22 Apr, 2016 1 commit
  13. 21 Apr, 2016 2 commits
  14. 20 Apr, 2016 1 commit
  15. 19 Apr, 2016 2 commits
    • Ian Hickson's avatar
      Refactor service extensions (#3397) · 261923e5
      Ian Hickson authored
      Bindings now have a debugRegisterServiceExtensions() method that is
      invoked in debug mode (only). (Once we have a profile mode, there'll be
      a registerProfileServiceExtensions() method that gets called in that
      mode only to register extensions that apply then.)
      
      The BindingBase class provides convenience methods for registering
      service extensions that do the equivalent of:
      
      ```dart
      void extension() { ... }
      bool extension([bool enabled]) { ... }
      double extension([double extension])  { ... }
      Map<String, String> extension([Map<String, String> parameters]) { ... }
      ```
      
      The BindingBase class also itself registers ext.flutter.reassemble,
      which it has call a function on the binding called
      reassembleApplication().
      
      The Scheduler binding now exposes the preexisting
      ext.flutter.timeDilation.
      
      The Renderer binding now exposes the preexisting ext.flutter.debugPaint.
      
      The Renderer binding hooks reassembleApplication to trigger the
      rendering tree to be reprocessed (in particular, to fix up the
      optimisation closures).
      
      All the logic from rendering/debug.dart about service extensions is
      replaced by the above.
      
      I moved basic_types to foundation.
      
      The FlutterWidgets binding hooks reassembleApplication to trigger the
      widget tree to be entirely rebuilt.
      
      Flutter Driver now uses ext.flutter.driver instead of
      ext.flutter_driver, and is hooked using the same binding mechanism.
      Eventually we'll probably move the logic into the Flutter library so
      that you just get it without having to invoke a special method first.
      261923e5
    • Yegor's avatar
      [driver] "waitFor" command in place of broken "exists" (#3373) · e7657b94
      Yegor authored
      * [driver] "waitFor" command in place of broken "exits"
      
      * [driver] wait using frame callback
      e7657b94
  16. 15 Apr, 2016 2 commits
  17. 14 Apr, 2016 2 commits
  18. 13 Apr, 2016 1 commit
  19. 11 Apr, 2016 2 commits
  20. 08 Apr, 2016 1 commit
  21. 07 Apr, 2016 1 commit
  22. 05 Apr, 2016 1 commit
  23. 02 Apr, 2016 1 commit
  24. 01 Apr, 2016 1 commit
  25. 31 Mar, 2016 1 commit
  26. 30 Mar, 2016 2 commits
  27. 29 Mar, 2016 1 commit
    • Yegor Jbanov's avatar
      [driver] fix observatory port # and timeline data extraction · bfa16b2b
      Yegor Jbanov authored
      The way we pick observatory port # has changed and we have broken
      logic that handles port 8181. To fix the buildbot, switch to port
      8182. We can later figure out what we want to do when we clean up
      port handling.
      
      The old VM extention for extracting the timeline data is gone.
      Switch to the new '_getVMTimeline' API.
      bfa16b2b
  28. 18 Mar, 2016 1 commit
  29. 14 Mar, 2016 2 commits