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

Touch gesture timeouts on Xcode 6.1 Simulators #566

Closed
JaniJegoroff opened this issue Oct 20, 2014 · 81 comments
Closed

Touch gesture timeouts on Xcode 6.1 Simulators #566

JaniJegoroff opened this issue Oct 20, 2014 · 81 comments

Comments

@JaniJegoroff
Copy link

Environment:

  • Calabash 0.11.1
  • run_loop 1.0.9
  • Xcode 6.1
  • 'iPad Retina (8.1 Simulator)'
  • Yosemite 10.10

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 JaniJegoroff changed the title Touch gesture times out on Xcode 6.1 Touch gesture timeouts on Xcode 6.1 Oct 20, 2014
@tlakin
Copy link

tlakin commented Oct 20, 2014

Similar for me. From the calabash-ios console, or from cucumber, touch is now timing out. Query is ok.
Touch worked with Xcode 6.0.1 and Calabash 0.11.0. Updating to Xcode 6.1 broke touch. Updating to Calabash 0.11.1 did not help.

$ touch("view marked:'Menu'")
Sending UIA command
uia.tapOffset('{:x 28.5, :y 42}')
RuntimeError: uia action failed because: Timed out running command uia.tapOffset('{:x 28.5, :y 42}')

from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/uia.rb:31:in `uia'
from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/uia.rb:319:in `uia_handle_command'
from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/uia.rb:138:in `uia_tap_offset'
from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/actions/instruments_actions.rb:93:in `query_action'
from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/actions/instruments_actions.rb:15:in `touch'
from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/core.rb:1095:in `query_action_with_options'
from /Library/Ruby/Gems/2.0.0/gems/calabash-cucumber-0.11.1/lib/calabash-cucumber/core.rb:174:in `touch'
from (irb):6
from /usr/bin/irb:12:in `<main>'

$ calabash-ios version
0.11.1

$ server_version['version']
"0.11.1"

$ Calabash::Cucumber::MIN_SERVER_VERSION
"0.11.1"

$ xcrun xcodebuild -version
Xcode 6.1
Build version 6A1052d

$ xcrun instruments -s devices
Known Devices:
tlakingmbpx9 [090106E4-4262-57EE-BDFB-50572BE63873]
Resizable iPad (8.1 Simulator) [89B96B5A-999D-40E6-8EF1-D7CCEB55FF42]
Resizable iPhone (8.1 Simulator) [5C622E6F-2366-44D5-B5C8-0FF564131007]
iPad 2 (7.1 Simulator) [35377EDF-3A8E-4968-B190-EBF524D5020C]
iPad 2 (8.1 Simulator) [C9CAA90E-9B15-479E-AAB8-8AEFDB5E37CD]
iPad Air (7.1 Simulator) [989E6EA3-20AA-426A-930A-821A3D73FB5C]
iPad Air (8.1 Simulator) [A9E9CCE8-BAF4-4D1E-A3D6-70781554749C]
iPad Retina (7.1 Simulator) [646F1745-A02E-4CB8-AEF7-694F12E62153]
iPad Retina (8.1 Simulator) [A8D1C2B0-EC95-4E6E-9AE8-2F992F554995]
iPhone 4s (7.1 Simulator) [B835D97B-FB3B-4BD9-B36F-4B93391ADA98]
iPhone 4s (8.1 Simulator) [13177A84-60B0-4FCA-908D-6388479C0797]
iPhone 5 (7.1 Simulator) [0C31C69B-2A18-4725-9D9F-D029D3091765]
iPhone 5 (8.1 Simulator) [CB268E78-2B77-4DB8-940A-77C76C1DFD86]
iPhone 5s (7.1 Simulator) [6242F629-DC76-4DEB-8660-95B52DB53B1C]
iPhone 5s (8.1 Simulator) [37E0EFFE-75BD-4844-BF61-272BC02C51C0]
iPhone 6 (8.1 Simulator) [FC933E1F-A7EF-4D58-8238-34AA30743C55]
iPhone 6 Plus (8.1 Simulator) [B1AB371A-2601-4DD8-8C73-EB31D4252399]

$ xcrun simctl list
== Device Types ==
iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)
iPhone 5 (com.apple.CoreSimulator.SimDeviceType.iPhone-5)
iPhone 5s (com.apple.CoreSimulator.SimDeviceType.iPhone-5s)
iPhone 6 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus)
iPhone 6 (com.apple.CoreSimulator.SimDeviceType.iPhone-6)
iPad 2 (com.apple.CoreSimulator.SimDeviceType.iPad-2)
iPad Retina (com.apple.CoreSimulator.SimDeviceType.iPad-Retina)
iPad Air (com.apple.CoreSimulator.SimDeviceType.iPad-Air)
Resizable iPhone (com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone)
Resizable iPad (com.apple.CoreSimulator.SimDeviceType.Resizable-iPad)
== Runtimes ==
iOS 7.0 (7.0 - Unknown) (com.apple.CoreSimulator.SimRuntime.iOS-7-0) (unavailable, runtime path not found)
iOS 7.1 (7.1 - 11D167) (com.apple.CoreSimulator.SimRuntime.iOS-7-1)
iOS 8.1 (8.1 - 12B411) (com.apple.CoreSimulator.SimRuntime.iOS-8-1)
== Devices ==
-- iOS 7.0 --
-- iOS 7.1 --
iPhone 4s (B835D97B-FB3B-4BD9-B36F-4B93391ADA98) (Shutdown)
iPhone 5 (0C31C69B-2A18-4725-9D9F-D029D3091765) (Shutdown)
iPhone 5s (6242F629-DC76-4DEB-8660-95B52DB53B1C) (Shutdown)
iPad 2 (35377EDF-3A8E-4968-B190-EBF524D5020C) (Shutdown)
iPad Retina (646F1745-A02E-4CB8-AEF7-694F12E62153) (Shutdown)
iPad Air (989E6EA3-20AA-426A-930A-821A3D73FB5C) (Shutdown)
-- iOS 8.1 --
iPhone 4s (13177A84-60B0-4FCA-908D-6388479C0797) (Shutdown)
iPhone 5 (CB268E78-2B77-4DB8-940A-77C76C1DFD86) (Shutdown)
iPhone 5s (37E0EFFE-75BD-4844-BF61-272BC02C51C0) (Shutdown)
iPhone 6 Plus (B1AB371A-2601-4DD8-8C73-EB31D4252399) (Shutdown)
iPhone 6 (FC933E1F-A7EF-4D58-8238-34AA30743C55) (Shutdown)
iPad 2 (C9CAA90E-9B15-479E-AAB8-8AEFDB5E37CD) (Shutdown)
iPad Retina (A8D1C2B0-EC95-4E6E-9AE8-2F992F554995) (Shutdown)
iPad Air (A9E9CCE8-BAF4-4D1E-A3D6-70781554749C) (Shutdown)
Resizable iPhone (5C622E6F-2366-44D5-B5C8-0FF564131007) (Shutdown)
Resizable iPad (89B96B5A-999D-40E6-8EF1-D7CCEB55FF42) (Shutdown)

xcode-select -p
/Applications/Xcode.app/Contents/Developer

@ark-konopacki
Copy link
Contributor

Similar for me, touches working fine in Xcode 6.1 with iOS 7.1 simulator i think main issue is with iOS 8.1 simulator in Xcode 6.1.
Can anyone check same steps in Xcode 6.1 iOS 7.1 vs iOS 8.1 simulators?

calabash-ios version 0.11.1
xcrun xcodebuild -version Xcode 6.1 Build version 6A1052d

Then I touch the "Log In" button # calabash-cucumber-0.11.1/features/step_definitions/calabash_steps.rb:31
uia action failed because: Timed out running command uia.tapOffset('{:x 160, :y 357.5}')
(RuntimeError)
features/login.feature:7:in `Then I touch the "Log In" button'

@nkammah
Copy link

nkammah commented Oct 21, 2014

+1

@krukow
Copy link
Contributor

krukow commented Oct 21, 2014

Fix coming out shortly

On 21 Oct 2014, at 18:08, Nassim Kammah notifications@github.com wrote:

+1


Reply to this email directly or view it on GitHub.

@icy1007
Copy link

icy1007 commented Oct 21, 2014

Thank you, Krukow.

@jamieforrest
Copy link

Thanks @krukow! I'm having this issue as well.

@djdrzzy
Copy link

djdrzzy commented Oct 22, 2014

Having this issue as well. +1-ing.

@nfagen
Copy link

nfagen commented Oct 22, 2014

+1 anticipating this fix.

@krukow
Copy link
Contributor

krukow commented Oct 22, 2014

It's already fixed :) you don't have to +1 it :) calabash/calabash-ios-server#83
Release pending

@nfagen
Copy link

nfagen commented Oct 22, 2014

Thanks @krukow !!

@djdrzzy
Copy link

djdrzzy commented Oct 23, 2014

Whoohoo! A thanks from me as well @krukow

@jmoody jmoody changed the title Touch gesture timeouts on Xcode 6.1 Touch gesture timeouts on Xcode 6.1 Simulators Oct 24, 2014
@jmoody jmoody mentioned this issue Oct 24, 2014
@ark-konopacki
Copy link
Contributor

Still able to reproduce with "iPhone 5 (8.1 Simulator)”
but now instead of timeout i receive different error

$ calabash-ios version
0.11.2
server_version['version']
„0.11.2"
xcrun xcodebuild -version
Xcode 6.1
Build version 6A1052d

Launching took 6.645774 seconds
Given I am on the Welcome Screen # features/step_definitions/custom_steps.rb:10
Then I should see a "Log In" button enabled # features/step_definitions/custom_steps.rb:40
Sending UIA command
uia.tapOffset('{:x 160, :y 357.5}')
^C #must interrupt because it's hangs
Exiting... Interrupt again to exit immediately.
Then I touch the "Log In" button # calabash-cucumber-0.11.2/features/step_definitions/calabash_steps.rb:31
Could not parse response ''; the app has probably crashed (RuntimeError)
features/login.feature:8:in `Then I touch the "Log In" button'
Sending 'QUIT' to instruments process '22979'
Waiting for instruments '22979' to terminate

@jamieforrest
Copy link

Same here. Using the console, the touch command on a UITextField triggers the same Could not parse response '' error. Same calabash, server, and Xcode versions as @ark-konopacki, although I was using the "iPhone 5s (7.1 Simulator)". When I try with the "iPhone 5s (8.1 Simulator)", the touch command just hangs.

@icy1007
Copy link

icy1007 commented Oct 24, 2014

The fix hasn't been released. The fix is not in 0.11.2

@jmoody
Copy link
Contributor

jmoody commented Oct 24, 2014

This fix is in 0.11.2.

calabash/calabash-ios-server#83

The calabash/calabash-ios-server#82 pull request was replaced by 83.

@jmoody
Copy link
Contributor

jmoody commented Oct 24, 2014

The original problem was caused by a change the CoreSimulator environment - the location of the NSUserDefaults plist path was changed in Xcode 6.1.

I can consistently run against iOS 8.1 simulators in Xcode 6.1 and iOS 8.0 simulators in Xcode 6.0.1.

However, I am seeing intermittent hanging when I target iOS 7.1 simulators in Xcode 6.1 and Xcode 6.0.1.

I believe the problem is caused because Xcode 6.1 and Xcode 6.0.1 share the iOS 7.1 SDK CoreSimulator environment. I am seeing two defaults plist appearing.

To further complicate matters calabash/calabash-ios-server#83 has a memory management problem which leads to intermittent crashes. Fix will be in 0.11.3.

Looking at the simulator logs for an iPhone 5 7.1.2 Simulator, I see the follow suspicious output:

Oct 24 18:23:29 stern SpringBoard[76888] <Warning>: Using your own bundle identifier as an NSUserDefaults suite name does not make sense and will not work. Break on _NSUserDefaults_Log_Nonsensical_Suites to find this

If y'all could review your simulator logs when you see the 'hanging' behavior, I would appreciate it.

$ cd ~/Library/Logs/CoreSimulator/20ECFA73-4381-40F5-ADE4-3F88EAD9C24B
$ tail -f system.log 

@jamieforrest
Copy link

Oct 24 13:05:01 jforrest assertiond[97841]: assertion failed: 13F34 12B411: assertiond + 11523 [3F572A0B-7E12-378D-AFEE-EA491BAF2C36]: 0x1
Oct 24 13:05:01 jforrest Desk-cal[97866]: NSUserDefaults path = /Users/jforrest/Library/Developer/CoreSimulator/Devices/3175C972-0D01-47AE-9682-538ED8A408F0/data/Library/Preferences/com.desk.desk.plist
Oct 24 13:05:02 --- last message repeated 5 times ---
Oct 24 13:05:02 jforrest securityd[97848]:  SecTaskCopyAccessGroups No keychain access group specified whilst running in simulator, falling back to default set
Oct 24 13:05:02 jforrest Desk-cal[97866]: NSUserDefaults path = /Users/jforrest/Library/Developer/CoreSimulator/Devices/3175C972-0D01-47AE-9682-538ED8A408F0/data/Library/Preferences/com.desk.desk.plist
Oct 24 13:05:03 --- last message repeated 8 times ---
Oct 24 13:05:03 jforrest assertiond[97841]: assertion failed: 13F34 12B411: assertiond + 11523 [3F572A0B-7E12-378D-AFEE-EA491BAF2C36]: 0x1
Oct 24 13:05:03 jforrest Desk-cal[97866]: NSUserDefaults path = /Users/jforrest/Library/Developer/CoreSimulator/Devices/3175C972-0D01-47AE-9682-538ED8A408F0/data/Library/Preferences/com.desk.desk.plist
Oct 24 13:05:33 --- last message repeated 295 times ---
Oct 24 13:05:33 jforrest Desk-cal[97866]: NSUserDefaults path = /Users/jforrest/Library/Developer/CoreSimulator/Devices/3175C972-0D01-47AE-9682-538ED8A408F0/data/Library/Preferences/com.desk.desk.plist

@jmoody
Copy link
Contributor

jmoody commented Oct 24, 2014

OK. I managed to sort out some details.

Xcode 6.1 - iOS 8.1 CoreSimulator

NSUserDefaults and UIAutomation preferences API read from and write to a plist located in the application's sandbox.

Xcode 6.1 - iOS < 8.1 CoreSimulator

  • NSUserDefaults read from and write to a plist located in the application's sandbox.
  • UIAutomation preferences API read from and write to a plist located in the simulator's data/Library/Preferences directory.

Xcode 6.0* CoreSimulator

NSUserDefaults and UIAutomation preferences API read from and write to a plist located in the simulator's data/Library/Preferences directory.

Testing a fix now.

@nfrydenholm
Copy link

It sounds like you might already have enough info for now...but here is my log/terminal output anyway :-)
I can't touch anything with xcode 6.1 simulator 8.1 and calabash 0.11.2

irb(main):002:0> start_test_server_in_background

INFO: Using uia strategy: 'preferences'
Sending 'QUIT' to instruments process '4546'
Waiting for instruments '4546' to terminate
Preparation took 2.541857 seconds
{
:app => "/Users/nfrydenholm/Work/dba-app-iOS/Build/Products/Debug-iphonesimulator/dba.app",
:args => [],
:bundle_dir_or_bundle_id => "/Users/nfrydenholm/Work/dba-app-iOS/Build/Products/Debug-iphonesimulator/dba.app",
:bundle_id => "ecg.dk.dba.testapp",
:device => "iphone",
:device_target => "simulator",
:launch_method => :instruments,
:launch_retries => 5,
:log_file => "/var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr/run_loop.out",
:no_launch => false,
:no_stop => false,
:reset => false,
:results_dir => "/var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr",
:results_dir_trace => "/var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr/trace",
:script => "/var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr/_run_loop.js",
:sdk_version => nil,
:udid => "iPhone 5 (8.1 Simulator)",
:uia_strategy => :preferences,
:xcode => "6.1",
:xcode_path => "/Applications/Xcode.app/Contents/Developer/"
}

Starting on simulator App: /Users/nfrydenholm/Work/dba-app-iOS/Build/Products/Debug-iphonesimulator/dba.app

2014-10-24 19:43:22 +0200 xcrun instruments -w "iPhone 5 (8.1 Simulator)" -D "/var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr/trace" -t "Automation" "/Users/nfrydenholm/Work/dba-app-iOS/Build/Products/Debug-iphonesimulator/dba.app" -e UIARESULTSPATH /var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr -e UIASCRIPT /var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr/_run_loop.js &> /var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr/run_loop.out
Launching took 5.326718 seconds
Calabash::Cucumber::Launcher: Launch Method instruments
Log file: /var/folders/36/ws5sx46n747c9dwl9x6p06s8390ykh/T/run_loop20141024-4615-1799bmr/run_loop.out
irb(main):003:0> server_version
{
"app_version" => "3.5.1",
"outcome" => "SUCCESS",
"app_id" => "ecg.dk.dba.testapp",
"simulator_device" => "iPhone",
"version" => "0.11.2",
"app_name" => "DBA Dev",
"iphone_app_emulated_on_ipad" => false,
"4inch" => true,
"git" => {
"remote_origin" => "git@github.com:calabash/calabash-ios-server.git",
"branch" => "master",
"revision" => "e1821ad"
},
"screen_dimensions" => {
"scale" => 2,
"width" => 640,
"sample" => 1,
"height" => 1136
},
"iOS_version" => "8.1",
"system" => "x86_64",
"simulator" => ""
}
irb(main):004:0> query("textField index:0")
[
[0] {
"text" => "",
"selected" => false,
"enabled" => true,
"id" => nil,
"rect" => {
"center_x" => 160,
"y" => 72,
"width" => 318,
"x" => 1,
"center_y" => 86,
"height" => 28
},
"label" => "SearchField",
"description" => "<UISearchBarTextField: 0x7ae78f30; frame = (0 8; 318 28); text = ''; clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x7b2750c0>; layer = <CALayer: 0x7ae791b0>>",
"alpha" => 1,
"class" => "UISearchBarTextField",
"frame" => {
"y" => 8,
"width" => 318,
"x" => 0,
"height" => 28
}
}
]
irb(main):005:0> touch("textField index:0")
Sending UIA command
uia.tapOffset('{:x 160, :y 86}')
RuntimeError: uia action failed because: Timed out running command uia.tapOffset('{:x 160, :y 86}')

from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/calabash-cucumber-0.11.2/lib/calabash-cucumber/uia.rb:37:in `uia'
from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/calabash-cucumber-0.11.2/lib/calabash-cucumber/uia.rb:344:in `uia_handle_command'
from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/calabash-cucumber-0.11.2/lib/calabash-cucumber/uia.rb:144:in `uia_tap_offset'
from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/calabash-cucumber-0.11.2/lib/calabash-cucumber/actions/instruments_actions.rb:93:in `query_action'
from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/calabash-cucumber-0.11.2/lib/calabash-cucumber/actions/instruments_actions.rb:15:in `touch'
from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/calabash-cucumber-0.11.2/lib/calabash-cucumber/core.rb:1095:in `query_action_with_options'
from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/calabash-cucumber-0.11.2/lib/calabash-cucumber/core.rb:174:in `touch'
from (irb):5
from /Users/nfrydenholm/.rbenv/versions/2.0.0-p353/bin/irb:12:in `<main>'

irb(main):006:0>

And the system.log
Oct 24 19:14:17 LM-AAR-00321998 dba[10791]: Map POST, /map Parsed UIScript as
(
"view:'UIView'"
)
Oct 24 19:14:30 LM-AAR-00321998 lsd[10777]: LaunchServices: Currently 0 installed placeholders: (
)
Oct 24 19:14:36 LM-AAR-00321998 dba[10791]: Map POST, /map Parsed UIScript as
(
"view:'UITextField'",
"index:0"
)
Oct 24 19:14:36 LM-AAR-00321998 dba[10791]: NSUserDefaults path = /Users/nfrydenholm/Library/Developer/CoreSimulator/Devices/8A768E58-CB04-4923-B68C-FE808838814B/data/Library/Preferences/ecg.dk.dba.testapp.plist
Oct 24 19:14:41 --- last message repeated 44 times ---
Oct 24 19:14:41 LM-AAR-00321998 mstreamd[10758]: (Note ) PS: Media stream daemon stopping.
Oct 24 19:14:41 LM-AAR-00321998 mstreamd[10758]: (Note ) AS: <MSIOSAlbumSharingDaemon: 0x7fd522108e90>: Shared Streams daemon has shut down.
Oct 24 19:14:41 LM-AAR-00321998 mstreamd[10758]: (Warn ) mstreamd: mstreamd shutting down.
Oct 24 19:14:41 LM-AAR-00321998 dba[10791]: NSUserDefaults path = /Users/nfrydenholm/Library/Developer/CoreSimulator/Devices/8A768E58-CB04-4923-B68C-FE808838814B/data/Library/Preferences/ecg.dk.dba.testapp.plist
Oct 24 19:14:54 --- last message repeated 126 times ---
Oct 24 19:14:54 LM-AAR-00321998 SpringBoard[10763]: Unable to get short BSD proc info for 10791: No such process
Oct 24 19:14:54 LM-AAR-00321998 com.apple.CoreSimulator.SimDevice.8A768E58-CB04-4923-B68C-FE808838814B.launchd_sim10752: Service exited due to signal: Killed: 9
Oct 24 19:14:54 LM-AAR-00321998 SpringBoard[10763]: Application 'UIKitApplication:ecg.dk.dba.testapp[0xfff9]' exited abnormally via signal.
Oct 24 19:14:54 LM-AAR-00321998 assertiond[10767]: assertion failed: 14A389 12B411: assertiond + 11523 [3F572A0B-7E12-378D-AFEE-EA491BAF2C36]: 0x1
Oct 24 19:14:54 LM-AAR-00321998 assertiond[10767]: notify_suspend_pid() failed with error 7

@jmoody
Copy link
Contributor

jmoody commented Oct 24, 2014

@nfrydenholm

NSUserDefaults path = /Users/nfrydenholm/Library/Developer/CoreSimulator/Devices/8A768E58-CB04-4923-B68C-FE808838814B/data/Library/Preferences/ecg.dk.dba.testapp.plist

That line is telling me that the server was not able to find the the right plist path. Good info. Thanks.

@jmoody
Copy link
Contributor

jmoody commented Oct 24, 2014

Fix is in hand. Local tests pass. Running through CI now.

@nfrydenholm
Copy link

Great that you could get some useful info from the logging - I couldn't 😊

Sounds good with an (almost) ready fix. I'll be ready to test it as soon as it's ready

@jmoody
Copy link
Contributor

jmoody commented Oct 24, 2014

0.11.3 released

@axhossain
Copy link

I am still not able to update 0.11.3, am i missing something?

ahossain-ltm:Regression-suite ahossain$ calabash-ios download

----------Info----------
Found calabash.framework in /Users/ahossain/Desktop/github/Regression-suite.
Shall I delete it and download the latest matching version?
Please answer yes (y) or no (n)
y

Info
caution: excluded filename not matched: __MACOSX/*
caution: excluded filename not matched: calabash.framework/.DS_Store

ahossain-ltm:Regression-suite ahossain$ calabash-ios version
0.11.0

@jmoody
Copy link
Contributor

jmoody commented Oct 25, 2014

ahossain-ltm:Regression-suite ahossain$ calabash-ios version

That only tests the version of the gem.

You need to update your calabash-cucumber gem.

$ gem install calabash-cucumber
$ calabash-ios download
# Verify the framework is the correct version.
$ calabash.framework/Resources/version

I also recommend you use a Gemfile and bundler.

@axhossain
Copy link

Thanks. This fix worked for me on xcode 6.1 + iphone5 simulator.

@jmoody
Copy link
Contributor

jmoody commented Oct 30, 2014

@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
Copy link
Author

@jmoody - New issue created: #585

@jmoody
Copy link
Contributor

jmoody commented Oct 30, 2014

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
Copy link

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

@krukow
Copy link
Contributor

krukow commented Nov 3, 2014

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
Copy link

I just ran into this issue.
From the commit here "calabash/x-platform-example@b3f1a14" 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
Copy link
Contributor

jmoody commented Nov 5, 2014

@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
Copy link

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
Copy link
Contributor

jmoody commented Nov 5, 2014

@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
Copy link

@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
Copy link
Author

@jmoody @reyandersen - I added new issue for tap_mark problem: #600

@krukow
Copy link
Contributor

krukow commented Nov 7, 2014

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

Notice these issues still open:

#536
#585
#600

@krukow krukow closed this as completed Nov 7, 2014
@krishnas07
Copy link

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
Copy link
Contributor

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
Copy link

bv commented Nov 12, 2014

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

@piratmc
Copy link

piratmc commented Nov 12, 2014

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
Copy link

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
Copy link
Contributor

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
Copy link
Author

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

@robsteinde
Copy link

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
Copy link
Contributor

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
Copy link

@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
Copy link

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
Copy link

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:

  • open app
  • sign in
  • relaunch app
  • press menu icon

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
Copy link

tlakin commented Feb 11, 2016

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests