testautoa 0.4.0 → 0.4.1

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.
Files changed (79) hide show
  1. data/Rakefile +7 -7
  2. data/bin/calabash-android +8 -1
  3. data/bin/calabash-android-build.rb +1 -1
  4. data/bin/calabash-android-console.rb +4 -4
  5. data/bin/calabash-android-run.rb +2 -10
  6. data/bin/testautoa +461 -0
  7. data/calabash-android.gemspec +3 -1
  8. data/features-skeleton/support/app_life_cycle_hooks.rb +0 -1
  9. data/irbrc +3 -1
  10. data/lib/calabash-android/helpers.rb +45 -17
  11. data/lib/calabash-android/lib/TestServer.apk +0 -0
  12. data/lib/calabash-android/lib/unsign.jar +0 -0
  13. data/lib/calabash-android/operations.rb +150 -66
  14. data/lib/calabash-android/steps/list_steps.rb +1 -1
  15. data/lib/calabash-android/steps/time_picker_steps.rb +1 -1
  16. data/lib/calabash-android/touch_helpers.rb +9 -0
  17. data/lib/calabash-android/version.rb +1 -1
  18. data/lib/calabash-android/wait_helpers.rb +93 -0
  19. data/test-server/AndroidManifest.xml +2 -0
  20. data/test-server/build.xml +1 -0
  21. data/test-server/instrumentation-backend/.classpath +0 -1
  22. data/test-server/instrumentation-backend/AndroidManifest.xml +1 -1
  23. data/test-server/instrumentation-backend/antlr/UIQuery.g +48 -5
  24. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +4 -3
  25. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java +95 -0
  26. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +7 -1
  27. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java +14 -29
  28. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/FinishOpenedActivities.java +19 -0
  29. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GetOpenedActivities.java +31 -0
  30. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GoBackToActivity.java +67 -0
  31. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/DragCoordinates.java +28 -0
  32. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +11 -5
  33. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +13 -10
  34. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/LeftKey.java +24 -0
  35. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/RightKey.java +24 -0
  36. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/UpKey.java +24 -0
  37. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/version/Version.java +31 -0
  38. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +131 -36
  39. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +38 -18
  40. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +38 -16
  41. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +94 -66
  42. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteAsyncJavascript.java +55 -33
  43. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +53 -31
  44. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +44 -0
  45. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +52 -27
  46. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +39 -32
  47. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +56 -41
  48. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +50 -25
  49. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +19 -22
  50. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java +40 -0
  51. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +222 -0
  52. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java +7 -0
  53. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java +56 -0
  54. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +151 -43
  55. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +19 -12
  56. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java +22 -0
  57. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +41 -11
  58. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +1010 -242
  59. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +406 -98
  60. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/BeginsWithRelation.java +45 -0
  61. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ComparisonOperator.java +54 -0
  62. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ContainsRelation.java +41 -0
  63. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/EndsWithRelation.java +42 -0
  64. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/LikeRelation.java +79 -0
  65. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java +100 -0
  66. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java +1 -1
  67. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java +54 -25
  68. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicate.java +147 -0
  69. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicateRelation.java +5 -0
  70. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +153 -89
  71. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryDirection.java +12 -2
  72. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +58 -141
  73. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +162 -7
  74. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
  75. metadata +130 -97
  76. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +0 -24
  77. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +0 -44
  78. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQuery.tokens +0 -10
  79. data/test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java +0 -134
@@ -1,14 +1,33 @@
1
1
  package sh.calaba.instrumentationbackend.query.ast;
2
2
 
3
+ import static sh.calaba.instrumentationbackend.InstrumentationBackend.viewFetcher;
4
+
3
5
  import java.lang.reflect.InvocationTargetException;
4
6
  import java.lang.reflect.Method;
5
7
  import java.util.ArrayList;
6
8
  import java.util.Collections;
9
+ import java.util.HashMap;
7
10
  import java.util.List;
11
+ import java.util.Map;
12
+ import java.util.concurrent.Callable;
13
+ import java.util.concurrent.Future;
14
+ import java.util.concurrent.TimeUnit;
15
+ import java.util.concurrent.atomic.AtomicReference;
16
+
17
+ import org.antlr.runtime.tree.CommonTree;
8
18
 
19
+ import sh.calaba.instrumentationbackend.InstrumentationBackend;
20
+ import sh.calaba.instrumentationbackend.actions.webview.QueryHelper;
21
+ import sh.calaba.instrumentationbackend.query.CompletedFuture;
22
+ import sh.calaba.instrumentationbackend.query.antlr.UIQueryParser;
23
+ import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
24
+ import sh.calaba.org.codehaus.jackson.type.TypeReference;
25
+ import android.content.res.Resources.NotFoundException;
9
26
  import android.view.View;
27
+ import android.webkit.WebView;
10
28
 
11
- public class UIQueryUtils {
29
+ public class UIQueryUtils {
30
+
12
31
  @SuppressWarnings({ "unchecked", "rawtypes" })
13
32
  public static List subviews(Object o)
14
33
  {
@@ -78,9 +97,15 @@ public class UIQueryUtils {
78
97
  @SuppressWarnings({ "rawtypes" })
79
98
  public static Method hasProperty(Object o, String propertyName) {
80
99
 
81
- Class c = o.getClass();
82
- Method[] methods = c.getMethods();
83
-
100
+ Class c = o.getClass();
101
+ Method method = methodOrNull(c,propertyName);
102
+ if (method != null) { return method;}
103
+ method = methodOrNull(c,"get"+captitalize(propertyName));
104
+ if (method != null) { return method;}
105
+ method = methodOrNull(c,"is"+captitalize(propertyName));
106
+ return method;
107
+
108
+ /*
84
109
  for (Method m : methods)
85
110
  {
86
111
  String methodName = m.getName();
@@ -91,11 +116,19 @@ public class UIQueryUtils {
91
116
  return m;
92
117
  }
93
118
  }
119
+ */
94
120
 
95
- return null;
96
121
 
97
122
  }
98
123
 
124
+ @SuppressWarnings({ "unchecked", "rawtypes" })
125
+ private static Method methodOrNull(Class c, String methodName) {
126
+ try {
127
+ return c.getMethod(methodName);
128
+ } catch (NoSuchMethodException e) {
129
+ return null;
130
+ }
131
+ }
99
132
 
100
133
  private static String captitalize(String propertyName) {
101
134
  return propertyName.substring(0,1).toUpperCase() + propertyName.substring(1);
@@ -114,8 +147,130 @@ public class UIQueryUtils {
114
147
  }
115
148
 
116
149
  public static boolean isVisible(Object v) {
117
- if (!(v instanceof View)) { return true; }
118
- return ((View) v).isShown();
150
+ if (!(v instanceof View)) { return true; }
151
+ View view = (View) v;
152
+
153
+ if (view.getWidth() == 0 || view.getWidth() == 0) {
154
+ return false;
155
+ }
156
+
157
+ return view.isShown() && viewFetcher.isViewSufficientlyShown(view);
158
+ }
159
+
160
+ public static String getId(View view) {
161
+ try {
162
+ return InstrumentationBackend.solo.getCurrentActivity()
163
+ .getResources().getResourceEntryName(view.getId());
164
+
165
+ }
166
+ catch (NotFoundException e) {}
167
+ return null;
168
+ }
169
+
170
+ @SuppressWarnings("rawtypes")
171
+ public static Future evaluateAsyncInMainThread(final Callable callable) throws Exception {
172
+ final AtomicReference<Future> result = new AtomicReference<Future>();
173
+ final AtomicReference<Exception> errorResult = new AtomicReference<Exception>();
174
+
175
+ InstrumentationBackend.instrumentation.runOnMainSync(new Runnable() {
176
+ @SuppressWarnings("unchecked")
177
+ public void run() {
178
+ try {
179
+ Object res = callable.call();
180
+ if (res instanceof Future) {
181
+ result.set((Future) res);
182
+ }
183
+ else {
184
+ result.set(new CompletedFuture(res));
185
+ }
186
+ } catch (Exception e) {
187
+ errorResult.set(e);
188
+ }
189
+ }
190
+ });
191
+ if (result.get() == null) {
192
+ throw errorResult.get();
193
+ }
194
+ return result.get();
195
+ }
196
+
197
+ @SuppressWarnings("rawtypes")
198
+ public static Object evaluateSyncInMainThread(Callable callable) {
199
+ try {
200
+ return evaluateAsyncInMainThread(callable).get(10, TimeUnit.SECONDS);
201
+ } catch (RuntimeException e) {
202
+ throw e;
203
+ }
204
+ catch (Exception e) {
205
+ e.printStackTrace();
206
+ throw new RuntimeException(e);
207
+ }
119
208
  }
120
209
 
210
+ @SuppressWarnings({ "unchecked", "rawtypes" })
211
+ public static List<Map<String, Object>> mapWebViewJsonResponse(final String jsonResponse, final WebView webView) {
212
+ return (List<Map<String, Object>>) evaluateSyncInMainThread(new Callable() {
213
+
214
+ @Override
215
+ public Object call() throws Exception {
216
+ List<Map<String, Object>> parsedResult;
217
+ try {
218
+ parsedResult = new ObjectMapper().readValue(
219
+ jsonResponse,
220
+ new TypeReference<List<HashMap<String, Object>>>() {});
221
+ for (Map<String,Object> data : parsedResult) {
222
+ Map<String,Object> rect = (Map<String, Object>) data.get("rect");
223
+ Map <String,Object> updatedRect = QueryHelper.translateRectToScreenCoordinates(webView, rect);
224
+ data.put("rect", updatedRect);
225
+ data.put("webView", webView);
226
+ }
227
+ return parsedResult;
228
+ } catch (Exception igored) {
229
+ try {
230
+ Map resultAsMap = new ObjectMapper().readValue(
231
+ jsonResponse,
232
+ new TypeReference<HashMap>() {});
233
+ //This usually happens in case of error
234
+ //check this case
235
+ System.out.println(resultAsMap);
236
+ String errorMsg = (String) resultAsMap.get("error");
237
+ System.out.println(errorMsg);
238
+ return Collections.singletonList(resultAsMap);
239
+ } catch (Exception e) {
240
+ e.printStackTrace();
241
+ throw new RuntimeException(e);
242
+ }
243
+
244
+
245
+ }
246
+ }
247
+ });
248
+
249
+ }
250
+
251
+ public static Object parseValue(CommonTree val) {
252
+ switch (val.getType()) {
253
+ case UIQueryParser.STRING: {
254
+ String textWithPings = val.getText();
255
+ String text = textWithPings
256
+ .substring(1, textWithPings.length() - 1);
257
+ return text;
258
+ }
259
+ case UIQueryParser.INT:
260
+ return Integer.parseInt(val.getText(), 10);
261
+ case UIQueryParser.BOOL: {
262
+ String text = val.getText();
263
+ return Boolean.parseBoolean(text);
264
+ }
265
+ case UIQueryParser.NIL:
266
+ return null;
267
+
268
+ default:
269
+ throw new IllegalArgumentException("Unable to parse value type:"
270
+ + val.getType() + " text " + val.getText());
271
+
272
+ }
273
+
274
+ }
275
+
121
276
  }
@@ -0,0 +1,32 @@
1
+ package sh.calaba.instrumentationbackend.query.ast;
2
+
3
+ import java.util.ArrayList;
4
+ import java.util.List;
5
+
6
+ public enum UIQueryVisibility implements UIQueryAST {
7
+ ALL {
8
+ @Override
9
+ @SuppressWarnings("rawtypes")
10
+ public List evaluateWithViews(List inputViews,
11
+ UIQueryDirection direction, UIQueryVisibility self) {
12
+ return inputViews;
13
+ }
14
+ },
15
+
16
+
17
+ VISIBLE {
18
+ @Override
19
+ @SuppressWarnings({ "rawtypes", "unchecked" })
20
+ public List evaluateWithViews(List inputViews,
21
+ UIQueryDirection direction, UIQueryVisibility self) {
22
+ List filtered = new ArrayList(inputViews.size());
23
+ for (Object o : inputViews) {
24
+ if (UIQueryUtils.isVisible(o)) {
25
+ filtered.add(o);
26
+ }
27
+ }
28
+ return filtered;
29
+ }
30
+ };
31
+
32
+ }
metadata CHANGED
@@ -1,101 +1,120 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: testautoa
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 0
10
- version: 0.4.0
11
6
  platform: ruby
12
- authors:
13
- - jamestsay
7
+ authors:
8
+ - jimtsay
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-12-19 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-02-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: cucumber
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: json
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
38
25
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: retriable
50
39
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
52
41
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: retriable
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
60
54
  type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: slowhandcuke
64
55
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
66
57
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: slowhandcuke
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
74
70
  type: :runtime
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
77
79
  name: rubyzip
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
78
87
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: awesome_print
96
+ requirement: !ruby/object:Gem::Requirement
80
97
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
88
102
  type: :runtime
89
- version_requirements: *id005
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
90
110
  description: Description
91
111
  email:
92
- executables:
112
+ executables:
93
113
  - calabash-android
114
+ - testautoa
94
115
  extensions: []
95
-
96
116
  extra_rdoc_files: []
97
-
98
- files:
117
+ files:
99
118
  - .calabash_settings
100
119
  - CHANGES.txt
101
120
  - Gemfile
@@ -108,6 +127,7 @@ files:
108
127
  - bin/calabash-android-helpers.rb
109
128
  - bin/calabash-android-run.rb
110
129
  - bin/calabash-android-setup.rb
130
+ - bin/testautoa
111
131
  - calabash-android.gemspec
112
132
  - doc/calabash-android-help.txt
113
133
  - epl-v10.html
@@ -127,6 +147,7 @@ files:
127
147
  - lib/calabash-android/lib/AXMLPrinter2.jar
128
148
  - lib/calabash-android/lib/manifest_extractor.jar
129
149
  - lib/calabash-android/lib/screenShotTaker.jar
150
+ - lib/calabash-android/lib/unsign.jar
130
151
  - lib/calabash-android/management/adb.rb
131
152
  - lib/calabash-android/management/app_installation.rb
132
153
  - lib/calabash-android/operations.rb
@@ -149,7 +170,9 @@ files:
149
170
  - lib/calabash-android/steps/search_steps.rb
150
171
  - lib/calabash-android/steps/spinner_steps.rb
151
172
  - lib/calabash-android/steps/time_picker_steps.rb
173
+ - lib/calabash-android/touch_helpers.rb
152
174
  - lib/calabash-android/version.rb
175
+ - lib/calabash-android/wait_helpers.rb
153
176
  - test-server/AndroidManifest.xml
154
177
  - test-server/build.xml
155
178
  - test-server/instrumentation-backend/.classpath
@@ -262,6 +285,7 @@ files:
262
285
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/CalabashInstrumentationTestRunner.java
263
286
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/ClearAppData.java
264
287
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java
288
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java
265
289
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java
266
290
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java
267
291
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java
@@ -271,6 +295,9 @@ files:
271
295
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java
272
296
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NanoHTTPD.java
273
297
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/NullAction.java
298
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/FinishOpenedActivities.java
299
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GetOpenedActivities.java
300
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GoBackToActivity.java
274
301
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/SetActivityOrientation.java
275
302
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java
276
303
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java
@@ -284,6 +311,7 @@ files:
284
311
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java
285
312
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/ClickOnScreen.java
286
313
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Drag.java
314
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/DragCoordinates.java
287
315
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java
288
316
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/TouchCoordinates.java
289
317
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/InspectCurrentDialog.java
@@ -313,8 +341,11 @@ files:
313
341
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/DownKey.java
314
342
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/EnterKey.java
315
343
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/GoBack.java
344
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/LeftKey.java
316
345
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/PressMenu.java
346
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/RightKey.java
317
347
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java
348
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/UpKey.java
318
349
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/GetSelectedSpinnerItemText.java
319
350
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java
320
351
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertGridViewContainsNoDuplicates.java
@@ -332,6 +363,7 @@ files:
332
363
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetDateByIndex.java
333
364
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByContentDescription.java
334
365
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/time/SetTimeByIndex.java
366
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/version/Version.java
335
367
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/AssertViewProperty.java
336
368
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewByDescription.java
337
369
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java
@@ -359,27 +391,39 @@ files:
359
391
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java
360
392
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetLoadProgress.java
361
393
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetUrl.java
394
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java
362
395
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java
363
- - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java
364
396
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java
365
397
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java
366
398
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java
367
399
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java
368
- - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java
400
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java
401
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java
402
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java
403
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java
369
404
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java
370
405
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/QueryResult.java
371
406
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens
407
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java
372
408
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java
373
- - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQuery.tokens
374
409
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java
375
410
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java
411
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/BeginsWithRelation.java
412
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ComparisonOperator.java
413
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ContainsRelation.java
414
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/EndsWithRelation.java
376
415
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/InvalidUIQueryException.java
416
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/LikeRelation.java
417
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java
377
418
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java
378
419
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java
420
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicate.java
421
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicateRelation.java
379
422
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java
380
423
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryDirection.java
381
424
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java
382
425
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java
426
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java
383
427
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java
384
428
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java
385
429
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java
@@ -786,43 +830,32 @@ files:
786
830
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java
787
831
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java
788
832
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java
789
- - test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java
790
833
  - test-server/calabash-js/src/calabash.js
791
834
  - test-server/calabash-js/src/set_text.js
792
835
  - lib/calabash-android/lib/TestServer.apk
793
836
  homepage:
794
837
  licenses: []
795
-
796
838
  post_install_message:
797
839
  rdoc_options: []
798
-
799
- require_paths:
840
+ require_paths:
800
841
  - lib
801
- required_ruby_version: !ruby/object:Gem::Requirement
842
+ required_ruby_version: !ruby/object:Gem::Requirement
802
843
  none: false
803
- requirements:
804
- - - ">="
805
- - !ruby/object:Gem::Version
806
- hash: 3
807
- segments:
808
- - 0
809
- version: "0"
810
- required_rubygems_version: !ruby/object:Gem::Requirement
844
+ requirements:
845
+ - - ! '>='
846
+ - !ruby/object:Gem::Version
847
+ version: '0'
848
+ required_rubygems_version: !ruby/object:Gem::Requirement
811
849
  none: false
812
- requirements:
813
- - - ">="
814
- - !ruby/object:Gem::Version
815
- hash: 3
816
- segments:
817
- - 0
818
- version: "0"
850
+ requirements:
851
+ - - ! '>='
852
+ - !ruby/object:Gem::Version
853
+ version: '0'
819
854
  requirements: []
820
-
821
855
  rubyforge_project:
822
- rubygems_version: 1.8.24
856
+ rubygems_version: 1.8.25
823
857
  signing_key:
824
858
  specification_version: 3
825
859
  summary: Summary
826
860
  test_files: []
827
-
828
861
  has_rdoc:
@@ -1,24 +0,0 @@
1
- package sh.calaba.instrumentationbackend.actions.webview;
2
-
3
-
4
- import sh.calaba.instrumentationbackend.Result;
5
- import sh.calaba.instrumentationbackend.actions.Action;
6
-
7
-
8
- public class Query implements Action {
9
-
10
- @Override
11
- public Result execute(String... args) {
12
-
13
- String result = QueryHelper.executeJavascriptInWebview("calabash.js", args[1], args[0]);
14
- return new Result(true, result);
15
- }
16
-
17
- @Override
18
- public String key() {
19
- return "query";
20
- }
21
-
22
-
23
-
24
- }
@@ -1,44 +0,0 @@
1
- package sh.calaba.instrumentationbackend.actions.webview;
2
-
3
-
4
- import java.util.HashMap;
5
- import java.util.List;
6
- import java.util.Map;
7
-
8
- import sh.calaba.instrumentationbackend.InstrumentationBackend;
9
- import sh.calaba.instrumentationbackend.Result;
10
- import sh.calaba.instrumentationbackend.actions.Action;
11
- import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
12
- import sh.calaba.org.codehaus.jackson.type.TypeReference;
13
-
14
-
15
- public class Touch implements Action {
16
-
17
- @Override
18
- public Result execute(String... args) {
19
-
20
- try {
21
- String queryResult = QueryHelper.executeJavascriptInWebview("calabash.js", args[1], args[0]);
22
- List<HashMap<String,Object>> p = new ObjectMapper().readValue(queryResult, new TypeReference<List<HashMap<String,Object>>>(){});
23
-
24
- if (p.isEmpty()) {
25
- throw new RuntimeException("No element found");
26
- }
27
-
28
- Map<String, Object> firstRect = QueryHelper.findFirstVisibleRectangle(p);
29
-
30
- float[] screenCoordinates = QueryHelper.getScreenCoordinatesForCenter(firstRect);
31
-
32
- InstrumentationBackend.solo.clickOnScreen(screenCoordinates[0], screenCoordinates[1]);
33
- } catch (Exception e) {
34
- throw new RuntimeException(e);
35
- }
36
-
37
- return new Result(true, "");
38
- }
39
-
40
- @Override
41
- public String key() {
42
- return "touch";
43
- }
44
- }