dojo-util
Version:
Dojo utilities including build system for optimizing JavaScript application performance, and DOH testing tool
86 lines (85 loc) • 3.96 kB
HTML
<html>
<head>
<script type="text/javascript" src="../../../dojo/dojo.js"
data-dojo-config="isDebug: true, async: true, parseOnLoad: true"></script>
<link id="themeStyles" rel="stylesheet" href="../../../dijit/themes/claro/claro.css"/>
<script>
onSubmit1 = null;
onSubmit2 = null;
require(["dojo/dom", "dojo/_base/xhr", "dijit/form/Form", "dijit/form/Button", "dojo/parser", "dijit/registry"], function(dom, xhr, Form, Button, parser, registry){
var baseURL=null;
onSubmit1 = function(){
baseURL = "http://"+dom.byId('baseIP').value+":8080/wd/hub";
var status = dom.byId('status');
var message = dom.byId('message');
var sessionId = null;
// WebDriver sends a 302 to the new test session.
// Sadly, the browser tries to follow it automatically, so the xhr will always throw an error.
xhr("POST",{
url:baseURL+"/session",
headers: { "Content-Type": "application/json"},
handleAs:"json",
postData:'{desiredCapabilities:{"nativeEvents": "true", "browserName":"android",platform:"ANDROID","version":"","browserConnectionEnabled":"true","javascriptEnabled":"true"}}',
load:function(json){
// didn't expect a JSON response...
console.log(json);
},
error:function(e,ioArgs){
console.log(msg);
status.innerHTML = "Check network tab to get session ID.";
}
});
return false;
};
onSubmit2 = function(){
// expected result: couldn't load new address
// instead, issue new POST to load test in session
var testURL = dom.byId('testURL').value;
var status = dom.byId('status');
var message = dom.byId('message');
sessionId = dom.byId('sessionID').value;
dojo.xhr("POST",{
url:baseURL+"/session/"+sessionId+"/url",
headers: { "Content-Type": "application/json"},
handleAs:"json",
postData:'{url:"'+testURL+'&remoteRobotURL=http://localhost:8080/wd/hub/session/'+sessionId+'"}',
load:function(msg){
console.log(msg);
status.innerHTML = "Test started";
message.innerHTML = msg;
},
error:function(e){
status.innerHTML = "Test did not start";
message.innerHTML = e;
}
});
};
});
</script>
</head>
<body class="claro">
<p>This is a prototype tool to assist starting a DOH test on an Android WebDriver. The goal is to automate this process into just one form submit.</p>
<p>To start a test:</p>
<ol>
<li>On your Android device, <a href="http://haysmark.dojotoolkit.org/android-server.apk">download the patched WebDriver apk</a> and start it. You will get a black screen that says WebDriver at the top.</li>
<li>Enter the IP of your Android device: <input type=text id="baseIP" name="baseIP" value="myandroidIP" /></li>
<li>Open the Network tab in the browser's debugger</li>
<li>Press <button type="button" id="button" data-dojo-type="dijit/form/Button" data-dojo-props='type:"button",label:"Submit"'>
<script type="dojo/method" data-dojo-event="onClick" data-dojo-args="evt">
onSubmit1();
</script>
</button></li>
<li>Enter the number you see in the Network tab for the failed redirect (should look something like 1342108893269 for instance): <input type=text id="sessionID" name="sessionID" value="1342108893269" /></li>
<li>Enter the DOH mobileRunner.html URL you want to test (note the loaded plugin at the end): <input type=text id="testURL" name="testURL" value="http://mywebserver/util/doh/mobileRunner.html?test=dojox/mobile/tests/robot/module&dohPlugins=doh/plugins/remoteRobot" /></li>
<li>Press <button type="button" id="button2" data-dojo-type="dijit/form/Button" data-dojo-props='type:"button",label:"Submit"'>
<script type="dojo/method" data-dojo-event="onClick" data-dojo-args="evt">
onSubmit2();
</script>
</button></li>
<li>The test should momentarily start (after ~10s) on the device (if it doesn't load after a minute, repeat the procedure; some times an unbuilt Dojo will time out while the browser is caching everything for the first time.)</li>
<hr />
<h1 id="status" />
<div id="message" />
</body>
</html>