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,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
|
-
}
|
@@ -1,134 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.query.tests;
|
2
|
-
|
3
|
-
import java.util.Arrays;
|
4
|
-
import java.util.Collections;
|
5
|
-
import java.util.List;
|
6
|
-
|
7
|
-
import junit.framework.TestCase;
|
8
|
-
import sh.calaba.instrumentationbackend.query.ast.UIQueryAST;
|
9
|
-
import sh.calaba.instrumentationbackend.query.ast.UIQueryASTClassName;
|
10
|
-
import sh.calaba.instrumentationbackend.query.ast.UIQueryEvaluator;
|
11
|
-
|
12
|
-
public class UIQueryTest extends TestCase {
|
13
|
-
|
14
|
-
@SuppressWarnings("rawtypes")
|
15
|
-
public void testEvaluateQueryOnEmpty() {
|
16
|
-
String query = "button";
|
17
|
-
List res = UIQueryEvaluator.evaluateQuery(query, Collections.EMPTY_LIST);
|
18
|
-
assertEquals(0, res.size());
|
19
|
-
}
|
20
|
-
|
21
|
-
public void testConvertSimpleQueryToUIQueryAst() throws Exception {
|
22
|
-
List<UIQueryAST> parsedQuery = UIQueryEvaluator.parseQuery("button");
|
23
|
-
assertEquals(1, parsedQuery.size());
|
24
|
-
|
25
|
-
UIQueryAST uiQueryAST = parsedQuery.get(0);
|
26
|
-
|
27
|
-
assertTrue(uiQueryAST instanceof UIQueryASTClassName);
|
28
|
-
assertEquals("button", ((UIQueryASTClassName)uiQueryAST).simpleClassName);
|
29
|
-
|
30
|
-
}
|
31
|
-
|
32
|
-
public void testConvertQualifiedQueryToUIQueryAst() throws Exception {
|
33
|
-
List<UIQueryAST> parsedQuery = UIQueryEvaluator.parseQuery("junit.framework.TestCase");
|
34
|
-
assertEquals(1, parsedQuery.size());
|
35
|
-
|
36
|
-
UIQueryAST uiQueryAST = parsedQuery.get(0);
|
37
|
-
|
38
|
-
assertTrue(uiQueryAST instanceof UIQueryASTClassName);
|
39
|
-
assertEquals(junit.framework.TestCase.class, ((UIQueryASTClassName)uiQueryAST).qualifiedClassName);
|
40
|
-
}
|
41
|
-
|
42
|
-
public void testConvertComposedQueryToUIQueryAst() throws Exception {
|
43
|
-
List<UIQueryAST> parsedQuery = UIQueryEvaluator.parseQuery("view button");
|
44
|
-
assertEquals(2, parsedQuery.size());
|
45
|
-
|
46
|
-
UIQueryAST uiQueryASTFirst = parsedQuery.get(0);
|
47
|
-
UIQueryAST uiQueryASTSecond = parsedQuery.get(1);
|
48
|
-
|
49
|
-
assertTrue(uiQueryASTFirst instanceof UIQueryASTClassName);
|
50
|
-
assertTrue(uiQueryASTSecond instanceof UIQueryASTClassName);
|
51
|
-
|
52
|
-
assertEquals("view", ((UIQueryASTClassName)uiQueryASTFirst).simpleClassName);
|
53
|
-
assertEquals("button", ((UIQueryASTClassName)uiQueryASTSecond).simpleClassName);
|
54
|
-
|
55
|
-
}
|
56
|
-
|
57
|
-
|
58
|
-
private static class View {
|
59
|
-
@SuppressWarnings("rawtypes")
|
60
|
-
List views;
|
61
|
-
|
62
|
-
@SuppressWarnings("rawtypes")
|
63
|
-
public View(List views) {
|
64
|
-
super();
|
65
|
-
this.views = views;
|
66
|
-
}
|
67
|
-
public Object getChildAt(int idx)
|
68
|
-
{
|
69
|
-
return this.views.get(idx);
|
70
|
-
}
|
71
|
-
@SuppressWarnings("unused")
|
72
|
-
public Object getChildCount() {return this.views.size();}
|
73
|
-
|
74
|
-
}
|
75
|
-
private static class SubView extends View {
|
76
|
-
|
77
|
-
@SuppressWarnings("rawtypes")
|
78
|
-
public SubView(List views) {
|
79
|
-
super(views);
|
80
|
-
}
|
81
|
-
|
82
|
-
}
|
83
|
-
private static class Button extends View {
|
84
|
-
|
85
|
-
@SuppressWarnings("rawtypes")
|
86
|
-
public Button(List views) {
|
87
|
-
super(views);
|
88
|
-
// TODO Auto-generated constructor stub
|
89
|
-
}
|
90
|
-
|
91
|
-
}
|
92
|
-
|
93
|
-
@SuppressWarnings("rawtypes")
|
94
|
-
public void testEvaluateSimpleQuery() throws Exception {
|
95
|
-
List<View> views = setupViews();
|
96
|
-
|
97
|
-
List evaluateQuery = UIQueryEvaluator.evaluateQuery("subview", views);
|
98
|
-
assertEquals(1, evaluateQuery.size());
|
99
|
-
assertTrue(evaluateQuery.get(0) instanceof SubView);
|
100
|
-
|
101
|
-
List evaluateQueryButtons = UIQueryEvaluator.evaluateQuery("button", views);
|
102
|
-
assertEquals(3, evaluateQueryButtons.size());
|
103
|
-
assertTrue(evaluateQueryButtons.get(0) instanceof Button);
|
104
|
-
assertTrue(evaluateQueryButtons.get(1) instanceof Button);
|
105
|
-
assertTrue(evaluateQueryButtons.get(2) instanceof Button);
|
106
|
-
|
107
|
-
}
|
108
|
-
|
109
|
-
|
110
|
-
@SuppressWarnings("rawtypes")
|
111
|
-
public void testEvaluateComposedQuery() throws Exception {
|
112
|
-
List<View> views = setupViews();
|
113
|
-
SubView vv = (SubView) views.get(1);
|
114
|
-
Button b = (Button) vv.getChildAt(0);
|
115
|
-
|
116
|
-
List evaluateQuery = UIQueryEvaluator.evaluateQuery("subview button", views);
|
117
|
-
assertEquals(1, evaluateQuery.size());
|
118
|
-
assertTrue(evaluateQuery.get(0) instanceof Button);
|
119
|
-
assertEquals(evaluateQuery.get(0), b);
|
120
|
-
|
121
|
-
|
122
|
-
}
|
123
|
-
|
124
|
-
private List<View> setupViews() {
|
125
|
-
return Arrays.asList(new View[]{
|
126
|
-
new Button(Collections.EMPTY_LIST),
|
127
|
-
new SubView(Arrays.asList(new View[]{
|
128
|
-
new Button(Collections.EMPTY_LIST)
|
129
|
-
})),
|
130
|
-
new Button(Collections.EMPTY_LIST)
|
131
|
-
});
|
132
|
-
}
|
133
|
-
|
134
|
-
}
|