calabash-android 0.4.0.pre6 → 0.4.0.pre7
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/bin/calabash-android +7 -0
- data/bin/calabash-android-build.rb +1 -1
- data/bin/calabash-android-console.rb +1 -1
- data/bin/calabash-android-run.rb +1 -1
- data/calabash-android.gemspec +1 -0
- data/irbrc +2 -0
- data/lib/calabash-android/helpers.rb +4 -2
- data/lib/calabash-android/lib/TestServer.apk +0 -0
- data/lib/calabash-android/operations.rb +31 -22
- data/lib/calabash-android/version.rb +1 -1
- data/test-server/instrumentation-backend/.classpath +0 -1
- data/test-server/instrumentation-backend/antlr/UIQuery.g +11 -2
- 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 +15 -23
- 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/webview/CalabashChromeClient.java +136 -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 +54 -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 +201 -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 +144 -72
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +15 -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 +38 -11
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +226 -109
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +237 -84
- 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 +26 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +170 -102
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +54 -155
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +97 -2
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
- metadata +27 -5
- 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/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java +0 -134
@@ -1,137 +1,72 @@
|
|
1
1
|
package sh.calaba.instrumentationbackend.query.ast;
|
2
2
|
|
3
|
-
import java.io.IOException;
|
4
|
-
import java.lang.reflect.Method;
|
5
3
|
import java.util.ArrayList;
|
6
|
-
import java.util.Collections;
|
7
|
-
import java.util.HashMap;
|
8
4
|
import java.util.List;
|
9
|
-
import java.util.Map;
|
10
5
|
|
11
|
-
import
|
12
|
-
import
|
13
|
-
import
|
14
|
-
import org.antlr.runtime.tree.CommonTree;
|
15
|
-
|
16
|
-
import sh.calaba.instrumentationbackend.query.antlr.UIQueryLexer;
|
17
|
-
import sh.calaba.instrumentationbackend.query.antlr.UIQueryParser;
|
18
|
-
import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
|
6
|
+
import sh.calaba.instrumentationbackend.query.Operation;
|
7
|
+
import sh.calaba.instrumentationbackend.query.UIQueryResultVoid;
|
8
|
+
import sh.calaba.instrumentationbackend.query.ViewMapper;
|
19
9
|
|
20
10
|
public class UIQueryEvaluator {
|
21
|
-
|
22
|
-
|
23
|
-
|
11
|
+
|
12
|
+
@SuppressWarnings({ "rawtypes" })
|
13
|
+
public static List evaluateQueryWithOptions(List<UIQueryAST> query, List inputViews,
|
14
|
+
List<Operation> operations) {
|
24
15
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
16
|
+
long before = System.currentTimeMillis();
|
17
|
+
|
18
|
+
List views = evaluateQueryForPath(query, inputViews);
|
19
|
+
|
20
|
+
long after = System.currentTimeMillis();
|
21
|
+
String action = "EvaluateQuery";
|
22
|
+
System.out.println(action+ " took: "+ (after-before) + "ms");
|
23
|
+
|
24
|
+
before = System.currentTimeMillis();
|
25
|
+
|
26
|
+
List result = applyOperations(views, operations);
|
27
|
+
|
28
|
+
after = System.currentTimeMillis();
|
29
|
+
action = "ApplyOperations";
|
30
|
+
System.out.println(action+ " took: "+ (after-before) + "ms");
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
throw new RuntimeException("Could not convert result to json",e);
|
40
|
-
}
|
41
|
-
}
|
32
|
+
before = System.currentTimeMillis();
|
33
|
+
|
34
|
+
List finalResult = mapViews(result);
|
35
|
+
|
36
|
+
after = System.currentTimeMillis();
|
37
|
+
action = "MapViews";
|
38
|
+
return finalResult;
|
39
|
+
}
|
42
40
|
|
43
|
-
@SuppressWarnings({ "rawtypes", "unchecked" })
|
44
|
-
public Object asJSON(String methodName, Object receiver,String errorMessage) {
|
45
|
-
ObjectMapper mapper = new ObjectMapper();
|
46
41
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
map.put("receiverString",receiver.toString());
|
53
|
-
return mapper.writeValueAsString(map);
|
54
|
-
} catch (IOException e) {
|
55
|
-
throw new RuntimeException("Could not convert result to json",e);
|
56
|
-
}
|
42
|
+
@SuppressWarnings({ "unchecked", "rawtypes" })
|
43
|
+
public static List mapViews(List result) {
|
44
|
+
List finalResult = new ArrayList(result.size());
|
45
|
+
for (Object o : result) {
|
46
|
+
finalResult.add(ViewMapper.mapView(o));
|
57
47
|
}
|
48
|
+
return finalResult;
|
58
49
|
}
|
59
50
|
|
60
|
-
@SuppressWarnings({ "rawtypes" })
|
61
|
-
public static List evaluateQuery(String query, List inputViews) {
|
62
|
-
return evaluateQueryForPath(parseQuery(query), inputViews);
|
63
|
-
}
|
64
51
|
|
65
52
|
@SuppressWarnings({ "rawtypes", "unchecked" })
|
66
|
-
public static List
|
67
|
-
List options) {
|
68
|
-
|
69
|
-
long before = System.currentTimeMillis();
|
70
|
-
List views = evaluateQueryForPath(parseQuery(query), inputViews);
|
71
|
-
long after = System.currentTimeMillis();
|
72
|
-
String action = "EvaluateQueryNoOptions";
|
73
|
-
System.out.println(action+ " took: "+ (after-before) + "ms");
|
74
|
-
|
75
|
-
|
76
|
-
|
53
|
+
public static List applyOperations(List views, List<Operation> operations) {
|
77
54
|
List result = views;
|
78
|
-
for
|
79
|
-
|
80
|
-
|
81
|
-
for (Object o : result) {
|
55
|
+
for(Operation op : operations) {
|
56
|
+
List nextResult = new ArrayList(result.size());
|
57
|
+
for (Object obj : result) {
|
82
58
|
try {
|
83
|
-
|
84
|
-
before = System.currentTimeMillis();
|
85
|
-
|
86
|
-
Method m = UIQueryUtils.hasProperty(o, propertyName);
|
87
|
-
after = System.currentTimeMillis();
|
88
|
-
action = "HasProperty";
|
89
|
-
System.out.println(action+ " took: "+ (after-before) + "ms");
|
90
|
-
|
91
|
-
|
92
|
-
if (m != null) {
|
93
|
-
nextResult.add(m.invoke(o));
|
94
|
-
}
|
95
|
-
else
|
96
|
-
{
|
97
|
-
nextResult.add(UIQueryResultVoid.instance.asJSON(propertyName,o,"NO accessor for "+propertyName));
|
98
|
-
}
|
99
|
-
|
59
|
+
nextResult.add(op.apply(obj));
|
100
60
|
} catch (Exception e) {
|
101
|
-
|
102
|
-
nextResult.add(UIQueryResultVoid.instance.
|
103
|
-
}
|
61
|
+
e.printStackTrace();
|
62
|
+
nextResult.add(UIQueryResultVoid.instance.asMap(op.getName(), obj, e.getMessage()));
|
63
|
+
}
|
104
64
|
}
|
105
65
|
result = nextResult;
|
106
66
|
}
|
107
67
|
return result;
|
108
|
-
|
109
68
|
}
|
110
69
|
|
111
|
-
@SuppressWarnings("unchecked")
|
112
|
-
public static List<UIQueryAST> parseQuery(String query) {
|
113
|
-
UIQueryLexer lexer = new UIQueryLexer(new ANTLRStringStream(query));
|
114
|
-
UIQueryParser parser = new UIQueryParser(new CommonTokenStream(lexer));
|
115
|
-
|
116
|
-
UIQueryParser.query_return q;
|
117
|
-
try {
|
118
|
-
q = parser.query();
|
119
|
-
} catch (RecognitionException e) {
|
120
|
-
// TODO Auto-generated catch block
|
121
|
-
throw new InvalidUIQueryException(e.getMessage());
|
122
|
-
}
|
123
|
-
if (q == null) {
|
124
|
-
throw new InvalidUIQueryException(query);
|
125
|
-
}
|
126
|
-
CommonTree rootNode = (CommonTree) q.getTree();
|
127
|
-
List<CommonTree> queryPath = rootNode.getChildren();
|
128
|
-
|
129
|
-
if (queryPath == null || queryPath.isEmpty()) {
|
130
|
-
queryPath = Collections.singletonList(rootNode);
|
131
|
-
}
|
132
|
-
|
133
|
-
return mapUIQueryFromAstNodes(queryPath);
|
134
|
-
}
|
135
70
|
|
136
71
|
@SuppressWarnings("rawtypes")
|
137
72
|
private static List evaluateQueryForPath(List<UIQueryAST> queryPath,
|
@@ -139,26 +74,23 @@ public class UIQueryEvaluator {
|
|
139
74
|
|
140
75
|
List currentResult = inputViews;
|
141
76
|
UIQueryDirection currentDirection = UIQueryDirection.DESCENDANT;
|
77
|
+
UIQueryVisibility currentVisibility = UIQueryVisibility.VISIBLE;
|
78
|
+
|
142
79
|
for (UIQueryAST step : queryPath) {
|
143
80
|
if (isDirection(step)) {
|
144
81
|
currentDirection = directionFromAst(step);
|
145
|
-
}
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
currentResult = step.
|
151
|
-
currentResult, currentDirection);
|
152
|
-
long after = System.currentTimeMillis();
|
153
|
-
String action = "EvaluateQueryNoOptions" + step.toString();
|
154
|
-
System.out.println(action+ " took: "+ (after-before) + "ms");
|
155
|
-
|
82
|
+
}
|
83
|
+
else if (step instanceof UIQueryVisibility) {
|
84
|
+
currentVisibility = (UIQueryVisibility) step;
|
85
|
+
}
|
86
|
+
else {
|
87
|
+
currentResult = step.evaluateWithViews(currentResult, currentDirection,currentVisibility);
|
156
88
|
}
|
157
89
|
|
158
90
|
}
|
159
91
|
return currentResult;
|
160
92
|
}
|
161
|
-
|
93
|
+
|
162
94
|
public static UIQueryDirection directionFromAst(UIQueryAST step) {
|
163
95
|
// TODO Auto-generated method stub
|
164
96
|
return null;
|
@@ -168,38 +100,5 @@ public class UIQueryEvaluator {
|
|
168
100
|
// TODO Auto-generated method stub
|
169
101
|
return false;
|
170
102
|
}
|
171
|
-
|
172
|
-
public static List<UIQueryAST> mapUIQueryFromAstNodes(List<CommonTree> nodes) {
|
173
|
-
List<UIQueryAST> mapped = new ArrayList<UIQueryAST>(nodes.size());
|
174
|
-
for (CommonTree t : nodes) {
|
175
|
-
mapped.add(uiQueryFromAst(t));
|
176
|
-
}
|
177
|
-
return mapped;
|
178
|
-
}
|
179
|
-
|
180
|
-
public static UIQueryAST uiQueryFromAst(CommonTree step) {
|
181
|
-
String stepType = UIQueryParser.tokenNames[step.getType()];
|
182
|
-
switch (step.getType()) {
|
183
|
-
case UIQueryParser.QUALIFIED_NAME:
|
184
|
-
try {
|
185
|
-
return new UIQueryASTClassName(Class.forName(step.getText()));
|
186
|
-
} catch (ClassNotFoundException e) {
|
187
|
-
// TODO Auto-generated catch block
|
188
|
-
throw new InvalidUIQueryException("Qualified class name: "
|
189
|
-
+ step.getText() + " not found. (" + e.getMessage()
|
190
|
-
+ ")");
|
191
|
-
}
|
192
|
-
case UIQueryParser.NAME:
|
193
|
-
return new UIQueryASTClassName(step.getText());
|
194
|
-
|
195
|
-
case UIQueryParser.FILTER_COLON:
|
196
|
-
return UIQueryASTWith.fromAST(step);
|
197
|
-
default:
|
198
|
-
throw new InvalidUIQueryException("Unknown query: " + stepType
|
199
|
-
+ " with text: " + step.getText());
|
200
|
-
|
201
|
-
}
|
202
|
-
|
203
|
-
}
|
204
|
-
|
103
|
+
|
205
104
|
}
|
@@ -1,12 +1,27 @@
|
|
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;
|
8
16
|
|
17
|
+
import sh.calaba.instrumentationbackend.InstrumentationBackend;
|
18
|
+
import sh.calaba.instrumentationbackend.actions.webview.QueryHelper;
|
19
|
+
import sh.calaba.instrumentationbackend.query.CompletedFuture;
|
20
|
+
import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
|
21
|
+
import sh.calaba.org.codehaus.jackson.type.TypeReference;
|
22
|
+
import android.content.res.Resources.NotFoundException;
|
9
23
|
import android.view.View;
|
24
|
+
import android.webkit.WebView;
|
10
25
|
|
11
26
|
public class UIQueryUtils {
|
12
27
|
@SuppressWarnings({ "unchecked", "rawtypes" })
|
@@ -128,8 +143,88 @@ public class UIQueryUtils {
|
|
128
143
|
}
|
129
144
|
|
130
145
|
public static boolean isVisible(Object v) {
|
131
|
-
if (!(v instanceof View)) { return true; }
|
132
|
-
|
146
|
+
if (!(v instanceof View)) { return true; }
|
147
|
+
View view = (View) v;
|
148
|
+
return view.isShown() && viewFetcher.isViewSufficientlyShown(view);
|
133
149
|
}
|
150
|
+
|
151
|
+
public static String getId(View view) {
|
152
|
+
try {
|
153
|
+
return InstrumentationBackend.solo.getCurrentActivity()
|
154
|
+
.getResources().getResourceEntryName(view.getId());
|
134
155
|
|
156
|
+
}
|
157
|
+
catch (NotFoundException e) {}
|
158
|
+
return null;
|
159
|
+
}
|
160
|
+
|
161
|
+
@SuppressWarnings("rawtypes")
|
162
|
+
public static Future evaluateAsyncInMainThread(final Callable callable) throws Exception {
|
163
|
+
final AtomicReference<Future> result = new AtomicReference<Future>();
|
164
|
+
final AtomicReference<Exception> errorResult = new AtomicReference<Exception>();
|
165
|
+
|
166
|
+
InstrumentationBackend.instrumentation.runOnMainSync(new Runnable() {
|
167
|
+
@SuppressWarnings("unchecked")
|
168
|
+
public void run() {
|
169
|
+
try {
|
170
|
+
Object res = callable.call();
|
171
|
+
if (res instanceof Future) {
|
172
|
+
result.set((Future) res);
|
173
|
+
}
|
174
|
+
else {
|
175
|
+
result.set(new CompletedFuture(res));
|
176
|
+
}
|
177
|
+
} catch (Exception e) {
|
178
|
+
errorResult.set(e);
|
179
|
+
}
|
180
|
+
}
|
181
|
+
});
|
182
|
+
if (result.get() == null) {
|
183
|
+
throw errorResult.get();
|
184
|
+
}
|
185
|
+
return result.get();
|
186
|
+
}
|
187
|
+
|
188
|
+
@SuppressWarnings("rawtypes")
|
189
|
+
public static Object evaluateSyncInMainThread(Callable callable) {
|
190
|
+
try {
|
191
|
+
return evaluateAsyncInMainThread(callable).get(10, TimeUnit.SECONDS);
|
192
|
+
} catch (RuntimeException e) {
|
193
|
+
throw e;
|
194
|
+
}
|
195
|
+
catch (Exception e) {
|
196
|
+
e.printStackTrace();
|
197
|
+
throw new RuntimeException(e);
|
198
|
+
}
|
199
|
+
}
|
200
|
+
|
201
|
+
@SuppressWarnings({ "unchecked", "rawtypes" })
|
202
|
+
public static List<Map<String, Object>> mapWebViewJsonResponse(final String jsonResponse, final WebView webView) {
|
203
|
+
return (List<Map<String, Object>>) evaluateSyncInMainThread(new Callable() {
|
204
|
+
|
205
|
+
@Override
|
206
|
+
public Object call() throws Exception {
|
207
|
+
List<Map<String, Object>> parsedResult;
|
208
|
+
try {
|
209
|
+
parsedResult = new ObjectMapper()
|
210
|
+
.readValue(
|
211
|
+
jsonResponse,
|
212
|
+
new TypeReference<List<HashMap<String, Object>>>() {
|
213
|
+
});
|
214
|
+
for (Map<String,Object> data : parsedResult) {
|
215
|
+
Map<String,Object> rect = (Map<String, Object>) data.get("rect");
|
216
|
+
Map <String,Object> updatedRect = QueryHelper.translateRectToScreenCoordinates(webView, rect);
|
217
|
+
data.put("rect", updatedRect);
|
218
|
+
data.put("webView", webView);
|
219
|
+
}
|
220
|
+
return parsedResult;
|
221
|
+
} catch (Exception e) {
|
222
|
+
e.printStackTrace();
|
223
|
+
throw new RuntimeException(e);
|
224
|
+
}
|
225
|
+
}
|
226
|
+
});
|
227
|
+
|
228
|
+
}
|
229
|
+
|
135
230
|
}
|
@@ -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,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calabash-android
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0.
|
4
|
+
version: 0.4.0.pre7
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|
@@ -91,6 +91,22 @@ dependencies:
|
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: awesome_print
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
94
110
|
description: ! 'calabash-android drives tests for native and hybrid Android apps. '
|
95
111
|
email:
|
96
112
|
- jonas@lesspainful.com
|
@@ -266,6 +282,7 @@ files:
|
|
266
282
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/CalabashInstrumentationTestRunner.java
|
267
283
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/ClearAppData.java
|
268
284
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java
|
285
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java
|
269
286
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java
|
270
287
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java
|
271
288
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java
|
@@ -363,26 +380,32 @@ files:
|
|
363
380
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java
|
364
381
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetLoadProgress.java
|
365
382
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetUrl.java
|
383
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java
|
366
384
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java
|
367
|
-
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java
|
368
385
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java
|
369
386
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java
|
370
387
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java
|
371
388
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java
|
372
|
-
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/
|
389
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java
|
390
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java
|
391
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java
|
392
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java
|
373
393
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java
|
374
394
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/QueryResult.java
|
375
395
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens
|
396
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java
|
376
397
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java
|
377
398
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java
|
378
399
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java
|
379
400
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/InvalidUIQueryException.java
|
401
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java
|
380
402
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java
|
381
403
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java
|
382
404
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java
|
383
405
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryDirection.java
|
384
406
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java
|
385
407
|
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java
|
408
|
+
- test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java
|
386
409
|
- test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java
|
387
410
|
- test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java
|
388
411
|
- test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java
|
@@ -789,7 +812,6 @@ files:
|
|
789
812
|
- test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java
|
790
813
|
- test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java
|
791
814
|
- test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java
|
792
|
-
- test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java
|
793
815
|
- test-server/calabash-js/src/calabash.js
|
794
816
|
- test-server/calabash-js/src/set_text.js
|
795
817
|
- lib/calabash-android/lib/TestServer.apk
|