testautoa 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
- }