calabash / calabash-ios

Calabash for iOS
Other
1.81k stars 369 forks source link

Touch gesture timeouts on Xcode 6.1 Simulators #566

Closed JaniJegoroff closed 9 years ago

JaniJegoroff commented 9 years ago

Environment:

Steps to reproduce:

  1. Build app to iPad Retina (8.1 Simulator)
  2. Launch calabash-ios console
  3. Execute: start_test_server_in_background
  4. Execute: touch("view marked:'<your-text>'"

Console trace:

Janis-Air:myApp janijegoroff$ DEBUG=1 DEBUG_HTTP=1 DEVICE_TARGET='iPad Retina (8.1 Simulator)' calabash-ios console
Running irb...
irb(main):001:0> start_test_server_in_background

INFO: Using uia strategy: 'preferences'
Sending 'QUIT' to instruments process '3169'
Waiting for instruments '3169' to terminate
Preparation took 2.950325 seconds
{
                        :app => "/Users/janijegoroff/Library/Developer/Xcode/DerivedData/myApp-civuqgdjemtasdaqyhpsrgakmnyv/Build/Products/Calabash-iphonesimulator/myApp.app",
                       :args => [],
    :bundle_dir_or_bundle_id => "/Users/janijegoroff/Library/Developer/Xcode/DerivedData/myApp-civuqgdjemtasdaqyhpsrgakmnyv/Build/Products/Calabash-iphonesimulator/myApp.app",
                  :bundle_id => "myBundleId",
                     :device => "iphone",
              :device_target => "iPad Retina (8.1 Simulator)",
              :launch_method => :instruments,
             :launch_retries => 5,
                   :log_file => "/var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0/run_loop.out",
                  :no_launch => false,
                    :no_stop => false,
                      :reset => false,
                :results_dir => "/var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0",
          :results_dir_trace => "/var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0/trace",
                     :script => "/var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0/_run_loop.js",
                :sdk_version => nil,
                       :udid => "iPad Retina (8.1 Simulator)",
               :uia_strategy => :preferences,
                      :xcode => "6.1",
                 :xcode_path => "/Applications/Xcode61/Xcode.app/Contents/Developer"
}

### Starting on iPad Retina (8.1 Simulator) App: /Users/janijegoroff/Library/Developer/Xcode/DerivedData/myApp-civuqgdjemtasdaqyhpsrgakmnyv/Build/Products/Calabash-iphonesimulator/myApp.app ###
2014-10-20 23:02:19 +0100 xcrun instruments -w "iPad Retina (8.1 Simulator)" -D "/var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0/trace" -t "Automation" "/Users/janijegoroff/Library/Developer/Xcode/DerivedData/myApp-civuqgdjemtasdaqyhpsrgakmnyv/Build/Products/Calabash-iphonesimulator/myApp.app" -e UIARESULTSPATH /var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0 -e UIASCRIPT /var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0/_run_loop.js  &> /var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0/run_loop.out
Launching took 8.111403 seconds
Calabash::Cucumber::Launcher: Launch Method instruments
Log file: /var/folders/66/62hrz8650r72_srksbdfwpjm0000gn/T/run_loop20141020-3233-p170g0/run_loop.out
irb(main):002:0> touch("view marked:'Main menu'")
= Request

! CONNECT TO localhost:37265
! CONNECTION ESTABLISHED
POST /map HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.1.2 (2014-05-08))
Accept: */*
Date: Mon, 20 Oct 2014 22:02:42 GMT
Content-Length: 86
Host: localhost:37265

{"query":"view marked:'Main menu'","operation":{"method_name":"query","arguments":[]}}

= Response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 460
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Date: Mon, 20 Oct 2014 22:02:42 GMT
Accept-Ranges: bytes
Access-Control-Max-Age: 3000

{"status_bar_orientation":"down","results":[{"text":"Main menu","enabled":true,"rect":{"center_x":392,"y":310,"width":516,"x":134,"center_y":323.75,"height":27.5},"id":null,"description":"<UITableViewLabel: 0x7b7f9af0; frame = (20 8; 516 27.5); text = 'Main menu'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7b7f9bb0>>","label":"Main menu","alpha":1,"class":"UITableViewLabel","frame":{"y":8,"width":516,"x":20,"height":27.5}}],"outcome":"SUCCESS"}Sending UIA command
uia.tapOffset('{:x 392, :y 323.75}')
= Request

POST /uia HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.1.2 (2014-05-08))
Accept: */*
Date: Mon, 20 Oct 2014 22:02:42 GMT
Content-Length: 50
Host: localhost:37265

{"command":"uia.tapOffset('{:x 392, :y 323.75}')"}

= Response

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Accept-Ranges: bytes
Date: Mon, 20 Oct 2014 22:02:42 GMT

6c
{"details":"","outcome":"FAILURE","reason":"Timed out running command uia.tapOffset('{:x 392, :y 323.75}')"}
0

RuntimeError: uia action failed because: Timed out running command uia.tapOffset('{:x 392, :y 323.75}')

    from /Users/janijegoroff/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/uia.rb:31:in `uia'
    from /Users/janijegoroff/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/uia.rb:319:in `uia_handle_command'
    from /Users/janijegoroff/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/uia.rb:138:in `uia_tap_offset'
    from /Users/janijegoroff/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/actions/instruments_actions.rb:93:in `query_action'
    from /Users/janijegoroff/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/actions/instruments_actions.rb:15:in `touch'
    from /Users/janijegoroff/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/core.rb:1095:in `query_action_with_options'
    from /Users/janijegoroff/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/core.rb:174:in `touch'
    from (irb):2
    from /Users/janijegoroff/.rbenv/versions/2.1.2/bin/irb:11:in `<main>'
irb(main):003:0>
JaniJegoroff commented 9 years ago

@jmoody - Totally agree, original issue is fixed so we can close this one.

nfrydenholm commented 9 years ago

@jmoody will you post a link to the new issue once it's created? I'm still trying to figure out what the pattern is when I see timeouts. I'm not convinced (yet) that it is NSUserDefaults - often it looks more like a timing issue, since I can get the timeout on the very first screen (showing user terms with an accept button). Currently I'm "peeing my pants" with a 2 second sleep after app launch, to see if that "fixes" the touch timeout on startup (and maybe just move it to other areas of the app :) ).

jmoody commented 9 years ago

@nfrydenholm

I'm still trying to figure out what the pattern is when I see timeouts. I'm not convinced (yet) that it is NSUserDefault

I think there are two issues:

  1. UIAutomation preferences API interacting with the NSUserDefaults API
  2. Intermittent timeouts in Xcode 6.1 - no issue yet. I am still trying to reproduce.

@nfrydenholm Can you share the app with me? Contact me @ my Xamarin address.

And just so we are all on the same page, this is in the simulators and not on devices?

nfrydenholm commented 9 years ago
  1. Yes, that issue I've met, and worked around it so the app works as expected
  2. :+1: And yes, it is in the simulator - I haven't tried on devices yet, but I'm hoping that will be easy once things are working in the (buggy) simulator.

I'll send you an email shortly...

JaniJegoroff commented 9 years ago

@jmoody

@JaniJegoroff Can you try reading and writing your notification settings to alternative .plist? If you cannot reproduce the timeout, we'll know that there is some issue with UIAutomation's preferences API not playing nice with NSUserDefaults.

I changed implementation so that it saves notification settings to .plist instead of NSUserDefault. In spite of that I can still reproduce the issue every time.

Is there any chance that problem is related to system level alert views that Calabash is dismissing automatically? Is there way to tell Calabash NOT to dismiss those alerts views ("allow push notifications" in this case)?

krukow commented 9 years ago

Jani (or anyone else) if I can get source code access to an app and a way to reproduce- I'll make it high priority to fix.

Can anyone create a sample to repro?

On 29 Oct 2014, at 16:35, Jani Jegoroff notifications@github.com wrote:

@jmoody

@JaniJegoroff Can you try reading and writing your notification settings to alternative .plist? If you cannot reproduce the timeout, we'll know that there is some issue with UIAutomation's preferences API not playing nice with NSUserDefaults.

I changed implementation so that it saves notification settings to .plist instead of NSUserDefault. In spite of that I can still reproduce the issue every time.

Is there any chance that problem is related to system level alert views that Calabash is dismissing automatically? Is there way to tell Calabash NOT to dismiss those alerts views ("allow push notifications" in this case)?

— Reply to this email directly or view it on GitHub.

jmoody commented 9 years ago

@JaniJegoroff

Is there any chance that problem is related to system level alert views that Calabash is dismissing automatically? Is there way to tell Calabash NOT to dismiss those alerts views ("allow push notifications" in this case)?

Can you move this to a new issue?

JaniJegoroff commented 9 years ago

@jmoody - New issue created: https://github.com/calabash/calabash-ios/issues/585

jmoody commented 9 years ago

Thanks @JaniJegoroff for the new issue.

I am going to close this issue shortly.

In the meantime, it would be great if those who can reproduce this issue would update their launcher relaunch arguments to use :uia_strategy => :host.

    launch_options =
          {
                :uia_strategy => :host,
          }
    launcher.relaunch(launch_options)
vishwas20 commented 9 years ago

Have you done with this, I'm keenly waiting for the fix

krukow commented 9 years ago

For those experiencing this issue could you try

0.11.4.pre1 (both client, server and run_loop updates)

NOTE: this doesn't not fix issues related to push notifications and timeouts.

Please report back here (include logs from DEBUG=1, DEBUG_HTTP=1 and iOS Core simulator logs)

reyandersen commented 9 years ago

I just ran into this issue. From the commit here "https://github.com/calabash/x-platform-example/commit/b3f1a14a5f920a69ba4ff18ce473a4f53666e36c" I could see that version 0.11.4.pre2 is out and I have tried with pre1 and pre2 with same result:

irb(main):002:0> tap_mark 'Next' RuntimeError: Could not parse response ''; the app has probably crashed from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/uia.rb:33:in rescue in uia' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/uia.rb:30:inuia' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/uia.rb:344:in uia_handle_command' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/uia.rb:144:inuia_tap_offset' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/actions/instruments_actions.rb:93:in query_action' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/actions/instruments_actions.rb:15:intouch' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/core.rb:1095:in query_action_with_options' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/core.rb:174:intouch' from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.4.pre2/lib/calabash-cucumber/core.rb:926:in tap_mark' from (irb):2 from /usr/bin/irb:12:in

'

jmoody commented 9 years ago

@reyandersen I don't think this is the same issue. That looks like a different problem. :(

I believe that is iOS 8 UIWebView keyboard input bar issue - as, there is no "Next" button on the keyboard.

reyandersen commented 9 years ago

Thanks for the speedy reply @jmoody . The app is showing a button with label "Next" that I am trying to touch. It was working pre iOS8.

So I did not expect it to press a specific button on the keyboard(which is also not showing in this case). But perhaps I misunderstood the new "tap_mark" command, I thoght it was just a replacement of the "tap" command.

jmoody commented 9 years ago

@reyandersen Can we move this discussion to another issue?

The app is showing a button with label "Next" that I am trying to touch. It was working pre iOS8.

Gotcha.

But perhaps I misunderstood the new "tap_mark" command, I thought it was just a replacement of the "tap" command.

Your understanding is correct. :) My analysis was weak. :)

reyandersen commented 9 years ago

@jmoody yes do move this to what ever makes sense. I just jumped in here because it sounded similar to what I was experiencing. In case I need to create or submit anything just let me know(I will most likely first submit anything if need, tomorrow as it is getting late here).

JaniJegoroff commented 9 years ago

@jmoody @reyandersen - I added new issue for tap_mark problem: https://github.com/calabash/calabash-ios/issues/600

krukow commented 9 years ago

I belive we can close this issue now. If anyone disagrees thinks this issue should be reopened please do.

Notice these issues still open:

https://github.com/calabash/calabash-ios/issues/536 https://github.com/calabash/calabash-ios/issues/585 https://github.com/calabash/calabash-ios/issues/600

krishnas07 commented 9 years ago

I still get issue with touch on version 0.11.4. Following are the details.

Environment:

Calabash 0.11.4 run_loop 1.0.9 Xcode 6.1 DEVICE_TARGET='iPad2 (8.1 Simulator)'

Console Trace:

DEBUG=1 DEBUG_HTTP=1 DEVICE_TARGET='iPad2 (8.1 Simulator)' cucumber Feature: xxx set Store Number As an iOS Tester I want to have a xxx feature file So I can begin testing quickly

Scenario: Login invalid # features/my_go_Regression.feature:7 /Library/Ruby/Gems/2.0.0/gems/sim_launcher-0.4.13/lib/sim_launcher/simulator.rb:104: warning: Insecure world writable dir /Users/xxxx in PATH, mode 040777

INFO: Using uia strategy: 'preferences' Preparation took 1.42382 seconds { :app => "/Users/xxxx/Library/Developer/Xcode/DerivedData/xxx-fotbbldbxsmxbqfpgipepbercmma/Build/Products/Debug-iphonesimulator/xxx.app", :args => [], :bundle_dir_or_bundle_id => "/Users/xxxx/Library/Developer/Xcode/DerivedData/xxx-fotbbldbxsmxbqfpgipepbercmma/Build/Products/Debug-iphonesimulator/xxx.app", :bundle_id => "com.yyy.stores.xxx.dev", :device => "ipad", :device_target => "iPad2 (8.1 Simulator)", :launch_method => :instruments, :launch_retries => 5, :log_file => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff/run_loop.out", :no_launch => false, :no_stop => false, :reset => false, :results_dir => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff", :results_dir_trace => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff/trace", :script => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff/_run_loop.js", :sdk_version => nil, :udid => "iPad2 (8.1 Simulator)", :uia_strategy => :preferences, :xcode => "6.1", :xcode_path => "/Applications/Xcode.app/Contents/Developer" }

Starting on iPad2 (8.1 Simulator) App: /Users/xxxx/Library/Developer/Xcode/DerivedData/xxx-fotbbldbxsmxbqfpgipepbercmma/Build/Products/Debug-iphonesimulator/xxx.app

2014-11-11 17:55:34 +0530 xcrun instruments -w "iPad2 (8.1 Simulator)" -D "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff/trace" -t "Automation" "/Users/z063742/Library/Developer/Xcode/DerivedData/xxx-fotbbldbxsmxbqfpgipepbercmma/Build/Products/Debug-iphonesimulator/xxx.app" -e UIARESULTSPATH /var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff -e UIASCRIPT /var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff/_run_loop.js &> /var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141111-78278-18fbsff/run_loop.out Launching took 4.634521 seconds = Request

! CONNECT TO localhost:37265 ! CONNECTION ESTABLISHED POST /map HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.0.0 (2014-05-08)) Accept: / Date: Tue, 11 Nov 2014 12:25:39 GMT Content-Length: 67 Host: localhost:37265

{"query":"view","operation":{"method_name":"query","arguments":[]}}

= Response

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Length: 9108 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Date: Tue, 11 Nov 2014 12:25:39 GMT Accept-Ranges: bytes Access-Control-Max-Age: 3000

{"status_bar_orientation":"left","results":[{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIWindow: 0x78e31960; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0x78e22db0>; layer = <UIWindowLayer: 0x78e282e0>>","id":null,"label":null,"alpha":1,"class":"UIWindow","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIView: 0x78e3ae30; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0x78e3a2f0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIScrollView: 0x78f57730; frame = (0 0; 1024 768); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7a0daf90>; layer = <CALayer: 0x78f569e0>; contentOffset: {0, 768}; contentSize: {1024, 1536}>","id":null,"label":null,"alpha":1,"class":"UIScrollView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":864,"y":0,"width":1728,"x":0,"center_y":10,"height":20},"description":"<UIView: 0x7a0d4d40; frame = (0 0; 1728 20); autoresize = W+BM; layer = <CALayer: 0x7a0d4d00>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1728,"x":0,"height":20}},{"enabled":true,"rect":{"center_x":512,"y":20,"width":1024,"x":0,"center_y":394,"height":748},"description":"<UIWebView: 0x7a078df0; frame = (0 20; 1024 748); autoresize = W+H; layer = <CALayer: 0x7a06aeb0>>","id":null,"label":null,"alpha":1,"class":"UIWebView","frame":{"y":20,"width":1024,"x":0,"height":748}},{"enabled":true,"rect":{"center_x":512,"y":20,"width":1024,"x":0,"center_y":394,"height":748},"description":"<_UIWebViewScrollView: 0x78f54ae0; frame = (0 0; 1024 748); clipsToBounds = YES; autoresize = H; gestureRecognizers = <NSArray: 0x78f55210>; layer = <CALayer: 0x78f54e10>; contentOffset: {0, 0}; contentSize: {1024, 748}>","id":null,"label":null,"alpha":1,"class":"_UIWebViewScrollView","frame":{"y":0,"width":1024,"x":0,"height":748}},{"text":null,"enabled":true,"rect":{"center_x":512,"y":20,"width":1024,"x":0,"center_y":394,"height":748},"id":null,"description":"<UIWebBrowserView: 0x7a9bde00; frame = (0 0; 1024 748); gestureRecognizers = <NSArray: 0x7a0d0180>; layer = <UIWebLayer: 0x7a0788e0>>","label":null,"alpha":1,"class":"UIWebBrowserView","frame":{"y":0,"width":1024,"x":0,"height":748}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<_UIAlertControllerShimPresenterWindow: 0x7a042400; frame = (0 0; 1024 768); opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x7a0e6d40>; layer = <UIWindowLayer: 0x7a0e10a0>>","id":null,"label":null,"alpha":1,"class":"_UIAlertControllerShimPresenterWindow","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIView: 0x7a17b7f0; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0x7a162300>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UITransitionView: 0x78e4db90; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0x78e4dce0>>","id":null,"label":null,"alpha":1,"class":"UITransitionView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIView: 0x7a043390; frame = (0 0; 1024 768); layer = <CALayer: 0x7a043400>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIView: 0x7a043030; frame = (0 0; 1024 768); layer = <CALayer: 0x7a0430a0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<_UIAlertControllerView: 0x7a0e8ee0; frame = (377 354; 270 60); layer = <CALayer: 0x7a0e8c90>>","id":null,"label":"Please Wait...","alpha":1,"class":"_UIAlertControllerView","frame":{"y":354,"width":270,"x":377,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0x7a0e92f0; frame = (0 0; 270 60); animations = { <_UIParallaxMotionEffect: 0x7a0f82b0>=<CAAnimationGroup: 0x78fbd770>; }; layer = <CALayer: 0x7a0e9360>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<_UIDimmingKnockoutBackdropView: 0x78fa6850; frame = (0 0; 270 60); clipsToBounds = YES; layer = <CALayer: 0x78fa16d0>>","id":null,"label":null,"alpha":1,"class":"_UIDimmingKnockoutBackdropView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0x78f9e930; frame = (0 0; 270 60); clipsToBounds = YES; layer = <CALayer: 0x78f9c920>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":false,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<_UIBackdropView: 0x78fa68c0; frame = (0 0; 270 60); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <_UIBackdropViewLayer: 0x78f9ed10>>","id":null,"label":null,"alpha":1,"class":"_UIBackdropView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":false,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0x78fa0da0; frame = (0 0; 270 60); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x78fa0f10>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0x7a0e93b0; frame = (0 0; 270 60); layer = <CALayer: 0x7a0e9420>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0x7a0e9470; frame = (0 0; 270 60); clipsToBounds = YES; layer = <CALayer: 0x7a0e94e0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<_UIAlertControllerShadowedScrollView: 0x7a0e9640; frame = (0 0; 270 60); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7a0e9b10>; layer = <CALayer: 0x7a0e9950>; contentOffset: {0, 0}; contentSize: {270, 60}>","id":null,"label":null,"alpha":1,"class":"_UIAlertControllerShadowedScrollView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0x7a0e9ef0; frame = (0 0; 270 60); layer = <CALayer: 0x7a0e9f70>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"text":null,"enabled":true,"rect":{"center_x":512,"y":0,"width":238,"x":393,"center_y":0,"height":0},"id":null,"description":"<UILabel: 0x7a0ecdb0; frame = (16 -354; 238 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7a0ece70>>","label":null,"alpha":1,"class":"UILabel","frame":{"y":-354,"width":238,"x":16,"height":0}},{"text":"Please Wait...","enabled":true,"rect":{"center_x":512,"y":374,"width":238,"x":393,"center_y":384.5,"height":21},"id":null,"description":"<UILabel: 0x7a0eab60; frame = (16 20; 238 21); text = 'Please Wait...'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7a0eaa70>>","label":"Please Wait...","alpha":1,"class":"UILabel","frame":{"y":20,"width":238,"x":16,"height":21}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":0,"x":512,"center_y":0,"height":0},"description":"<UIView: 0x7a0ecff0; frame = (135 -354; 0 0); clipsToBounds = YES; layer = <CALayer: 0x7a0ed060>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":-354,"width":0,"x":135,"height":0}},{"enabled":true,"rect":{"center_x":512,"y":414,"width":270,"x":377,"center_y":414,"height":0},"description":"<UICollectionView: 0x7a9fda00; frame = (0 60; 270 0); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7a0edb40>; layer = <CALayer: 0x7a0eda20>; contentOffset: {0, 0}; contentSize: {270, 0}> collection view layout: <_UIAlertControllerCollectionViewFlowLayout: 0x7a0ed430>","id":null,"label":null,"alpha":1,"class":"UICollectionView","frame":{"y":60,"width":270,"x":0,"height":0}}],"outcome":"SUCCESS"}= Request

POST /condition HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.0.0 (2014-05-08)) Accept: / Date: Tue, 11 Nov 2014 12:25:39 GMT Content-Length: 145 Host: localhost:37265

{"condition":"NONE_ANIMATING","query":"*","post_timeout":0,"frequency":0.2,"timeout_message":"Timeout waiting () for condition (NONE_ANIMATING)"}

= Response

HTTP/1.1 200 OK Transfer-Encoding: chunked Accept-Ranges: bytes Date: Tue, 11 Nov 2014 12:25:39 GMT

22 {"results":[],"outcome":"SUCCESS"} 0

= Request

POST /map HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.0.0 (2014-05-08)) Accept: / Date: Tue, 11 Nov 2014 12:25:41 GMT Content-Length: 86 Host: localhost:37265

{"query":"* css:'*' id:'username'","operation":{"method_name":"query","arguments":[]}}

= Response

ark-konopacki commented 9 years ago

Hi, @krishnas07 can you try replace in file 01_launch.rb (in Before section) line: calabash_launcher.relaunch() with lines: launch_options = { :uia_strategy => :host, } calabash_launcher.relaunch(launch_options)

for now only that solution works for me

bv commented 9 years ago

@ark-konopacki , :thumbsup: confirmed! That small patch is what makes my set up to run - many thanks!

piratmc commented 9 years ago

This worked for me as well Updated launcher: unless @calabash_launcher.calabash_no_launch? launch_options = { :uia_strategy => :host, } @calabash_launcher.relaunch(launch_options) @calabash_launcher.calabash_notify(self) end Thanks

krishnas07 commented 9 years ago

Have updated 01_launch.rb as below, still not working, please find the logs below Before do |scenario| @calabash_launcher = Calabash::Cucumber::Launcher.new unless @calabash_launcher.calabash_no_launch? launch_options = { :uia_strategy => :host, } @calabash_launcher.relaunch(launch_options)

@calabash_launcher.relaunch

@calabash_launcher.calabash_notify(self)

end end

After do |scenario| unless @calabash_launcher.calabash_no_stop? calabash_exit if @calabash_launcher.active? @calabash_launcher.stop end end end

at_exit do launcher = Calabash::Cucumber::Launcher.new if launcher.simulator_target? launcher.simulator_launcher.stop unless launcher.calabash_no_stop? end end

And got the logs as follows:

Feature: xxx set Store Number As an iOS Tester I want to have a xxx feature file So I can begin testing quickly

@logininvalid Scenario: Login invalid # features/xxxx.feature:9 /Library/Ruby/Gems/2.0.0/gems/sim_launcher-0.4.13/lib/sim_launcher/simulator.rb:104: warning: Insecure world writable dir /Users/z063742 in PATH, mode 040777

INFO: Using uia strategy: 'host' Preparation took 1.683573 seconds { :app => "/Users/xxxx/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug-iphonesimulator/xxx.app", :args => [], :bundle_dir_or_bundle_id => "/Users/z063742/Library/Developer/Xcode/DerivedData/xxx-fotbbldbxsmxbqfpgipepbercmma/Build/Products/Debug-iphonesimulator/xxx.app", :bundle_id => "com.yyy.stores.xxx.dev", :device => "ipad", :device_target => "iPad2 (8.1 Simulator)", :launch_method => :instruments, :launch_retries => 5, :log_file => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7/run_loop.out", :no_launch => false, :no_stop => false, :reset => false, :results_dir => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7", :results_dir_trace => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7/trace", :script => "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7/_run_loop.js", :sdk_version => nil, :udid => "iPad2 (8.1 Simulator)", :uia_strategy => :host, :xcode => "6.1", :xcode_path => "/Applications/Xcode.app/Contents/Developer" }

Starting on iPad2 (8.1 Simulator) App: /Users/z063742/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug-iphonesimulator/xxx.app

2014-11-13 13:42:44 +0530 xcrun instruments -w "iPad2 (8.1 Simulator)" -D "/var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7/trace" -t "Automation" "/Users/z063742/Library/Developer/Xcode/DerivedData/xxx-fotbbldbxsmxbqfpgipepbercmma/Build/Products/Debug-iphonesimulator/xxx.app" -e UIARESULTSPATH /var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7 -e UIASCRIPT /var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7/_run_loop.js &> /var/folders/gs/gtwrx23s3kbb2bcjhwsk89zjz5zbl3/T/run_loop20141113-22517-n86te7/run_loop.out Launching took 7.946159 seconds = Request

! CONNECT TO localhost:37265 ! CONNECTION ESTABLISHED POST /map HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.0.0 (2014-05-08)) Accept: / Date: Thu, 13 Nov 2014 08:12:52 GMT Content-Length: 67 Host: localhost:37265

{"query":"view","operation":{"method_name":"query","arguments":[]}}

= Response

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Length: 31506 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Date: Thu, 13 Nov 2014 08:12:52 GMT Accept-Ranges: bytes Access-Control-Max-Age: 3000

{"status_bar_orientation":"left","results":[{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIWindow: 0xc9a9a30; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0xc923f50>; layer = <UIWindowLayer: 0xc902800>>","id":null,"label":null,"alpha":1,"class":"UIWindow","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UITransitionView: 0xcc91f00; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0xcc91d70>>","id":null,"label":null,"alpha":1,"class":"UITransitionView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":864,"y":0,"width":1728,"x":0,"center_y":10,"height":20},"description":"<UIView: 0xcc3b820; frame = (0 0; 1728 20); autoresize = W+BM; layer = <CALayer: 0xcc39ee0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1728,"x":0,"height":20}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<SSOWebView: 0xc909b00; baseClass = UIWebView; frame = (0 0; 1024 768); autoresize = W+H; animations = { position=<CASpringAnimation: 0xcce1c50>; }; layer = <CALayer: 0xc9bc1e0>>","id":null,"label":null,"alpha":1,"class":"SSOWebView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<_UIWebViewScrollView: 0xce3a230; frame = (0 0; 1024 768); clipsToBounds = YES; autoresize = H; gestureRecognizers = <NSArray: 0xce3a5c0>; layer = <CALayer: 0xce3a520>; contentOffset: {-0, -0}; contentSize: {1024, 768}>","id":null,"label":null,"alpha":1,"class":"_UIWebViewScrollView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"text":"Username\n\nPassword\n\nsign in\ncancel\nPowered byPingIdentity","enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"id":null,"description":"<UIWebBrowserView: 0xd096400; frame = (0 0; 1024 768); text = 'Username\n\nPassword\n\nsign ...'; gestureRecognizers = <NSArray: 0xce3bee0>; layer = <UIWebLayer: 0xc9fa1a0>>","label":null,"alpha":1,"class":"UIWebBrowserView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":false,"rect":{"center_x":0,"y":0,"width":0,"x":0,"center_y":0,"height":0},"description":"<UITextSelectionView: 0x13f08e30; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x13f08ff0>>","id":null,"label":null,"alpha":1,"class":"UITextSelectionView","frame":{"y":0,"width":0,"x":0,"height":0}},{"enabled":false,"rect":{"center_x":346.5,"y":130,"width":3,"x":345,"center_y":139.5,"height":19},"description":"<UIView: 0xcd356c0; frame = (345 130; 3 19); userInteractionEnabled = NO; layer = <CALayer: 0xcd39d70>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":130,"width":3,"x":345,"height":19}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UITextEffectsWindow: 0xcc7c000; frame = (0 0; 1024 768); opaque = NO; gestureRecognizers = <NSArray: 0xcc7c760>; layer = <UIWindowLayer: 0xcc7c2f0>>","id":null,"label":null,"alpha":1,"class":"UITextEffectsWindow","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIInputSetContainerView: 0xcc7df60; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0xcc7e110>>","id":null,"label":null,"alpha":1,"class":"UIInputSetContainerView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":550.5,"height":435},"description":"<UIInputSetHostView: 0xcc7e520; frame = (0 333; 1024 435); gestureRecognizers = <NSArray: 0xccd2f10>; animations = { position=<CASpringAnimation: 0xce4fcd0>; }; layer = <CALayer: 0xcc7e4c0>>","id":null,"label":null,"alpha":1,"class":"UIInputSetHostView","frame":{"y":333,"width":1024,"x":0,"height":435}},{"enabled":false,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<UIKBInputBackdropView: 0xccdc2d0; frame = (0 0; 1024 44); userInteractionEnabled = NO; layer = <CALayer: 0xccdc000>>","id":null,"label":null,"alpha":1,"class":"UIKBInputBackdropView","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":false,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<UIKBBackdropView: 0xccdc380; frame = (0 0; 1024 44); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <_UIBackdropViewLayer: 0xccdc5f0>>","id":null,"label":null,"alpha":1,"class":"UIKBBackdropView","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":false,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<_UIBackdropEffectView: 0xccdc800; frame = (0 0; 1024 44); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0xccdc870>>","id":null,"label":null,"alpha":1,"class":"_UIBackdropEffectView","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":false,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<UIView: 0xccdc8a0; frame = (0 0; 1024 44); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xccdc910>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":false,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<UIView: 0xccdc940; frame = (0 0; 1024 44); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xccdc9b0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":true,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<UIWebFormAccessory: 0xcc94b20; frame = (0 0; 1024 44); layer = <CALayer: 0xcc94d70>>","id":null,"label":null,"alpha":1,"class":"UIWebFormAccessory","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":true,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<_UIInputViewContent: 0xcc95950; frame = (0 0; 1024 44); layer = <CALayer: 0xcc95af0>>","id":null,"label":null,"alpha":1,"class":"_UIInputViewContent","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":true,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<UIToolbar: 0xcc96060; frame = (0 0; 1024 44); opaque = NO; autoresize = W; layer = <CALayer: 0xcc96230>>","id":null,"label":null,"alpha":1,"class":"UIToolbar","frame":{"y":0,"width":1024,"x":0,"height":44}},{"enabled":false,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":355,"height":44},"description":"<UIImageView: 0xcd34c80; frame = (0 0; 1024 44); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xcd39130>> - (null)","id":null,"label":null,"alpha":1,"class":"UIImageView","frame":{"y":0,"width":1024,"x":0,"height":44}},{"selected":false,"enabled":false,"rect":{"center_x":25,"y":333,"width":10,"x":20,"center_y":355,"height":44},"id":null,"description":"<UIToolbarButton: 0xcc9f050; frame = (20 0; 10 44); opaque = NO; layer = <CALayer: 0xcc9f150>>","label":"Previous","alpha":1,"class":"UIToolbarButton","frame":{"y":0,"width":10,"x":20,"height":44}},{"selected":false,"enabled":false,"rect":{"center_x":25,"y":339,"width":32,"x":9,"center_y":354,"height":30},"id":null,"description":"<_UIToolbarNavigationButton: 0xcc9f180; frame = (-11 6; 32 30); opaque = NO; layer = <CALayer: 0xcc9f2d0>>","label":null,"alpha":1,"class":"_UIToolbarNavigationButton","frame":{"y":6,"width":32,"x":-11,"height":30}},{"enabled":false,"rect":{"center_x":25,"y":345,"width":10,"x":20,"center_y":354,"height":18},"description":"<UIImageView: 0xcd36270; frame = (11 6; 10 18); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd362f0>> - (null)","id":null,"label":null,"alpha":1,"class":"UIImageView","frame":{"y":6,"width":10,"x":11,"height":18}},{"selected":false,"enabled":false,"rect":{"center_x":68,"y":333,"width":10,"x":63,"center_y":355,"height":44},"id":null,"description":"<UIToolbarButton: 0xcc9fdb0; frame = (63 0; 10 44); opaque = NO; layer = <CALayer: 0xcc9feb0>>","label":"Next","alpha":1,"class":"UIToolbarButton","frame":{"y":0,"width":10,"x":63,"height":44}},{"selected":false,"enabled":false,"rect":{"center_x":68,"y":339,"width":32,"x":52,"center_y":354,"height":30},"id":null,"description":"<_UIToolbarNavigationButton: 0xcc9fee0; frame = (-11 6; 32 30); opaque = NO; layer = <CALayer: 0xcca0030>>","label":null,"alpha":1,"class":"_UIToolbarNavigationButton","frame":{"y":6,"width":32,"x":-11,"height":30}},{"enabled":false,"rect":{"center_x":68,"y":345,"width":10,"x":63,"center_y":354,"height":18},"description":"<UIImageView: 0xcd36500; frame = (11 6; 10 18); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd363c0>> - (null)","id":null,"label":null,"alpha":1,"class":"UIImageView","frame":{"y":6,"width":10,"x":11,"height":18}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<UIKBInputBackdropView: 0xccd4260; frame = (0 44; 1024 391); userInteractionEnabled = NO; layer = <CALayer: 0xccd4430>>","id":null,"label":null,"alpha":1,"class":"UIKBInputBackdropView","frame":{"y":44,"width":1024,"x":0,"height":391}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<UIKBBackdropView: 0xccd4740; frame = (0 0; 1024 391); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <_UIBackdropViewLayer: 0xccd4cd0>>","id":null,"label":null,"alpha":1,"class":"UIKBBackdropView","frame":{"y":0,"width":1024,"x":0,"height":391}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<_UIBackdropEffectView: 0xccd5160; frame = (0 0; 1024 391); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0xccd5530>>","id":null,"label":null,"alpha":1,"class":"_UIBackdropEffectView","frame":{"y":0,"width":1024,"x":0,"height":391}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<UIView: 0xcca6c10; frame = (0 0; 1024 391); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xcca0700>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":391}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<UIView: 0xcc96260; frame = (0 0; 1024 391); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xcca2980>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":391}},{"enabled":true,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<_UIKBCompatInputView: 0xc9d9b80; frame = (0 44; 1024 391); layer = <CALayer: 0x13f04ef0>>","id":null,"label":null,"alpha":1,"class":"_UIKBCompatInputView","frame":{"y":44,"width":1024,"x":0,"height":391}},{"enabled":true,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<UIKeyboardAutomatic: 0xcca6e80; frame = (0 0; 1024 391); opaque = NO; layer = <CALayer: 0xcca7030>>","id":null,"label":null,"alpha":1,"class":"UIKeyboardAutomatic","frame":{"y":0,"width":1024,"x":0,"height":391}},{"enabled":true,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":572.5,"height":391},"description":"<UIKeyboardImpl: 0xcca7210; frame = (0 0; 1024 391); layer = <CALayer: 0xcca71e0>>","id":null,"label":null,"alpha":1,"class":"UIKeyboardImpl","frame":{"y":0,"width":1024,"x":0,"height":391}},{"enabled":true,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":396.5,"height":39},"description":"<UIKeyboardPredictionView: 0x13f1a6b0; frame = (0 0; 1024 39); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x13f1a840>>\n(null)\n(null)\n(null)","id":null,"label":"Typing Predictions","alpha":1,"class":"UIKeyboardPredictionView","frame":{"y":0,"width":1024,"x":0,"height":39}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":396.5,"height":39},"description":"<UIKBBackgroundView: 0xccd3c80; frame = (0 0; 1024 39); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xccd3b20>>","id":null,"label":null,"alpha":1,"class":"UIKBBackgroundView","frame":{"y":0,"width":1024,"x":0,"height":39}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":1024,"x":0,"center_y":396.5,"height":39},"description":"<UIImageView: 0xce51f30; frame = (0 0; 1024 39); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xce51fb0>> - (null)","id":null,"label":null,"alpha":1,"class":"UIImageView","frame":{"y":0,"width":1024,"x":0,"height":39}},{"enabled":true,"rect":{"center_x":70,"y":377,"width":140,"x":0,"center_y":396.5,"height":39},"description":"<UIView: 0xcd33c70; frame = (0 0; 140 39); alpha = 0.05; layer = <CALayer: 0xcd33ce0>>","id":null,"label":null,"alpha":0.05,"class":"UIView","frame":{"y":0,"width":140,"x":0,"height":39}},{"enabled":false,"rect":{"center_x":263.5,"y":377,"width":247,"x":140,"center_y":396.5,"height":39},"description":"<UIKeyboardPredictionCell: 0xcd337c0; frame = (140 0; 247 39); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd33980>>","id":null,"label":null,"alpha":1,"class":"UIKeyboardPredictionCell","frame":{"y":0,"width":247,"x":140,"height":39}},{"enabled":false,"rect":{"center_x":334,"y":367,"width":408,"x":130,"center_y":396.5,"height":59},"description":"<UIKBKeyView: 0xcccef40; frame = (-10 -10; 408 59); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xccceff0>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":-10,"width":408,"x":-10,"height":59}},{"enabled":true,"rect":{"center_x":263.5,"y":375,"width":235,"x":146,"center_y":394.5,"height":39},"description":"<UIView: 0xcd33b30; frame = (6 -2; 235 39); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0xcd33ba0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":-2,"width":235,"x":6,"height":39}},{"text":null,"enabled":true,"rect":{"center_x":263.5,"y":375,"width":235,"x":146,"center_y":394.5,"height":39},"id":null,"description":"<UIMorphingLabel: 0xe05fa00; frame = (0 0; 235 39); opaque = NO; layer = <CALayer: 0xcd33d30>>","label":null,"alpha":1,"class":"UIMorphingLabel","frame":{"y":0,"width":235,"x":0,"height":39}},{"enabled":true,"rect":{"center_x":263.5,"y":375,"width":235,"x":146,"center_y":394.5,"height":39},"description":"<UIView: 0xcd33ea0; frame = (0 0; 235 39); layer = <CALayer: 0xcd33f10>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":235,"x":0,"height":39}},{"enabled":false,"rect":{"center_x":512,"y":377,"width":248,"x":388,"center_y":396.5,"height":39},"description":"<UIKeyboardPredictionCell: 0xcd307d0; frame = (388 0; 248 39); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd241a0>>","id":null,"label":null,"alpha":1,"class":"UIKeyboardPredictionCell","frame":{"y":0,"width":248,"x":388,"height":39}},{"enabled":false,"rect":{"center_x":512,"y":367,"width":268,"x":378,"center_y":396.5,"height":59},"description":"<UIKBKeyView: 0xcccf7f0; frame = (-10 -10; 268 59); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcccf8a0>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":-10,"width":268,"x":-10,"height":59}},{"enabled":true,"rect":{"center_x":512,"y":375,"width":236,"x":394,"center_y":394.5,"height":39},"description":"<UIView: 0xcd33750; frame = (6 -2; 236 39); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0xcd26910>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":-2,"width":236,"x":6,"height":39}},{"text":null,"enabled":true,"rect":{"center_x":512,"y":375,"width":236,"x":394,"center_y":394.5,"height":39},"id":null,"description":"<UIMorphingLabel: 0xe065600; frame = (0 0; 236 39); opaque = NO; layer = <CALayer: 0xcd1d180>>","label":null,"alpha":1,"class":"UIMorphingLabel","frame":{"y":0,"width":236,"x":0,"height":39}},{"enabled":true,"rect":{"center_x":512,"y":375,"width":236,"x":394,"center_y":394.5,"height":39},"description":"<UIView: 0xcd269f0; frame = (0 0; 236 39); layer = <CALayer: 0xcd2e400>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":236,"x":0,"height":39}},{"enabled":false,"rect":{"center_x":760.5,"y":377,"width":247,"x":637,"center_y":396.5,"height":39},"description":"<UIKeyboardPredictionCell: 0xcd1a220; frame = (637 0; 247 39); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd33bf0>>","id":null,"label":null,"alpha":1,"class":"UIKeyboardPredictionCell","frame":{"y":0,"width":247,"x":637,"height":39}},{"enabled":false,"rect":{"center_x":831,"y":367,"width":408,"x":627,"center_y":396.5,"height":59},"description":"<UIKBKeyView: 0xcccf4a0; frame = (-10 -10; 408 59); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcccf550>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":-10,"width":408,"x":-10,"height":59}},{"enabled":true,"rect":{"center_x":760.5,"y":375,"width":235,"x":643,"center_y":394.5,"height":39},"description":"<UIView: 0xcd240e0; frame = (6 -2; 235 39); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0xcd24a30>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":-2,"width":235,"x":6,"height":39}},{"text":null,"enabled":true,"rect":{"center_x":760.5,"y":375,"width":235,"x":643,"center_y":394.5,"height":39},"id":null,"description":"<UIMorphingLabel: 0xe06b200; frame = (0 0; 235 39); opaque = NO; layer = <CALayer: 0xcd24a60>>","label":null,"alpha":1,"class":"UIMorphingLabel","frame":{"y":0,"width":235,"x":0,"height":39}},{"enabled":true,"rect":{"center_x":760.5,"y":375,"width":235,"x":643,"center_y":394.5,"height":39},"description":"<UIView: 0xcd273c0; frame = (0 0; 235 39); layer = <CALayer: 0xcd343b0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":235,"x":0,"height":39}},{"enabled":true,"rect":{"center_x":954,"y":377,"width":140,"x":884,"center_y":396.5,"height":39},"description":"<UIView: 0xcd1b380; frame = (884 0; 140 39); alpha = 0.05; layer = <CALayer: 0xcd1b3f0>>","id":null,"label":null,"alpha":0.05,"class":"UIView","frame":{"y":0,"width":140,"x":884,"height":39}},{"enabled":true,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIKeyboardLayoutStar: 0x13f1bb50; frame = (0 39; 1024 352); opaque = NO; gestureRecognizers = <NSArray: 0xcc8acc0>; layer = <CALayer: 0x13f1bd60>>","id":null,"label":null,"alpha":1,"class":"UIKeyboardLayoutStar","frame":{"y":39,"width":1024,"x":0,"height":352}},{"enabled":false,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIKBBackgroundView: 0xccc66a0; frame = (0 0; 1024 352); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xccc68a0>>","id":null,"label":null,"alpha":1,"class":"UIKBBackgroundView","frame":{"y":0,"width":1024,"x":0,"height":352}},{"enabled":false,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIImageView: 0xccec310; frame = (0 0; 1024 352); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xccec390>> - (null)","id":null,"label":null,"alpha":1,"class":"UIImageView","frame":{"y":0,"width":1024,"x":0,"height":352}},{"enabled":true,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIKBKeyplaneView: 0xccc5f70; frame = (0 0; 1024 352); opaque = NO; layer = <CALayer: 0xccc60e0>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyplaneView","frame":{"y":0,"width":1024,"x":0,"height":352}},{"enabled":false,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIKBSplitImageView: 0xce4dcf0; frame = (0 0; 1024 352); alpha = 0.96; userInteractionEnabled = NO; layer = <CALayer: 0xce4dba0>>","id":null,"label":null,"alpha":0.96,"class":"UIKBSplitImageView","frame":{"y":0,"width":1024,"x":0,"height":352}},{"enabled":false,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIImageView: 0xcd20390; frame = (0 0; 1024 352); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xcd20b60>> - (null)","id":null,"label":null,"alpha":1,"class":"UIImageView","frame":{"y":0,"width":1024,"x":0,"height":352}},{"enabled":false,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIKBSplitImageView: 0xce4d8b0; frame = (0 0; 1024 352); userInteractionEnabled = NO; layer = <CALayer: 0xce4da30>>","id":null,"label":null,"alpha":1,"class":"UIKBSplitImageView","frame":{"y":0,"width":1024,"x":0,"height":352}},{"enabled":false,"rect":{"center_x":512,"y":416,"width":1024,"x":0,"center_y":592,"height":352},"description":"<UIImageView: 0xcd28250; frame = (0 0; 1024 352); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xcd20ad0>> - (null)","id":null,"label":null,"alpha":1,"class":"UIImageView","frame":{"y":0,"width":1024,"x":0,"height":352}},{"enabled":false,"rect":{"center_x":45.5,"y":597,"width":83,"x":4,"center_y":636.5,"height":79},"description":"<UIKBKeyView: 0x13f1bde0; frame = (4 181; 83 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x13f09020>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":181,"width":83,"x":4,"height":79}},{"enabled":false,"rect":{"center_x":68,"y":683,"width":128,"x":4,"center_y":722.5,"height":79},"description":"<UIKBKeyView: 0xcd40eb0; frame = (4 267; 128 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd40f60>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":267,"width":128,"x":4,"height":79}},{"enabled":false,"rect":{"center_x":204.5,"y":683,"width":129,"x":140,"center_y":722.5,"height":79},"description":"<UIKBKeyView: 0xcd41290; frame = (140 267; 129 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd41340>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":267,"width":129,"x":140,"height":79}},{"enabled":false,"rect":{"center_x":543.5,"y":683,"width":535,"x":276,"center_y":722.5,"height":79},"description":"<UIKBKeyView: 0xcd416a0; frame = (276 267; 535 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd41750>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":267,"width":535,"x":276,"height":79}},{"enabled":false,"rect":{"center_x":770,"y":597,"width":82,"x":729,"center_y":636.5,"height":79},"description":"<UIKBKeyView: 0xcd3f790; frame = (729 181; 82 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd3f840>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":181,"width":82,"x":729,"height":79}},{"enabled":false,"rect":{"center_x":860,"y":597,"width":82,"x":819,"center_y":636.5,"height":79},"description":"<UIKBKeyView: 0xcd3fbd0; frame = (819 181; 82 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd3fc80>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":181,"width":82,"x":819,"height":79}},{"enabled":false,"rect":{"center_x":874,"y":683,"width":110,"x":819,"center_y":722.5,"height":79},"description":"<UIKBKeyView: 0xcd41a60; frame = (819 267; 110 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd41b10>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":267,"width":110,"x":819,"height":79}},{"enabled":false,"rect":{"center_x":945,"y":511,"width":150,"x":870,"center_y":550.5,"height":79},"description":"<UIKBKeyView: 0xcd40390; frame = (870 95; 150 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd40440>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":95,"width":150,"x":870,"height":79}},{"enabled":false,"rect":{"center_x":964.5,"y":597,"width":111,"x":909,"center_y":636.5,"height":79},"description":"<UIKBKeyView: 0x13f106a0; frame = (909 181; 111 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x13f10750>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":181,"width":111,"x":909,"height":79}},{"enabled":false,"rect":{"center_x":977,"y":425,"width":86,"x":934,"center_y":464.5,"height":79},"description":"<UIKBKeyView: 0xcd3ff90; frame = (934 9; 86 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd40040>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":9,"width":86,"x":934,"height":79}},{"enabled":false,"rect":{"center_x":978.5,"y":683,"width":83,"x":937,"center_y":722.5,"height":79},"description":"<UIKBKeyView: 0xcd41e20; frame = (937 267; 83 79); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xcd41ed0>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyView","frame":{"y":267,"width":83,"x":937,"height":79}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<_UIAlertControllerShimPresenterWindow: 0xcc63010; frame = (0 0; 1024 768); opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0xcc639e0>; layer = <UIWindowLayer: 0xcc63240>>","id":null,"label":null,"alpha":1,"class":"_UIAlertControllerShimPresenterWindow","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UIView: 0xcc628f0; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0xcc62960>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":384,"height":768},"description":"<UITransitionView: 0xcc7b850; frame = (0 0; 1024 768); autoresize = W+H; layer = <CALayer: 0xcc7b9a0>>","id":null,"label":null,"alpha":1,"class":"UITransitionView","frame":{"y":0,"width":1024,"x":0,"height":768}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":1024,"x":0,"center_y":166.5,"height":333},"description":"<UIView: 0xc9ea510; frame = (0 0; 1024 333); layer = <CALayer: 0xc9e7c50>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":1024,"x":0,"height":333}},{"enabled":true,"rect":{"center_x":512,"y":333,"width":1024,"x":0,"center_y":550.5,"height":435},"description":"<_UIKeyboardLayoutAlignmentView: 0xc9e7e80; frame = (0 333; 1024 435); layer = <CALayer: 0xc9e7c20>>","id":null,"label":null,"alpha":1,"class":"_UIKeyboardLayoutAlignmentView","frame":{"y":333,"width":1024,"x":0,"height":435}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0xcc65670; frame = (0 0; 270 60); layer = <CALayer: 0xcc656e0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<_UIDimmingKnockoutBackdropView: 0xcc78e40; frame = (0 0; 270 60); clipsToBounds = YES; layer = <CALayer: 0xcc78eb0>>","id":null,"label":null,"alpha":1,"class":"_UIDimmingKnockoutBackdropView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0xcc79580; frame = (0 0; 270 60); clipsToBounds = YES; layer = <CALayer: 0xcc795f0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":false,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<_UIBackdropView: 0xcc78f80; frame = (0 0; 270 60); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <_UIBackdropViewLayer: 0xcc79180>>","id":null,"label":null,"alpha":1,"class":"_UIBackdropView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":false,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0xcc793b0; frame = (0 0; 270 60); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xcc79420>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0xcc65730; frame = (0 0; 270 60); layer = <CALayer: 0xcc657a0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0xcc657f0; frame = (0 0; 270 60); clipsToBounds = YES; layer = <CALayer: 0xcc65860>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<_UIAlertControllerShadowedScrollView: 0xcc659d0; frame = (0 0; 270 60); clipsToBounds = YES; gestureRecognizers = <NSArray: 0xcc65ea0>; layer = <CALayer: 0xcc65ce0>; contentOffset: {0, 0}; contentSize: {270, 60}>","id":null,"label":null,"alpha":1,"class":"_UIAlertControllerShadowedScrollView","frame":{"y":0,"width":270,"x":0,"height":60}},{"enabled":true,"rect":{"center_x":512,"y":354,"width":270,"x":377,"center_y":384,"height":60},"description":"<UIView: 0xcc66280; frame = (0 0; 270 60); layer = <CALayer: 0xcc662f0>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":0,"width":270,"x":0,"height":60}},{"text":null,"enabled":true,"rect":{"center_x":512,"y":0,"width":238,"x":393,"center_y":0,"height":0},"id":null,"description":"<UILabel: 0xcc691c0; frame = (16 -354; 238 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0xcc69280>>","label":null,"alpha":1,"class":"UILabel","frame":{"y":-354,"width":238,"x":16,"height":0}},{"text":"Please Wait...","enabled":true,"rect":{"center_x":512,"y":374,"width":238,"x":393,"center_y":384.5,"height":21},"id":null,"description":"<UILabel: 0xcc66ec0; frame = (16 20; 238 21); text = 'Please Wait...'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0xcc66dc0>>","label":"Please Wait...","alpha":1,"class":"UILabel","frame":{"y":20,"width":238,"x":16,"height":21}},{"enabled":true,"rect":{"center_x":512,"y":0,"width":0,"x":512,"center_y":0,"height":0},"description":"<UIView: 0xcc69400; frame = (135 -354; 0 0); clipsToBounds = YES; layer = <CALayer: 0xcc69470>>","id":null,"label":null,"alpha":1,"class":"UIView","frame":{"y":-354,"width":0,"x":135,"height":0}},{"enabled":true,"rect":{"center_x":512,"y":414,"width":270,"x":377,"center_y":414,"height":0},"description":"<UICollectionView: 0xd867a00; frame = (0 60; 270 0); clipsToBounds = YES; gestureRecognizers = <NSArray: 0xcc69f10>; layer = <CALayer: 0xcc69df0>; contentOffset: {0, 0}; contentSize: {270, 0}> collection view layout: <_UIAlertControllerCollectionViewFlowLayout: 0xcc69830>","id":null,"label":null,"alpha":1,"class":"UICollectionView","frame":{"y":60,"width":270,"x":0,"height":0}}],"outcome":"SUCCESS"}= Request

POST /condition HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.0.0 (2014-05-08)) Accept: / Date: Thu, 13 Nov 2014 08:12:52 GMT Content-Length: 145 Host: localhost:37265

{"condition":"NONE_ANIMATING","query":"*","post_timeout":0,"frequency":0.2,"timeout_message":"Timeout waiting () for condition (NONE_ANIMATING)"}

= Response

HTTP/1.1 200 OK Transfer-Encoding: chunked Accept-Ranges: bytes Date: Thu, 13 Nov 2014 08:12:52 GMT

22 {"results":[],"outcome":"SUCCESS"} 0

= Request

POST /map HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.0.0 (2014-05-08)) Accept: / Date: Thu, 13 Nov 2014 08:12:53 GMT Content-Length: 86 Host: localhost:37265

{"query":"* css:'*' id:'username'","operation":{"method_name":"query","arguments":[]}}

= Response

! CONNECTION CLOSED = Request

! CONNECT TO localhost:37265 ! CONNECTION ESTABLISHED GET /screenshot HTTP/1.1 User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.0.0 (2014-05-08)) Accept: / Date: Thu, 13 Nov 2014 08:13:14 GMT Host: localhost:37265

= Response

ark-konopacki commented 9 years ago

Hi, @krishnas07 :host strategy works for me with that timeout issue: {"details":"","outcome":"FAILURE","reason":"Timed out running command uia.tapOffset('{:x 512, :y 578}')"} but, it cannot fix everything and btw i cannot find that kind of issue in your logs. And big thanks to @jmoody for that :host workaround.

JaniJegoroff commented 9 years ago

@krishnas07 - Looks like timeout is caused by none_animating check rather than touch gesture.

robsteinde commented 9 years ago

For me - even with :host strategy - timeouts still occure on touch gestures (but very very rarely) and with uia.type_string (often)

Debug output of timeout with uia.type_string when using the built-in keyboard_enter_text():

INFO: Using uia strategy: 'host' Preparation took 2.050067 seconds { :app => "/Users/robert/Library/Developer/Xcode/DerivedData/orderbird-cdsqzvlvmdjviqawemqdzhqhrmyh/Build/Products/Debug-iphonesimulator/orderbird-at.app", :args => [], :bundle_dir_or_bundle_id => "/Users/robert/Library/Developer/Xcode/DerivedData/orderbird-cdsqzvlvmdjviqawemqdzhqhrmyh/Build/Products/Debug-iphonesimulator/orderbird-at.app", :bundle_id => "com.orderbird.pos", :device => "iphone", :device_target => "iPhone 5s (8.1 Simulator)", :launch_method => :instruments, :launch_retries => 5, :log_file => "/var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97/run_loop.out", :no_launch => false, :no_stop => false, :reset => true, :results_dir => "/var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97", :results_dir_trace => "/var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97/trace", :script => "/var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97/_run_loop.js", :sdk_version => nil, :udid => "iPhone 5s (8.1 Simulator)", :uia_strategy => :host, :xcode => "6.1", :xcode_path => "/Applications/Xcode.app/Contents/Developer" }

Starting on iPhone 5s (8.1 Simulator) App: /Users/robert/Library/Developer/Xcode/DerivedData/orderbird-cdsqzvlvmdjviqawemqdzhqhrmyh/Build/Products/Debug-iphonesimulator/orderbird-at.app

2014-11-13 10:14:18 +0100 xcrun instruments -w "iPhone 5s (8.1 Simulator)" -D "/var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97/trace" -t "Automation" "/Users/robert/Library/Developer/Xcode/DerivedData/orderbird-cdsqzvlvmdjviqawemqdzhqhrmyh/Build/Products/Debug-iphonesimulator/orderbird-at.app" -e UIARESULTSPATH /var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97 -e UIASCRIPT /var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97/_run_loop.js &> /var/folders/6p/dxs52pts7mg124qbjn9yqf4m0000gn/T/run_loop20141113-24867-msjk97/run_loop.out Launching took 11.594105 seconds = Request

! CONNECT TO localhost:37265 ! CONNECTION ESTABLISHED

...

some steps

...

= Request

POST /map HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.3, ruby 2.0.0 (2014-10-27)) Accept: / Date: Thu, 13 Nov 2014 09:15:13 GMT Content-Length: 86 Host: localhost:37265

{"query":"view:'UIKBKeyplaneView'","operation":{"method_name":"query","arguments":[]}}

= Response

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Length: 382 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Date: Thu, 13 Nov 2014 09:15:13 GMT Accept-Ranges: bytes Access-Control-Max-Age: 3000

{"status_bar_orientation":"down","results":[{"enabled":true,"rect":{"center_x":160,"y":352,"width":320,"x":0,"center_y":460,"height":216},"description":"<UIKBKeyplaneView: 0x7b104870; frame = (0 0; 320 216); opaque = NO; layer = <CALayer: 0x7b104a20>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyplaneView","frame":{"y":0,"width":320,"x":0,"height":216}}],"outcome":"SUCCESS"}= Request

POST /map HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.3, ruby 2.0.0 (2014-10-27)) Accept: / Date: Thu, 13 Nov 2014 09:15:13 GMT Content-Length: 86 Host: localhost:37265

{"query":"view:'UIKBKeyplaneView'","operation":{"method_name":"query","arguments":[]}}

= Response

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Length: 382 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Date: Thu, 13 Nov 2014 09:15:13 GMT Accept-Ranges: bytes Access-Control-Max-Age: 3000

{"status_bar_orientation":"down","results":[{"enabled":true,"rect":{"center_x":160,"y":352,"width":320,"x":0,"center_y":460,"height":216},"description":"<UIKBKeyplaneView: 0x7b104870; frame = (0 0; 320 216); opaque = NO; layer = <CALayer: 0x7b104a20>>","id":null,"label":null,"alpha":1,"class":"UIKBKeyplaneView","frame":{"y":0,"width":320,"x":0,"height":216}}],"outcome":"SUCCESS"}= Request

POST /map HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.3, ruby 2.0.0 (2014-10-27)) Accept: / Date: Thu, 13 Nov 2014 09:15:13 GMT Content-Length: 97 Host: localhost:37265

{"query":"textField isFirstResponder:1","operation":{"method_name":"query","arguments":["text"]}}

= Response

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Length: 68 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Date: Thu, 13 Nov 2014 09:15:13 GMT Accept-Ranges: bytes Access-Control-Max-Age: 3000

{"status_bar_orientation":"down","results":[""],"outcome":"SUCCESS"} And I change name of party "Party 1" to "Santa Claus" # features/step_definitions/steps/tables_steps.rb:55 Sending UIA command uia.typeString('Santa Claus', '') Time out waiting for UIAutomation run-loop for command uia.typeString('Santa Claus', ''). Waiting for index:7 (RunLoop::TimeoutError) ./features/step_definitions/definitions/Common.rb:222:in COMMON_keyboard_enter_text' ./features/step_definitions/steps/tables_steps.rb:64:in/^I change name of party "([^\"])" to "([^\"])"$/' features/advanced/TableRenameParties.feature:11:in `And I change name of party "Party 1" to "Santa Claus"' And I change name of party "Party 2" to "Rudolf" # features/step_definitions/steps/tables_steps.rb:55 Then I save party editing # features/step_definitions/steps/tables_steps.rb:68 And I should see "Santa Claus" # calabash-cucumber-0.11.4/features/step_definitions/calabash_steps.rb:340 And I should see "Rudolf" # calabash-cucumber-0.11.4/features/step_definitions/calabash_steps.rb:340 When I open party selection # features/step_definitions/steps/tables_steps.rb:49 Then I should see "Santa Claus" # calabash-cucumber-0.11.4/features/step_definitions/calabash_steps.rb:340 And I should see "Rudolf" # calabash-cucumber-0.11.4/features/step_definitions/calabash_steps.rb:340 = Request

! CONNECTION CLOSED ! CONNECT TO localhost:37265 ! CONNECTION ESTABLISHED POST /exit HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: HTTPClient/1.0 (2.3.3, ruby 2.0.0 (2014-10-27)) Accept: / Date: Thu, 13 Nov 2014 09:16:14 GMT Content-Length: 78 Host: localhost:37265

{"post_resign_active_delay":0.4,"post_will_terminate_delay":0.4,"exit_code":0}

= Response

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Length: 2 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Date: Thu, 13 Nov 2014 09:16:14 GMT Accept-Ranges: bytes Access-Control-Max-Age: 3000

{}Sending 'QUIT' to instruments process '25397' Could not kill and wait for process '25397' - ignoring exception 'No child processes' Waiting for instruments '25397' to terminate

ark-konopacki commented 9 years ago

Hi, @robsteinde I'm not calabash developer ;) so i only can guess and try to fix my tests. anyway can you try to replace in you typing steps: keyboard_enter_text(text_to_type) with: text_to_type.each_char do |char|

defaults to 0.05 seconds

    # keyboard_enter_char(char, { :wait_after_char => 0.05 })
    keyboard_enter_char(char)

end it will be really slow, but should be safe (i'm use that workaround on jenkins)

robsteinde commented 9 years ago

@ark-konopacki: I already tried this. It results in exactly the same timeout error - just for the first char: uia.typeString('S', '') Time out waiting for UIAutomation run-loop for command uia.typeString('S', ''). Waiting for index:7 (RunLoop::TimeoutError)

lranjit-crri commented 9 years ago

After tapping login button application is getting hang and i am getting this error .Please help me

irb(main):003:0> tap_mark 'Username' Sending UIA command uia.tapOffset('{:x 174, :y 290.5}') Result {"status"=>"success", "value"=>true, "index"=>0} [ [0] { "text" => "Username", "enabled" => true, "rect" => { "center_x" => 174, "y" => 274, "width" => 244, "x" => 52, "center_y" => 290.5, "height" => 33 }, "id" => nil, "description" => "<UITextFieldLabel: 0x7919f420; frame = (0 0; 244 33); text = 'Username'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7919f4e0>>", "label" => "Username", "alpha" => 1, "class" => "UITextFieldLabel", "frame" => { "y" => 0, "width" => 244, "x" => 0, "height" => 33 } } ] irb(main):004:0> keyboard_enter_text 'studentqa' Sending UIA command uia.typeString('studentqa', '') Result {"status"=>"success", "value"=>{"name"=>":nil", "hit-point"=>{"x"=>61, "y"=>182.1009979248047}, "rect"=>{"y"=>166, "width"=>244, "x"=>52, "height"=>34}, "label"=>"", "el"=>"[object UIATextField]"}, "index"=>1} nil irb(main):005:0> tap_mark 'Password' Sending UIA command uia.tapOffset('{:x 174, :y 227.5}') Result {"status"=>"success", "value"=>true, "index"=>2} [ [0] { "text" => "Password", "enabled" => true, "rect" => { "center_x" => 174, "y" => 211, "width" => 244, "x" => 52, "center_y" => 227.5, "height" => 33 }, "id" => nil, "description" => "<UITextFieldLabel: 0x791a0a70; frame = (0 0; 244 33); text = 'Password'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x791a0b30>>", "label" => "Password", "alpha" => 1, "class" => "UITextFieldLabel", "frame" => { "y" => 0, "width" => 244, "x" => 0, "height" => 33 } } ] irb(main):006:0> keyboard_enter_text 'demouser' Sending UIA command uia.typeString('demouser', '') Result {"status"=>"success", "value"=>{"name"=>":nil", "hit-point"=>{"x"=>61, "y"=>227.1009979248047}, "rect"=>{"y"=>211, "width"=>244, "x"=>52, "height"=>34}, "label"=>"", "el"=>"[object UIASecureTextField]"}, "index"=>3} nil irb(main):007:0> tap_mark 'Login' Sending UIA command uia.tapOffset('{:x 232, :y 272}') Result {"status"=>"success", "value"=>true, "index"=>4} [ [0] { "selected" => false, "enabled" => true, "rect" => { "center_x" => 232, "y" => 256, "width" => 136, "x" => 164, "center_y" => 272, "height" => 32 }, "id" => nil, "description" => "<UIButton: 0x78fb2840; frame = (164 208; 136 32); opaque = NO; autoresize = LM+W+BM; layer = <CALayer: 0x78fb2a40>>", "label" => "Login", "alpha" => 1, "class" => "UIButton", "frame" => { "y" => 208, "width" => 136, "x" => 164, "height" => 32 } } ] irb(main):008:0> query 'label' Retrying.. HTTPClient::ReceiveTimeoutError: (execution expired) Retrying.. HTTPClient::ReceiveTimeoutError: (execution expired) Failing... HTTPClient::ReceiveTimeoutError HTTPClient::ReceiveTimeoutError: execution expired from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient/session.rb:879:in gets' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient/session.rb:879:inblock in parse_header' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient/session.rb:875:in parse_header' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient/session.rb:858:inread_header' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient/session.rb:667:in get_header' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient.rb:1137:indo_get_header' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient.rb:1086:in do_get_block' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient.rb:887:inblock in do_request' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient.rb:981:in protect_keep_alive_disconnected' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient.rb:886:indo_request' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient.rb:774:in request' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/httpclient-2.3.4.1/lib/httpclient.rb:684:inpost' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/http_helpers.rb:58:in block in make_http_request' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/http_helpers.rb:50:intimes' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/http_helpers.rb:50:in make_http_request' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/http_helpers.rb:29:inhttp' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/connection_helpers.rb:11:in http' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/map.rb:71:inraw_map' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/map.rb:23:in map' from /Users/temp/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/calabash-cucumber-0.11.4/lib/calabash-cucumber/core.rb:112:inquery' from (irb):8 from /Users/temp/.rbenv/versions/1.9.3-p550/bin/irb:12:in `

'irb(main):009:0>

lindanordstrom commented 8 years ago

Hi, sorry for commenting on such an old issue, but I am experiencing problems with this. I have a few tests where I have set RESET_BETWEEN_SCENARIOS=1, so the user is always signed out when a test starts. But in some scenarios we want to relaunch the app as part of a test, where we don't want to app to be reset, so I am calling the relaunch function (with :uia_strategy => :host, :reset => false).

The thing is I can run the scenario by itself without problem, but if I run a similar/identical scenario as the second scenario in a feature, cucumber will timeout on the "Trying write of command 13:uia.tapOffset('{:x 28, :y 41}') at index 13"

I've compared the logs to see what actually differs when I run the identical test twice. From what I can see the one that works fine will output: "Trying write of command 1:uia.tapOffset" And the one that fails outputs: Trying write of command 13:uia.tapOffset

Adding a screenshot where I compare the working scenario with the failing scenario And adding the full log for running the feature with the scenario twice

The tests are identical and does the following:

Env: calabash-cucumber, 0.17.1 run_loop, 2.0.6 xcode 7.2 Simulator: iPad Air (8.4) (but tried with other simulators as well)

screen shot 2016-02-11 at 14 41 15

errorLog.txt

tlakin commented 8 years ago

Hi Linda,

I don't work there anymore, and haven't done calabash work since. I would try the Google group "calabash-iOS" as that's where I found the expertise.

Good luck, I fought many timing issues. Mostly from a Jenkins run.

Tracy

Sent from my iPhone

On Feb 11, 2016, at 7:04 AM, Linda Nordstrom notifications@github.com wrote:

Hi, sorry for commenting on such an old issue, but I am experiencing problems with this. I have a few tests where I have set RESET_BETWEEN_SCENARIOS=1, so the user is always signed out when a test starts. But in some scenarios we want to relaunch the app as part of a test, where we don't want to app to be reset, so I am calling the relaunch function (with :uia_strategy => :host, :reset => false).

The thing is I can run the scenario by itself without problem, but if I run a similar/identical scenario as the second scenario in a feature, cucumber will timeout on the "Trying write of command 13:uia.tapOffset('{:x 28, :y 41}') at index 13"

I've compared the logs to see what actually differs when I run the identical test twice. From what I can see the one that works fine will output: "Trying write of command 1:uia.tapOffset" And the one that fails outputs: Trying write of command 13:uia.tapOffset

Adding a screenshot where I compare the working scenario with the failing scenario And adding the full log

The tests are identical and does the following:

open app sign in relaunch app press menu icon

errorLog.txt Uploaded using ZenHub.io

— Reply to this email directly or view it on GitHub.