iCuke 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitmodules +1 -1
- data/Gemfile +12 -0
- data/Gemfile.lock +41 -0
- data/README.markdown +126 -0
- data/Rakefile +34 -12
- data/VERSION +1 -1
- data/bin/icuke +12 -10
- data/ext/Rakefile +6 -0
- data/ext/iCuke/{sdk3.1/DefaultsResponse.h → DefaultsResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/DefaultsResponse.m → DefaultsResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/EventResponse.h → EventResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/EventResponse.m → EventResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/ModuleResponse.h → ModuleResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/ModuleResponse.m → ModuleResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/QuitResponse.h → QuitResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/QuitResponse.m → QuitResponse.m} +0 -0
- data/ext/iCuke/Rakefile +14 -13
- data/ext/iCuke/{sdk3.1/Recorder.h → Recorder.h} +0 -0
- data/ext/iCuke/{sdk3.1/Recorder.m → Recorder.m} +0 -0
- data/ext/iCuke/{sdk3.1/RecorderResponse.h → RecorderResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/RecorderResponse.m → RecorderResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/SynthesizeSingleton.h → SynthesizeSingleton.h} +0 -0
- data/ext/iCuke/{sdk3.1/ViewResponse.h → ViewResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/ViewResponse.m → ViewResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/Viewer.h → Viewer.h} +0 -0
- data/ext/iCuke/{sdk4.0/Viewer.m → Viewer.m} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeHTTPResponseHandler.h → iCukeHTTPResponseHandler.h} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeHTTPResponseHandler.m → iCukeHTTPResponseHandler.m} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeHTTPServer.h → iCukeHTTPServer.h} +0 -0
- data/ext/iCuke/{sdk4.0/iCukeHTTPServer.m → iCukeHTTPServer.m} +4 -2
- data/ext/iCuke/{sdk3.1/iCukeServer.h → iCukeServer.h} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeServer.m → iCukeServer.m} +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/JSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSObject+SBJSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSObject+SBJSON.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSString+SBJSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSString+SBJSON.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJSON.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonBase.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonBase.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonParser.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonParser.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonWriter.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonWriter.m +0 -0
- data/features/starting_project.feature +18 -0
- data/features/step_definitions/shell.rb +41 -0
- data/features/support/env.rb +2 -0
- data/features/support/environment.rb +40 -0
- data/features/supported_sdks.feature +12 -0
- data/iCuke.gemspec +149 -161
- data/lib/icuke/configuration.rb +19 -0
- data/lib/icuke/core_ext.rb +27 -0
- data/lib/icuke/cucumber.rb +29 -265
- data/lib/icuke/cucumber_compat.rb +4 -0
- data/lib/icuke/icuke_world.rb +149 -0
- data/lib/icuke/sdk.rb +5 -13
- data/lib/icuke/simulator_driver.rb +201 -0
- data/lib/icuke/waxsim.rb +47 -9
- data/spec/cucumber_spec.rb +130 -0
- data/spec/fixtures/controls_page.xml +252 -0
- data/spec/process_spec.rb +76 -0
- data/spec/screen_spec.rb +173 -0
- data/spec/simulate_spec.rb +75 -0
- data/spec/simulator_spec.rb +28 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +67 -0
- metadata +222 -121
- data/.gitignore +0 -15
- data/README.rdoc +0 -68
- data/ext/WaxSim/Simulator.h +0 -31
- data/ext/WaxSim/Simulator.m +0 -131
- data/ext/WaxSim/WaxSim.m +0 -110
- data/ext/WaxSim/WaxSim.xcodeproj/project.pbxproj +0 -238
- data/ext/WaxSim/WaxSim_Prefix.pch +0 -7
- data/ext/WaxSim/build/Release/waxsim +0 -0
- data/ext/WaxSim/build/Release/waxsim.dSYM/Contents/Info.plist +0 -20
- data/ext/WaxSim/build/Release/waxsim.dSYM/Contents/Resources/DWARF/waxsim +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/Objects-normal/x86_64/Simulator.o +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/Objects-normal/x86_64/WaxSim.o +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/Objects-normal/x86_64/waxsim.LinkFileList +0 -2
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/WaxSim.dep +0 -6
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/WaxSim~.dep +0 -6
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/build-state.dat +0 -227
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/build-state~.dat +0 -227
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-all-target-headers.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-generated-files.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-own-target-headers.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-project-headers.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim.hmap +0 -0
- data/ext/WaxSim/iPhoneSimulatorRemoteClient/iPhoneSimulatorRemoteClient.h +0 -126
- data/ext/iCuke/sdk3.1/Rakefile +0 -20
- data/ext/iCuke/sdk3.1/Viewer.m +0 -203
- data/ext/iCuke/sdk3.1/iCukeHTTPServer.m +0 -365
- data/ext/iCuke/sdk4.0/DefaultsResponse.h +0 -5
- data/ext/iCuke/sdk4.0/DefaultsResponse.m +0 -66
- data/ext/iCuke/sdk4.0/EventResponse.h +0 -5
- data/ext/iCuke/sdk4.0/EventResponse.m +0 -130
- data/ext/iCuke/sdk4.0/ModuleResponse.h +0 -5
- data/ext/iCuke/sdk4.0/ModuleResponse.m +0 -76
- data/ext/iCuke/sdk4.0/QuitResponse.h +0 -5
- data/ext/iCuke/sdk4.0/QuitResponse.m +0 -23
- data/ext/iCuke/sdk4.0/Rakefile +0 -20
- data/ext/iCuke/sdk4.0/Recorder.h +0 -17
- data/ext/iCuke/sdk4.0/Recorder.m +0 -90
- data/ext/iCuke/sdk4.0/RecorderResponse.h +0 -6
- data/ext/iCuke/sdk4.0/RecorderResponse.m +0 -68
- data/ext/iCuke/sdk4.0/SynthesizeSingleton.h +0 -68
- data/ext/iCuke/sdk4.0/ViewResponse.h +0 -5
- data/ext/iCuke/sdk4.0/ViewResponse.m +0 -84
- data/ext/iCuke/sdk4.0/Viewer.h +0 -8
- data/ext/iCuke/sdk4.0/iCukeHTTPResponseHandler.h +0 -50
- data/ext/iCuke/sdk4.0/iCukeHTTPResponseHandler.m +0 -381
- data/ext/iCuke/sdk4.0/iCukeHTTPServer.h +0 -53
- data/ext/iCuke/sdk4.0/iCukeServer.h +0 -14
- data/ext/iCuke/sdk4.0/iCukeServer.m +0 -65
- data/ext/iCuke/sdk4.0/json/JSON.h +0 -50
- data/ext/iCuke/sdk4.0/json/NSObject+SBJSON.h +0 -68
- data/ext/iCuke/sdk4.0/json/NSObject+SBJSON.m +0 -53
- data/ext/iCuke/sdk4.0/json/NSString+SBJSON.h +0 -58
- data/ext/iCuke/sdk4.0/json/NSString+SBJSON.m +0 -55
- data/ext/iCuke/sdk4.0/json/SBJSON.h +0 -75
- data/ext/iCuke/sdk4.0/json/SBJSON.m +0 -212
- data/ext/iCuke/sdk4.0/json/SBJsonBase.h +0 -86
- data/ext/iCuke/sdk4.0/json/SBJsonBase.m +0 -78
- data/ext/iCuke/sdk4.0/json/SBJsonParser.h +0 -87
- data/ext/iCuke/sdk4.0/json/SBJsonParser.m +0 -475
- data/ext/iCuke/sdk4.0/json/SBJsonWriter.h +0 -129
- data/ext/iCuke/sdk4.0/json/SBJsonWriter.m +0 -228
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
<screen>
|
|
2
|
+
<frame x="0.000000" y="0.000000" width="320.000000" height="480.000000"/>
|
|
3
|
+
<UIWindow>
|
|
4
|
+
<UILayoutContainerView>
|
|
5
|
+
<UINavigationTransitionView>
|
|
6
|
+
<UIViewControllerWrapperView>
|
|
7
|
+
<UITableView>
|
|
8
|
+
<UITableViewCell>
|
|
9
|
+
<UIGroupTableViewCellBackground/>
|
|
10
|
+
<UIView>
|
|
11
|
+
<UILabel traits="static_text " label="ControlsViewController.m: -(UISlider *)customSlider">
|
|
12
|
+
<frame x="20.000000" y="465.000000" width="280.000000" height="37.000000"/>
|
|
13
|
+
</UILabel>
|
|
14
|
+
</UIView>
|
|
15
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UISlider *)customSlider">
|
|
16
|
+
<frame x="-0.000000" y="464.000000" width="318.001068" height="39.000000"/>
|
|
17
|
+
</UITableTextAccessibilityElement>
|
|
18
|
+
</UITableViewCell>
|
|
19
|
+
<UITableViewCell>
|
|
20
|
+
<UIGroupTableViewCellBackground/>
|
|
21
|
+
<UIView>
|
|
22
|
+
<UILabel traits="static_text " label="Customized Slider">
|
|
23
|
+
<frame x="20.000000" y="415.000000" width="280.000000" height="49.000000"/>
|
|
24
|
+
</UILabel>
|
|
25
|
+
<UISlider traits="" label="Custom" value="50%">
|
|
26
|
+
<frame x="184.000000" y="427.000000" width="120.000000" height="23.000000"/>
|
|
27
|
+
<UIImageView/>
|
|
28
|
+
<UIImageView/>
|
|
29
|
+
<UIImageView/>
|
|
30
|
+
</UISlider>
|
|
31
|
+
</UIView>
|
|
32
|
+
<UITableTextAccessibilityElement traits="" label="Customized Slider">
|
|
33
|
+
<frame x="-0.000000" y="414.000000" width="318.001068" height="50.000000"/>
|
|
34
|
+
</UITableTextAccessibilityElement>
|
|
35
|
+
<UIAccessibilityElementMockView traits="updates_frequently " label="Custom" value="50%">
|
|
36
|
+
<frame x="184.000000" y="427.000000" width="120.000000" height="23.000000"/>
|
|
37
|
+
</UIAccessibilityElementMockView>
|
|
38
|
+
</UITableViewCell>
|
|
39
|
+
<UITableViewCell>
|
|
40
|
+
<UIGroupTableViewCellBackground/>
|
|
41
|
+
<UIView>
|
|
42
|
+
<UILabel traits="static_text " label="ControlsViewController.m: -(UISlider *)sliderCtl">
|
|
43
|
+
<frame x="20.000000" y="313.000000" width="280.000000" height="37.000000"/>
|
|
44
|
+
</UILabel>
|
|
45
|
+
</UIView>
|
|
46
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UISlider *)sliderCtl">
|
|
47
|
+
<frame x="-0.000000" y="312.000000" width="318.001068" height="39.000000"/>
|
|
48
|
+
</UITableTextAccessibilityElement>
|
|
49
|
+
</UITableViewCell>
|
|
50
|
+
<UITableViewCell>
|
|
51
|
+
<UIGroupTableViewCellBackground/>
|
|
52
|
+
<UIView>
|
|
53
|
+
<UILabel traits="static_text " label="Standard Slider">
|
|
54
|
+
<frame x="20.000000" y="263.000000" width="280.000000" height="49.000000"/>
|
|
55
|
+
</UILabel>
|
|
56
|
+
<UISlider traits="" label="Standard slider" value="50%">
|
|
57
|
+
<frame x="184.000000" y="275.000000" width="120.000000" height="23.000000"/>
|
|
58
|
+
<UIImageView/>
|
|
59
|
+
<UIImageView/>
|
|
60
|
+
<UIImageView/>
|
|
61
|
+
</UISlider>
|
|
62
|
+
</UIView>
|
|
63
|
+
<UITableTextAccessibilityElement traits="" label="Standard Slider">
|
|
64
|
+
<frame x="-0.000000" y="262.000000" width="318.001068" height="50.000000"/>
|
|
65
|
+
</UITableTextAccessibilityElement>
|
|
66
|
+
<UIAccessibilityElementMockView traits="updates_frequently " label="Standard slider" value="50%">
|
|
67
|
+
<frame x="184.000000" y="275.000000" width="120.000000" height="23.000000"/>
|
|
68
|
+
</UIAccessibilityElementMockView>
|
|
69
|
+
</UITableViewCell>
|
|
70
|
+
<UITableViewCell>
|
|
71
|
+
<UIGroupTableViewCellBackground/>
|
|
72
|
+
<UIView>
|
|
73
|
+
<UILabel traits="static_text " label="ControlsViewController.m: -(UISwitch *)switchCtl">
|
|
74
|
+
<frame x="20.000000" y="161.000000" width="280.000000" height="37.000000"/>
|
|
75
|
+
</UILabel>
|
|
76
|
+
</UIView>
|
|
77
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UISwitch *)switchCtl">
|
|
78
|
+
<frame x="-0.000000" y="160.000000" width="318.001068" height="39.000000"/>
|
|
79
|
+
</UITableTextAccessibilityElement>
|
|
80
|
+
</UITableViewCell>
|
|
81
|
+
<UITableViewCell>
|
|
82
|
+
<UIGroupTableViewCellBackground/>
|
|
83
|
+
<UIView>
|
|
84
|
+
<UILabel traits="static_text " label="Standard Switch">
|
|
85
|
+
<frame x="20.000000" y="111.000000" width="280.000000" height="49.000000"/>
|
|
86
|
+
</UILabel>
|
|
87
|
+
<UISwitch traits="button " label="Standard switch">
|
|
88
|
+
<frame x="208.000000" y="123.000000" width="94.000000" height="27.000000"/>
|
|
89
|
+
<_UISwitchSlider>
|
|
90
|
+
<UIImageView/>
|
|
91
|
+
<UIImageView/>
|
|
92
|
+
<UIView>
|
|
93
|
+
<UILabel traits="static_text " label="ON">
|
|
94
|
+
<frame x="171.000000" y="123.000000" width="24.000000" height="27.000000"/>
|
|
95
|
+
</UILabel>
|
|
96
|
+
<UILabel traits="static_text " label="OFF">
|
|
97
|
+
<frame x="259.000000" y="123.000000" width="32.000000" height="27.000000"/>
|
|
98
|
+
</UILabel>
|
|
99
|
+
</UIView>
|
|
100
|
+
<UIImageView/>
|
|
101
|
+
</_UISwitchSlider>
|
|
102
|
+
</UISwitch>
|
|
103
|
+
</UIView>
|
|
104
|
+
<UITableTextAccessibilityElement traits="" label="Standard Switch">
|
|
105
|
+
<frame x="-0.000000" y="110.000000" width="318.001068" height="50.000000"/>
|
|
106
|
+
</UITableTextAccessibilityElement>
|
|
107
|
+
<UIAccessibilityElementMockView traits="button updates_frequently " label="Standard switch">
|
|
108
|
+
<frame x="208.000000" y="123.000000" width="94.000000" height="27.000000"/>
|
|
109
|
+
</UIAccessibilityElementMockView>
|
|
110
|
+
</UITableViewCell>
|
|
111
|
+
<UIImageView/>
|
|
112
|
+
<UITableHeaderFooterView/>
|
|
113
|
+
<UITableHeaderFooterView/>
|
|
114
|
+
<UITableHeaderFooterView/>
|
|
115
|
+
<UIImageView/>
|
|
116
|
+
<UITableViewSectionElement>
|
|
117
|
+
<frame x="0.000000" y="74.000000" width="320.000000" height="36.000000"/>
|
|
118
|
+
<UITableSectionPart traits="" label="UISwitch">
|
|
119
|
+
<frame x="0.000000" y="74.000000" width="320.000000" height="36.000000"/>
|
|
120
|
+
</UITableSectionPart>
|
|
121
|
+
</UITableViewSectionElement>
|
|
122
|
+
<UITableViewCellAccessibilityElement>
|
|
123
|
+
<frame x="0.000000" y="110.000000" width="320.000000" height="50.000000"/>
|
|
124
|
+
<UITableTextAccessibilityElement traits="" label="Standard Switch">
|
|
125
|
+
<frame x="-0.000000" y="110.000000" width="318.001068" height="50.000000"/>
|
|
126
|
+
</UITableTextAccessibilityElement>
|
|
127
|
+
<UIAccessibilityElementMockView traits="button updates_frequently " label="Standard switch">
|
|
128
|
+
<frame x="208.000000" y="123.000000" width="94.000000" height="27.000000"/>
|
|
129
|
+
</UIAccessibilityElementMockView>
|
|
130
|
+
</UITableViewCellAccessibilityElement>
|
|
131
|
+
<UITableViewCellAccessibilityElement>
|
|
132
|
+
<frame x="0.000000" y="160.000000" width="320.000000" height="39.000000"/>
|
|
133
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UISwitch *)switchCtl">
|
|
134
|
+
<frame x="-0.000000" y="160.000000" width="318.001068" height="39.000000"/>
|
|
135
|
+
</UITableTextAccessibilityElement>
|
|
136
|
+
</UITableViewCellAccessibilityElement>
|
|
137
|
+
<UITableViewSectionElement>
|
|
138
|
+
<frame x="0.000000" y="226.000000" width="320.000000" height="36.000000"/>
|
|
139
|
+
<UITableSectionPart traits="" label="UISlider">
|
|
140
|
+
<frame x="0.000000" y="226.000000" width="320.000000" height="36.000000"/>
|
|
141
|
+
</UITableSectionPart>
|
|
142
|
+
</UITableViewSectionElement>
|
|
143
|
+
<UITableViewCellAccessibilityElement>
|
|
144
|
+
<frame x="0.000000" y="262.000000" width="320.000000" height="50.000000"/>
|
|
145
|
+
<UITableTextAccessibilityElement traits="" label="Standard Slider">
|
|
146
|
+
<frame x="-0.000000" y="262.000000" width="318.001068" height="50.000000"/>
|
|
147
|
+
</UITableTextAccessibilityElement>
|
|
148
|
+
<UIAccessibilityElementMockView traits="updates_frequently " label="Standard slider" value="50%">
|
|
149
|
+
<frame x="184.000000" y="275.000000" width="120.000000" height="23.000000"/>
|
|
150
|
+
</UIAccessibilityElementMockView>
|
|
151
|
+
</UITableViewCellAccessibilityElement>
|
|
152
|
+
<UITableViewCellAccessibilityElement>
|
|
153
|
+
<frame x="0.000000" y="312.000000" width="320.000000" height="39.000000"/>
|
|
154
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UISlider *)sliderCtl">
|
|
155
|
+
<frame x="-0.000000" y="312.000000" width="318.001068" height="39.000000"/>
|
|
156
|
+
</UITableTextAccessibilityElement>
|
|
157
|
+
</UITableViewCellAccessibilityElement>
|
|
158
|
+
<UITableViewSectionElement>
|
|
159
|
+
<frame x="0.000000" y="378.000000" width="320.000000" height="36.000000"/>
|
|
160
|
+
<UITableSectionPart traits="" label="UISlider">
|
|
161
|
+
<frame x="0.000000" y="378.000000" width="320.000000" height="36.000000"/>
|
|
162
|
+
</UITableSectionPart>
|
|
163
|
+
</UITableViewSectionElement>
|
|
164
|
+
<UITableViewCellAccessibilityElement>
|
|
165
|
+
<frame x="0.000000" y="414.000000" width="320.000000" height="50.000000"/>
|
|
166
|
+
<UITableTextAccessibilityElement traits="" label="Customized Slider">
|
|
167
|
+
<frame x="-0.000000" y="414.000000" width="318.001068" height="50.000000"/>
|
|
168
|
+
</UITableTextAccessibilityElement>
|
|
169
|
+
<UIAccessibilityElementMockView traits="updates_frequently " label="Custom" value="50%">
|
|
170
|
+
<frame x="184.000000" y="427.000000" width="120.000000" height="23.000000"/>
|
|
171
|
+
</UIAccessibilityElementMockView>
|
|
172
|
+
</UITableViewCellAccessibilityElement>
|
|
173
|
+
<UITableViewCellAccessibilityElement>
|
|
174
|
+
<frame x="0.000000" y="464.000000" width="320.000000" height="39.000000"/>
|
|
175
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UISlider *)customSlider">
|
|
176
|
+
<frame x="-0.000000" y="464.000000" width="318.001068" height="39.000000"/>
|
|
177
|
+
</UITableTextAccessibilityElement>
|
|
178
|
+
</UITableViewCellAccessibilityElement>
|
|
179
|
+
<UITableViewSectionElement>
|
|
180
|
+
<frame x="0.000000" y="530.000000" width="320.000000" height="36.000000"/>
|
|
181
|
+
<UITableSectionPart traits="" label="UIPageControl">
|
|
182
|
+
<frame x="0.000000" y="530.000000" width="320.000000" height="36.000000"/>
|
|
183
|
+
</UITableSectionPart>
|
|
184
|
+
</UITableViewSectionElement>
|
|
185
|
+
<UITableViewCellAccessibilityElement>
|
|
186
|
+
<frame x="0.000000" y="0.000000" width="0.000000" height="0.000000"/>
|
|
187
|
+
<UITableTextAccessibilityElement traits="" label="Ten Pages">
|
|
188
|
+
<frame x="-0.000000" y="0.000000" width="-1.998950" height="0.000000"/>
|
|
189
|
+
</UITableTextAccessibilityElement>
|
|
190
|
+
<UIAccessibilityElementMockView traits="updates_frequently " label="page 1 of 10">
|
|
191
|
+
<frame x="0.000000" y="0.000000" width="158.000000" height="25.000000"/>
|
|
192
|
+
</UIAccessibilityElementMockView>
|
|
193
|
+
</UITableViewCellAccessibilityElement>
|
|
194
|
+
<UITableViewCellAccessibilityElement>
|
|
195
|
+
<frame x="0.000000" y="0.000000" width="0.000000" height="0.000000"/>
|
|
196
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UIPageControl *)pageControl">
|
|
197
|
+
<frame x="-0.000000" y="0.000000" width="-1.998950" height="0.000000"/>
|
|
198
|
+
</UITableTextAccessibilityElement>
|
|
199
|
+
</UITableViewCellAccessibilityElement>
|
|
200
|
+
<UITableViewSectionElement>
|
|
201
|
+
<frame x="0.000000" y="682.000000" width="320.000000" height="36.000000"/>
|
|
202
|
+
<UITableSectionPart traits="" label="UIActivityIndicatorView">
|
|
203
|
+
<frame x="0.000000" y="682.000000" width="320.000000" height="36.000000"/>
|
|
204
|
+
</UITableSectionPart>
|
|
205
|
+
</UITableViewSectionElement>
|
|
206
|
+
<UITableViewCellAccessibilityElement>
|
|
207
|
+
<frame x="0.000000" y="0.000000" width="0.000000" height="0.000000"/>
|
|
208
|
+
<UITableTextAccessibilityElement traits="" label="Style Gray">
|
|
209
|
+
<frame x="-0.000000" y="0.000000" width="-1.998950" height="0.000000"/>
|
|
210
|
+
</UITableTextAccessibilityElement>
|
|
211
|
+
</UITableViewCellAccessibilityElement>
|
|
212
|
+
<UITableViewCellAccessibilityElement>
|
|
213
|
+
<frame x="0.000000" y="0.000000" width="0.000000" height="0.000000"/>
|
|
214
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UIActivityIndicatorView *)progressInd">
|
|
215
|
+
<frame x="-0.000000" y="0.000000" width="-1.998950" height="0.000000"/>
|
|
216
|
+
</UITableTextAccessibilityElement>
|
|
217
|
+
</UITableViewCellAccessibilityElement>
|
|
218
|
+
<UITableViewSectionElement>
|
|
219
|
+
<frame x="0.000000" y="834.000000" width="320.000000" height="36.000000"/>
|
|
220
|
+
<UITableSectionPart traits="" label="UIProgressView">
|
|
221
|
+
<frame x="0.000000" y="834.000000" width="320.000000" height="36.000000"/>
|
|
222
|
+
</UITableSectionPart>
|
|
223
|
+
</UITableViewSectionElement>
|
|
224
|
+
<UITableViewCellAccessibilityElement>
|
|
225
|
+
<frame x="0.000000" y="0.000000" width="0.000000" height="0.000000"/>
|
|
226
|
+
<UITableTextAccessibilityElement traits="" label="Style Default">
|
|
227
|
+
<frame x="-0.000000" y="0.000000" width="-1.998950" height="0.000000"/>
|
|
228
|
+
</UITableTextAccessibilityElement>
|
|
229
|
+
<UIAccessibilityElementMockView traits="updates_frequently " label="Progress" value="50%">
|
|
230
|
+
<frame x="0.000000" y="0.000000" width="160.000000" height="24.000000"/>
|
|
231
|
+
</UIAccessibilityElementMockView>
|
|
232
|
+
</UITableViewCellAccessibilityElement>
|
|
233
|
+
<UITableViewCellAccessibilityElement>
|
|
234
|
+
<frame x="0.000000" y="0.000000" width="0.000000" height="0.000000"/>
|
|
235
|
+
<UITableTextAccessibilityElement traits="" label="ControlsViewController.m: -(UIProgressView *)progressBar">
|
|
236
|
+
<frame x="-0.000000" y="0.000000" width="-1.998950" height="0.000000"/>
|
|
237
|
+
</UITableTextAccessibilityElement>
|
|
238
|
+
</UITableViewCellAccessibilityElement>
|
|
239
|
+
</UITableView>
|
|
240
|
+
</UIViewControllerWrapperView>
|
|
241
|
+
</UINavigationTransitionView>
|
|
242
|
+
<UINavigationBar>
|
|
243
|
+
<UINavigationItemView traits="static_text " label="Controls">
|
|
244
|
+
<frame x="118.000000" y="28.000000" width="84.000000" height="27.000000"/>
|
|
245
|
+
</UINavigationItemView>
|
|
246
|
+
<UINavigationItemButtonView traits="button " label="Back">
|
|
247
|
+
<frame x="5.000000" y="27.000000" width="49.000000" height="30.000000"/>
|
|
248
|
+
</UINavigationItemButtonView>
|
|
249
|
+
</UINavigationBar>
|
|
250
|
+
</UILayoutContainerView>
|
|
251
|
+
</UIWindow>
|
|
252
|
+
</screen>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'spec/spec_helper'
|
|
2
|
+
require 'icuke/waxsim'
|
|
3
|
+
|
|
4
|
+
describe ICuke::Simulator::Process do
|
|
5
|
+
|
|
6
|
+
it "should provide a list of commands necessary to set up the environment" do
|
|
7
|
+
p = ICuke::Simulator::Process.new('foo', {})
|
|
8
|
+
p.should respond_to(:setup_commands)
|
|
9
|
+
p.setup_commands.should be_kind_of(Array)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should not provide a defaults command when retina is not specified" do
|
|
13
|
+
found = ICuke::Simulator::Process.new('foo', {}).setup_commands.detect {|c| c =~ /^defaults/}
|
|
14
|
+
found.should be_nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should set SimulateDevice to \"iPhone (Retina)\" if platform is iPhone and retina is required" do
|
|
18
|
+
attrs = {:platform => :iphone, :retina => true}
|
|
19
|
+
found = ICuke::Simulator::Process.new('foo', attrs).setup_commands.detect {|c| c =~ /^defaults/}
|
|
20
|
+
found.should_not be_nil
|
|
21
|
+
found.should == "defaults write com.apple.iphonesimulator SimulateDevice '\"iPhone (Retina)\"'"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should set SimulateDevice to \"iPhone\" if platform is iPhone and retina is rejected" do
|
|
25
|
+
attrs = {:platform => :iphone, :retina => false}
|
|
26
|
+
found = ICuke::Simulator::Process.new('foo', attrs).setup_commands.detect {|c| c =~ /^defaults/}
|
|
27
|
+
found.should_not be_nil
|
|
28
|
+
found.should == "defaults write com.apple.iphonesimulator SimulateDevice '\"iPhone\"'"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should set SimulateDevice to \"iPad\" if platform is iPad and retina is rejected" do
|
|
32
|
+
attrs = {:platform => :ipad, :retina => false}
|
|
33
|
+
found = ICuke::Simulator::Process.new('foo', attrs).setup_commands.detect {|c| c =~ /^defaults/}
|
|
34
|
+
found.should_not be_nil
|
|
35
|
+
found.should == "defaults write com.apple.iphonesimulator SimulateDevice '\"iPad\"'"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe '#with_launch_options' do
|
|
39
|
+
|
|
40
|
+
it "should return a new Process" do
|
|
41
|
+
p = ICuke::Simulator::Process.new("foo.xcodeproj").with_launch_options({})
|
|
42
|
+
p.should be_kind_of(ICuke::Simulator::Process)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should not mutate the original Process" do
|
|
46
|
+
p1 = ICuke::Simulator::Process.new("foo.xcodeproj")
|
|
47
|
+
p2 = p1.with_launch_options(:env => {'FOO' => 'F'})
|
|
48
|
+
p1.launch_options.should_not == p2.launch_options
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should replace existing simple values" do
|
|
52
|
+
p = ICuke::Simulator::Process.new("foo.xcodeproj", :platform => :ipad).with_launch_options(:platform => :iphone)
|
|
53
|
+
p.launch_options[:platform].should == :iphone
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should not remove existing variables" do
|
|
57
|
+
p = ICuke::Simulator::Process.new("foo.xcodeproj", :env => {'FOO' => 'F'}).with_launch_options(:env => {})
|
|
58
|
+
p.launch_options[:env].should have_key('FOO')
|
|
59
|
+
p.launch_options[:env]['FOO'].should == 'F'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should add environment variables" do
|
|
63
|
+
p = ICuke::Simulator::Process.new("foo.xcodeproj", :env => {'FOO' => 'F'}).with_launch_options(:env => {'BAR' => 'B'})
|
|
64
|
+
p.launch_options[:env].should have_key('BAR')
|
|
65
|
+
p.launch_options[:env]['BAR'].should == 'B'
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should replace existing environment variables" do
|
|
69
|
+
p = ICuke::Simulator::Process.new("foo.xcodeproj", :env => {'FOO' => 'F'}).with_launch_options(:env => {'FOO' => 'B'})
|
|
70
|
+
p.launch_options[:env].should have_key('FOO')
|
|
71
|
+
p.launch_options[:env]['FOO'].should == 'B'
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
data/spec/screen_spec.rb
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
require 'spec/spec_helper'
|
|
2
|
+
require 'icuke/screen'
|
|
3
|
+
|
|
4
|
+
describe Screen do
|
|
5
|
+
before(:all) do
|
|
6
|
+
@xml = File.read('spec/fixtures/controls_page.xml')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
before(:each) do
|
|
10
|
+
@screen = Screen.new(@xml)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "when testing if an element exists" do
|
|
14
|
+
|
|
15
|
+
it "should be able to search for a label" do
|
|
16
|
+
@screen.exists?("Customized Slider").should be_true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should be able to search for a label within a scope" do
|
|
20
|
+
# why does this not work with any scope?
|
|
21
|
+
@screen.exists?("Customized Slider", "UIWindow").should be_true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should be able to search for a value" do
|
|
25
|
+
@screen.exists?("50%").should be_true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should be able to search for a node" do
|
|
29
|
+
@screen.exists?("UISlider").should be_true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should know when an element is visible on the screen" do
|
|
33
|
+
@screen.visible?("Standard Slider").should be_true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "when finding a tappable element" do
|
|
39
|
+
|
|
40
|
+
it "should find an element with a button trait" do
|
|
41
|
+
@screen.first_tappable_element("Standard switch").name.should == "UISwitch"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should find an element with an updates_frequently trait" do
|
|
45
|
+
@screen.first_tappable_element("Custom").name.should == "UIAccessibilityElementMockView"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should find an element by its label" do
|
|
49
|
+
@screen.first_tappable_element("Customized Slider").name.should == "UILabel"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should raise an exception when the element is not found" do
|
|
53
|
+
lambda{@screen.first_tappable_element("does_not_exist")}.should raise_error
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "when finding a slider element" do
|
|
59
|
+
|
|
60
|
+
it "should find a slider by its label" do
|
|
61
|
+
@screen.first_slider_element("Standard slider").name.should == "UISlider"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should find a slider by a UILabel withing the same parent" do
|
|
65
|
+
@screen.first_slider_element("Standard Slider").name.should == "UISlider"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should raise an exception when the element is not found" do
|
|
69
|
+
lambda{@screen.first_slider_element("does_not_exist")}.should raise_error
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context "when finding the button for a slider" do
|
|
75
|
+
|
|
76
|
+
before(:each) do
|
|
77
|
+
@frame = {}
|
|
78
|
+
@element = {}
|
|
79
|
+
@element.should_receive(:child).at_least(:once).and_return(@frame)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should find coordinates when slider is horizontal" do
|
|
83
|
+
set_frame_values(184,275,120,24)
|
|
84
|
+
{'50%' => 244, '100%' => 294, '75%' => 269, '25%' => 219, '0%' => 194}.each do |v|
|
|
85
|
+
@element['value'] = v[0]
|
|
86
|
+
x, y = @screen.find_slider_button(@element)
|
|
87
|
+
x.should == v[1]
|
|
88
|
+
y.should == 287
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should find coordinates when slider is vertical" do
|
|
93
|
+
set_frame_values(184,175,24,120)
|
|
94
|
+
{'50%' => 235, '100%' => 285, '75%' => 260,'25%' => 210, '0%' => 185}.each do |v|
|
|
95
|
+
@element['value'] = v[0]
|
|
96
|
+
x,y = @screen.find_slider_button(@element)
|
|
97
|
+
x.should == 196
|
|
98
|
+
y.should == v[1]
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context "when finding a location corresponding to a percentage for a slider" do
|
|
105
|
+
|
|
106
|
+
before(:each) do
|
|
107
|
+
@frame = {}
|
|
108
|
+
@element = {}
|
|
109
|
+
@element.should_receive(:child).at_least(:once).and_return(@frame)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should find percentage coordinate when slider is horizontal" do
|
|
113
|
+
set_frame_values(184,275,120,24)
|
|
114
|
+
{50 => 244, 100 => 294, 75 => 269, 25 => 219, 0 => 194}.each do |v|
|
|
115
|
+
x,y = @screen.find_slider_percentage_location(@element, v[0])
|
|
116
|
+
x.should == v[1]
|
|
117
|
+
y.should == 287
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "should find percentage coordinate when slider is vertical" do
|
|
122
|
+
set_frame_values(184,175,24,120)
|
|
123
|
+
{50 => 235, 100 => 285, 75 => 260, 25 => 210, 0 => 185}.each do |v|
|
|
124
|
+
x,y = @screen.find_slider_percentage_location(@element, v[0])
|
|
125
|
+
x.should == 196
|
|
126
|
+
y.should == v[1]
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
context "when finding the coordinates for a swipe" do
|
|
133
|
+
|
|
134
|
+
it "should start the coordinates with the center of the screen" do
|
|
135
|
+
x,y,x2,y2 = @screen.swipe_coordinates(:down)
|
|
136
|
+
x.should == 160
|
|
137
|
+
y.should == 240
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "should end the swipe at the top center when swiping up" do
|
|
141
|
+
x,y,x2,y2 = @screen.swipe_coordinates(:up)
|
|
142
|
+
x2.should == 160
|
|
143
|
+
y2.should == 0
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "should end the swipe at the bottom center when swiping down" do
|
|
147
|
+
x,y,x2,y2 = @screen.swipe_coordinates(:down)
|
|
148
|
+
x2.should == 160
|
|
149
|
+
y2.should == 480
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "should end the swipe at the right center when swiping right" do
|
|
153
|
+
x,y,x2,y2 = @screen.swipe_coordinates(:right)
|
|
154
|
+
x2.should == 320
|
|
155
|
+
y2.should == 240
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "should end the swipe at the left center when swiping left" do
|
|
159
|
+
x,y,x2,y2 = @screen.swipe_coordinates(:left)
|
|
160
|
+
x2.should == 0
|
|
161
|
+
y2.should == 240
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def set_frame_values(x, y, width, height)
|
|
167
|
+
@frame['x'] = x
|
|
168
|
+
@frame['y'] = y
|
|
169
|
+
@frame['width'] = width
|
|
170
|
+
@frame['height'] = height
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
end
|