Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[iOS] when .tap() in test, device.reloadReactNative() stalls indefinitely #691

Closed
wildseansy opened this issue Apr 25, 2018 · 7 comments
Closed

Comments

@wildseansy
Copy link

wildseansy commented Apr 25, 2018

Description

When tests don't include a tap, device.reloadReactNative() completes successfully. However when a call to .tap() is included, reloadReactNative never completes.

Similar to #488, #617, #660 - StackOverflow post. A workaround for this - you can call the following instead of device.reloadReactNative() and tests will function correctly, at the cost of a longer delay.

  beforeEach(async () => {
    device.terminateApp()
    device.launchApp()
  });

Steps to Reproduce

logged_out.spec.js
const {device, expect, element, by} = require('detox');
describe('Logged Out', () => {
  beforeEach(async () => {
    console.log('[debugging] Start react native reload');
    await device.reloadReactNative();
    console.log('[debugging] End react native reload');
  });

  it('First test with tap', async () => {    
    //Commenting out this line allows app to reload react native & complete tests:
    await element(by.id('logged_out/splash')).tap();
    console.log('[debugging] AFTER tap');
    await expect(element(by.id('logged_out/splash'))).toBeVisible();
  });

  it('Final test (never is hit)', async () => {
    await expect(element(by.id('logged_out/splash'))).toBeVisible();
  });
});

Detox, Node, Device, Xcode and macOS Versions

  • Detox: 1.3.4
  • React Native: 0.55.3
  • Node: v8.11.1
  • Device: iPhone 7 Simulator (11.3)
  • Xcode: 9.3
  • macOS: 10.13.4
Verbose Detox logs
detox test --configuration ios.simebug --loglevel verbose
node_modules/.bin/mocha e2e --opts e2e/mocha.opts --configuration ios.sim.debug --loglevel verbose    --grep :android: --invert


detox verb ws onOpen [object Object]
detox verb ws send: {"type":"login","params":{"sessionId":"TestAppRun","role":"tester"},"messageId":0}
detox verb ws onMessage: {"type":"loginSuccess","params":{"sessionId":"TestAppRun","role":"tester"},"messageId":0}
detox verb ws
detox verb 1: applesimutils --list "iPhone 7" --maxResults=1
detox info 1: Searching for device matching iPhone 7...
detox verb 1: stdout: [
detox verb 1: stdout:   {
detox verb 1: stdout:     "deviceType" : {
detox verb 1: stdout:       "name" : "iPhone 7",
detox verb 1: stdout:       "identifier" : "com.apple.CoreSimulator.SimDeviceType.iPhone-7"
detox verb 1: stdout:     },
detox verb 1: stdout:     "state" : "Booted",
detox verb 1: stdout:     "availability" : "(available)",
detox verb 1: stdout:     "name" : "iPhone 7",
detox verb 1: stdout:     "udid" : "687BBC11-27AA-49F6-BE1C-A438F6CD7FA7",
detox verb 1: stdout:     "os" : {
detox verb 1: stdout:       "version" : "11.3",
detox verb 1: stdout:       "availability" : "(available)",
detox verb 1: stdout:       "name" : "iOS 11.3",
detox verb 1: stdout:       "identifier" : "com.apple.CoreSimulator.SimRuntime.iOS-11-3",
detox verb 1: stdout:       "buildversion" : "15E217"
detox verb 1: stdout:     }
detox verb 1: stdout:   }
detox verb 1: stdout: ]
detox verb 1: stdout:
detox verb 2: applesimutils --list
detox verb 2: stdout: [
detox verb 2: stdout:   {
detox verb 2: stdout:     "deviceType" : {
detox verb 2: stdout:       "name" : "Apple TV",
detox verb 2: stdout:       "identifier" : "com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p"
detox verb 2: stdout:     },
detox verb 2: stdout:     "state" : "Shutdown",
detox verb 2: stdout:     "availability" : "(available)",
detox verb 2: stdout:     "name" : "Apple TV",
detox verb 2: stdout:     "udid" : "DD125448-CB1E-43CA-A95C-0A943277764E",
detox verb 2: stdout:     "os" : {
detox verb 2: stdout:       "version" : "11.3",
detox verb 2: stdout:       "availability" : "(available)",
detox verb 2: stdout:       "name" : "tvOS 11.3",
detox verb 2: stdout:       "identifier" : "com.apple.CoreSimulator.SimRuntime.tvOS-11-3",
detox verb 2: stdout:       "buildversion" : "15L211"
detox verb 2: stdout:     }
detox verb 2: stdout:   },
# ...redacted...
detox verb 2: stdout: ]
detox verb 2: stdout:
detox verb 3: /usr/bin/xcrun simctl uninstall 687BBC11-27AA-49F6-BE1C-A438F6CD7FA7 com.TestApp.TestAppRun
detox info 3: Uninstalling com.TestApp.TestAppRun...
detox info 3: com.TestApp.TestAppRun uninstalled
detox verb 4: /usr/bin/xcrun simctl install 687BBC11-27AA-49F6-BE1C-A438F6CD7FA7 "/Users/me/proj/TestApp/TestApp-mobile/ios/build/Build/Products/Debug-iphonesimulator/TestAppDebug.app"
detox info 4: Installing /Users/me/proj/TestApp/TestApp-mobile/ios/build/Build/Products/Debug-iphonesimulator/TestAppDebug.app...
detox info 4: /Users/me/proj/TestApp/TestApp-mobile/ios/build/Build/Products/Debug-iphonesimulator/TestAppDebug.app installed
detox verb 5: /usr/bin/xcrun simctl terminate 687BBC11-27AA-49F6-BE1C-A438F6CD7FA7 com.TestApp.TestAppRun
detox info 5: Terminating com.TestApp.TestAppRun...
detox info 5: com.TestApp.TestAppRun terminated
detox verb 6: /bin/cat /dev/null >$HOME/Library/Developer/CoreSimulator/Devices/687BBC11-27AA-49F6-BE1C-A438F6CD7FA7/data/tmp/detox.last_launch_app_log.out 2>$HOME/Library/Developer/CoreSimulator/Devices/687BBC11-27AA-49F6-BE1C-A438F6CD7FA7/data/tmp/detox.last_launch_app_log.err && SIMCTL_CHILD_DYLD_INSERT_LIBRARIES="/Users/me/Library/Detox/ios/199135aa280ba2724481caa91eb6468e1b2ebbd7/Detox.framework/Detox" /usr/bin/xcrun simctl launch --stdout=/tmp/detox.last_launch_app_log.out --stderr=/tmp/detox.last_launch_app_log.err 687BBC11-27AA-49F6-BE1C-A438F6CD7FA7 com.TestApp.TestAppRun --args -detoxServer ws://localhost:8099 -detoxSessionId TestAppRun
detox info 6: Launching com.TestApp.TestAppRun...
detox verb 6: stdout: com.TestApp.TestAppRun: 78837
detox verb 6: stdout:
detox info 6: com.TestApp.TestAppRun launched. The stdout and stderr logs were recreated, you can watch them with:
        tail -F $HOME/Library/Developer/CoreSimulator/Devices/687BBC11-27AA-49F6-BE1C-A438F6CD7FA7/data/tmp/detox.last_launch_app_log.{out,err}
detox verb ws send: {"type":"isReady","params":{},"messageId":-1000}
detox verb ws onMessage: {"type":"ready","messageId":-1000,"params":{}}
detox verb ws
  Logged Out
[debugging] Start react native reload
detox verb ws send: {"type":"reactNativeReload","params":{},"messageId":-1000}
detox verb ws onMessage: {"type":"ready","messageId":-1000,"params":{}}
detox verb ws
[debugging] End react native reload
detox verb ws send: {"type":"invoke","params":{"target":{"type":"Invocation","value":{"target":{"type":"EarlGrey","value":"instance"},"method":"detox_selectElementWithMatcher:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYMatchers"},"method":"matcherForAccessibilityID:","args":[{"type":"NSString","value":"logged_out/splash"}]}}]}},"method":"assertWithMatcher:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYMatchers"},"method":"matcherForSufficientlyVisible","args":[]}}]},"messageId":1}
detox verb ws onMessage: {"type":"invokeResult","messageId":1,"params":{"result":"(GREYElementInteraction)"}}
detox verb ws
detox verb ws send: {"type":"invoke","params":{"target":{"type":"Invocation","value":{"target":{"type":"EarlGrey","value":"instance"},"method":"detox_selectElementWithMatcher:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYMatchers"},"method":"matcherForAccessibilityID:","args":[{"type":"NSString","value":"logged_out/splash"}]}}]}},"method":"performAction:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYActions"},"method":"actionForTap","args":[]}}]},"messageId":2}
detox verb ws onMessage: {"type":"invokeResult","messageId":2,"params":{"result":"(GREYElementInteraction)"}}
detox verb ws
[debugging] AFTER tap
    ✓ Test with tap (1291ms)
[debugging] Start react native reload
detox verb ws send: {"type":"reactNativeReload","params":{},"messageId":-1000}

  1 passing (2m)

    1) "before each" hook for "Final test"

detox verb 7: /usr/bin/xcrun simctl terminate 687BBC11-27AA-49F6-BE1C-A438F6CD7FA7 com.TestApp.TestAppRun
detox info 7: Terminating com.TestApp.TestAppRun...
detox info 7: com.TestApp.TestAppRun terminated
detox verb ws send: {"type":"cleanup","params":{"stopRunner":true},"messageId":3}
detox verb ws onMessage: {"type":"cleanupDone","messageId":3,"params":{}}
detox verb ws
websocket server
$ detox run-server
detox-server info 13:56:45: server listening on localhost:8099...
detox-server wss 13:56:47: role=tester login (sessionId=TestAppRun)
detox-server wss 13:56:47: role=tester action=loginSuccess (sessionId=TestAppRun)
detox-server wss 13:56:53: role=tester action=isReady (sessionId=TestAppRun)
detox-server wss 13:56:53: role=testee not connected, cannot fw action (sessionId=TestAppRun)
detox-server wss 13:56:54: role=testee login (sessionId=TestAppRun)
detox-server wss 13:56:54: role=testee action=loginSuccess (sessionId=TestAppRun)
detox-server wss 13:56:58: role=testee action=ready (sessionId=TestAppRun)
detox-server wss 13:56:58: role=tester action=reactNativeReload (sessionId=TestAppRun)
detox-server wss 13:56:59: role=testee action=ready (sessionId=TestAppRun)
detox-server wss 13:56:59: role=tester action=invoke (sessionId=TestAppRun)
detox-server wss 13:57:00: role=testee action=invokeResult (sessionId=TestAppRun)
detox-server wss 13:57:00: role=tester action=invoke (sessionId=TestAppRun)
detox-server wss 13:57:00: role=testee action=invokeResult (sessionId=TestAppRun)
detox-server wss 13:57:00: role=tester action=reactNativeReload (sessionId=TestAppRun)
detox-server wss 13:59:00: role=tester action=cleanup (sessionId=TestAppRun)
detox-server wss 13:59:00: role=testee action=cleanupDone (sessionId=TestAppRun)
detox-server wss 13:59:00: role=tester disconnect (sessionId=TestAppRun)
detox-server wss 13:59:00: role=testee disconnect (sessionId=TestAppRun)
detox config
  "detox": {
    "test-runner": "mocha",
    "runner-config": "e2e/mocha.opts",
    "specs": "e2e",
    "configurations": {
      "ios.sim.release": {
        "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/TestAppDebug.app",
        "build": "export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -workspace ios/TestAppRun.xcworkspace -scheme TestAppDebug -configuration Release -sdk iphonesimulator -derivedDataPath ios/build -quiet",
        "type": "ios.simulator",
        "name": "iPhone 7"
      },
      "ios.sim.debug": {
        "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/TestAppDebug.app",
        "build": "xcodebuild -workspace ios/TestAppRun.xcworkspace -scheme TestAppDebug -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
        "type": "ios.simulator",
        "name": "iPhone 7",
        "session": {
          "server": "ws://localhost:8099",
          "sessionId": "TestAppRun"
        }
      }
    }
  }
@wildseansy wildseansy changed the title [iOS] when .tap() in test, call of await device.reloadReactNative() stalls indefinitely [iOS] when .tap() in test, device.reloadReactNative() stalls indefinitely Apr 25, 2018
@rotemmiz
Copy link
Member

You're not using waitFor correctly. Please go over the docs.
You may not even need waitFor at all. Detox waits for your app to be idle before executing each line.

@wildseansy
Copy link
Author

@rotemmiz thanks for the response. I had been trying a number of variations of the test content for the it clause. Basically, it doesn't matter if waitFor is present or not the issue still happens. I updated the test above to be as simple as possible; it still yields the same result

The element is a <View testID='logged_out/splash' />. Have also tried <TouchableOpacity testID='logged_out/splash' /> (just because <View/> components generally aren't tappable), but both have the same issue.

@rotemmiz
Copy link
Member

Can you please also add simulator logs?
And use --debug-synchronization to see if your application is busy after invoking tap().

@wildseansy
Copy link
Author

Added simulator logs above.
Output is extremely verbose, so I put the complete --debug-synchronization logs in this file:
debug-sync-output.txt

Here is the excerpt where the tap occurs (Flagged with [debugging] AFTER tap)

...detox info Sync WXRunLoopIdlingResource: React Native thread is busy.
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":240}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":240,"params":{"state":"busy","resources":[{"name":"App State","info":{"elements":["<UIImageView: 0x7fd4a8064d80; frame = (0 0; 375 667); userInteractionEnabled = NO; layer = <CALayer: 0x60800042e5a0>> - (null)","<UIWindowLayer: 0x608000427140>","<CALayer: 0x60800042e5a0>","<UIWindowLayer: 0x608000235b20>","<CALayer: 0x60000042f120>","<_UISnapshotWindow: 0x7fd4a8057480; frame = (0 0; 375 667); hidden = YES; gestureRecognizers = <NSArray: 0x608000c40ff0>; layer = <UIWindowLayer: 0x608000427140>>","<UIWindowLayer: 0x60800062b920>","<_UIReplicantView: 0x7fd4a5248d60; frame = (0 0; 375 667); layer = <_UIReplicantLayer: 0x6040006328a0>>","<_UIReplicantLayer: 0x6040006328a0>"],"appState":"Waiting for view's draw or layout pass to complete."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":240}}
detox verb ws  
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":241}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":241,"params":{"state":"busy","resources":[{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":241}}
detox verb ws  
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":242}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":242,"params":{"state":"busy","resources":[{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":242}}
detox verb ws  
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":243}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":243,"params":{"state":"busy","resources":[{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":243}}
detox verb ws  
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":244}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":244,"params":{"state":"busy","resources":[{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":244}}
detox verb ws  
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":245}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":245,"params":{"state":"busy","resources":[{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":245}}
detox verb ws  
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":246}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":246,"params":{"state":"busy","resources":[{"name":"Timer","info":{"prettyPrint":"Tracking Timer <__NSCFTimer: 0x600000366900>","timer":"<__NSCFTimer: 0x600000366900>","name":"Tracking Timer <__NSCFTimer: 0x600000366900>","nextFireDate":"Wednesday, April 25, 2018 at 4:08:09 PM Pacific Daylight Time"}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<RCTTouchHandler: 0x7fd4a2e3f980; baseClass = UIGestureRecognizer; state = Began; cancelsTouchesInView = NO; delaysTouchesEnded = NO; view = <RCTRootContentView 0x7fd4a2e88d00>>","<_UISystemGestureGateGestureRecognizer: 0x6040001d8f60; state = Failed; delaysTouchesBegan = YES; delaysTouchesEnded = NO; view = <UIWindow 0x7fd4a804f180>>","<_UISystemGestureGateGestureRecognizer: 0x6080003c7e90; state = Failed; delaysTouchesEnded = NO; view = <UIWindow 0x7fd4a804f180>>","<COSTouchSpotView: 0x7fd4a2e8d960; baseClass = UIImageView; frame = (187.5 333.5; 0 0); alpha = 0; opaque = NO; userInteractionEnabled = NO; animations = { opacity=<CABasicAnimation: 0x60000042d000>; bounds.origin=<CABasicAnimation: 0x600000420c20>; bounds.size=<CABasicAnimation: 0x600000238000>; }; layer = <CALayer: 0x600000431de0>> - (null)","<CALayer: 0x6000000352c0>","<UIWindowLayer: 0x600000431280>","<CALayer: 0x600000431de0>","<UIWindowLayer: 0x600000431640>","<COSTouchSpotView: 0x7fd4a2e966e0; baseClass = UIImageView; frame = (162.5 308.5; 50 50); alpha = 0.5; opaque = NO; userInteractionEnabled = NO; tag = 140551242966432; layer = <CALayer: 0x6000000352c0>> - (null)","<TouchVisualizerWindow: 0x7fd4a2e96020; baseClass = UIWindow; frame = (0 0; 375 667); userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x6000004465d0>; layer = <UIWindowLayer: 0x600000431640>>","<UIWindowLayer: 0x600000430fa0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear.\nWaiting for gesture recognizer to detect or fail an ongoing gesture.\nWaiting for view's draw or layout pass to complete."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":246}}
detox verb ws  
detox info Sync Timer: Tracking Timer <__NSCFTimer: 0x600000366900>
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":247}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":247,"params":{"state":"busy","resources":[{"name":"Timer","info":{"prettyPrint":"Tracking Timer <__NSCFTimer: 0x600000366900>","timer":"<__NSCFTimer: 0x600000366900>","name":"Tracking Timer <__NSCFTimer: 0x600000366900>","nextFireDate":"Wednesday, April 25, 2018 at 4:08:09 PM Pacific Daylight Time"}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<RCTTouchHandler: 0x7fd4a2e3f980; baseClass = UIGestureRecognizer; state = Began; cancelsTouchesInView = NO; delaysTouchesEnded = NO; view = <RCTRootContentView 0x7fd4a2e88d00>>","<_UISystemGestureGateGestureRecognizer: 0x6040001d8f60; state = Failed; delaysTouchesBegan = YES; delaysTouchesEnded = NO; view = <UIWindow 0x7fd4a804f180>>","<_UISystemGestureGateGestureRecognizer: 0x6080003c7e90; state = Failed; delaysTouchesEnded = NO; view = <UIWindow 0x7fd4a804f180>>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear.\nWaiting for gesture recognizer to detect or fail an ongoing gesture."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":247}}
detox verb ws  
detox info Sync Timer: Tracking Timer <__NSCFTimer: 0x600000366900>
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":248}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":248,"params":{"state":"busy","resources":[{"name":"Timer","info":{"prettyPrint":"Tracking Timer <__NSCFTimer: 0x600000366900>","timer":"<__NSCFTimer: 0x600000366900>","name":"Tracking Timer <__NSCFTimer: 0x600000366900>","nextFireDate":"Wednesday, April 25, 2018 at 4:08:09 PM Pacific Daylight Time"}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<RCTTouchHandler: 0x7fd4a2e3f980; baseClass = UIGestureRecognizer; state = Began; cancelsTouchesInView = NO; delaysTouchesEnded = NO; view = <RCTRootContentView 0x7fd4a2e88d00>>","<_UISystemGestureGateGestureRecognizer: 0x6040001d8f60; state = Failed; delaysTouchesBegan = YES; delaysTouchesEnded = NO; view = <UIWindow 0x7fd4a804f180>>","<_UISystemGestureGateGestureRecognizer: 0x6080003c7e90; state = Failed; delaysTouchesEnded = NO; view = <UIWindow 0x7fd4a804f180>>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear.\nWaiting for gesture recognizer to detect or fail an ongoing gesture."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":248}}
detox verb ws  
detox info Sync Timer: Tracking Timer <__NSCFTimer: 0x600000366900>
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":249}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":249,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":249}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":250}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":250,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":250}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":251}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":251,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":251}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":252}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":252,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":252}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":253}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":253,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9000000300, dirty, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":253}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws onMessage: {"type":"invokeResult","messageId":1,"params":{"result":"(GREYElementInteraction)"}}
detox verb ws  
[debugging] AFTER tap
detox verb ws send: {"type":"invoke","params":{"target":{"type":"Invocation","value":{"target":{"type":"EarlGrey","value":"instance"},"method":"detox_selectElementWithMatcher:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYMatchers"},"method":"matcherForAccessibilityID:","args":[{"type":"NSString","value":"logged_out/splash"}]}}]}},"method":"assertWithMatcher:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYMatchers"},"method":"matcherForSufficientlyVisible","args":[]}}]},"messageId":254}
detox verb ws send: {"type":"currentStatus","params":{},"messageId":255}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":255,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":255}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":256}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":256,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":256}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":257}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":257,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":257}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":258}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":258,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":258}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":259}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":259,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":259}}
detox verb ws  
detox info Sync Timed: performSelector @selector(removeFromSuperview) on COSTouchSpotView
detox info Sync Timed: performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow
detox info Sync Timed: animateWithDuration:delay:options:animations:completion:
detox info Sync App State: undefined
detox info Sync Dispatch Queue: com.apple.main-thread
detox verb ws send: {"type":"currentStatus","params":{},"messageId":260}
detox verb ws onMessage: {"type":"currentStatusResult","messageId":260,"params":{"state":"busy","resources":[{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:03 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","prettyPrint":"performSelector @selector(removeFromSuperview) on COSTouchSpotView","duration":0.6}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"Delayed performSelector","name":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","prettyPrint":"performSelector @selector(removeInactiveFingerTips) on COSTouchVisualizerWindow","duration":0.2}},{"name":"Timed","info":{"endTrackingDate":"Thursday, January 1, 1970 at 3:34:02 AM Pacific Standard Time","object":"<NSObject: 0x600000203ef0>","name":"animateWithDuration:delay:options:animations:completion:","prettyPrint":"animateWithDuration:delay:options:animations:completion:","duration":0.2}},{"name":"App State","info":{"elements":["<UIViewController: 0x7fd4a800e040>","<CABasicAnimation: 0x600000420c20>","<CABasicAnimation: 0x60c000427ac0>","<CABasicAnimation: 0x60c000427880>","<CABasicAnimation: 0x60000042d000>","<CABasicAnimation: 0x600000238000>","<CABasicAnimation: 0x60c0004275e0>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background.\nWaiting for window's root view controller's view to appear."}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x11aaf0dc0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x11aaf2300], width = 0x1, state = 0x001ffe9e00000300, dirty, max qos 6, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":260}}
detox verb ws....

@rotemmiz
Copy link
Member

Seems like you have endless animations running.

{"name":"App State","info":{"elements":["<CABasicAnimation: 0x6040004259e0>","<CABasicAnimation: 0x60400062f8a0>","<CABasicAnimation: 0x604000631560>","<CABasicAnimation: 0x604000426800>","<CABasicAnimation: 0x60400062f380>","<CABasicAnimation: 0x604000632600>","<CABasicAnimation: 0x6040004252e0>","<CABasicAnimation: 0x604000427720>","<CABasicAnimation: 0x604000631a60>"],"appState":"Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background."}}

@wildseansy
Copy link
Author

wildseansy commented Apr 26, 2018

If I take out the tap call though, I still see

{
  "name": "App State",
  "info": {
    "elements": ["<CABasicAnimation: 0x60400062aea0>", "<CABasicAnimation: 0x6040006338e0>", "<CABasicAnimation: 0x600000626ae0>", "<CABasicAnimation: 0x600000626b00>", "<CABasicAnimation: 0x604000636640>", "<CABasicAnimation: 0x604000633700>", "<CABasicAnimation: 0x60000043cca0>", "<CABasicAnimation: 0x600000624a40>", "<CABasicAnimation: 0x600000624ee0>"],
    "appState": "Waiting for an animation to finish. Continuous animations may never finish and must be stopped explicitly. Animations attached to hidden view may still be running in the background."
  }
}

but the tests are able to complete, and reloadReactNative completes successfully every time. This leads me to believe that its something else than the animations, and the tap is causing the app to never be idle

@wildseansy
Copy link
Author

Ok, so I figured it out.

Basically, the root view controller is first getting set via the Main Interface entry in the XCode project and then is updated in my AppDelegate to be the correct React Native view controller. This first Main Interface rootViewController never comes into view, and it is immediately overwritten on app start by the React Native view controller.

Earl Gray is running monitoring whether the app is running, it waits for this original view controller to come back into view. I'm not sure why this doesn't effect tests before the tap(), but a tap() + reloadReactNative triggers Earl Gray to wait indefinitely for this dud root view controller to come back into view.

Removing the Main Interface entry fixes this issue (#691) for me.

screen shot 2018-04-26 at 5 14 01 pm

@wix wix locked and limited conversation to collaborators Jul 23, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants