Last active
January 11, 2017 14:23
-
-
Save jtreanor/ce7a8c3c102526688af071764132188c to your computer and use it in GitHub Desktop.
Calabash performance: 0.20.3 vs 0.20.4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
➜ CalSmokeApp git:(BenchmarkQuery-0.20.3) bundle exec cucumber -t ~@clear_text | |
Using the default, simulator and common profiles... | |
@alerts | |
Feature: Alerts | |
In order to demonstrate interactions with alerts | |
As a Calabash maintainer | |
I want some Scenarios that show Calabash working with alerts | |
INFO: query 'tabBarButton' took 718.1481709994841 milliseconds | |
INFO: query '* marked:'special page'' took 1144.5110730128363 milliseconds | |
INFO: query '* marked:'special page'' took 930.7925750035793 milliseconds | |
# These are alerts that are presented by _your_ application using: | |
# | |
# UIAlertView *alert = [[UIAlertView alloc] ...]; | |
# [alert show]; | |
# | |
# These are _not_ alerts generated by the OS on behalf of your | |
# app. Such alerts are also known as the "Privacy alerts". You | |
# can read more about interacting with UIAlerts presented by the | |
# OS here: | |
# | |
# https://github.com/calabash/calabash-ios/wiki/Managing-Privacy-Alerts%3A--Location-Services%2C-APNS%2C-Contacts | |
Background: Navigate to the special tab # features/alerts.feature:19 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'show alert'' took 1139.6261540066916 milliseconds | |
@animations | |
Scenario: Touch OK button on alert # features/alerts.feature:23 | |
When I touch the show alert button # features/step_definitions/alerts_steps.rb:127 | |
INFO: query 'view:'_UIAlertControllerView'' took 937.1540279826149 milliseconds | |
Then I see an alert # features/step_definitions/alerts_steps.rb:132 | |
INFO: query 'view:'_UIAlertControllerView' descendant label' took 726.2912910082377 milliseconds | |
Then I see the "Smoke Test!" alert # features/step_definitions/alerts_steps.rb:136 | |
And I wait for all animations to stop # features/step_definitions/animations_steps.rb:2 | |
INFO: query 'view:'_UIAlertControllerView'' took 521.2389829976019 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 1147.347232006723 milliseconds | |
And I can dismiss the alert with the OK button # features/step_definitions/alerts_steps.rb:140 | |
INFO: query 'tabBarButton' took 1043.9886059903074 milliseconds | |
INFO: query '* marked:'special page'' took 625.7577420037705 milliseconds | |
INFO: query '* marked:'special page'' took 934.2647919838782 milliseconds | |
INFO: query 'view marked:'show alert'' took 1034.7052750003058 milliseconds | |
Scenario: Verify the alert title, message, and buttons # features/alerts.feature:30 | |
When I touch the show alert button # features/step_definitions/alerts_steps.rb:127 | |
INFO: query 'view:'_UIAlertControllerView'' took 1559.9389329727273 milliseconds | |
Then I see an alert # features/step_definitions/alerts_steps.rb:132 | |
INFO: query 'view:'_UIAlertControllerView'' took 936.1025670077652 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 724.1478840005584 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 1139.7221920196898 milliseconds | |
INFO: query 'view:'_UIAlertControllerView' descendant label' took 1243.4956619981676 milliseconds | |
And the title of the alert is "Smoke Test!" # features/step_definitions/alerts_steps.rb:146 | |
INFO: query 'view:'_UIAlertControllerView'' took 1241.7393750220072 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 936.689830996329 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 935.4019760212395 milliseconds | |
INFO: query 'view:'_UIAlertControllerView' descendant label' took 828.9755499863531 milliseconds | |
And the message of the alert is "Another day, another iOS alert" # features/step_definitions/alerts_steps.rb:150 | |
INFO: query 'view:'_UIAlertControllerView'' took 927.9266170051415 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 627.3561019916087 milliseconds | |
And the left hand button is "Cancel" # features/step_definitions/alerts_steps.rb:154 | |
INFO: query 'view:'_UIAlertControllerView'' took 1028.2452410028782 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 1035.7206119806506 milliseconds | |
And the right hand button is "OK" # features/step_definitions/alerts_steps.rb:154 | |
INFO: query 'view:'_UIAlertControllerView'' took 68.34996200632304 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 67.64670100528747 milliseconds | |
And I can dismiss the alert with the OK button # features/step_definitions/alerts_steps.rb:140 | |
@animations | |
Feature: Animations | |
In order to demonstrate that Calabash works when there are animations | |
As a Calabash maintainer | |
I want some Scenarios with views that animate | |
INFO: query 'tabBarButton' took 63.17561201285571 milliseconds | |
INFO: query '* marked:'special page'' took 67.0998290006537 milliseconds | |
INFO: query '* marked:'special page'' took 65.93308699666522 milliseconds | |
Background: Navigate to the special tab # features/animations.feature:7 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'animated view'' took 65.07921000593342 milliseconds | |
@backdoor | |
Scenario: Start an animation and wait for it to finish # features/animations.feature:11 | |
And I have started an animation that lasts 4 seconds # features/step_definitions/animations_steps.rb:12 | |
Then I can wait for the animation to stop # features/step_definitions/animations_steps.rb:23 | |
INFO: query 'tabBarButton' took 64.95111202821136 milliseconds | |
INFO: query '* marked:'special page'' took 64.03767300071195 milliseconds | |
INFO: query '* marked:'special page'' took 63.93381700036116 milliseconds | |
@network_indicator @backdoor | |
Scenario: Start the network indicator and wait for it to finish # features/animations.feature:17 | |
And I start the network indicator for 4 seconds # features/step_definitions/animations_steps.rb:31 | |
Then I can wait for the indicator to stop # features/step_definitions/animations_steps.rb:36 | |
INFO: query 'tabBarButton' took 63.390948984306306 milliseconds | |
INFO: query '* marked:'special page'' took 64.34062198968604 milliseconds | |
INFO: query '* marked:'special page'' took 64.22693000058644 milliseconds | |
Scenario: Pass an unknown condition to the condition route # features/animations.feature:21 | |
When I pass an unknown condition to wait_for_condition # features/step_definitions/animations_steps.rb:44 | |
INFO: query '*' took 80.81856899661943 milliseconds | |
Then the app should not crash # features/step_definitions/animations_steps.rb:62 | |
And an error should be raised # features/step_definitions/animations_steps.rb:66 | |
INFO: query 'tabBarButton' took 63.54996099253185 milliseconds | |
INFO: query '* marked:'special page'' took 65.52795201423578 milliseconds | |
INFO: query '* marked:'special page'' took 63.468020991422236 milliseconds | |
# It is impossible to pass a nil query. The client will substitute a '*' | |
Scenario: Call wait_for_animation with a nil query # features/animations.feature:27 | |
When I pass an empty query to wait_for_none_animating # features/step_definitions/animations_steps.rb:53 | |
INFO: query '*' took 84.52779799699783 milliseconds | |
Then the app should not crash # features/step_definitions/animations_steps.rb:62 | |
And an error should be raised # features/step_definitions/animations_steps.rb:66 | |
@backdoor | |
Feature: Backdoors | |
In order make UI testing faster and easier | |
As a tester | |
I want a way to get my app into a good shape for testing | |
and to get some state from my app at runtime | |
INFO: query 'tabBarButton' took 63.576976011972874 milliseconds | |
Background: Launch the app # features/backdoor.feature:8 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
@unhandled_structs | |
Scenario: Struct return type # features/backdoor.feature:12 | |
When I call backdoor on a method that returns a CGSize # features/step_definitions/backdoor_steps.rb:2 | |
Then I see that CGSize is not fully supported # features/step_definitions/backdoor_steps.rb:6 | |
When I call backdoor on a method that returns LPSmokeAlarm struct # features/step_definitions/backdoor_steps.rb:10 | |
Then I see that arbitrary structs are not fully supported # features/step_definitions/backdoor_steps.rb:14 | |
INFO: query 'tabBarButton' took 63.73755499953404 milliseconds | |
# ☀ <== * ; Gherkin can not handle * in step names. | |
# For example, void\* does not work - * is not escaped | |
@unhandle_arguments | |
Scenario: Unhandled arguments # features/backdoor.feature:21 | |
Then void☀ arguments are not handled # features/step_definitions/backdoor_steps.rb:18 | |
And primitive pointer arguments like float☀ and int☀ are not handled # features/step_definitions/backdoor_steps.rb:22 | |
And NSError☀☀ arguments are not handled # features/step_definitions/backdoor_steps.rb:26 | |
And primitive array arguments like int[] are not handled # features/step_definitions/backdoor_steps.rb:30 | |
And arbitrary struct arguments are not handled # features/step_definitions/backdoor_steps.rb:34 | |
And CGSize arguments are not handled # features/step_definitions/backdoor_steps.rb:38 | |
INFO: query 'tabBarButton' took 62.5308720045723 milliseconds | |
Scenario: Backdoor selector is unknown # features/backdoor.feature:29 | |
When I call backdoor with an unknown selector # features/step_definitions/backdoor_steps.rb:50 | |
backdoor call failed: | |
selector => 'unknownSelector:' | |
arguments => '[""]' | |
reason => 'The backdoor: 'unknownSelector:' is undefined' | |
You must define 'unknownSelector:' in your UIApplicationDelegate. | |
// Example | |
-(NSString *)unknownSelector:(NSString *)argument { | |
// do stuff here | |
return @"a result"; | |
} | |
// Documentation | |
http://developer.xamarin.com/guides/testcloud/calabash/working-with/backdoors/#backdoor_in_iOS | |
Then I should see a helpful error message # features/step_definitions/backdoor_steps.rb:59 | |
INFO: query 'tabBarButton' took 62.09074400248937 milliseconds | |
@void | |
Scenario: Void return type # features/backdoor.feature:34 | |
When I call backdoor on a method with a void return type # features/step_definitions/backdoor_steps.rb:63 | |
Then I get back <VOID> # features/step_definitions/backdoor_steps.rb:67 | |
INFO: query 'tabBarButton' took 65.57910700212233 milliseconds | |
@unknown_encoding | |
Scenario: Long double retrun type is not supported # features/backdoor.feature:39 | |
When I call backdoor on a method that returns long double # features/step_definitions/backdoor_steps.rb:71 | |
Then I get an unknown encoding exception # features/step_definitions/backdoor_steps.rb:76 | |
INFO: query 'tabBarButton' took 62.65324098058045 milliseconds | |
@date | |
Scenario: NSDate is returned as a string # features/backdoor.feature:44 | |
Then backdoors that return NSDate return a ruby string # features/step_definitions/backdoor_steps.rb:82 | |
INFO: query 'tabBarButton' took 63.44589899526909 milliseconds | |
@self | |
Scenario: Passing self as an argument # features/backdoor.feature:48 | |
Then I can pass self as an argument using __self__ # features/step_definitions/backdoor_steps.rb:42 | |
INFO: query 'tabBarButton' took 63.20499602588825 milliseconds | |
@nil | |
Scenario: Passing nil as an argument # features/backdoor.feature:52 | |
Then I can pass nil as an argument using __nil__ # features/step_definitions/backdoor_steps.rb:46 | |
INFO: query 'tabBarButton' took 65.86239399621263 milliseconds | |
@primitive | |
Scenario: Primitive return types # features/backdoor.feature:56 | |
Then I call backdoor on a method that returns BOOL NO # features/step_definitions/backdoor_steps.rb:88 | |
Then I call backdoor on a method that returns BOOL YES # features/step_definitions/backdoor_steps.rb:88 | |
Then I call backdoor on a method that returns an int # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns an unsigned int # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns an NSInteger # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns an NSUInteger # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns a short # features/step_definitions/backdoor_steps.rb:117 | |
Then I call backdoor on a method that returns a unsigned short # features/step_definitions/backdoor_steps.rb:117 | |
Then I call backdoor on a method that returns a float # features/step_definitions/backdoor_steps.rb:129 | |
Then I call backdoor on a method that returns a double # features/step_definitions/backdoor_steps.rb:129 | |
Then I call backdoor on a method that returns a CGFloat # features/step_definitions/backdoor_steps.rb:129 | |
Then I call backdoor on a method that returns a char # features/step_definitions/backdoor_steps.rb:144 | |
Then I call backdoor on a method that returns an unsigned char # features/step_definitions/backdoor_steps.rb:144 | |
Then I call backdoor on a method that returns a c string # features/step_definitions/backdoor_steps.rb:156 | |
Then I call backdoor on a method that returns a const char star # features/step_definitions/backdoor_steps.rb:160 | |
Then I call backdoor on a method that returns a long # features/step_definitions/backdoor_steps.rb:164 | |
Then I call backdoor on a method that returns an unsigned long # features/step_definitions/backdoor_steps.rb:176 | |
Then I call backdoor on a method that returns a long long # features/step_definitions/backdoor_steps.rb:164 | |
Then I call backdoor on a method that returns an unsigned long # features/step_definitions/backdoor_steps.rb:176 | |
Then I call backdoor on a method that returns a CGPoint # features/step_definitions/backdoor_steps.rb:188 | |
Then I call backdoor on a method that returns a CGSize # features/step_definitions/backdoor_steps.rb:2 | |
Then I call backdoor on a method that returns a CGRect # features/step_definitions/backdoor_steps.rb:194 | |
INFO: query 'tabBarButton' took 62.38445098279044 milliseconds | |
@pointer | |
Scenario: Pointer return types # features/backdoor.feature:81 | |
Then I call backdoor on a method that returns an NSNumber # features/step_definitions/backdoor_steps.rb:202 | |
Then I call backdoor on a method that returns an NSArray # features/step_definitions/backdoor_steps.rb:206 | |
Then I call backdoor on a method that returns an NSDictionary # features/step_definitions/backdoor_steps.rb:210 | |
Then I call backdoor on a method that returns an NSString # features/step_definitions/backdoor_steps.rb:215 | |
INFO: query 'tabBarButton' took 61.07321698800661 milliseconds | |
@pointer | |
Scenario: Methods with pointer arguments # features/backdoor.feature:88 | |
Then I call backdoor on a method with one pointer argument # features/step_definitions/backdoor_steps.rb:219 | |
Then I call backdoor on a method with two pointer arguments # features/step_definitions/backdoor_steps.rb:219 | |
Then I call backdoor on a method with three pointer arguments # features/step_definitions/backdoor_steps.rb:219 | |
INFO: query 'tabBarButton' took 63.4258069912903 milliseconds | |
@primitive | |
Scenario: Methods with primative arguments # features/backdoor.feature:94 | |
Then I call backdoor on a method with a BOOL argument # features/step_definitions/backdoor_steps.rb:242 | |
Then I call backdoor on a method with a bool argument # features/step_definitions/backdoor_steps.rb:247 | |
Then I call backdoor on a method with an NSInteger argument # features/step_definitions/backdoor_steps.rb:252 | |
Then I call backdoor on a method with an NSUInteger argument # features/step_definitions/backdoor_steps.rb:252 | |
Then I call backdoor on a method with a short argument # features/step_definitions/backdoor_steps.rb:264 | |
Then I call backdoor on a method with an unsigned short argument # features/step_definitions/backdoor_steps.rb:264 | |
Then I call backdoor on a method with a CGFloat argument # features/step_definitions/backdoor_steps.rb:276 | |
Then I call backdoor on a method with a double argument # features/step_definitions/backdoor_steps.rb:276 | |
Then I call backdoor on a method with a float argument # features/step_definitions/backdoor_steps.rb:276 | |
Then I call backdoor on a method with a char argument # features/step_definitions/backdoor_steps.rb:290 | |
Then I call backdoor on a method with an unsigned char argument # features/step_definitions/backdoor_steps.rb:290 | |
Then I call backdoor on a method with a long argument # features/step_definitions/backdoor_steps.rb:301 | |
Then I call backdoor on a method with a unsigned long argument # features/step_definitions/backdoor_steps.rb:301 | |
Then I call backdoor on a method with a long long argument # features/step_definitions/backdoor_steps.rb:313 | |
Then I call backdoor on a method with a unsigned long long argument # features/step_definitions/backdoor_steps.rb:313 | |
Then I call backdoor on a method with a c string argument # features/step_definitions/backdoor_steps.rb:325 | |
Then I call backdoor on a method with a const char star argument # features/step_definitions/backdoor_steps.rb:329 | |
Then I call backdoor on a method with a CGPoint argument # features/step_definitions/backdoor_steps.rb:334 | |
Then I call backdoor on a method with a CGRect argument # features/step_definitions/backdoor_steps.rb:339 | |
Then I call backdoor on a method with a Class argument # features/step_definitions/backdoor_steps.rb:344 | |
@drag_and_drop | |
Feature: Drag and Drop | |
In order to test the Calabash pan API | |
As a Calabash developer | |
I want to drag a view onto another view | |
INFO: query 'tabBarButton' took 62.675406981725246 milliseconds | |
INFO: query '* marked:'special page'' took 64.5482320105657 milliseconds | |
INFO: query '* marked:'special page'' took 62.17355199623853 milliseconds | |
Background: Navigate to the special tab # features/drag_and_drop.feature:7 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UIImageView marked:'red'' took 61.51296600000933 milliseconds | |
INFO: query 'UIView marked:'left well'' took 63.51280500530265 milliseconds | |
INFO: query 'UIImageView marked:'red'' took 64.89795798552223 milliseconds | |
Scenario: Drag the red box to the left well # features/drag_and_drop.feature:10 | |
When I drag the red box to the left well # features/step_definitions/drag_and_drop_steps.rb:72 | |
INFO: query 'UIView marked:'left well'' took 70.22499601589516 milliseconds | |
Then the well should change color # features/step_definitions/drag_and_drop_steps.rb:86 | |
INFO: query 'UIImageView marked:'red'' took 61.23192599625327 milliseconds | |
And the box goes back to its original position # features/step_definitions/drag_and_drop_steps.rb:93 | |
INFO: query 'tabBarButton' took 62.1942309953738 milliseconds | |
INFO: query '* marked:'special page'' took 63.3842799870763 milliseconds | |
INFO: query '* marked:'special page'' took 62.309434986673295 milliseconds | |
INFO: query 'UIImageView marked:'blue'' took 62.38006899366155 milliseconds | |
INFO: query 'UIView marked:'right well'' took 62.69681197591126 milliseconds | |
INFO: query 'UIImageView marked:'blue'' took 61.19011898408644 milliseconds | |
Scenario: Drag the blue box to the right well # features/drag_and_drop.feature:15 | |
When I drag the blue box to the right well # features/step_definitions/drag_and_drop_steps.rb:72 | |
INFO: query 'UIView marked:'right well'' took 64.34295000508428 milliseconds | |
Then the well should change color # features/step_definitions/drag_and_drop_steps.rb:86 | |
INFO: query 'UIImageView marked:'blue'' took 61.682753992499784 milliseconds | |
And the box goes back to its original position # features/step_definitions/drag_and_drop_steps.rb:93 | |
INFO: query 'tabBarButton' took 65.11072197463363 milliseconds | |
INFO: query '* marked:'special page'' took 66.56140301492997 milliseconds | |
INFO: query '* marked:'special page'' took 62.40456600789912 milliseconds | |
INFO: query 'UIImageView marked:'green'' took 64.3632450082805 milliseconds | |
INFO: query 'UIView marked:'left well'' took 63.47293400904164 milliseconds | |
INFO: query 'UIImageView marked:'green'' took 61.77679399843328 milliseconds | |
Scenario: Drag the green box to the left well # features/drag_and_drop.feature:20 | |
When I drag the green box to the left well # features/step_definitions/drag_and_drop_steps.rb:72 | |
INFO: query 'UIView marked:'left well'' took 67.20698199933395 milliseconds | |
Then the well should change color # features/step_definitions/drag_and_drop_steps.rb:86 | |
INFO: query 'UIImageView marked:'green'' took 67.06690898863599 milliseconds | |
And the box goes back to its original position # features/step_definitions/drag_and_drop_steps.rb:93 | |
@flash | |
Feature: Flash | |
In order to explore my app's view heirarchy | |
As an app tester and develop | |
I want Calabash to be able to visually indicate which views match a query | |
INFO: query 'tabBarButton' took 63.785278995055705 milliseconds | |
INFO: query '* marked:'special page'' took 63.353506004204974 milliseconds | |
INFO: query '* marked:'special page'' took 62.78574900352396 milliseconds | |
Background: Navigate to special tab # features/flash.feature:7 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
Scenario: Flashing # features/flash.feature:10 | |
Then I can flash the buttons # features/step_definitions/flash_steps.rb:2 | |
And I can flash the labels in the tab bar # features/step_definitions/flash_steps.rb:7 | |
When the flash query matches no views # features/step_definitions/flash_steps.rb:12 | |
Then flash returns an empty array # features/step_definitions/flash_steps.rb:16 | |
@localization @simulator | |
Feature: Can launch a simulator in German | |
INFO: query 'tabBarButton' took 937.6440049964003 milliseconds | |
@german | |
Scenario: Launch simulator in German and query for text # features/german.feature:6 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
INFO: query 'tabBarButton' took 1031.1074650089722 milliseconds | |
INFO: query '* marked:'special page'' took 1144.6092289988883 milliseconds | |
INFO: query '* marked:'special page'' took 1032.7793089963961 milliseconds | |
And I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query '* marked:'localized label'' took 1351.0229219973553 milliseconds | |
INFO: query '* marked:'localized label'' took 832.6914729841519 milliseconds | |
Then I see localized text "Beschriften mit lokalisiertem Text" # features/step_definitions/german_steps.rb:2 | |
@screenshot @issue_246 | |
Feature: Screenshot embed in and out of cucumber world | |
Cucumber RuntimeError Hey! | |
# undefined method `embed` (NoMethodError) when calling screenshot_and_raise | |
# https://github.com/calabash/calabash-ios/issues/246 | |
Scenario: screenshots outside of a page # features/issue_246_screenshot_embed.feature:8 | |
When I use screenshot_and_raise in the context of cucumber # features/step_definitions/issue_246_screenshot_steps.rb:34 | |
Then I should get a runtime error # features/step_definitions/issue_246_screenshot_steps.rb:70 | |
NotPOM RuntimeError Hey! | |
Scenario: screenshots in a page that does not extend IBase # features/issue_246_screenshot_embed.feature:12 | |
When I screenshot_and_raise in a page that does not inherit from IBase # features/step_definitions/issue_246_screenshot_steps.rb:46 | |
Then I should get a runtime error # features/step_definitions/issue_246_screenshot_steps.rb:70 | |
But it should not be a NoMethod error for embed # features/step_definitions/issue_246_screenshot_steps.rb:78 | |
POM RuntimeError Hey! | |
Scenario: screenshots in a page that does extend IBase # features/issue_246_screenshot_embed.feature:17 | |
When I screenshot_and_raise in a page that does inherit from IBase # features/step_definitions/issue_246_screenshot_steps.rb:58 | |
Then I should get a runtime error # features/step_definitions/issue_246_screenshot_steps.rb:70 | |
But it should not be a NoMethod error for embed # features/step_definitions/issue_246_screenshot_steps.rb:78 | |
@keyboard | |
Feature: Typing on the Keyboard | |
In order to enter text like a user | |
As an app tester | |
I want Calabash to provide a Keyboard API | |
INFO: query 'tabBarButton' took 1967.9448599927127 milliseconds | |
INFO: query '* marked:'controls page'' took 1138.3134339994285 milliseconds | |
INFO: query '* marked:'controls page'' took 926.1661430064123 milliseconds | |
Background: Navigate to the controls tab # features/keyboard.feature:7 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITextField index:0' took 931.6445060248952 milliseconds | |
INFO: query 'UITextField index:0' took 831.7819949879777 milliseconds | |
@travis | |
Scenario: I should be able to type something # features/keyboard.feature:11 | |
Then I type "Hello" # features/step_definitions/keyboard_steps.rb:9 | |
And the first responder text is "Hello" # features/step_definitions/keyboard_steps.rb:30 | |
And I dismiss the keyboard by tapping the keyboard action key # features/step_definitions/keyboard_steps.rb:19 | |
INFO: query 'tabBarButton' took 1037.5438629998825 milliseconds | |
INFO: query '* marked:'controls page'' took 836.1852439993527 milliseconds | |
INFO: query '* marked:'controls page'' took 940.881693008123 milliseconds | |
INFO: query '* marked:'cal text field'' took 936.6731670161244 milliseconds | |
INFO: query '* marked:'cal text field'' took 832.2457160102203 milliseconds | |
Scenario: Interacting with non-UITextInput responders # features/keyboard.feature:16 | |
Then I touch the CalTextField # features/step_definitions/keyboard_steps.rb:23 | |
And the first responder text is "CalTextField" # features/step_definitions/keyboard_steps.rb:30 | |
INFO: query '* marked:'cal text field'' took 90.07023798767477 milliseconds | |
And I can append the text of the CalTextField # features/step_definitions/keyboard_steps.rb:36 | |
And I dismiss the keyboard that is attached to the CalTextField # features/step_definitions/keyboard_steps.rb:52 | |
@resetting @ideviceinstaller @keychain | |
Feature: iOS Keychain | |
INFO: query 'tabBarButton' took 66.03522298973985 milliseconds | |
INFO: query '* marked:'controls page'' took 65.40283001959324 milliseconds | |
INFO: query '* marked:'controls page'' took 65.92901799012907 milliseconds | |
# These tests are dependent on each other and must be run in a particular | |
# order. In general, this is a bad practice, but there are times when it is | |
# necessary. In this case, we are testing the behavior of resetting an | |
# app's sandbox and re-installing. The strict ordering is achieved by | |
# using the 'xx_< Scenario Name >' convention. | |
# | |
# When these tests are run on physical devices, the reset will be | |
# performed by re-installing the app. | |
# | |
# The Keychain API will removed in Calabash 2.0. It will be replaced by a | |
# separate gem and a Calabash plug-in. | |
# | |
# These tests require ideviceinstaller. You can install ideviceinstaller | |
# with brew. We do not maintain the ideviceinstaller, libimobiledevice, or | |
# homebrew tools. These are third-party software. If you have issues with these | |
# tools, you are on your own. Please do not report problems with these tools | |
# on the Calabash channels. | |
Background: Navigate to the controls page # features/keychain.feature:23 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
# Demonstrate that the keychain API works. | |
Scenario: 00 I set the keychain item # features/keychain.feature:27 | |
Given that the keychain contains the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:34 | |
INFO: query 'tabBarButton' took 67.61855600052513 milliseconds | |
INFO: query '* marked:'controls page'' took 66.06098098563962 milliseconds | |
INFO: query '* marked:'controls page'' took 66.3415179878939 milliseconds | |
Scenario: 01 I should see the keychain item exists in the next Scenario # features/keychain.feature:30 | |
Then the keychain should contain the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:21 | |
When I clear the keychain # features/step_definitions/keychain_steps.rb:13 | |
Then the keychain should be empty because I called clear_keychain # features/step_definitions/keychain_steps.rb:41 | |
INFO: query 'tabBarButton' took 833.5317460005172 milliseconds | |
INFO: query '* marked:'controls page'' took 614.9020360026043 milliseconds | |
INFO: query '* marked:'controls page'' took 726.6091470082756 milliseconds | |
# Demonstrate that resetting the simulator content and settings works using | |
# the keychain as proxy. | |
# | |
# Keychain items persist over app installs and sandbox resets on the | |
# iOS Simulator and physical devices. | |
# | |
# On the simulator, you can reset the simulator contents and settings to | |
# clear the keychain, but on devices re-installing does not clear the | |
# keychain. You must call `keychain_clear` after the app is launched. | |
# See features/support/01_launch.rb to see how this is done in the Before hook. | |
@reset_device_settings | |
Scenario: 10 I set the keychain item # features/keychain.feature:46 | |
Given that the keychain contains the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:34 | |
INFO: query 'tabBarButton' took 929.9407209909987 milliseconds | |
INFO: query '* marked:'controls page'' took 829.9113480024971 milliseconds | |
INFO: query '* marked:'controls page'' took 828.2808809890412 milliseconds | |
Scenario: 11 I should see the keychain item exists because I did not reset the device settings before this Scenario # features/keychain.feature:49 | |
Then the keychain should contain the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:21 | |
INFO: query 'tabBarButton' took 620.0428459851537 milliseconds | |
INFO: query '* marked:'controls page'' took 823.9680859842338 milliseconds | |
INFO: query '* marked:'controls page'' took 1040.9470619924832 milliseconds | |
@reset_device_settings | |
Scenario: 12 The keychain should be empty because I reset the device settings before this Scenario # features/keychain.feature:53 | |
Then the keychain should be empty because I reset the device # features/step_definitions/keychain_steps.rb:67 | |
@pan | |
Feature: Pan | |
In order to perform swipes | |
As a developer | |
I want a Pan API | |
INFO: query 'tabBarButton' took 724.0919759788085 milliseconds | |
INFO: query '* marked:'scrolls page'' took 1244.8687819996849 milliseconds | |
INFO: query '* marked:'scrolls page'' took 827.4551430076826 milliseconds | |
Background: Navigate to the scrolls page # features/pan.feature:7 | |
Given I see the scrolls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableViewCell marked:'table views row'' took 1134.80992501718 milliseconds | |
Scenario: Left-to-right screen pan in portrait # features/pan.feature:10 | |
When I touch the table views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'table views page'' took 935.9201019979082 milliseconds | |
Then I see the table views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query '*' took 1872.4844910029788 milliseconds | |
When I pan left on the screen # features/step_definitions/pan_steps.rb:1 | |
INFO: query 'view marked:'scrolls page'' took 1037.0151730021462 milliseconds | |
Then I go back to the Scrolls page # features/step_definitions/pan_steps.rb:17 | |
INFO: query 'tabBarButton' took 1343.8125670072623 milliseconds | |
INFO: query '* marked:'scrolls page'' took 1550.669863994699 milliseconds | |
INFO: query '* marked:'scrolls page'' took 929.2792319902219 milliseconds | |
INFO: query 'UITableViewCell marked:'collection views row'' took 1351.4229980064556 milliseconds | |
Scenario: Left-to-right screen pan in landscape # features/pan.feature:16 | |
When I touch the collection views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'collection views page'' took 1347.2199249954429 milliseconds | |
Then I see the collection views page # features/step_definitions/scroll_steps.rb:26 | |
And I try to rotate the home button so it is on the right # features/step_definitions/rotation_steps.rb:2 | |
INFO: query '*' took 1877.1264759998303 milliseconds | |
When I pan left on the screen # features/step_definitions/pan_steps.rb:1 | |
INFO: query 'view marked:'scrolls page'' took 67.48024400440045 milliseconds | |
Then I go back to the Scrolls page # features/step_definitions/pan_steps.rb:17 | |
@pinch | |
Feature: Pinch | |
In order to perform pinches | |
As a developer | |
I want a Pinch API | |
INFO: query 'tabBarButton' took 63.77732800319791 milliseconds | |
Background: App has launched # features/pinch.feature:7 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
INFO: query 'tabBarButton' took 64.15421899873763 milliseconds | |
INFO: query '* marked:'gestures page'' took 74.53507801983505 milliseconds | |
INFO: query '* marked:'gestures page'' took 72.0524890057277 milliseconds | |
Scenario: A basic pinch on the box # features/pinch.feature:10 | |
Given I see the gestures tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableViewCell marked:'pinching row'' took 74.79767000768334 milliseconds | |
INFO: query 'view marked:'pinching page'' took 62.298536009620875 milliseconds | |
And I see the pinching page # features/step_definitions/pinch_steps.rb:1 | |
INFO: query 'UIView id:'box'' took 63.18908499088138 milliseconds | |
When I pinch in on the box # features/step_definitions/pinch_steps.rb:16 | |
INFO: query 'UIView id:'box'' took 63.29892002395354 milliseconds | |
Then the box grows # features/step_definitions/pinch_steps.rb:34 | |
When I pinch out on the box # features/step_definitions/pinch_steps.rb:29 | |
INFO: query 'UIView id:'box'' took 71.41023498843424 milliseconds | |
Then the box shrinks # features/step_definitions/pinch_steps.rb:22 | |
INFO: query 'tabBarButton' took 65.59219697373919 milliseconds | |
INFO: query 'tabBarButton' took 62.6179660030175 milliseconds | |
INFO: query '* marked:'scrolls page'' took 65.10896800318733 milliseconds | |
INFO: query '* marked:'scrolls page'' took 67.3453769995831 milliseconds | |
@map | |
Scenario: Full screen pinch on map # features/pinch.feature:19 | |
Given I see the scrolls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query '* marked:'map views row'' took 68.60000599408522 milliseconds | |
INFO: query '* marked:'map views row'' took 66.82138598989695 milliseconds | |
INFO: query '* marked:'map'' took 1377.7965649787802 milliseconds | |
INFO: query '* marked:'map'' took 82.40677599678747 milliseconds | |
And I see the map page # features/step_definitions/pinch_steps.rb:41 | |
Then I zoom in on the map by pinching out # features/step_definitions/pinch_steps.rb:54 | |
Then I zoom out on the map by pinching in # features/step_definitions/pinch_steps.rb:60 | |
@rotation | |
Feature: Rotation | |
In order test my app in all orientations | |
As a developer | |
I want Calabash to be able to rotate my app | |
INFO: query 'tabBarButton' took 140.3581630147528 milliseconds | |
INFO: query '* marked:'controls page'' took 65.24080198141746 milliseconds | |
INFO: query '* marked:'controls page'' took 65.87249500444159 milliseconds | |
# In order for Calabash to be able to rotate your app, | |
# your app's view controller must respond to orientation | |
# changes. | |
# | |
# Enumerating the various things you need to do to enable | |
# rotation for all the support iOS versions is beyond the | |
# scope of this documentation. | |
# | |
# This app supports rotation on at least one view controller. | |
# | |
# Rotation is exhaustively tested in the Briar iOS example. | |
# https://github.com/jmoody/briar-ios-example | |
Scenario: Controller does not respond to orientation changes # features/rotation.feature:20 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
And I try to rotate the home button so it is on the left # features/step_definitions/rotation_steps.rb:2 | |
Then the orientation should be portrait # features/step_definitions/rotation_steps.rb:6 | |
INFO: query 'tabBarButton' took 64.09557000733912 milliseconds | |
INFO: query '* marked:'special page'' took 65.24799001635984 milliseconds | |
INFO: query '* marked:'special page'' took 61.690582981100306 milliseconds | |
Scenario: Controller does respond to orientation changes # features/rotation.feature:25 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
And I try to rotate the home button so it is on the right # features/step_definitions/rotation_steps.rb:2 | |
Then the home button should be on the right # features/step_definitions/rotation_steps.rb:14 | |
@screenshots | |
Feature: Screenshots | |
In order to gain insights into my app | |
As a tester | |
I want a way to take a screenshot | |
INFO: query 'tabBarButton' took 63.39245798881166 milliseconds | |
Background: The app has launched # features/screenshots.feature:7 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
And I have cleared existing screenshots for this feature # features/step_definitions/screenshot_steps.rb:60 | |
And the scenario-screenshots subdirectory exists # features/step_definitions/screenshot_steps.rb:67 | |
Scenario: Default screenshot behavior # features/screenshots.feature:12 | |
When I take a screenshot with the default screenshot method # features/step_definitions/screenshot_steps.rb:74 | |
Then the screenshot will have a number appended to the name # features/step_definitions/screenshot_steps.rb:79 | |
INFO: query 'tabBarButton' took 63.636990991653875 milliseconds | |
Scenario: My un-numbered screenshot method # features/screenshots.feature:16 | |
When I take a screenshot with my un-numbered screenshot method # features/step_definitions/screenshot_steps.rb:90 | |
Then the screenshot will not have a number appended to the name # features/step_definitions/screenshot_steps.rb:95 | |
@scroll | |
Feature: Testing scrolling | |
In order to scroll on tables, collections, map views, and web views | |
As a developer | |
I want a Scroll API | |
INFO: query 'tabBarButton' took 65.7304489868693 milliseconds | |
INFO: query '* marked:'scrolls page'' took 89.55478999996558 milliseconds | |
INFO: query '* marked:'scrolls page'' took 94.3168530066032 milliseconds | |
INFO: query '* marked:'scrolls page'' took 87.64145398163237 milliseconds | |
INFO: query '* marked:'scrolls page'' took 90.22358802030794 milliseconds | |
INFO: query '* marked:'scrolls page'' took 88.2361980038695 milliseconds | |
INFO: query '* marked:'scrolls page'' took 90.92329299892299 milliseconds | |
INFO: query '* marked:'scrolls page'' took 87.80978599679656 milliseconds | |
INFO: query '* marked:'scrolls page'' took 90.22084600292146 milliseconds | |
INFO: query '* marked:'scrolls page'' took 99.52724300092086 milliseconds | |
INFO: query '* marked:'scrolls page'' took 101.27549999742769 milliseconds | |
INFO: query '* marked:'scrolls page'' took 99.94554700097069 milliseconds | |
INFO: query '* marked:'scrolls page'' took 91.86356599093415 milliseconds | |
INFO: query '* marked:'scrolls page'' took 87.3905089974869 milliseconds | |
INFO: query '* marked:'scrolls page'' took 86.72580501297489 milliseconds | |
INFO: query '* marked:'scrolls page'' took 94.41932701156475 milliseconds | |
INFO: query '* marked:'scrolls page'' took 96.09301798627712 milliseconds | |
INFO: query '* marked:'scrolls page'' took 92.16281500994228 milliseconds | |
INFO: query '* marked:'scrolls page'' took 92.70358199137263 milliseconds | |
INFO: query '* marked:'scrolls page'' took 96.0774989798665 milliseconds | |
INFO: query '* marked:'scrolls page'' took 108.18691999884322 milliseconds | |
INFO: query '* marked:'scrolls page'' took 103.43575300066732 milliseconds | |
INFO: query '* marked:'scrolls page'' took 102.2913480119314 milliseconds | |
INFO: query '* marked:'scrolls page'' took 79.84984599170275 milliseconds | |
INFO: query '* marked:'scrolls page'' took 81.91937700030394 milliseconds | |
INFO: query '* marked:'scrolls page'' took 64.81584801804274 milliseconds | |
Background: Navigate to the scrolls tab # features/scroll.feature:7 | |
Given I see the scrolls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableView marked:'table'' took 64.29021499934606 milliseconds | |
Then I see the scrolling views table # features/step_definitions/scroll_steps.rb:2 | |
INFO: query 'UITableViewCell marked:'collection views row'' took 67.00233201263472 milliseconds | |
Scenario: Collection views # features/scroll.feature:11 | |
When I touch the collection views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'collection views page'' took 85.98488999996334 milliseconds | |
Then I see the collection views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 68.91032197745517 milliseconds | |
Then I scroll the logos collection to the steam icon by mark # features/step_definitions/scroll_steps.rb:32 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 70.5684210115578 milliseconds | |
Then I scroll the logos collection to the github icon by index # features/step_definitions/scroll_steps.rb:60 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 82.32576301088557 milliseconds | |
Then I scroll the logos collection to the wordpress icon using a subview mark # features/step_definitions/scroll_steps.rb:74 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 69.14971099467948 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 67.29619999532588 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 70.99983698572032 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 72.01281399466097 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 68.4393740084488 milliseconds | |
Then I scroll up on the logos collection to the android icon # features/step_definitions/scroll_steps.rb:104 | |
INFO: query 'UICollectionView marked:'color gallery'' took 66.99748898972757 milliseconds | |
Then I scroll the colors collection to the middle of the purple boxes # features/step_definitions/scroll_steps.rb:125 | |
INFO: query 'UICollectionView marked:'color gallery'' took 72.16647299355827 milliseconds | |
Then I scroll the colors collection to the Wedge Antilles box using a subview mark # features/step_definitions/scroll_steps.rb:88 | |
INFO: query 'tabBarButton' took 70.84307097829878 milliseconds | |
INFO: query '* marked:'scrolls page'' took 73.98610498057678 milliseconds | |
INFO: query '* marked:'scrolls page'' took 75.63306301017292 milliseconds | |
INFO: query '* marked:'scrolls page'' took 80.07587800966576 milliseconds | |
INFO: query '* marked:'scrolls page'' took 70.37249702261761 milliseconds | |
INFO: query 'UITableView marked:'table'' took 68.6933460237924 milliseconds | |
INFO: query 'UITableViewCell marked:'table views row'' took 63.069471972994506 milliseconds | |
Scenario: Table views # features/scroll.feature:21 | |
When I touch the table views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'table views page'' took 71.33684799191542 milliseconds | |
Then I see the table views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query 'UITableView marked:'logos'' took 69.35349697596394 milliseconds | |
Then I scroll the logos table to the steam row by mark # features/step_definitions/scroll_steps.rb:140 | |
INFO: query 'UITableView marked:'logos'' took 90.8387590025086 milliseconds | |
Then I scroll the logos table to the apple row using a subview mark # features/step_definitions/scroll_steps.rb:46 | |
INFO: query 'UITableView marked:'logos'' took 65.52672400721349 milliseconds | |
Then I scroll the logos table to the github row by index # features/step_definitions/scroll_steps.rb:154 | |
INFO: query 'UITableView marked:'logos'' took 68.75776301603764 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 66.55897700693458 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 65.22015799419023 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 66.13564098370261 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 63.10812899027951 milliseconds | |
Then I scroll up on the logos table to the android row # features/step_definitions/scroll_steps.rb:168 | |
INFO: query 'tabBarButton' took 71.45637401845306 milliseconds | |
INFO: query '* marked:'scrolls page'' took 78.76925301388837 milliseconds | |
INFO: query '* marked:'scrolls page'' took 71.20241000666283 milliseconds | |
INFO: query '* marked:'scrolls page'' took 66.31494298926555 milliseconds | |
INFO: query '* marked:'scrolls page'' took 66.94673898164183 milliseconds | |
INFO: query 'UITableView marked:'table'' took 61.85793099575676 milliseconds | |
INFO: query 'UITableViewCell marked:'scroll views row'' took 63.18396999267861 milliseconds | |
Scenario: Scroll views # features/scroll.feature:29 | |
When I touch the scroll views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'scroll views page'' took 65.32164898817427 milliseconds | |
Then I see the scroll views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query 'UIScrollView marked:'scroll'' took 67.739825026365 milliseconds | |
INFO: query 'UIScrollView marked:'scroll'' took 65.01511100213975 milliseconds | |
INFO: query 'view marked:'cayenne'' took 80.22461898508482 milliseconds | |
Then I center the cayenne box to the middle # features/step_definitions/scroll_steps.rb:189 | |
INFO: query 'UIScrollView marked:'scroll'' took 98.9287160045933 milliseconds | |
INFO: query 'view marked:'purple'' took 72.8329150006175 milliseconds | |
INFO: query 'view marked:'purple'' took 64.76700800703838 milliseconds | |
INFO: query 'view marked:'purple'' took 65.75180299114436 milliseconds | |
INFO: query 'view marked:'purple'' took 65.95952899078839 milliseconds | |
Then I scroll up to the purple box # features/step_definitions/scroll_steps.rb:202 | |
INFO: query 'UIScrollView marked:'scroll'' took 63.23517102282494 milliseconds | |
INFO: query 'view marked:'light blue'' took 59.73278800956905 milliseconds | |
INFO: query 'view marked:'light blue'' took 63.43848898541182 milliseconds | |
INFO: query 'view marked:'light blue'' took 62.79857401386835 milliseconds | |
INFO: query 'view marked:'light blue'' took 74.04021400725469 milliseconds | |
INFO: query 'view marked:'light blue'' took 65.4885080002714 milliseconds | |
Then I scroll left to the light blue box # features/step_definitions/scroll_steps.rb:231 | |
INFO: query 'UIScrollView marked:'scroll'' took 68.93700800719671 milliseconds | |
INFO: query 'UIScrollView marked:'scroll'' took 69.7185309836641 milliseconds | |
INFO: query 'view marked:'cayenne'' took 62.6953580067493 milliseconds | |
Then I center the cayenne box to the middle # features/step_definitions/scroll_steps.rb:189 | |
INFO: query 'UIScrollView marked:'scroll'' took 63.483722013188526 milliseconds | |
INFO: query 'view marked:'gray'' took 60.186860006069764 milliseconds | |
INFO: query 'view marked:'gray'' took 74.50255000730976 milliseconds | |
INFO: query 'view marked:'gray'' took 64.92573698051274 milliseconds | |
Then I scroll down to the gray box # features/step_definitions/scroll_steps.rb:252 | |
INFO: query 'UIScrollView marked:'scroll'' took 61.49704899871722 milliseconds | |
INFO: query 'view marked:'dark gray'' took 63.52658398100175 milliseconds | |
INFO: query 'view marked:'dark gray'' took 65.92862200341187 milliseconds | |
INFO: query 'view marked:'dark gray'' took 64.08309401012957 milliseconds | |
INFO: query 'view marked:'dark gray'' took 73.10923800105229 milliseconds | |
INFO: query 'view marked:'dark gray'' took 71.24196900986135 milliseconds | |
Then I scroll right to the dark gray box # features/step_definitions/scroll_steps.rb:273 | |
INFO: query 'UIScrollView marked:'scroll'' took 73.81849101511762 milliseconds | |
INFO: query '* marked:'cayenne'' took 71.64712698431686 milliseconds | |
INFO: query '* marked:'cayenne'' took 62.09321800270118 milliseconds | |
Then I scroll to the cayenne box by mark # features/step_definitions/scroll_steps.rb:294 | |
INFO: query 'UIScrollView marked:'scroll'' took 61.39119600993581 milliseconds | |
INFO: query '* marked:'purple'' took 60.75582999619655 milliseconds | |
INFO: query '* marked:'purple'' took 59.849946992471814 milliseconds | |
And I scroll to the purple box by mark # features/step_definitions/scroll_steps.rb:294 | |
INFO: query 'UIScrollView marked:'scroll'' took 61.69642100576311 milliseconds | |
INFO: query '* marked:'gray'' took 64.70835499931127 milliseconds | |
INFO: query '* marked:'gray'' took 64.10389899974689 milliseconds | |
And I scroll to the gray box by mark # features/step_definitions/scroll_steps.rb:294 | |
INFO: query 'UIScrollView marked:'scroll'' took 60.22658498841338 milliseconds | |
INFO: query '* marked:'dark gray'' took 68.3486940106377 milliseconds | |
INFO: query '* marked:'dark gray'' took 61.48602001485415 milliseconds | |
And I scroll to the dark gray box by mark # features/step_definitions/scroll_steps.rb:294 | |
@selectors | |
Feature: Calling Arbitrary Selectors | |
In order to speed up testing and gain insights about my app | |
As a developer and tester | |
Want a way of calling arbitrary selectors on UIViews | |
INFO: query 'tabBarButton' took 63.78828900051303 milliseconds | |
INFO: query '* marked:'controls page'' took 63.81943199085072 milliseconds | |
INFO: query '* marked:'controls page'' took 62.495348014635965 milliseconds | |
# Calabash can call arbitrary selectors on UIView and UIView subclasses. | |
# | |
# The classic example is setting the text of a UITextField. | |
# | |
# query("UITextField marked:'username'", [{setText:'launisch'}]) | |
# | |
# In this case, 'setText' is the Objective-C selector. | |
# | |
# Consider this use case. You are testing a UIView with an image view | |
# and a label. During a test you want to change the image and the caption. | |
# | |
# @interface MyView : UIView | |
# | |
# @property(...) UIImageView *imageView; | |
# @property(...) UILabel *caption; | |
# | |
# @end | |
# | |
# @implementation MyView | |
# | |
# - (void) setImageWithURL:(NSString *) url caption:(NSString *) caption { | |
# UIImage *image = // Fetch the image from URL | |
# self.imageView.image = image; | |
# self.label.text = caption; | |
# } | |
# | |
# @end | |
# | |
# In the view's Controller or in the Interface Builder, you set the the | |
# accessibilityIdentifier to 'my view'. | |
# | |
# You can call this method from Calabash like this: | |
# | |
# query("view marked:'my view', [{setImageWithURL:'https://some/url.png', | |
# caption:'Funny Cat!'}]) | |
# | |
# Another way to add a selector to a view is to use an Objective-C category. | |
# | |
# In your View Controller .m file | |
# | |
# // Google Map View | |
# @interface GMSMapView (CalabashAdditions) | |
# | |
# - (NSString *) JSONRepresentationOfPins; | |
# | |
# @end | |
# | |
# @implementation GMSMapView (CalabashAdditions) | |
# | |
# - (NSString *) JSONRepresentationOfPins { | |
# // Google Map Views are OpenGL based so they are opaque to Calabash queries. | |
# // However, you can manage the pins on the map manually and return the list | |
# // of visible pins as a JSON string. | |
# } | |
# | |
# @end | |
# | |
# query('GSMapView', :JSONRepresentationOfPins) | |
Background: Navigate to the controls page # features/selectors.feature:66 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'controls page'' took 61.073466000379995 milliseconds | |
Scenario: Unknown selector # features/selectors.feature:69 | |
When I call an unknown selector on a view # features/step_definitions/selector_steps.rb:26 | |
Then I expect to receive back "*****" # features/step_definitions/selector_steps.rb:34 | |
INFO: query 'tabBarButton' took 61.88664599903859 milliseconds | |
INFO: query '* marked:'controls page'' took 68.18175798980519 milliseconds | |
INFO: query '* marked:'controls page'' took 67.26306400378235 milliseconds | |
INFO: query 'view marked:'controls page'' took 62.295962998177856 milliseconds | |
Scenario: Use __self__ to reference self # features/selectors.feature:73 | |
When I call a method that references the matched view # features/step_definitions/selector_steps.rb:38 | |
Then I expect to receive back "Self reference! Hurray!" # features/step_definitions/selector_steps.rb:34 | |
INFO: query 'tabBarButton' took 63.73126999824308 milliseconds | |
INFO: query '* marked:'controls page'' took 70.60954201733693 milliseconds | |
INFO: query '* marked:'controls page'' took 67.51621700823307 milliseconds | |
INFO: query 'view marked:'controls page'' took 66.08795400825329 milliseconds | |
# Demonstrates how to chain methods | |
# view.alarm.isOn | |
# [view.alarm setIsOn:1] | |
Scenario: Selector chaining # features/selectors.feature:80 | |
Then the view alarm property is off # features/step_definitions/selector_steps.rb:43 | |
INFO: query 'view marked:'controls page'' took 65.66681899130344 milliseconds | |
INFO: query 'view marked:'controls page'' took 68.68156598648056 milliseconds | |
And I can turn the alarm on # features/step_definitions/selector_steps.rb:51 | |
INFO: query 'tabBarButton' took 62.15905598946847 milliseconds | |
INFO: query '* marked:'controls page'' took 66.81502601713873 milliseconds | |
INFO: query '* marked:'controls page'' took 63.52970897569321 milliseconds | |
INFO: query 'view marked:'controls page'' took 62.471584999002516 milliseconds | |
Scenario: Selector arguments # features/selectors.feature:84 | |
Then I call selector with pointer argument # features/step_definitions/selector_steps.rb:65 | |
INFO: query 'view marked:'controls page'' took 65.187024010811 milliseconds | |
Then I call selector with int argument # features/step_definitions/selector_steps.rb:70 | |
INFO: query 'view marked:'controls page'' took 72.65292698866688 milliseconds | |
Then I call selector with unsigned int argument # features/step_definitions/selector_steps.rb:70 | |
INFO: query 'view marked:'controls page'' took 62.32963298680261 milliseconds | |
Then I call selector with short argument # features/step_definitions/selector_steps.rb:79 | |
INFO: query 'view marked:'controls page'' took 62.867710017599165 milliseconds | |
Then I call selector with unsigned short argument # features/step_definitions/selector_steps.rb:79 | |
INFO: query 'view marked:'controls page'' took 65.43975102249533 milliseconds | |
Then I call selector with float argument # features/step_definitions/selector_steps.rb:106 | |
INFO: query 'view marked:'controls page'' took 61.197182978503406 milliseconds | |
Then I call selector with double argument # features/step_definitions/selector_steps.rb:111 | |
INFO: query 'view marked:'controls page'' took 67.05371401039883 milliseconds | |
Then I call selector with long double argument # features/step_definitions/selector_steps.rb:111 | |
INFO: query 'view marked:'controls page'' took 70.77015002141707 milliseconds | |
Then I call selector with c string argument # features/step_definitions/selector_steps.rb:156 | |
INFO: query 'view marked:'controls page'' took 74.87479399424046 milliseconds | |
INFO: query 'view marked:'controls page'' took 63.876285013975576 milliseconds | |
Then I call selector with char argument # features/step_definitions/selector_steps.rb:120 | |
INFO: query 'view marked:'controls page'' took 64.84601000556722 milliseconds | |
INFO: query 'view marked:'controls page'' took 63.247513986425474 milliseconds | |
Then I call selector with unsigned char argument # features/step_definitions/selector_steps.rb:120 | |
INFO: query 'view marked:'controls page'' took 80.54535399423912 milliseconds | |
INFO: query 'view marked:'controls page'' took 92.42531799827702 milliseconds | |
INFO: query 'view marked:'controls page'' took 106.34744598064572 milliseconds | |
INFO: query 'view marked:'controls page'' took 71.64373001432978 milliseconds | |
Then I call selector with BOOL argument # features/step_definitions/selector_steps.rb:140 | |
INFO: query 'view marked:'controls page'' took 79.17890101089142 milliseconds | |
Then I call selector with long argument # features/step_definitions/selector_steps.rb:88 | |
INFO: query 'view marked:'controls page'' took 82.55806498345919 milliseconds | |
Then I call selector with unsigned long argument # features/step_definitions/selector_steps.rb:88 | |
INFO: query 'view marked:'controls page'' took 63.658652012236416 milliseconds | |
Then I call selector with long long argument # features/step_definitions/selector_steps.rb:97 | |
INFO: query 'view marked:'controls page'' took 69.8204550135415 milliseconds | |
Then I call selector with unsigned long long argument # features/step_definitions/selector_steps.rb:97 | |
INFO: query 'view marked:'controls page'' took 75.4984789818991 milliseconds | |
Then I call selector with point argument # features/step_definitions/selector_steps.rb:161 | |
INFO: query 'view marked:'controls page'' took 84.01710700127296 milliseconds | |
Then I call selector with rect argument # features/step_definitions/selector_steps.rb:161 | |
INFO: query 'tabBarButton' took 65.77162398025393 milliseconds | |
INFO: query '* marked:'controls page'' took 66.86680400162004 milliseconds | |
INFO: query '* marked:'controls page'' took 60.75186000089161 milliseconds | |
INFO: query 'view marked:'controls page'' took 62.001609010621905 milliseconds | |
Scenario: Selector return values # features/selectors.feature:104 | |
Then I call a selector that returns void # features/step_definitions/selector_steps.rb:172 | |
INFO: query 'view marked:'controls page'' took 64.67379300738685 milliseconds | |
Then I call a selector that returns a pointer # features/step_definitions/selector_steps.rb:177 | |
INFO: query 'view marked:'controls page'' took 64.82827998115681 milliseconds | |
Then I call a selector that returns a char # features/step_definitions/selector_steps.rb:181 | |
INFO: query 'view marked:'controls page'' took 61.528138001449406 milliseconds | |
Then I call a selector that returns an unsigned char # features/step_definitions/selector_steps.rb:181 | |
INFO: query 'view marked:'controls page'' took 74.21612000325695 milliseconds | |
Then I call a selector that returns a c string # features/step_definitions/selector_steps.rb:192 | |
INFO: query 'view marked:'controls page'' took 71.35662602377124 milliseconds | |
Then I call a selector that returns a BOOL # features/step_definitions/selector_steps.rb:196 | |
INFO: query 'view marked:'controls page'' took 64.73453101352789 milliseconds | |
Then I call a selector that returns a bool # features/step_definitions/selector_steps.rb:196 | |
INFO: query 'view marked:'controls page'' took 63.37400901247747 milliseconds | |
Then I call a selector that returns an int # features/step_definitions/selector_steps.rb:205 | |
INFO: query 'view marked:'controls page'' took 64.7534320014529 milliseconds | |
Then I call a selector that returns an unsigned int # features/step_definitions/selector_steps.rb:205 | |
INFO: query 'view marked:'controls page'' took 64.53010500990786 milliseconds | |
Then I call a selector that returns a short # features/step_definitions/selector_steps.rb:216 | |
INFO: query 'view marked:'controls page'' took 63.259796996135265 milliseconds | |
Then I call a selector that returns an unsigned short # features/step_definitions/selector_steps.rb:216 | |
INFO: query 'view marked:'controls page'' took 62.41676301578991 milliseconds | |
Then I call a selector that returns a double # features/step_definitions/selector_steps.rb:227 | |
INFO: query 'view marked:'controls page'' took 64.76519501302391 milliseconds | |
Then I call a selector that returns a long double # features/step_definitions/selector_steps.rb:227 | |
INFO: query 'view marked:'controls page'' took 61.072059004800394 milliseconds | |
Then I call a selector that returns a float # features/step_definitions/selector_steps.rb:238 | |
INFO: query 'view marked:'controls page'' took 59.69901199568994 milliseconds | |
Then I call a selector that returns a long # features/step_definitions/selector_steps.rb:242 | |
INFO: query 'view marked:'controls page'' took 62.08321699523367 milliseconds | |
Then I call a selector that returns an unsigned long # features/step_definitions/selector_steps.rb:242 | |
INFO: query 'view marked:'controls page'' took 60.04317098995671 milliseconds | |
Then I call a selector that returns a long long # features/step_definitions/selector_steps.rb:253 | |
INFO: query 'view marked:'controls page'' took 60.379044007277116 milliseconds | |
Then I call a selector that returns an unsigned long long # features/step_definitions/selector_steps.rb:253 | |
INFO: query 'view marked:'controls page'' took 62.909107975428924 milliseconds | |
Then I call a selector that returns a point # features/step_definitions/selector_steps.rb:264 | |
INFO: query 'view marked:'controls page'' took 60.786636982811615 milliseconds | |
Then I call a selector that returns a rect # features/step_definitions/selector_steps.rb:270 | |
INFO: query 'view marked:'controls page'' took 59.185427002375945 milliseconds | |
Then I call a selector that returns a CalSmokeAlarm struct # features/step_definitions/selector_steps.rb:276 | |
INFO: query 'tabBarButton' took 68.21130699245259 milliseconds | |
INFO: query '* marked:'controls page'' took 65.8234519942198 milliseconds | |
INFO: query '* marked:'controls page'' took 63.962009007809684 milliseconds | |
INFO: query 'view marked:'controls page'' took 60.22324599325657 milliseconds | |
@failing | |
Scenario: Selector with multiple arguments # features/selectors.feature:128 | |
Then I call a selector on a view that has 3 arguments # features/step_definitions/selector_steps.rb:280 | |
{ | |
"rect" => { | |
"y" => 0, | |
"height" => 0, | |
"center_y" => 0, | |
"x" => 0, | |
"center_x" => 0, | |
"width" => 0 | |
}, | |
"id" => nil, | |
"visible" => 1, | |
"accessibilityElement" => 1, | |
"hint" => nil, | |
"label" => nil, | |
"class" => "__NSArrayI", | |
"description" => "(\n a,\n b,\n c\n)", | |
"value" => nil, | |
"text" => nil | |
} | |
INFO: query 'tabBarButton' took 62.526838009944186 milliseconds | |
INFO: query '* marked:'controls page'' took 65.05887402454391 milliseconds | |
INFO: query '* marked:'controls page'' took 61.07057599001564 milliseconds | |
INFO: query 'view marked:'controls page'' took 62.811879004584625 milliseconds | |
@failing | |
Scenario: Chained selector with multiple arguments # features/selectors.feature:132 | |
Then I make a chained call to a selector with 3 arguments # features/step_definitions/selector_steps.rb:290 | |
[ | |
[0] { | |
"rect" => { | |
"y" => 0, | |
"height" => 0, | |
"center_y" => 0, | |
"x" => 0, | |
"center_x" => 0, | |
"width" => 0 | |
}, | |
"id" => nil, | |
"visible" => 1, | |
"accessibilityElement" => 1, | |
"hint" => nil, | |
"label" => nil, | |
"class" => "__NSArrayI", | |
"description" => "(\n a,\n b,\n c\n)", | |
"value" => nil, | |
"text" => nil | |
} | |
] | |
@server_log_level | |
Feature: Server Log Level | |
In order to gain insights about the server runtime | |
As a Calabash maintainer and application tester | |
I want a way to control the log level of the server | |
INFO: query 'tabBarButton' took 73.35997201153077 milliseconds | |
Scenario: Asking for the log level # features/server_log_level.feature:7 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
Then I can ask the server for its log level # features/step_definitions/server_log_level_steps.rb:1 | |
INFO: query 'tabBarButton' took 73.82765001966618 milliseconds | |
Scenario: Setting the log level # features/server_log_level.feature:11 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
And I set the server log level to debug # features/step_definitions/server_log_level_steps.rb:6 | |
Then the server log level should be debug # features/step_definitions/server_log_level_steps.rb:10 | |
@sheets | |
Feature: Sheets | |
In order to demonstrate interactions with sheets | |
As a Calabash maintainer | |
I want some Scenarios that show Calabash working with sheets | |
INFO: query 'tabBarButton' took 64.1857760201674 milliseconds | |
INFO: query '* marked:'special page'' took 67.24767800187692 milliseconds | |
INFO: query '* marked:'special page'' took 65.16777499928139 milliseconds | |
# These are sheets that are presented by _your_ application using: | |
# | |
# UIActionSheetView *sheet = [[UIActionSheet alloc] ...]; | |
# # Action sheets can be anchored in many ways; this is | |
# # just an example. | |
# [sheet showFromTabBar:self.tabBarController.tabBar]; | |
# | |
# These are _not_ sheets generated by the OS on behalf of your | |
# app. An example of sheet present by the OS on behalf of your | |
# app is the sheet that appears when you try to cancel an email | |
# message. | |
Background: Navigate to the special tab # features/sheets.feature:19 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'show sheet'' took 63.21832901448943 milliseconds | |
@animations | |
Scenario: Touch OK button on a sheet # features/sheets.feature:23 | |
When I touch the show sheet button # features/step_definitions/sheets_steps.rb:56 | |
INFO: query 'view:'_UIAlertControllerView'' took 70.19947399385273 milliseconds | |
Then I see a sheet # features/step_definitions/sheets_steps.rb:61 | |
INFO: query 'view:'_UIAlertControllerView' descendant label marked:'Smoke Test!'' took 72.91103701572865 milliseconds | |
Then I see the "Smoke Test!" sheet # features/step_definitions/sheets_steps.rb:65 | |
And I wait for all animations to stop # features/step_definitions/animations_steps.rb:2 | |
INFO: query 'view:'_UIAlertControllerView'' took 68.55188202462159 milliseconds | |
And I can dismiss the sheet with the Cancel button # features/step_definitions/sheets_steps.rb:69 | |
@slider | |
Feature: UISlider | |
In order to interact with sliders | |
As a developer | |
I want a Slider API | |
INFO: query 'tabBarButton' took 82.19367297715507 milliseconds | |
INFO: query '* marked:'controls page'' took 74.70087899127975 milliseconds | |
INFO: query '* marked:'controls page'' took 82.94914299040101 milliseconds | |
Scenario: Setting the value of a slider # features/slider.feature:7 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UISlider marked:'slider'' took 63.29390802420676 milliseconds | |
INFO: query 'UISlider marked:'slider'' took 57.9515699937474 milliseconds | |
INFO: query 'UISlider marked:'slider'' took 59.57271400257014 milliseconds | |
Then I can get the min and max values of the slider # features/step_definitions/slider_steps.rb:2 | |
INFO: query 'UISlider marked:'slider'' took 59.299881977494806 milliseconds | |
INFO: query 'UISlider marked:'slider'' took 60.02163898665458 milliseconds | |
And I can set the value of the slider to 8 # features/step_definitions/slider_steps.rb:14 | |
@gestures @tapping | |
Feature: Gestures | |
In order to test tapping | |
As a developer | |
I want a Tap API | |
INFO: query 'tabBarButton' took 63.773769012186676 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.001973991049454 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.818469003308564 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.491061999229714 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.40831200941466 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.70082500507124 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.18209500750527 milliseconds | |
INFO: query '* marked:'gestures page'' took 65.55786699755117 milliseconds | |
INFO: query '* marked:'gestures page'' took 67.5428280082997 milliseconds | |
INFO: query '* marked:'gestures page'' took 67.79960202402435 milliseconds | |
INFO: query '* marked:'gestures page'' took 69.24232302117161 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.31171599938534 milliseconds | |
INFO: query '* marked:'gestures page'' took 66.03854001150467 milliseconds | |
INFO: query '* marked:'gestures page'' took 61.84762401971966 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.14015500154346 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.52285500522703 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.79774699942209 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.19334599538706 milliseconds | |
INFO: query '* marked:'gestures page'' took 61.55925299390219 milliseconds | |
INFO: query '* marked:'gestures page'' took 61.97734602028504 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.804211978800595 milliseconds | |
INFO: query '* marked:'gestures page'' took 63.761383993551135 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.24375398596749 milliseconds | |
INFO: query '* marked:'gestures page'' took 61.865908006438985 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.73591500939801 milliseconds | |
INFO: query '* marked:'gestures page'' took 74.93154300027527 milliseconds | |
INFO: query '* marked:'gestures page'' took 78.31357800750993 milliseconds | |
INFO: query '* marked:'gestures page'' took 79.0049770148471 milliseconds | |
INFO: query '* marked:'gestures page'' took 69.48221000493504 milliseconds | |
INFO: query '* marked:'gestures page'' took 62.64000397641212 milliseconds | |
Background: Navigate to Tapping page # features/tap_gestures.feature:8 | |
Given I see the gestures tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableViewCell marked:'tapping row'' took 62.53376801032573 milliseconds | |
INFO: query 'view marked:'tapping page'' took 64.15822499548085 milliseconds | |
And I see the tapping page # features/step_definitions/tap_gestures_steps.rb:32 | |
INFO: query 'view marked:'left box'' took 62.55820000660606 milliseconds | |
Scenario: Double tap # features/tap_gestures.feature:12 | |
When I double tap the left box # features/step_definitions/tap_gestures_steps.rb:47 | |
INFO: query 'label marked:'last gesture'' took 65.02335099503398 milliseconds | |
Then the gesture description changes to double tap # features/step_definitions/tap_gestures_steps.rb:61 | |
INFO: query 'tabBarButton' took 68.9386640151497 milliseconds | |
INFO: query '* marked:'gestures page'' took 69.36387799214572 milliseconds | |
INFO: query '* marked:'gestures page'' took 72.26704698405229 milliseconds | |
INFO: query '* marked:'gestures page'' took 71.62924099247903 milliseconds | |
INFO: query '* marked:'gestures page'' took 66.89022699720226 milliseconds | |
INFO: query 'UITableViewCell marked:'tapping row'' took 62.21382599323988 milliseconds | |
INFO: query 'view marked:'tapping page'' took 61.8155550037045 milliseconds | |
INFO: query 'view marked:'left box'' took 63.009549980051816 milliseconds | |
Scenario: Long press # features/tap_gestures.feature:16 | |
When I long press the left box for 1 second # features/step_definitions/tap_gestures_steps.rb:53 | |
INFO: query 'label marked:'last gesture'' took 65.55510900216177 milliseconds | |
Then the gesture description changes to long press # features/step_definitions/tap_gestures_steps.rb:61 | |
INFO: query 'view marked:'right box'' took 64.68481497722678 milliseconds | |
When I long press the right box for 2 seconds # features/step_definitions/tap_gestures_steps.rb:53 | |
INFO: query 'label marked:'last gesture'' took 70.410048996564 milliseconds | |
Then the gesture description changes to long press # features/step_definitions/tap_gestures_steps.rb:61 | |
@resetting @ideviceinstaller @user_defaults | |
Feature: NSUserDefaults and App Sandbox | |
INFO: query 'tabBarButton' took 929.5995979919098 milliseconds | |
INFO: query '* marked:'controls page'' took 623.2741010026075 milliseconds | |
INFO: query '* marked:'controls page'' took 1038.0684059928171 milliseconds | |
# These tests are dependent on each other and must be run in a particular | |
# order. In general, this is a bad practice, but there are times when it is | |
# necessary. In this case, we are testing the behavior of resetting an | |
# app's sandbox and re-installing. The strict ordering is achieved by | |
# using the 'xx_< Scenario Name >' convention. | |
# | |
# When these tests are run on physical devices, the reset will be | |
# performed by re-installing the app. | |
# | |
# These tests require ideviceinstaller. You can install ideviceinstaller | |
# with brew. We do not maintain the ideviceinstaller, libimobiledevice, or | |
# homebrew tools. These are third-party software. If you have issues with these | |
# tools, you are on your own. Please do not report problems with these tools | |
# on the Calabash channels. | |
Background: Navigate to the controls page # features/user_defaults.feature:20 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
# Demonstrate that resetting the app works using NSUserDefaults as proxy. The | |
# on/off state of the switch on the first view is persisted in NSUserDefaults. | |
# | |
# NSUserDefaults are part of the app sandbox and so are deleted by | |
# `reset_app_sandbox`. | |
@reset_app_btw_scenarios @backdoor | |
Scenario: 20 I turn the switch on and add files to sandbox # features/user_defaults.feature:30 | |
And I drop some files in the sandbox # features/step_definitions/user_defaults_steps.rb:91 | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 1034.1799010057002 milliseconds | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 925.7812339928932 milliseconds | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 620.5623680143617 milliseconds | |
Given I turn the switch on # features/step_definitions/user_defaults_steps.rb:54 | |
INFO: query 'tabBarButton' took 64.03542598127387 milliseconds | |
INFO: query '* marked:'controls page'' took 103.5106600029394 milliseconds | |
INFO: query '* marked:'controls page'' took 110.00421599601395 milliseconds | |
@backdoor | |
Scenario: 21 The switch should be on and the files in the sandbox # features/user_defaults.feature:35 | |
Then I should see the files I put in the sandbox # features/step_definitions/user_defaults_steps.rb:97 | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 88.6412329855375 milliseconds | |
Then I should see the switch is on # features/step_definitions/user_defaults_steps.rb:83 | |
INFO: query 'tabBarButton' took 516.9679170066956 milliseconds | |
INFO: query '* marked:'controls page'' took 1247.6120800129138 milliseconds | |
INFO: query '* marked:'controls page'' took 1136.1722509900574 milliseconds | |
@reset_app_btw_scenarios @backdoor | |
Scenario: 22 The switch should be off and there should be no files in sandbox # features/user_defaults.feature:41 | |
Then I should not see the files I put in the sandbox # features/step_definitions/user_defaults_steps.rb:103 | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 1239.2142800090369 milliseconds | |
Then I should see the switch is off # features/step_definitions/user_defaults_steps.rb:83 | |
60 scenarios (60 passed) | |
315 steps (315 passed) | |
16m45.558s |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Using the default, simulator and common profiles... | |
@alerts | |
Feature: Alerts | |
In order to demonstrate interactions with alerts | |
As a Calabash maintainer | |
I want some Scenarios that show Calabash working with alerts | |
INFO: query 'tabBarButton' took 1348.6373859923333 milliseconds | |
INFO: query '* marked:'special page'' took 932.6467669743579 milliseconds | |
INFO: query '* marked:'special page'' took 1138.0868820124306 milliseconds | |
# These are alerts that are presented by _your_ application using: | |
# | |
# UIAlertView *alert = [[UIAlertView alloc] ...]; | |
# [alert show]; | |
# | |
# These are _not_ alerts generated by the OS on behalf of your | |
# app. Such alerts are also known as the "Privacy alerts". You | |
# can read more about interacting with UIAlerts presented by the | |
# OS here: | |
# | |
# https://github.com/calabash/calabash-ios/wiki/Managing-Privacy-Alerts%3A--Location-Services%2C-APNS%2C-Contacts | |
Background: Navigate to the special tab # features/alerts.feature:19 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'show alert'' took 1552.3246270022355 milliseconds | |
@animations | |
Scenario: Touch OK button on alert # features/alerts.feature:23 | |
When I touch the show alert button # features/step_definitions/alerts_steps.rb:127 | |
INFO: query 'view:'_UIAlertControllerView'' took 1033.2827169913799 milliseconds | |
Then I see an alert # features/step_definitions/alerts_steps.rb:132 | |
INFO: query 'view:'_UIAlertControllerView' descendant label' took 1449.8109869891778 milliseconds | |
Then I see the "Smoke Test!" alert # features/step_definitions/alerts_steps.rb:136 | |
And I wait for all animations to stop # features/step_definitions/animations_steps.rb:2 | |
INFO: query 'view:'_UIAlertControllerView'' took 1342.799506004667 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 1757.1610489976592 milliseconds | |
And I can dismiss the alert with the OK button # features/step_definitions/alerts_steps.rb:140 | |
INFO: query 'tabBarButton' took 1445.311542978743 milliseconds | |
INFO: query '* marked:'special page'' took 1553.7248229957186 milliseconds | |
INFO: query '* marked:'special page'' took 1142.8009289957117 milliseconds | |
INFO: query 'view marked:'show alert'' took 1749.7910130186938 milliseconds | |
Scenario: Verify the alert title, message, and buttons # features/alerts.feature:30 | |
When I touch the show alert button # features/step_definitions/alerts_steps.rb:127 | |
INFO: query 'view:'_UIAlertControllerView'' took 2163.570984994294 milliseconds | |
Then I see an alert # features/step_definitions/alerts_steps.rb:132 | |
INFO: query 'view:'_UIAlertControllerView'' took 1339.4164350174833 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 170.85441399831325 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 129.02170699089766 milliseconds | |
INFO: query 'view:'_UIAlertControllerView' descendant label' took 134.69453499419615 milliseconds | |
And the title of the alert is "Smoke Test!" # features/step_definitions/alerts_steps.rb:146 | |
INFO: query 'view:'_UIAlertControllerView'' took 132.09845998790115 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 211.29170199856162 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 212.07096098805778 milliseconds | |
INFO: query 'view:'_UIAlertControllerView' descendant label' took 210.16244401107542 milliseconds | |
And the message of the alert is "Another day, another iOS alert" # features/step_definitions/alerts_steps.rb:150 | |
INFO: query 'view:'_UIAlertControllerView'' took 220.97474700422026 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 139.82012000633404 milliseconds | |
And the left hand button is "Cancel" # features/step_definitions/alerts_steps.rb:154 | |
INFO: query 'view:'_UIAlertControllerView'' took 130.43061399366707 milliseconds | |
INFO: query 'view:'_UIAlertControllerActionView'' took 132.5954149942845 milliseconds | |
And the right hand button is "OK" # features/step_definitions/alerts_steps.rb:154 | |
INFO: query 'view:'_UIAlertControllerView'' took 132.09622399881482 milliseconds | |
INFO: query 'view:'_UIAlertControllerView'' took 134.83514499966986 milliseconds | |
And I can dismiss the alert with the OK button # features/step_definitions/alerts_steps.rb:140 | |
@animations | |
Feature: Animations | |
In order to demonstrate that Calabash works when there are animations | |
As a Calabash maintainer | |
I want some Scenarios with views that animate | |
INFO: query 'tabBarButton' took 127.24544398952276 milliseconds | |
INFO: query '* marked:'special page'' took 136.19453500723466 milliseconds | |
INFO: query '* marked:'special page'' took 130.1007560105063 milliseconds | |
Background: Navigate to the special tab # features/animations.feature:7 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'animated view'' took 122.20997898839414 milliseconds | |
@backdoor | |
Scenario: Start an animation and wait for it to finish # features/animations.feature:11 | |
And I have started an animation that lasts 4 seconds # features/step_definitions/animations_steps.rb:12 | |
Then I can wait for the animation to stop # features/step_definitions/animations_steps.rb:23 | |
INFO: query 'tabBarButton' took 127.27880099555477 milliseconds | |
INFO: query '* marked:'special page'' took 139.35040700016543 milliseconds | |
INFO: query '* marked:'special page'' took 123.25542498729192 milliseconds | |
@network_indicator @backdoor | |
Scenario: Start the network indicator and wait for it to finish # features/animations.feature:17 | |
And I start the network indicator for 4 seconds # features/step_definitions/animations_steps.rb:31 | |
Then I can wait for the indicator to stop # features/step_definitions/animations_steps.rb:36 | |
INFO: query 'tabBarButton' took 129.6832939842716 milliseconds | |
INFO: query '* marked:'special page'' took 132.1171509916894 milliseconds | |
INFO: query '* marked:'special page'' took 131.55745598487556 milliseconds | |
Scenario: Pass an unknown condition to the condition route # features/animations.feature:21 | |
When I pass an unknown condition to wait_for_condition # features/step_definitions/animations_steps.rb:44 | |
INFO: query '*' took 135.14638700871728 milliseconds | |
Then the app should not crash # features/step_definitions/animations_steps.rb:62 | |
And an error should be raised # features/step_definitions/animations_steps.rb:66 | |
INFO: query 'tabBarButton' took 120.80628800322302 milliseconds | |
INFO: query '* marked:'special page'' took 124.19346699607559 milliseconds | |
INFO: query '* marked:'special page'' took 121.32707700948231 milliseconds | |
# It is impossible to pass a nil query. The client will substitute a '*' | |
Scenario: Call wait_for_animation with a nil query # features/animations.feature:27 | |
When I pass an empty query to wait_for_none_animating # features/step_definitions/animations_steps.rb:53 | |
INFO: query '*' took 127.04723700881004 milliseconds | |
Then the app should not crash # features/step_definitions/animations_steps.rb:62 | |
And an error should be raised # features/step_definitions/animations_steps.rb:66 | |
@backdoor | |
Feature: Backdoors | |
In order make UI testing faster and easier | |
As a tester | |
I want a way to get my app into a good shape for testing | |
and to get some state from my app at runtime | |
INFO: query 'tabBarButton' took 145.37566801300272 milliseconds | |
Background: Launch the app # features/backdoor.feature:8 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
@unhandled_structs | |
Scenario: Struct return type # features/backdoor.feature:12 | |
When I call backdoor on a method that returns a CGSize # features/step_definitions/backdoor_steps.rb:2 | |
Then I see that CGSize is not fully supported # features/step_definitions/backdoor_steps.rb:6 | |
When I call backdoor on a method that returns LPSmokeAlarm struct # features/step_definitions/backdoor_steps.rb:10 | |
Then I see that arbitrary structs are not fully supported # features/step_definitions/backdoor_steps.rb:14 | |
INFO: query 'tabBarButton' took 129.21938800718635 milliseconds | |
# ☀ <== * ; Gherkin can not handle * in step names. | |
# For example, void\* does not work - * is not escaped | |
@unhandle_arguments | |
Scenario: Unhandled arguments # features/backdoor.feature:21 | |
Then void☀ arguments are not handled # features/step_definitions/backdoor_steps.rb:18 | |
And primitive pointer arguments like float☀ and int☀ are not handled # features/step_definitions/backdoor_steps.rb:22 | |
And NSError☀☀ arguments are not handled # features/step_definitions/backdoor_steps.rb:26 | |
And primitive array arguments like int[] are not handled # features/step_definitions/backdoor_steps.rb:30 | |
And arbitrary struct arguments are not handled # features/step_definitions/backdoor_steps.rb:34 | |
And CGSize arguments are not handled # features/step_definitions/backdoor_steps.rb:38 | |
INFO: query 'tabBarButton' took 197.76674601598643 milliseconds | |
Scenario: Backdoor selector is unknown # features/backdoor.feature:29 | |
When I call backdoor with an unknown selector # features/step_definitions/backdoor_steps.rb:50 | |
backdoor call failed: | |
selector => 'unknownSelector:' | |
arguments => '[""]' | |
reason => 'The backdoor: 'unknownSelector:' is undefined' | |
You must define 'unknownSelector:' in your UIApplicationDelegate. | |
// Example | |
-(NSString *)unknownSelector:(NSString *)argument { | |
// do stuff here | |
return @"a result"; | |
} | |
// Documentation | |
http://developer.xamarin.com/guides/testcloud/calabash/working-with/backdoors/#backdoor_in_iOS | |
Then I should see a helpful error message # features/step_definitions/backdoor_steps.rb:59 | |
INFO: query 'tabBarButton' took 123.21714000427164 milliseconds | |
@void | |
Scenario: Void return type # features/backdoor.feature:34 | |
When I call backdoor on a method with a void return type # features/step_definitions/backdoor_steps.rb:63 | |
Then I get back <VOID> # features/step_definitions/backdoor_steps.rb:67 | |
INFO: query 'tabBarButton' took 122.05083400476724 milliseconds | |
@unknown_encoding | |
Scenario: Long double retrun type is not supported # features/backdoor.feature:39 | |
When I call backdoor on a method that returns long double # features/step_definitions/backdoor_steps.rb:71 | |
Then I get an unknown encoding exception # features/step_definitions/backdoor_steps.rb:76 | |
INFO: query 'tabBarButton' took 121.15980699309148 milliseconds | |
@date | |
Scenario: NSDate is returned as a string # features/backdoor.feature:44 | |
Then backdoors that return NSDate return a ruby string # features/step_definitions/backdoor_steps.rb:82 | |
INFO: query 'tabBarButton' took 118.25483001302928 milliseconds | |
@self | |
Scenario: Passing self as an argument # features/backdoor.feature:48 | |
Then I can pass self as an argument using __self__ # features/step_definitions/backdoor_steps.rb:42 | |
INFO: query 'tabBarButton' took 119.55094398581423 milliseconds | |
@nil | |
Scenario: Passing nil as an argument # features/backdoor.feature:52 | |
Then I can pass nil as an argument using __nil__ # features/step_definitions/backdoor_steps.rb:46 | |
INFO: query 'tabBarButton' took 122.13317200075835 milliseconds | |
@primitive | |
Scenario: Primitive return types # features/backdoor.feature:56 | |
Then I call backdoor on a method that returns BOOL NO # features/step_definitions/backdoor_steps.rb:88 | |
Then I call backdoor on a method that returns BOOL YES # features/step_definitions/backdoor_steps.rb:88 | |
Then I call backdoor on a method that returns an int # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns an unsigned int # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns an NSInteger # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns an NSUInteger # features/step_definitions/backdoor_steps.rb:99 | |
Then I call backdoor on a method that returns a short # features/step_definitions/backdoor_steps.rb:117 | |
Then I call backdoor on a method that returns a unsigned short # features/step_definitions/backdoor_steps.rb:117 | |
Then I call backdoor on a method that returns a float # features/step_definitions/backdoor_steps.rb:129 | |
Then I call backdoor on a method that returns a double # features/step_definitions/backdoor_steps.rb:129 | |
Then I call backdoor on a method that returns a CGFloat # features/step_definitions/backdoor_steps.rb:129 | |
Then I call backdoor on a method that returns a char # features/step_definitions/backdoor_steps.rb:144 | |
Then I call backdoor on a method that returns an unsigned char # features/step_definitions/backdoor_steps.rb:144 | |
Then I call backdoor on a method that returns a c string # features/step_definitions/backdoor_steps.rb:156 | |
Then I call backdoor on a method that returns a const char star # features/step_definitions/backdoor_steps.rb:160 | |
Then I call backdoor on a method that returns a long # features/step_definitions/backdoor_steps.rb:164 | |
Then I call backdoor on a method that returns an unsigned long # features/step_definitions/backdoor_steps.rb:176 | |
Then I call backdoor on a method that returns a long long # features/step_definitions/backdoor_steps.rb:164 | |
Then I call backdoor on a method that returns an unsigned long # features/step_definitions/backdoor_steps.rb:176 | |
Then I call backdoor on a method that returns a CGPoint # features/step_definitions/backdoor_steps.rb:188 | |
Then I call backdoor on a method that returns a CGSize # features/step_definitions/backdoor_steps.rb:2 | |
Then I call backdoor on a method that returns a CGRect # features/step_definitions/backdoor_steps.rb:194 | |
INFO: query 'tabBarButton' took 120.11615699157119 milliseconds | |
@pointer | |
Scenario: Pointer return types # features/backdoor.feature:81 | |
Then I call backdoor on a method that returns an NSNumber # features/step_definitions/backdoor_steps.rb:202 | |
Then I call backdoor on a method that returns an NSArray # features/step_definitions/backdoor_steps.rb:206 | |
Then I call backdoor on a method that returns an NSDictionary # features/step_definitions/backdoor_steps.rb:210 | |
Then I call backdoor on a method that returns an NSString # features/step_definitions/backdoor_steps.rb:215 | |
INFO: query 'tabBarButton' took 120.57101199752651 milliseconds | |
@pointer | |
Scenario: Methods with pointer arguments # features/backdoor.feature:88 | |
Then I call backdoor on a method with one pointer argument # features/step_definitions/backdoor_steps.rb:219 | |
Then I call backdoor on a method with two pointer arguments # features/step_definitions/backdoor_steps.rb:219 | |
Then I call backdoor on a method with three pointer arguments # features/step_definitions/backdoor_steps.rb:219 | |
INFO: query 'tabBarButton' took 125.88487000903115 milliseconds | |
@primitive | |
Scenario: Methods with primative arguments # features/backdoor.feature:94 | |
Then I call backdoor on a method with a BOOL argument # features/step_definitions/backdoor_steps.rb:242 | |
Then I call backdoor on a method with a bool argument # features/step_definitions/backdoor_steps.rb:247 | |
Then I call backdoor on a method with an NSInteger argument # features/step_definitions/backdoor_steps.rb:252 | |
Then I call backdoor on a method with an NSUInteger argument # features/step_definitions/backdoor_steps.rb:252 | |
Then I call backdoor on a method with a short argument # features/step_definitions/backdoor_steps.rb:264 | |
Then I call backdoor on a method with an unsigned short argument # features/step_definitions/backdoor_steps.rb:264 | |
Then I call backdoor on a method with a CGFloat argument # features/step_definitions/backdoor_steps.rb:276 | |
Then I call backdoor on a method with a double argument # features/step_definitions/backdoor_steps.rb:276 | |
Then I call backdoor on a method with a float argument # features/step_definitions/backdoor_steps.rb:276 | |
Then I call backdoor on a method with a char argument # features/step_definitions/backdoor_steps.rb:290 | |
Then I call backdoor on a method with an unsigned char argument # features/step_definitions/backdoor_steps.rb:290 | |
Then I call backdoor on a method with a long argument # features/step_definitions/backdoor_steps.rb:301 | |
Then I call backdoor on a method with a unsigned long argument # features/step_definitions/backdoor_steps.rb:301 | |
Then I call backdoor on a method with a long long argument # features/step_definitions/backdoor_steps.rb:313 | |
Then I call backdoor on a method with a unsigned long long argument # features/step_definitions/backdoor_steps.rb:313 | |
Then I call backdoor on a method with a c string argument # features/step_definitions/backdoor_steps.rb:325 | |
Then I call backdoor on a method with a const char star argument # features/step_definitions/backdoor_steps.rb:329 | |
Then I call backdoor on a method with a CGPoint argument # features/step_definitions/backdoor_steps.rb:334 | |
Then I call backdoor on a method with a CGRect argument # features/step_definitions/backdoor_steps.rb:339 | |
Then I call backdoor on a method with a Class argument # features/step_definitions/backdoor_steps.rb:344 | |
@drag_and_drop | |
Feature: Drag and Drop | |
In order to test the Calabash pan API | |
As a Calabash developer | |
I want to drag a view onto another view | |
INFO: query 'tabBarButton' took 124.03257199912332 milliseconds | |
INFO: query '* marked:'special page'' took 126.3551419833675 milliseconds | |
INFO: query '* marked:'special page'' took 139.32743802433833 milliseconds | |
Background: Navigate to the special tab # features/drag_and_drop.feature:7 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UIImageView marked:'red'' took 119.55372599186376 milliseconds | |
INFO: query 'UIView marked:'left well'' took 120.52942300215364 milliseconds | |
INFO: query 'UIImageView marked:'red'' took 117.42894002236426 milliseconds | |
Scenario: Drag the red box to the left well # features/drag_and_drop.feature:10 | |
When I drag the red box to the left well # features/step_definitions/drag_and_drop_steps.rb:72 | |
INFO: query 'UIView marked:'left well'' took 120.23147099534981 milliseconds | |
Then the well should change color # features/step_definitions/drag_and_drop_steps.rb:86 | |
INFO: query 'UIImageView marked:'red'' took 122.89560900535434 milliseconds | |
And the box goes back to its original position # features/step_definitions/drag_and_drop_steps.rb:93 | |
INFO: query 'tabBarButton' took 126.5456120017916 milliseconds | |
INFO: query '* marked:'special page'' took 124.62942901765928 milliseconds | |
INFO: query '* marked:'special page'' took 119.0324539784342 milliseconds | |
INFO: query 'UIImageView marked:'blue'' took 117.5618669949472 milliseconds | |
INFO: query 'UIView marked:'right well'' took 116.59098899690434 milliseconds | |
INFO: query 'UIImageView marked:'blue'' took 117.979322996689 milliseconds | |
Scenario: Drag the blue box to the right well # features/drag_and_drop.feature:15 | |
When I drag the blue box to the right well # features/step_definitions/drag_and_drop_steps.rb:72 | |
INFO: query 'UIView marked:'right well'' took 134.64873199700378 milliseconds | |
Then the well should change color # features/step_definitions/drag_and_drop_steps.rb:86 | |
INFO: query 'UIImageView marked:'blue'' took 158.13519197399728 milliseconds | |
And the box goes back to its original position # features/step_definitions/drag_and_drop_steps.rb:93 | |
INFO: query 'tabBarButton' took 130.51516501582228 milliseconds | |
INFO: query '* marked:'special page'' took 121.88517101458274 milliseconds | |
INFO: query '* marked:'special page'' took 120.05134101491421 milliseconds | |
INFO: query 'UIImageView marked:'green'' took 116.56370901619084 milliseconds | |
INFO: query 'UIView marked:'left well'' took 121.090557979187 milliseconds | |
INFO: query 'UIImageView marked:'green'' took 120.42546199518256 milliseconds | |
Scenario: Drag the green box to the left well # features/drag_and_drop.feature:20 | |
When I drag the green box to the left well # features/step_definitions/drag_and_drop_steps.rb:72 | |
INFO: query 'UIView marked:'left well'' took 143.6901300039608 milliseconds | |
Then the well should change color # features/step_definitions/drag_and_drop_steps.rb:86 | |
INFO: query 'UIImageView marked:'green'' took 146.60234499024227 milliseconds | |
And the box goes back to its original position # features/step_definitions/drag_and_drop_steps.rb:93 | |
@flash | |
Feature: Flash | |
In order to explore my app's view heirarchy | |
As an app tester and develop | |
I want Calabash to be able to visually indicate which views match a query | |
INFO: query 'tabBarButton' took 125.20927900914103 milliseconds | |
INFO: query '* marked:'special page'' took 125.26775200967677 milliseconds | |
INFO: query '* marked:'special page'' took 123.7314709869679 milliseconds | |
Background: Navigate to special tab # features/flash.feature:7 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
Scenario: Flashing # features/flash.feature:10 | |
Then I can flash the buttons # features/step_definitions/flash_steps.rb:2 | |
And I can flash the labels in the tab bar # features/step_definitions/flash_steps.rb:7 | |
When the flash query matches no views # features/step_definitions/flash_steps.rb:12 | |
Then flash returns an empty array # features/step_definitions/flash_steps.rb:16 | |
@localization @simulator | |
Feature: Can launch a simulator in German | |
INFO: query 'tabBarButton' took 1668.698941997718 milliseconds | |
@german | |
Scenario: Launch simulator in German and query for text # features/german.feature:6 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
INFO: query 'tabBarButton' took 1662.574173999019 milliseconds | |
INFO: query '* marked:'special page'' took 1453.6544120055623 milliseconds | |
INFO: query '* marked:'special page'' took 1765.349178982433 milliseconds | |
And I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query '* marked:'localized label'' took 1341.0462499887217 milliseconds | |
INFO: query '* marked:'localized label'' took 1244.8647810088005 milliseconds | |
Then I see localized text "Beschriften mit lokalisiertem Text" # features/step_definitions/german_steps.rb:2 | |
@screenshot @issue_246 | |
Feature: Screenshot embed in and out of cucumber world | |
Cucumber RuntimeError Hey! | |
# undefined method `embed` (NoMethodError) when calling screenshot_and_raise | |
# https://github.com/calabash/calabash-ios/issues/246 | |
Scenario: screenshots outside of a page # features/issue_246_screenshot_embed.feature:8 | |
When I use screenshot_and_raise in the context of cucumber # features/step_definitions/issue_246_screenshot_steps.rb:34 | |
Then I should get a runtime error # features/step_definitions/issue_246_screenshot_steps.rb:70 | |
NotPOM RuntimeError Hey! | |
Scenario: screenshots in a page that does not extend IBase # features/issue_246_screenshot_embed.feature:12 | |
When I screenshot_and_raise in a page that does not inherit from IBase # features/step_definitions/issue_246_screenshot_steps.rb:46 | |
Then I should get a runtime error # features/step_definitions/issue_246_screenshot_steps.rb:70 | |
But it should not be a NoMethod error for embed # features/step_definitions/issue_246_screenshot_steps.rb:78 | |
POM RuntimeError Hey! | |
Scenario: screenshots in a page that does extend IBase # features/issue_246_screenshot_embed.feature:17 | |
When I screenshot_and_raise in a page that does inherit from IBase # features/step_definitions/issue_246_screenshot_steps.rb:58 | |
Then I should get a runtime error # features/step_definitions/issue_246_screenshot_steps.rb:70 | |
But it should not be a NoMethod error for embed # features/step_definitions/issue_246_screenshot_steps.rb:78 | |
@keyboard | |
Feature: Typing on the Keyboard | |
In order to enter text like a user | |
As an app tester | |
I want Calabash to provide a Keyboard API | |
INFO: query 'tabBarButton' took 1038.4002829960082 milliseconds | |
INFO: query '* marked:'controls page'' took 1454.0109009831212 milliseconds | |
INFO: query '* marked:'controls page'' took 1238.5757919983007 milliseconds | |
Background: Navigate to the controls tab # features/keyboard.feature:7 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITextField index:0' took 1556.8738660076633 milliseconds | |
INFO: query 'UITextField index:0' took 1342.5895539985504 milliseconds | |
@travis | |
Scenario: I should be able to type something # features/keyboard.feature:11 | |
Then I type "Hello" # features/step_definitions/keyboard_steps.rb:9 | |
And the first responder text is "Hello" # features/step_definitions/keyboard_steps.rb:30 | |
And I dismiss the keyboard by tapping the keyboard action key # features/step_definitions/keyboard_steps.rb:19 | |
INFO: query 'tabBarButton' took 124.7728530142922 milliseconds | |
INFO: query '* marked:'controls page'' took 130.29710701084696 milliseconds | |
INFO: query '* marked:'controls page'' took 131.5639299864415 milliseconds | |
INFO: query '* marked:'cal text field'' took 130.2776200172957 milliseconds | |
INFO: query '* marked:'cal text field'' took 138.0748140218202 milliseconds | |
Scenario: Interacting with non-UITextInput responders # features/keyboard.feature:16 | |
Then I touch the CalTextField # features/step_definitions/keyboard_steps.rb:23 | |
And the first responder text is "CalTextField" # features/step_definitions/keyboard_steps.rb:30 | |
INFO: query '* marked:'cal text field'' took 174.64482600917108 milliseconds | |
And I can append the text of the CalTextField # features/step_definitions/keyboard_steps.rb:36 | |
And I dismiss the keyboard that is attached to the CalTextField # features/step_definitions/keyboard_steps.rb:52 | |
@resetting @ideviceinstaller @keychain | |
Feature: iOS Keychain | |
INFO: query 'tabBarButton' took 124.58432899438776 milliseconds | |
INFO: query '* marked:'controls page'' took 127.63880399870686 milliseconds | |
INFO: query '* marked:'controls page'' took 129.2870940233115 milliseconds | |
# These tests are dependent on each other and must be run in a particular | |
# order. In general, this is a bad practice, but there are times when it is | |
# necessary. In this case, we are testing the behavior of resetting an | |
# app's sandbox and re-installing. The strict ordering is achieved by | |
# using the 'xx_< Scenario Name >' convention. | |
# | |
# When these tests are run on physical devices, the reset will be | |
# performed by re-installing the app. | |
# | |
# The Keychain API will removed in Calabash 2.0. It will be replaced by a | |
# separate gem and a Calabash plug-in. | |
# | |
# These tests require ideviceinstaller. You can install ideviceinstaller | |
# with brew. We do not maintain the ideviceinstaller, libimobiledevice, or | |
# homebrew tools. These are third-party software. If you have issues with these | |
# tools, you are on your own. Please do not report problems with these tools | |
# on the Calabash channels. | |
Background: Navigate to the controls page # features/keychain.feature:23 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
# Demonstrate that the keychain API works. | |
Scenario: 00 I set the keychain item # features/keychain.feature:27 | |
Given that the keychain contains the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:34 | |
INFO: query 'tabBarButton' took 125.73392200283706 milliseconds | |
INFO: query '* marked:'controls page'' took 138.31056599156 milliseconds | |
INFO: query '* marked:'controls page'' took 143.50868700421415 milliseconds | |
Scenario: 01 I should see the keychain item exists in the next Scenario # features/keychain.feature:30 | |
Then the keychain should contain the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:21 | |
When I clear the keychain # features/step_definitions/keychain_steps.rb:13 | |
Then the keychain should be empty because I called clear_keychain # features/step_definitions/keychain_steps.rb:41 | |
INFO: query 'tabBarButton' took 1646.2930320121814 milliseconds | |
INFO: query '* marked:'controls page'' took 1345.3874789993279 milliseconds | |
INFO: query '* marked:'controls page'' took 1554.4593969825655 milliseconds | |
# Demonstrate that resetting the simulator content and settings works using | |
# the keychain as proxy. | |
# | |
# Keychain items persist over app installs and sandbox resets on the | |
# iOS Simulator and physical devices. | |
# | |
# On the simulator, you can reset the simulator contents and settings to | |
# clear the keychain, but on devices re-installing does not clear the | |
# keychain. You must call `keychain_clear` after the app is launched. | |
# See features/support/01_launch.rb to see how this is done in the Before hook. | |
@reset_device_settings | |
Scenario: 10 I set the keychain item # features/keychain.feature:46 | |
Given that the keychain contains the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:34 | |
INFO: query 'tabBarButton' took 822.6593309955206 milliseconds | |
INFO: query '* marked:'controls page'' took 1449.219603993697 milliseconds | |
INFO: query '* marked:'controls page'' took 1349.776805989677 milliseconds | |
Scenario: 11 I should see the keychain item exists because I did not reset the device settings before this Scenario # features/keychain.feature:49 | |
Then the keychain should contain the account password "pa$$w0rd" for "clever_user98" # features/step_definitions/keychain_steps.rb:21 | |
INFO: query 'tabBarButton' took 1345.7603370188735 milliseconds | |
INFO: query '* marked:'controls page'' took 1037.265271996148 milliseconds | |
INFO: query '* marked:'controls page'' took 1660.9389880031813 milliseconds | |
@reset_device_settings | |
Scenario: 12 The keychain should be empty because I reset the device settings before this Scenario # features/keychain.feature:53 | |
Then the keychain should be empty because I reset the device # features/step_definitions/keychain_steps.rb:67 | |
@pan | |
Feature: Pan | |
In order to perform swipes | |
As a developer | |
I want a Pan API | |
INFO: query 'tabBarButton' took 1864.664138003718 milliseconds | |
INFO: query '* marked:'scrolls page'' took 1245.1596409955528 milliseconds | |
INFO: query '* marked:'scrolls page'' took 1656.9344059971627 milliseconds | |
Background: Navigate to the scrolls page # features/pan.feature:7 | |
Given I see the scrolls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableViewCell marked:'table views row'' took 1451.0571100108791 milliseconds | |
Scenario: Left-to-right screen pan in portrait # features/pan.feature:10 | |
When I touch the table views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'table views page'' took 1243.7526579888072 milliseconds | |
Then I see the table views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query '*' took 1754.8879069800023 milliseconds | |
When I pan left on the screen # features/step_definitions/pan_steps.rb:1 | |
INFO: query 'view marked:'scrolls page'' took 889.4087240041699 milliseconds | |
Then I go back to the Scrolls page # features/step_definitions/pan_steps.rb:17 | |
INFO: query 'tabBarButton' took 126.92106497706845 milliseconds | |
INFO: query '* marked:'scrolls page'' took 128.23750800453126 milliseconds | |
INFO: query '* marked:'scrolls page'' took 123.95199298043735 milliseconds | |
INFO: query 'UITableViewCell marked:'collection views row'' took 135.38722801604308 milliseconds | |
Scenario: Left-to-right screen pan in landscape # features/pan.feature:16 | |
When I touch the collection views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'collection views page'' took 139.29846201790497 milliseconds | |
Then I see the collection views page # features/step_definitions/scroll_steps.rb:26 | |
And I try to rotate the home button so it is on the right # features/step_definitions/rotation_steps.rb:2 | |
INFO: query '*' took 343.0923080013599 milliseconds | |
When I pan left on the screen # features/step_definitions/pan_steps.rb:1 | |
INFO: query 'view marked:'scrolls page'' took 136.29436699557118 milliseconds | |
Then I go back to the Scrolls page # features/step_definitions/pan_steps.rb:17 | |
@pinch | |
Feature: Pinch | |
In order to perform pinches | |
As a developer | |
I want a Pinch API | |
INFO: query 'tabBarButton' took 128.69391500134952 milliseconds | |
Background: App has launched # features/pinch.feature:7 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
INFO: query 'tabBarButton' took 126.59893400268629 milliseconds | |
INFO: query '* marked:'gestures page'' took 125.79468000330962 milliseconds | |
INFO: query '* marked:'gestures page'' took 125.9643410157878 milliseconds | |
Scenario: A basic pinch on the box # features/pinch.feature:10 | |
Given I see the gestures tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableViewCell marked:'pinching row'' took 120.99364399909973 milliseconds | |
INFO: query 'view marked:'pinching page'' took 131.04524998925626 milliseconds | |
And I see the pinching page # features/step_definitions/pinch_steps.rb:1 | |
INFO: query 'UIView id:'box'' took 126.96959800086915 milliseconds | |
When I pinch in on the box # features/step_definitions/pinch_steps.rb:16 | |
INFO: query 'UIView id:'box'' took 124.02858899440616 milliseconds | |
Then the box grows # features/step_definitions/pinch_steps.rb:34 | |
When I pinch out on the box # features/step_definitions/pinch_steps.rb:29 | |
INFO: query 'UIView id:'box'' took 126.63091198191978 milliseconds | |
Then the box shrinks # features/step_definitions/pinch_steps.rb:22 | |
INFO: query 'tabBarButton' took 126.1256710276939 milliseconds | |
INFO: query 'tabBarButton' took 122.96087597496808 milliseconds | |
INFO: query '* marked:'scrolls page'' took 126.68492301600054 milliseconds | |
INFO: query '* marked:'scrolls page'' took 136.59520100918598 milliseconds | |
@map | |
Scenario: Full screen pinch on map # features/pinch.feature:19 | |
Given I see the scrolls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query '* marked:'map views row'' took 134.17687700712122 milliseconds | |
INFO: query '* marked:'map views row'' took 135.8942590013612 milliseconds | |
INFO: query '* marked:'map'' took 1445.6558199890424 milliseconds | |
INFO: query '* marked:'map'' took 360.3701630199794 milliseconds | |
And I see the map page # features/step_definitions/pinch_steps.rb:41 | |
Then I zoom in on the map by pinching out # features/step_definitions/pinch_steps.rb:54 | |
Then I zoom out on the map by pinching in # features/step_definitions/pinch_steps.rb:60 | |
@rotation | |
Feature: Rotation | |
In order test my app in all orientations | |
As a developer | |
I want Calabash to be able to rotate my app | |
INFO: query 'tabBarButton' took 221.5977540181484 milliseconds | |
INFO: query '* marked:'controls page'' took 131.2717969994992 milliseconds | |
INFO: query '* marked:'controls page'' took 118.78502301988192 milliseconds | |
# In order for Calabash to be able to rotate your app, | |
# your app's view controller must respond to orientation | |
# changes. | |
# | |
# Enumerating the various things you need to do to enable | |
# rotation for all the support iOS versions is beyond the | |
# scope of this documentation. | |
# | |
# This app supports rotation on at least one view controller. | |
# | |
# Rotation is exhaustively tested in the Briar iOS example. | |
# https://github.com/jmoody/briar-ios-example | |
Scenario: Controller does not respond to orientation changes # features/rotation.feature:20 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
And I try to rotate the home button so it is on the left # features/step_definitions/rotation_steps.rb:2 | |
Then the orientation should be portrait # features/step_definitions/rotation_steps.rb:6 | |
INFO: query 'tabBarButton' took 126.85410201083869 milliseconds | |
INFO: query '* marked:'special page'' took 129.93807598832063 milliseconds | |
INFO: query '* marked:'special page'' took 123.18641299498267 milliseconds | |
Scenario: Controller does respond to orientation changes # features/rotation.feature:25 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
And I try to rotate the home button so it is on the right # features/step_definitions/rotation_steps.rb:2 | |
Then the home button should be on the right # features/step_definitions/rotation_steps.rb:14 | |
@screenshots | |
Feature: Screenshots | |
In order to gain insights into my app | |
As a tester | |
I want a way to take a screenshot | |
INFO: query 'tabBarButton' took 141.51078500435688 milliseconds | |
Background: The app has launched # features/screenshots.feature:7 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
And I have cleared existing screenshots for this feature # features/step_definitions/screenshot_steps.rb:60 | |
And the scenario-screenshots subdirectory exists # features/step_definitions/screenshot_steps.rb:67 | |
Scenario: Default screenshot behavior # features/screenshots.feature:12 | |
When I take a screenshot with the default screenshot method # features/step_definitions/screenshot_steps.rb:74 | |
Then the screenshot will have a number appended to the name # features/step_definitions/screenshot_steps.rb:79 | |
INFO: query 'tabBarButton' took 121.5097300009802 milliseconds | |
Scenario: My un-numbered screenshot method # features/screenshots.feature:16 | |
When I take a screenshot with my un-numbered screenshot method # features/step_definitions/screenshot_steps.rb:90 | |
Then the screenshot will not have a number appended to the name # features/step_definitions/screenshot_steps.rb:95 | |
@scroll | |
Feature: Testing scrolling | |
In order to scroll on tables, collections, map views, and web views | |
As a developer | |
I want a Scroll API | |
INFO: query 'tabBarButton' took 121.98617801186629 milliseconds | |
INFO: query '* marked:'scrolls page'' took 177.3397540091537 milliseconds | |
INFO: query '* marked:'scrolls page'' took 164.93492099107243 milliseconds | |
INFO: query '* marked:'scrolls page'' took 169.48089201468974 milliseconds | |
INFO: query '* marked:'scrolls page'' took 171.45336998510174 milliseconds | |
INFO: query '* marked:'scrolls page'' took 167.28851199150085 milliseconds | |
INFO: query '* marked:'scrolls page'' took 166.3355559867341 milliseconds | |
INFO: query '* marked:'scrolls page'' took 171.8017940002028 milliseconds | |
INFO: query '* marked:'scrolls page'' took 168.52326699881814 milliseconds | |
INFO: query '* marked:'scrolls page'' took 169.19362099724822 milliseconds | |
INFO: query '* marked:'scrolls page'' took 173.15018799854442 milliseconds | |
INFO: query '* marked:'scrolls page'' took 177.56620500585996 milliseconds | |
INFO: query '* marked:'scrolls page'' took 166.40607800218277 milliseconds | |
INFO: query '* marked:'scrolls page'' took 166.15665701101534 milliseconds | |
INFO: query '* marked:'scrolls page'' took 166.89113699248992 milliseconds | |
INFO: query '* marked:'scrolls page'' took 165.33917700871825 milliseconds | |
INFO: query '* marked:'scrolls page'' took 164.67037700931542 milliseconds | |
INFO: query '* marked:'scrolls page'' took 151.1408860096708 milliseconds | |
INFO: query '* marked:'scrolls page'' took 133.1710810190998 milliseconds | |
INFO: query '* marked:'scrolls page'' took 126.37670600088313 milliseconds | |
Background: Navigate to the scrolls tab # features/scroll.feature:7 | |
Given I see the scrolls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableView marked:'table'' took 126.51688800542615 milliseconds | |
Then I see the scrolling views table # features/step_definitions/scroll_steps.rb:2 | |
INFO: query 'UITableViewCell marked:'collection views row'' took 144.9083420156967 milliseconds | |
Scenario: Collection views # features/scroll.feature:11 | |
When I touch the collection views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'collection views page'' took 139.83569300035015 milliseconds | |
Then I see the collection views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 124.55312898964621 milliseconds | |
Then I scroll the logos collection to the steam icon by mark # features/step_definitions/scroll_steps.rb:32 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 125.63224899349734 milliseconds | |
Then I scroll the logos collection to the github icon by index # features/step_definitions/scroll_steps.rb:60 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 148.24109699111432 milliseconds | |
Then I scroll the logos collection to the wordpress icon using a subview mark # features/step_definitions/scroll_steps.rb:74 | |
INFO: query 'UICollectionView marked:'logo gallery'' took 127.34746601199731 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 131.96089898701757 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 127.74944401462562 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 127.80999401002191 milliseconds | |
INFO: query 'UICollectionViewCell marked:'android'' took 128.37023302563466 milliseconds | |
Then I scroll up on the logos collection to the android icon # features/step_definitions/scroll_steps.rb:104 | |
INFO: query 'UICollectionView marked:'color gallery'' took 129.91363598848693 milliseconds | |
Then I scroll the colors collection to the middle of the purple boxes # features/step_definitions/scroll_steps.rb:125 | |
INFO: query 'UICollectionView marked:'color gallery'' took 128.07059398619458 milliseconds | |
Then I scroll the colors collection to the Wedge Antilles box using a subview mark # features/step_definitions/scroll_steps.rb:88 | |
INFO: query 'tabBarButton' took 130.2096440049354 milliseconds | |
INFO: query '* marked:'scrolls page'' took 144.07526300055906 milliseconds | |
INFO: query '* marked:'scrolls page'' took 145.18278898322023 milliseconds | |
INFO: query '* marked:'scrolls page'' took 146.16687598754652 milliseconds | |
INFO: query 'UITableView marked:'table'' took 134.14608800667338 milliseconds | |
INFO: query 'UITableViewCell marked:'table views row'' took 134.3336570134852 milliseconds | |
Scenario: Table views # features/scroll.feature:21 | |
When I touch the table views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'table views page'' took 139.5040009811055 milliseconds | |
Then I see the table views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query 'UITableView marked:'logos'' took 132.8343179775402 milliseconds | |
Then I scroll the logos table to the steam row by mark # features/step_definitions/scroll_steps.rb:140 | |
INFO: query 'UITableView marked:'logos'' took 126.51833400013857 milliseconds | |
Then I scroll the logos table to the apple row using a subview mark # features/step_definitions/scroll_steps.rb:46 | |
INFO: query 'UITableView marked:'logos'' took 134.41371099906974 milliseconds | |
Then I scroll the logos table to the github row by index # features/step_definitions/scroll_steps.rb:154 | |
INFO: query 'UITableView marked:'logos'' took 124.53065800946206 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 126.41600298229605 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 124.56757799373008 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 129.62754399632104 milliseconds | |
INFO: query 'UITableViewCell marked:'android'' took 140.98029999877326 milliseconds | |
Then I scroll up on the logos table to the android row # features/step_definitions/scroll_steps.rb:168 | |
INFO: query 'tabBarButton' took 127.49211199115962 milliseconds | |
INFO: query '* marked:'scrolls page'' took 143.47276999615133 milliseconds | |
INFO: query '* marked:'scrolls page'' took 134.01785198948346 milliseconds | |
INFO: query '* marked:'scrolls page'' took 131.4176080049947 milliseconds | |
INFO: query 'UITableView marked:'table'' took 124.22739699832164 milliseconds | |
INFO: query 'UITableViewCell marked:'scroll views row'' took 121.26516801072285 milliseconds | |
Scenario: Scroll views # features/scroll.feature:29 | |
When I touch the scroll views row # features/step_definitions/scroll_steps.rb:16 | |
INFO: query 'view marked:'scroll views page'' took 127.84795500920154 milliseconds | |
Then I see the scroll views page # features/step_definitions/scroll_steps.rb:26 | |
INFO: query 'UIScrollView marked:'scroll'' took 132.00558500830084 milliseconds | |
INFO: query 'UIScrollView marked:'scroll'' took 121.9786709989421 milliseconds | |
INFO: query 'view marked:'cayenne'' took 119.4582320167683 milliseconds | |
Then I center the cayenne box to the middle # features/step_definitions/scroll_steps.rb:189 | |
INFO: query 'UIScrollView marked:'scroll'' took 117.6147910009604 milliseconds | |
INFO: query 'view marked:'purple'' took 121.4563800022006 milliseconds | |
INFO: query 'view marked:'purple'' took 121.82275799568743 milliseconds | |
INFO: query 'view marked:'purple'' took 117.69671100773849 milliseconds | |
INFO: query 'view marked:'purple'' took 130.8012349763885 milliseconds | |
Then I scroll up to the purple box # features/step_definitions/scroll_steps.rb:202 | |
INFO: query 'UIScrollView marked:'scroll'' took 131.93356999545358 milliseconds | |
INFO: query 'view marked:'light blue'' took 133.04147101007402 milliseconds | |
INFO: query 'view marked:'light blue'' took 118.97965602111071 milliseconds | |
INFO: query 'view marked:'light blue'' took 118.86177698033862 milliseconds | |
INFO: query 'view marked:'light blue'' took 117.98397800885141 milliseconds | |
INFO: query 'view marked:'light blue'' took 118.5324749967549 milliseconds | |
Then I scroll left to the light blue box # features/step_definitions/scroll_steps.rb:231 | |
INFO: query 'UIScrollView marked:'scroll'' took 116.8816490098834 milliseconds | |
INFO: query 'UIScrollView marked:'scroll'' took 121.57537299208343 milliseconds | |
INFO: query 'view marked:'cayenne'' took 117.52982600592077 milliseconds | |
Then I center the cayenne box to the middle # features/step_definitions/scroll_steps.rb:189 | |
INFO: query 'UIScrollView marked:'scroll'' took 118.53399299434386 milliseconds | |
INFO: query 'view marked:'gray'' took 117.19366800389253 milliseconds | |
INFO: query 'view marked:'gray'' took 128.24749600258656 milliseconds | |
INFO: query 'view marked:'gray'' took 118.63154300954193 milliseconds | |
Then I scroll down to the gray box # features/step_definitions/scroll_steps.rb:252 | |
INFO: query 'UIScrollView marked:'scroll'' took 118.27204099972732 milliseconds | |
INFO: query 'view marked:'dark gray'' took 118.77534698578529 milliseconds | |
INFO: query 'view marked:'dark gray'' took 119.16165598086081 milliseconds | |
INFO: query 'view marked:'dark gray'' took 118.99806500878185 milliseconds | |
INFO: query 'view marked:'dark gray'' took 115.55369599955156 milliseconds | |
INFO: query 'view marked:'dark gray'' took 119.77811300312169 milliseconds | |
Then I scroll right to the dark gray box # features/step_definitions/scroll_steps.rb:273 | |
INFO: query 'UIScrollView marked:'scroll'' took 116.63499200949445 milliseconds | |
INFO: query '* marked:'cayenne'' took 115.69480499019846 milliseconds | |
INFO: query '* marked:'cayenne'' took 116.61614701733924 milliseconds | |
Then I scroll to the cayenne box by mark # features/step_definitions/scroll_steps.rb:294 | |
INFO: query 'UIScrollView marked:'scroll'' took 116.06957201729529 milliseconds | |
INFO: query '* marked:'purple'' took 126.30171299679205 milliseconds | |
INFO: query '* marked:'purple'' took 126.62887800252065 milliseconds | |
And I scroll to the purple box by mark # features/step_definitions/scroll_steps.rb:294 | |
INFO: query 'UIScrollView marked:'scroll'' took 123.20818999432959 milliseconds | |
INFO: query '* marked:'gray'' took 113.65565800224431 milliseconds | |
INFO: query '* marked:'gray'' took 113.84506899048574 milliseconds | |
And I scroll to the gray box by mark # features/step_definitions/scroll_steps.rb:294 | |
INFO: query 'UIScrollView marked:'scroll'' took 114.07202700502239 milliseconds | |
INFO: query '* marked:'dark gray'' took 115.87900301674381 milliseconds | |
INFO: query '* marked:'dark gray'' took 114.85986699699424 milliseconds | |
And I scroll to the dark gray box by mark # features/step_definitions/scroll_steps.rb:294 | |
@selectors | |
Feature: Calling Arbitrary Selectors | |
In order to speed up testing and gain insights about my app | |
As a developer and tester | |
Want a way of calling arbitrary selectors on UIViews | |
INFO: query 'tabBarButton' took 127.65910400776193 milliseconds | |
INFO: query '* marked:'controls page'' took 120.5788180232048 milliseconds | |
INFO: query '* marked:'controls page'' took 121.98113201884553 milliseconds | |
# Calabash can call arbitrary selectors on UIView and UIView subclasses. | |
# | |
# The classic example is setting the text of a UITextField. | |
# | |
# query("UITextField marked:'username'", [{setText:'launisch'}]) | |
# | |
# In this case, 'setText' is the Objective-C selector. | |
# | |
# Consider this use case. You are testing a UIView with an image view | |
# and a label. During a test you want to change the image and the caption. | |
# | |
# @interface MyView : UIView | |
# | |
# @property(...) UIImageView *imageView; | |
# @property(...) UILabel *caption; | |
# | |
# @end | |
# | |
# @implementation MyView | |
# | |
# - (void) setImageWithURL:(NSString *) url caption:(NSString *) caption { | |
# UIImage *image = // Fetch the image from URL | |
# self.imageView.image = image; | |
# self.label.text = caption; | |
# } | |
# | |
# @end | |
# | |
# In the view's Controller or in the Interface Builder, you set the the | |
# accessibilityIdentifier to 'my view'. | |
# | |
# You can call this method from Calabash like this: | |
# | |
# query("view marked:'my view', [{setImageWithURL:'https://some/url.png', | |
# caption:'Funny Cat!'}]) | |
# | |
# Another way to add a selector to a view is to use an Objective-C category. | |
# | |
# In your View Controller .m file | |
# | |
# // Google Map View | |
# @interface GMSMapView (CalabashAdditions) | |
# | |
# - (NSString *) JSONRepresentationOfPins; | |
# | |
# @end | |
# | |
# @implementation GMSMapView (CalabashAdditions) | |
# | |
# - (NSString *) JSONRepresentationOfPins { | |
# // Google Map Views are OpenGL based so they are opaque to Calabash queries. | |
# // However, you can manage the pins on the map manually and return the list | |
# // of visible pins as a JSON string. | |
# } | |
# | |
# @end | |
# | |
# query('GSMapView', :JSONRepresentationOfPins) | |
Background: Navigate to the controls page # features/selectors.feature:66 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'controls page'' took 113.87633901904337 milliseconds | |
Scenario: Unknown selector # features/selectors.feature:69 | |
When I call an unknown selector on a view # features/step_definitions/selector_steps.rb:26 | |
Then I expect to receive back "*****" # features/step_definitions/selector_steps.rb:34 | |
INFO: query 'tabBarButton' took 115.15859901555814 milliseconds | |
INFO: query '* marked:'controls page'' took 122.94328401912935 milliseconds | |
INFO: query '* marked:'controls page'' took 124.88822199520655 milliseconds | |
INFO: query 'view marked:'controls page'' took 118.64604000584222 milliseconds | |
Scenario: Use __self__ to reference self # features/selectors.feature:73 | |
When I call a method that references the matched view # features/step_definitions/selector_steps.rb:38 | |
Then I expect to receive back "Self reference! Hurray!" # features/step_definitions/selector_steps.rb:34 | |
INFO: query 'tabBarButton' took 138.06376300635748 milliseconds | |
INFO: query '* marked:'controls page'' took 120.25706900749356 milliseconds | |
INFO: query '* marked:'controls page'' took 116.55560598592274 milliseconds | |
INFO: query 'view marked:'controls page'' took 115.65002999850549 milliseconds | |
# Demonstrates how to chain methods | |
# view.alarm.isOn | |
# [view.alarm setIsOn:1] | |
Scenario: Selector chaining # features/selectors.feature:80 | |
Then the view alarm property is off # features/step_definitions/selector_steps.rb:43 | |
INFO: query 'view marked:'controls page'' took 117.00419799308293 milliseconds | |
INFO: query 'view marked:'controls page'' took 116.98561900993809 milliseconds | |
And I can turn the alarm on # features/step_definitions/selector_steps.rb:51 | |
INFO: query 'tabBarButton' took 124.90329099819064 milliseconds | |
INFO: query '* marked:'controls page'' took 116.88300099922344 milliseconds | |
INFO: query '* marked:'controls page'' took 113.85900899767876 milliseconds | |
INFO: query 'view marked:'controls page'' took 116.9954719953239 milliseconds | |
Scenario: Selector arguments # features/selectors.feature:84 | |
Then I call selector with pointer argument # features/step_definitions/selector_steps.rb:65 | |
INFO: query 'view marked:'controls page'' took 113.02990399417467 milliseconds | |
Then I call selector with int argument # features/step_definitions/selector_steps.rb:70 | |
INFO: query 'view marked:'controls page'' took 114.08092398778535 milliseconds | |
Then I call selector with unsigned int argument # features/step_definitions/selector_steps.rb:70 | |
INFO: query 'view marked:'controls page'' took 115.12956401566043 milliseconds | |
Then I call selector with short argument # features/step_definitions/selector_steps.rb:79 | |
INFO: query 'view marked:'controls page'' took 117.54579900298268 milliseconds | |
Then I call selector with unsigned short argument # features/step_definitions/selector_steps.rb:79 | |
INFO: query 'view marked:'controls page'' took 124.48746900190599 milliseconds | |
Then I call selector with float argument # features/step_definitions/selector_steps.rb:106 | |
INFO: query 'view marked:'controls page'' took 124.98891301220283 milliseconds | |
Then I call selector with double argument # features/step_definitions/selector_steps.rb:111 | |
INFO: query 'view marked:'controls page'' took 121.42642101389356 milliseconds | |
Then I call selector with long double argument # features/step_definitions/selector_steps.rb:111 | |
INFO: query 'view marked:'controls page'' took 124.78143800399266 milliseconds | |
Then I call selector with c string argument # features/step_definitions/selector_steps.rb:156 | |
INFO: query 'view marked:'controls page'' took 112.11438401369378 milliseconds | |
INFO: query 'view marked:'controls page'' took 111.85608900268562 milliseconds | |
Then I call selector with char argument # features/step_definitions/selector_steps.rb:120 | |
INFO: query 'view marked:'controls page'' took 112.49056001543067 milliseconds | |
INFO: query 'view marked:'controls page'' took 113.21827600477263 milliseconds | |
Then I call selector with unsigned char argument # features/step_definitions/selector_steps.rb:120 | |
INFO: query 'view marked:'controls page'' took 117.46874600066803 milliseconds | |
INFO: query 'view marked:'controls page'' took 114.40288502490148 milliseconds | |
INFO: query 'view marked:'controls page'' took 115.99353500059806 milliseconds | |
INFO: query 'view marked:'controls page'' took 115.59594399295747 milliseconds | |
Then I call selector with BOOL argument # features/step_definitions/selector_steps.rb:140 | |
INFO: query 'view marked:'controls page'' took 112.89948600460775 milliseconds | |
Then I call selector with long argument # features/step_definitions/selector_steps.rb:88 | |
INFO: query 'view marked:'controls page'' took 114.49249301222153 milliseconds | |
Then I call selector with unsigned long argument # features/step_definitions/selector_steps.rb:88 | |
INFO: query 'view marked:'controls page'' took 113.62994799856097 milliseconds | |
Then I call selector with long long argument # features/step_definitions/selector_steps.rb:97 | |
INFO: query 'view marked:'controls page'' took 117.16476498986594 milliseconds | |
Then I call selector with unsigned long long argument # features/step_definitions/selector_steps.rb:97 | |
INFO: query 'view marked:'controls page'' took 117.77573201106861 milliseconds | |
Then I call selector with point argument # features/step_definitions/selector_steps.rb:161 | |
INFO: query 'view marked:'controls page'' took 113.25848801061511 milliseconds | |
Then I call selector with rect argument # features/step_definitions/selector_steps.rb:161 | |
INFO: query 'tabBarButton' took 117.88718300522305 milliseconds | |
INFO: query '* marked:'controls page'' took 125.54513898794539 milliseconds | |
INFO: query '* marked:'controls page'' took 126.44087499938905 milliseconds | |
INFO: query 'view marked:'controls page'' took 112.51334400731139 milliseconds | |
Scenario: Selector return values # features/selectors.feature:104 | |
Then I call a selector that returns void # features/step_definitions/selector_steps.rb:172 | |
INFO: query 'view marked:'controls page'' took 116.72713901498355 milliseconds | |
Then I call a selector that returns a pointer # features/step_definitions/selector_steps.rb:177 | |
INFO: query 'view marked:'controls page'' took 118.74936000094749 milliseconds | |
Then I call a selector that returns a char # features/step_definitions/selector_steps.rb:181 | |
INFO: query 'view marked:'controls page'' took 117.97043200931512 milliseconds | |
Then I call a selector that returns an unsigned char # features/step_definitions/selector_steps.rb:181 | |
INFO: query 'view marked:'controls page'' took 113.65253198891878 milliseconds | |
Then I call a selector that returns a c string # features/step_definitions/selector_steps.rb:192 | |
INFO: query 'view marked:'controls page'' took 112.61529399780557 milliseconds | |
Then I call a selector that returns a BOOL # features/step_definitions/selector_steps.rb:196 | |
INFO: query 'view marked:'controls page'' took 113.77122899284586 milliseconds | |
Then I call a selector that returns a bool # features/step_definitions/selector_steps.rb:196 | |
INFO: query 'view marked:'controls page'' took 113.52379000163637 milliseconds | |
Then I call a selector that returns an int # features/step_definitions/selector_steps.rb:205 | |
INFO: query 'view marked:'controls page'' took 112.15620499569923 milliseconds | |
Then I call a selector that returns an unsigned int # features/step_definitions/selector_steps.rb:205 | |
INFO: query 'view marked:'controls page'' took 114.82371497550048 milliseconds | |
Then I call a selector that returns a short # features/step_definitions/selector_steps.rb:216 | |
INFO: query 'view marked:'controls page'' took 116.38700199546292 milliseconds | |
Then I call a selector that returns an unsigned short # features/step_definitions/selector_steps.rb:216 | |
INFO: query 'view marked:'controls page'' took 114.87890398711897 milliseconds | |
Then I call a selector that returns a double # features/step_definitions/selector_steps.rb:227 | |
INFO: query 'view marked:'controls page'' took 113.57725001289509 milliseconds | |
Then I call a selector that returns a long double # features/step_definitions/selector_steps.rb:227 | |
INFO: query 'view marked:'controls page'' took 114.62077000760473 milliseconds | |
Then I call a selector that returns a float # features/step_definitions/selector_steps.rb:238 | |
INFO: query 'view marked:'controls page'' took 113.10880599194206 milliseconds | |
Then I call a selector that returns a long # features/step_definitions/selector_steps.rb:242 | |
INFO: query 'view marked:'controls page'' took 116.88256199704483 milliseconds | |
Then I call a selector that returns an unsigned long # features/step_definitions/selector_steps.rb:242 | |
INFO: query 'view marked:'controls page'' took 113.46008701366372 milliseconds | |
Then I call a selector that returns a long long # features/step_definitions/selector_steps.rb:253 | |
INFO: query 'view marked:'controls page'' took 113.01849500159733 milliseconds | |
Then I call a selector that returns an unsigned long long # features/step_definitions/selector_steps.rb:253 | |
INFO: query 'view marked:'controls page'' took 111.86331498902291 milliseconds | |
Then I call a selector that returns a point # features/step_definitions/selector_steps.rb:264 | |
INFO: query 'view marked:'controls page'' took 115.21739000454545 milliseconds | |
Then I call a selector that returns a rect # features/step_definitions/selector_steps.rb:270 | |
INFO: query 'view marked:'controls page'' took 113.39630800648592 milliseconds | |
Then I call a selector that returns a CalSmokeAlarm struct # features/step_definitions/selector_steps.rb:276 | |
INFO: query 'tabBarButton' took 117.1495679882355 milliseconds | |
INFO: query '* marked:'controls page'' took 118.2371329923626 milliseconds | |
INFO: query '* marked:'controls page'' took 122.52003900357522 milliseconds | |
INFO: query 'view marked:'controls page'' took 120.99424697225913 milliseconds | |
@failing | |
Scenario: Selector with multiple arguments # features/selectors.feature:128 | |
Then I call a selector on a view that has 3 arguments # features/step_definitions/selector_steps.rb:280 | |
{ | |
"rect" => { | |
"y" => 0, | |
"height" => 0, | |
"center_y" => 0, | |
"x" => 0, | |
"center_x" => 0, | |
"width" => 0 | |
}, | |
"id" => nil, | |
"visible" => 1, | |
"accessibilityElement" => 1, | |
"hint" => nil, | |
"label" => nil, | |
"class" => "__NSArrayI", | |
"description" => "(\n a,\n b,\n c\n)", | |
"value" => nil, | |
"text" => nil | |
} | |
INFO: query 'tabBarButton' took 124.13606198970228 milliseconds | |
INFO: query '* marked:'controls page'' took 120.07131401333027 milliseconds | |
INFO: query '* marked:'controls page'' took 138.20811599725857 milliseconds | |
INFO: query 'view marked:'controls page'' took 119.51442700228654 milliseconds | |
@failing | |
Scenario: Chained selector with multiple arguments # features/selectors.feature:132 | |
Then I make a chained call to a selector with 3 arguments # features/step_definitions/selector_steps.rb:290 | |
[ | |
[0] { | |
"rect" => { | |
"y" => 0, | |
"height" => 0, | |
"center_y" => 0, | |
"x" => 0, | |
"center_x" => 0, | |
"width" => 0 | |
}, | |
"id" => nil, | |
"visible" => 1, | |
"accessibilityElement" => 1, | |
"hint" => nil, | |
"label" => nil, | |
"class" => "__NSArrayI", | |
"description" => "(\n a,\n b,\n c\n)", | |
"value" => nil, | |
"text" => nil | |
} | |
] | |
@server_log_level | |
Feature: Server Log Level | |
In order to gain insights about the server runtime | |
As a Calabash maintainer and application tester | |
I want a way to control the log level of the server | |
INFO: query 'tabBarButton' took 116.99556600069627 milliseconds | |
Scenario: Asking for the log level # features/server_log_level.feature:7 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
Then I can ask the server for its log level # features/step_definitions/server_log_level_steps.rb:1 | |
INFO: query 'tabBarButton' took 114.89127000095323 milliseconds | |
Scenario: Setting the log level # features/server_log_level.feature:11 | |
Given the app has launched # features/step_definitions/shared_steps.rb:43 | |
And I set the server log level to debug # features/step_definitions/server_log_level_steps.rb:6 | |
Then the server log level should be debug # features/step_definitions/server_log_level_steps.rb:10 | |
@sheets | |
Feature: Sheets | |
In order to demonstrate interactions with sheets | |
As a Calabash maintainer | |
I want some Scenarios that show Calabash working with sheets | |
INFO: query 'tabBarButton' took 118.37099798140116 milliseconds | |
INFO: query '* marked:'special page'' took 118.35441499715671 milliseconds | |
INFO: query '* marked:'special page'' took 127.21899300231598 milliseconds | |
# These are sheets that are presented by _your_ application using: | |
# | |
# UIActionSheetView *sheet = [[UIActionSheet alloc] ...]; | |
# # Action sheets can be anchored in many ways; this is | |
# # just an example. | |
# [sheet showFromTabBar:self.tabBarController.tabBar]; | |
# | |
# These are _not_ sheets generated by the OS on behalf of your | |
# app. An example of sheet present by the OS on behalf of your | |
# app is the sheet that appears when you try to cancel an email | |
# message. | |
Background: Navigate to the special tab # features/sheets.feature:19 | |
Given I see the special tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'view marked:'show sheet'' took 136.5194270038046 milliseconds | |
@animations | |
Scenario: Touch OK button on a sheet # features/sheets.feature:23 | |
When I touch the show sheet button # features/step_definitions/sheets_steps.rb:56 | |
INFO: query 'view:'_UIAlertControllerView'' took 141.07468599104322 milliseconds | |
Then I see a sheet # features/step_definitions/sheets_steps.rb:61 | |
INFO: query 'view:'_UIAlertControllerView' descendant label marked:'Smoke Test!'' took 156.25691099558026 milliseconds | |
Then I see the "Smoke Test!" sheet # features/step_definitions/sheets_steps.rb:65 | |
And I wait for all animations to stop # features/step_definitions/animations_steps.rb:2 | |
INFO: query 'view:'_UIAlertControllerView'' took 133.49465001374483 milliseconds | |
And I can dismiss the sheet with the Cancel button # features/step_definitions/sheets_steps.rb:69 | |
@slider | |
Feature: UISlider | |
In order to interact with sliders | |
As a developer | |
I want a Slider API | |
INFO: query 'tabBarButton' took 123.24905401328579 milliseconds | |
INFO: query '* marked:'controls page'' took 133.87540099211037 milliseconds | |
INFO: query '* marked:'controls page'' took 134.8845200263895 milliseconds | |
Scenario: Setting the value of a slider # features/slider.feature:7 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UISlider marked:'slider'' took 129.5830410090275 milliseconds | |
INFO: query 'UISlider marked:'slider'' took 119.87306497758254 milliseconds | |
INFO: query 'UISlider marked:'slider'' took 120.27210000087507 milliseconds | |
Then I can get the min and max values of the slider # features/step_definitions/slider_steps.rb:2 | |
INFO: query 'UISlider marked:'slider'' took 119.45875201490708 milliseconds | |
INFO: query 'UISlider marked:'slider'' took 115.23077299352735 milliseconds | |
And I can set the value of the slider to 8 # features/step_definitions/slider_steps.rb:14 | |
@gestures @tapping | |
Feature: Gestures | |
In order to test tapping | |
As a developer | |
I want a Tap API | |
INFO: query 'tabBarButton' took 123.75999600044452 milliseconds | |
INFO: query '* marked:'gestures page'' took 124.96323700179346 milliseconds | |
INFO: query '* marked:'gestures page'' took 128.60994998482056 milliseconds | |
INFO: query '* marked:'gestures page'' took 123.21379498462193 milliseconds | |
INFO: query '* marked:'gestures page'' took 138.52712701191194 milliseconds | |
INFO: query '* marked:'gestures page'' took 135.56661299662665 milliseconds | |
INFO: query '* marked:'gestures page'' took 132.52202601870522 milliseconds | |
INFO: query '* marked:'gestures page'' took 116.26411901670508 milliseconds | |
INFO: query '* marked:'gestures page'' took 121.19012998300605 milliseconds | |
INFO: query '* marked:'gestures page'' took 122.8394010104239 milliseconds | |
INFO: query '* marked:'gestures page'' took 117.17394800507464 milliseconds | |
INFO: query '* marked:'gestures page'' took 119.18534600408748 milliseconds | |
INFO: query '* marked:'gestures page'' took 121.95581899140961 milliseconds | |
INFO: query '* marked:'gestures page'' took 119.48832200141624 milliseconds | |
INFO: query '* marked:'gestures page'' took 123.76300900359638 milliseconds | |
INFO: query '* marked:'gestures page'' took 120.0432269833982 milliseconds | |
INFO: query '* marked:'gestures page'' took 124.42550997366197 milliseconds | |
INFO: query '* marked:'gestures page'' took 126.97712201043032 milliseconds | |
INFO: query '* marked:'gestures page'' took 123.17877999157645 milliseconds | |
INFO: query '* marked:'gestures page'' took 120.07232999894768 milliseconds | |
INFO: query '* marked:'gestures page'' took 137.01362698338926 milliseconds | |
INFO: query '* marked:'gestures page'' took 142.92067298083566 milliseconds | |
INFO: query '* marked:'gestures page'' took 129.54168498981744 milliseconds | |
Background: Navigate to Tapping page # features/tap_gestures.feature:8 | |
Given I see the gestures tab # features/step_definitions/shared_steps.rb:1 | |
INFO: query 'UITableViewCell marked:'tapping row'' took 122.04180800472386 milliseconds | |
INFO: query 'view marked:'tapping page'' took 124.41133600077592 milliseconds | |
And I see the tapping page # features/step_definitions/tap_gestures_steps.rb:32 | |
INFO: query 'view marked:'left box'' took 123.30523997661658 milliseconds | |
Scenario: Double tap # features/tap_gestures.feature:12 | |
When I double tap the left box # features/step_definitions/tap_gestures_steps.rb:47 | |
INFO: query 'label marked:'last gesture'' took 132.0029879861977 milliseconds | |
Then the gesture description changes to double tap # features/step_definitions/tap_gestures_steps.rb:61 | |
INFO: query 'tabBarButton' took 125.03332499181852 milliseconds | |
INFO: query '* marked:'gestures page'' took 150.02206500503235 milliseconds | |
INFO: query '* marked:'gestures page'' took 137.2003189753741 milliseconds | |
INFO: query '* marked:'gestures page'' took 124.12625100114383 milliseconds | |
INFO: query 'UITableViewCell marked:'tapping row'' took 127.17168201925233 milliseconds | |
INFO: query 'view marked:'tapping page'' took 124.65840199729428 milliseconds | |
INFO: query 'view marked:'left box'' took 123.1496449909173 milliseconds | |
Scenario: Long press # features/tap_gestures.feature:16 | |
When I long press the left box for 1 second # features/step_definitions/tap_gestures_steps.rb:53 | |
INFO: query 'label marked:'last gesture'' took 119.27396600367501 milliseconds | |
Then the gesture description changes to long press # features/step_definitions/tap_gestures_steps.rb:61 | |
INFO: query 'view marked:'right box'' took 134.16426497860812 milliseconds | |
When I long press the right box for 2 seconds # features/step_definitions/tap_gestures_steps.rb:53 | |
INFO: query 'label marked:'last gesture'' took 120.56816500262357 milliseconds | |
Then the gesture description changes to long press # features/step_definitions/tap_gestures_steps.rb:61 | |
@resetting @ideviceinstaller @user_defaults | |
Feature: NSUserDefaults and App Sandbox | |
INFO: query 'tabBarButton' took 1555.7915740064345 milliseconds | |
INFO: query '* marked:'controls page'' took 1246.9193460128736 milliseconds | |
INFO: query '* marked:'controls page'' took 1144.734038010938 milliseconds | |
# These tests are dependent on each other and must be run in a particular | |
# order. In general, this is a bad practice, but there are times when it is | |
# necessary. In this case, we are testing the behavior of resetting an | |
# app's sandbox and re-installing. The strict ordering is achieved by | |
# using the 'xx_< Scenario Name >' convention. | |
# | |
# When these tests are run on physical devices, the reset will be | |
# performed by re-installing the app. | |
# | |
# These tests require ideviceinstaller. You can install ideviceinstaller | |
# with brew. We do not maintain the ideviceinstaller, libimobiledevice, or | |
# homebrew tools. These are third-party software. If you have issues with these | |
# tools, you are on your own. Please do not report problems with these tools | |
# on the Calabash channels. | |
Background: Navigate to the controls page # features/user_defaults.feature:20 | |
Given I see the controls tab # features/step_definitions/shared_steps.rb:1 | |
# Demonstrate that resetting the app works using NSUserDefaults as proxy. The | |
# on/off state of the switch on the first view is persisted in NSUserDefaults. | |
# | |
# NSUserDefaults are part of the app sandbox and so are deleted by | |
# `reset_app_sandbox`. | |
@reset_app_btw_scenarios @backdoor | |
Scenario: 20 I turn the switch on and add files to sandbox # features/user_defaults.feature:30 | |
And I drop some files in the sandbox # features/step_definitions/user_defaults_steps.rb:91 | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 1557.2837079816964 milliseconds | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 1550.7878569769673 milliseconds | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 1236.2468219944276 milliseconds | |
Given I turn the switch on # features/step_definitions/user_defaults_steps.rb:54 | |
INFO: query 'tabBarButton' took 1237.1611130074598 milliseconds | |
INFO: query '* marked:'controls page'' took 1446.7272129841149 milliseconds | |
INFO: query '* marked:'controls page'' took 2068.1092660233844 milliseconds | |
@backdoor | |
Scenario: 21 The switch should be on and the files in the sandbox # features/user_defaults.feature:35 | |
Then I should see the files I put in the sandbox # features/step_definitions/user_defaults_steps.rb:97 | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 1662.833792011952 milliseconds | |
Then I should see the switch is on # features/step_definitions/user_defaults_steps.rb:83 | |
INFO: query 'tabBarButton' took 1666.5202580043115 milliseconds | |
INFO: query '* marked:'controls page'' took 1140.1196680089924 milliseconds | |
INFO: query '* marked:'controls page'' took 931.1401779996231 milliseconds | |
@reset_app_btw_scenarios @backdoor | |
Scenario: 22 The switch should be off and there should be no files in sandbox # features/user_defaults.feature:41 | |
Then I should not see the files I put in the sandbox # features/step_definitions/user_defaults_steps.rb:103 | |
INFO: query 'view marked:'controls page' switch marked:'switch'' took 724.9120569904335 milliseconds | |
Then I should see the switch is off # features/step_definitions/user_defaults_steps.rb:83 | |
60 scenarios (60 passed) | |
315 steps (315 passed) | |
18m3.828s |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment