testautoa 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +7 -7
- data/bin/calabash-android +8 -1
- data/bin/calabash-android-build.rb +1 -1
- data/bin/calabash-android-console.rb +4 -4
- data/bin/calabash-android-run.rb +2 -10
- data/bin/testautoa +461 -0
- data/calabash-android.gemspec +3 -1
- data/features-skeleton/support/app_life_cycle_hooks.rb +0 -1
- data/irbrc +3 -1
- data/lib/calabash-android/helpers.rb +45 -17
- data/lib/calabash-android/lib/TestServer.apk +0 -0
- data/lib/calabash-android/lib/unsign.jar +0 -0
- data/lib/calabash-android/operations.rb +150 -66
- data/lib/calabash-android/steps/list_steps.rb +1 -1
- data/lib/calabash-android/steps/time_picker_steps.rb +1 -1
- data/lib/calabash-android/touch_helpers.rb +9 -0
- data/lib/calabash-android/version.rb +1 -1
- data/lib/calabash-android/wait_helpers.rb +93 -0
- data/test-server/AndroidManifest.xml +2 -0
- data/test-server/build.xml +1 -0
- data/test-server/instrumentation-backend/.classpath +0 -1
- data/test-server/instrumentation-backend/AndroidManifest.xml +1 -1
- data/test-server/instrumentation-backend/antlr/UIQuery.g +48 -5
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +4 -3
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java +95 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +7 -1
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java +14 -29
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/FinishOpenedActivities.java +19 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GetOpenedActivities.java +31 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/activity/GoBackToActivity.java +67 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/DragCoordinates.java +28 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/Swipe.java +11 -5
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +13 -10
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/LeftKey.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/RightKey.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/UpKey.java +24 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/version/Version.java +31 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +131 -36
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +38 -18
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +38 -16
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +94 -66
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteAsyncJavascript.java +55 -33
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +53 -31
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +44 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +52 -27
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +39 -32
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +56 -41
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +50 -25
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +19 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java +40 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +222 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java +7 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java +56 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +151 -43
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +19 -12
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java +22 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +41 -11
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +1010 -242
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +406 -98
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/BeginsWithRelation.java +45 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ComparisonOperator.java +54 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ContainsRelation.java +41 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/EndsWithRelation.java +42 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/LikeRelation.java +79 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java +100 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java +1 -1
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java +54 -25
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicate.java +147 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicateRelation.java +5 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +153 -89
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryDirection.java +12 -2
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +58 -141
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +162 -7
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
- metadata +130 -97
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +0 -24
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +0 -44
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQuery.tokens +0 -10
- 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
|
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
|
-
|
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
|
-
|
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
|
-
-
|
7
|
+
authors:
|
8
|
+
- jimtsay
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
25
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
41
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
57
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
76
|
-
|
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
|
-
|
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
|
-
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
88
102
|
type: :runtime
|
89
|
-
|
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/
|
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
|
-
|
807
|
-
|
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
|
-
|
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.
|
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
|
-
}
|