1. 20 Mar, 2017 1 commit
  2. 17 Mar, 2017 1 commit
  3. 04 Mar, 2017 1 commit
  4. 12 Feb, 2017 1 commit
    • Adam Barth's avatar
      Convert dismissable_test.dart to ListView (#8078) · 749a09db
      Adam Barth authored
      This test was a bit tricky to convert because it subtly relied upon the
      lazy evaluation of an Iterable.
      
      The onDismissed from Dismissable happens during the animation phase of
      the pipeline. Previously, the ScrollableList had already been built for
      that frame but had not evaluated its Iterable yet. When we got to the
      layout phase, ScrollableList evaluated its Iterable and saw the updated
      version of dismissedItems.
      
      A straightforward conversion to ListView calls toList() when building
      the ListView, but that evaluates the iterable when buildTest() is
      called, which is before the calls to pump and therefore before the
      animation phase, meaning the Iterable sees the old value of
      dismissedItems.
      
      This patch fixes the test to use the normal setState pattern to signal
      that state upon which the build depends has changed. Now, the
      onDismissed callback happens during the animation phase and the
      StatefulBuilder is marked as dirty via setState, which causes it to
      rebuild the ListView and re-evaluate the Iterable, seeing the updated
      version of dismissedItems.
      
      This change also lets us replace the gratuious use of pumpWidget with
      pump now that we use setState rather than pumpWidget to trigger a
      rebuild.
      749a09db
  5. 09 Feb, 2017 2 commits
  6. 09 Dec, 2016 1 commit
  7. 07 Nov, 2016 1 commit
  8. 14 Oct, 2016 1 commit
  9. 16 May, 2016 1 commit
    • Ian Hickson's avatar
      Make it possible to run tests live on a device (#3936) · 32527017
      Ian Hickson authored
      This makes it possible to substitute 'flutter run' for 'flutter test'
      and actually watch a test run on a device.
      
      For any test that depends on flutter_test:
      
      1. Remove any import of 'package:test/test.dart'.
      
      2. Replace `testWidgets('...', (WidgetTester tester) {`
            with `testWidgets('...', (WidgetTester tester) async {`
      
      3. Add an "await" in front of calls to any of the following:
          * tap()
          * tapAt()
          * fling()
          * flingFrom()
          * scroll()
          * scrollAt()
          * pump()
          * pumpWidget()
      
      4. Replace any calls to `tester.flushMicrotasks()` with calls to
         `await tester.idle()`.
      
      There's a guarding API that you can use, if you have particularly
      complicated tests, to get better error messages. Search for
      TestAsyncUtils.
      32527017
  10. 04 May, 2016 1 commit
  11. 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
  12. 14 Apr, 2016 1 commit
  13. 07 Apr, 2016 1 commit
  14. 14 Mar, 2016 1 commit
  15. 13 Mar, 2016 1 commit
  16. 12 Mar, 2016 2 commits
  17. 08 Mar, 2016 1 commit
  18. 07 Mar, 2016 1 commit
  19. 03 Mar, 2016 1 commit
  20. 21 Feb, 2016 1 commit
    • Adam Barth's avatar
      Add TestGesture · 1484add1
      Adam Barth authored
      This helper makes it easier to write correct tests that involve
      gestures.
      
      Fixes #1855
      1484add1
  21. 11 Jan, 2016 2 commits
  22. 06 Jan, 2016 2 commits
  23. 24 Dec, 2015 1 commit
    • Ian Hickson's avatar
      RenderFractionalTranslation · 9bad312a
      Ian Hickson authored
      - Add RenderFractionalTranslation, a render box that does a
        translation based on a FractionalOffset.
      
      - Make FractionalOffset more like Offset
        - dx/dy instead of x/y
        - add /, ~/, %
        - add .zero
      
      - Add alongOffset and alongSize to FractionalOffset so that you can
        easily apply FractionalOffset to Offsets and Sizes. (Better name
        suggestions welcome.)
      
      - Add transformHitTests boolean to RenderTransform (also on
        RenderFractionalTranslation), and to classes based on it.
      
      - Remove the fade from Dismissable. We can add it back using the
        builder-with-child pattern like Draggable if we need it. See #1003
        for tha feature request.
      
      - Rename a bunch of variables in dismissable.dart.
      
      - Change the test for dismissable to not handle leftwards dismisses
        one pixel different from rightwards dismisses, and cleaned up the
        resulting effect on the test (mostly making sure we had the right
        number of pumps, with comments explaining what each one was).
      
      Fixes #174.
      9bad312a
  24. 16 Dec, 2015 1 commit
  25. 23 Nov, 2015 1 commit
  26. 16 Nov, 2015 1 commit
    • Hixie's avatar
      More resilient Widget tests · d041f3ea
      Hixie authored
      - force the time dilation to 1.0 for the Widget tests, so that a local
        change doesn't break all the tests during development.
      - add missing license block to all the files.
      - set ui.window.onBeginFrame to null when you use WidgetTester, so that
        the engine doesn't trigger any confusing frames after our fake frames.
      d041f3ea
  27. 12 Nov, 2015 1 commit
  28. 15 Oct, 2015 1 commit
  29. 10 Oct, 2015 1 commit
  30. 02 Oct, 2015 1 commit
    • Hixie's avatar
      Regression test for #1215 · 846a073a
      Hixie authored
      I'm not sure this specific incarnation of the test ever crashed, since
      the original test depended on user interaction and now works fine, but
      just in case, here's a regression test for it so I can close that issue.
      
      This also slightly changes the Widget.toString() output to include the
      key since that will make debugging easier.
      846a073a
  31. 01 Oct, 2015 3 commits
  32. 30 Sep, 2015 1 commit
  33. 11 Sep, 2015 2 commits