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.
- 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
|
-
}
|