Skip to content

Conversation

@cbracken
Copy link
Member

@cbracken cbracken commented May 5, 2018

This test fails consistently on mac2 and mac3 with the attached Moto G4
devices but passes consistently on other machines.

Adding a delay of 1s right after driver.connect() in setUpAll() causes
it to pass on the machines in question, which suggests a race condition.
Specifically it looks like connect returns the moment Flutter Driver
identifies that the isolate is up and running, but empirically it looks
like we start running the first test before the UI is actually up. This
triggers a failure wherein we start looking for elements before they're
onstage.

Link to viewport.dart:213 at HEAD:

return renderSliver.geometry.visible;

Stack trace:
FlutterDriver waitFor should find text "present"

  DriverError: Error in Flutter application: Uncaught extension error while executing waitFor: NoSuchMethodError: The getter 'visible' was called on null.
  Receiver: null
  Tried calling: visible
  #0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:46:5)
  #1      _ViewportElement.debugVisitOnstageChildren. (package:flutter/src/widgets/viewport.dart:213:36)
  #2      WhereIterator.moveNext (dart:_internal/iterable.dart:439:11)
  #3      Iterable.forEach (dart:core/iterable.dart)
  #4      _ViewportElement.debugVisitOnstageChildren (package:flutter/src/widgets/viewport.dart:214:8)
  #5      _DepthFirstChildIterator._reverseChildrenOf (package:flutter_test/src/all_elements.dart:54:15)
  #6      _DepthFirstChildIterator.moveNext (package:flutter_test/src/all_elements.dart:45:19)
  #7      CachingIterable._fillNext (package:flutter/src/foundation/basic_types.dart:252:27)
  #8      _LazyListIterator.moveNext (package:flutter/src/foundation/basic_types.dart:279:21)
  #9      WhereIterator.moveNext (dart:_internal/iterable.dart:438:22)
  #10     CachingIterable._fillNext (package:flutter/src/foundation/basic_types.dart:252:27)
  #11     _LazyListIterator.moveNext (package:flutter/src/foundation/basic_types.dart:279:21)
  #12     Iterable.isEmpty (dart:core/iterable.dart:449:33)
  #13     Iterable.isNotEmpty (dart:core/iterable.dart:456:27)
  #14     FlutterDriverExtension._waitForElement. (package:flutter_driver/src/extension/extension.dart:215:51)
  #15     FlutterDriverExtension._waitUntilFrame (package:flutter_driver/src/extension/extension.dart:197:19)
  #16     FlutterDriverExtension._waitForElement (package:flutter_driver/src/extension/extension.dart:215:11)

  #17     FlutterDriverExtension._waitFor (package:flutter_driver/src/extension/extension.dart:286:11)

  #18     FlutterDriverExtension.call (package:flutter_driver/src/extension/extension.dart:168:51)

  #19     BindingBase.registerServiceExtension. (package:flutter/src/foundation/binding.dart:370:32)

This test fails consistently on mac2 and mac3 with the attached Moto G4
devices but passes consistently on other machines.

Adding a delay of 1s right after driver.connect() in setUpAll() causes
it to pass on the machines in question, which suggests a race condition.
Specifically it looks like connect returns the moment Flutter Driver
identifies that the isolate is up and running, but empirically it looks
like we start running the first test before the UI is actually up. This
triggers a failure wherein we start looking for elements before they're
onstage.

Link to viewport.dart:213 at HEAD:
https://github.com/flutter/flutter/blob/b2b46659262c66ff13abc2b8016a94a47646eaad/packages/flutter/lib/src/widgets/viewport.dart#L213

Stack trace:
FlutterDriver waitFor should find text "present"

```
  DriverError: Error in Flutter application: Uncaught extension error while executing waitFor: NoSuchMethodError: The getter 'visible' was called on null.
  Receiver: null
  Tried calling: visible
  #0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:46:5)
  flutter#1      _ViewportElement.debugVisitOnstageChildren. (package:flutter/src/widgets/viewport.dart:213:36)
  flutter#2      WhereIterator.moveNext (dart:_internal/iterable.dart:439:11)
  flutter#3      Iterable.forEach (dart:core/iterable.dart)
  flutter#4      _ViewportElement.debugVisitOnstageChildren (package:flutter/src/widgets/viewport.dart:214:8)
  flutter#5      _DepthFirstChildIterator._reverseChildrenOf (package:flutter_test/src/all_elements.dart:54:15)
  flutter#6      _DepthFirstChildIterator.moveNext (package:flutter_test/src/all_elements.dart:45:19)
  flutter#7      CachingIterable._fillNext (package:flutter/src/foundation/basic_types.dart:252:27)
  flutter#8      _LazyListIterator.moveNext (package:flutter/src/foundation/basic_types.dart:279:21)
  flutter#9      WhereIterator.moveNext (dart:_internal/iterable.dart:438:22)
  flutter#10     CachingIterable._fillNext (package:flutter/src/foundation/basic_types.dart:252:27)
  flutter#11     _LazyListIterator.moveNext (package:flutter/src/foundation/basic_types.dart:279:21)
  flutter#12     Iterable.isEmpty (dart:core/iterable.dart:449:33)
  flutter#13     Iterable.isNotEmpty (dart:core/iterable.dart:456:27)
  flutter#14     FlutterDriverExtension._waitForElement. (package:flutter_driver/src/extension/extension.dart:215:51)
  flutter#15     FlutterDriverExtension._waitUntilFrame (package:flutter_driver/src/extension/extension.dart:197:19)
  flutter#16     FlutterDriverExtension._waitForElement (package:flutter_driver/src/extension/extension.dart:215:11)

  flutter#17     FlutterDriverExtension._waitFor (package:flutter_driver/src/extension/extension.dart:286:11)

  flutter#18     FlutterDriverExtension.call (package:flutter_driver/src/extension/extension.dart:168:51)

  flutter#19     BindingBase.registerServiceExtension. (package:flutter/src/foundation/binding.dart:370:32)
```
@cbracken cbracken requested a review from Hixie May 5, 2018 04:57
@cbracken
Copy link
Member Author

cbracken commented May 5, 2018

Another alternative: #17319

@Hixie
Copy link
Contributor

Hixie commented May 29, 2018

I believe @tvolkert fixed this test properly. Closing.

@Hixie Hixie closed this May 29, 2018
@tvolkert
Copy link
Contributor

FTR: #17812

@cbracken cbracken deleted the flake branch June 8, 2018 01:29
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants