summaryrefslogtreecommitdiff
path: root/tests/FunctionalTests/selenium/selenium-seleneserunner.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/FunctionalTests/selenium/selenium-seleneserunner.js')
-rw-r--r--tests/FunctionalTests/selenium/selenium-seleneserunner.js172
1 files changed, 172 insertions, 0 deletions
diff --git a/tests/FunctionalTests/selenium/selenium-seleneserunner.js b/tests/FunctionalTests/selenium/selenium-seleneserunner.js
new file mode 100644
index 00000000..e1ae6f88
--- /dev/null
+++ b/tests/FunctionalTests/selenium/selenium-seleneserunner.js
@@ -0,0 +1,172 @@
+/*
+* Copyright 2005 ThoughtWorks, Inc
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+passColor = "#cfffcf";
+failColor = "#ffcfcf";
+errorColor = "#ffffff";
+workingColor = "#DEE7EC";
+doneColor = "#FFFFCC";
+
+slowMode = false;
+
+var cmd1 = document.createElement("div");
+var cmd2 = document.createElement("div");
+var cmd3 = document.createElement("div");
+var cmd4 = document.createElement("div");
+
+var postResult = "START";
+
+function runTest() {
+ var testAppFrame = document.getElementById('myiframe');
+ selenium = Selenium.createForFrame(testAppFrame);
+
+ commandFactory = new CommandHandlerFactory();
+ commandFactory.registerAll(selenium);
+
+ testLoop = new TestLoop(commandFactory);
+
+ testLoop.nextCommand = nextCommand;
+ testLoop.commandStarted = commandStarted;
+ testLoop.commandComplete = commandComplete;
+ testLoop.commandError = commandError;
+ testLoop.testComplete = function() {window.status = "Selenium Tests Complete, for this Test"};
+
+ document.getElementById("commandList").appendChild(cmd4);
+ document.getElementById("commandList").appendChild(cmd3);
+ document.getElementById("commandList").appendChild(cmd2);
+ document.getElementById("commandList").appendChild(cmd1);
+
+ testLoop.start();
+}
+
+function nextCommand() {
+
+ var xmlHttp = XmlHttp.create();
+
+ try {
+ alert("postResult == " + postResult);
+ if (postResult == "START") {
+ xmlHttp.open("GET", "driver?seleniumStart=true", false);
+ } else {
+ xmlHttp.open("GET", "driver?commandResult=" + postResult, false);
+ }
+ xmlHttp.send(null);
+ } catch(e) {
+ return null;
+ }
+ return extractCommand(xmlHttp);
+}
+
+function extractCommand(xmlHttp) {
+ if (slowMode) {
+ delay(2000);
+ }
+
+ var command;
+ try {
+ command = xmlHttp.responseText;
+ } catch (e) {
+ alert('could not get responseText: ' + e.message);
+ }
+ if (command.substr(0,'|testComplete'.length)=='|testComplete') {
+ return null;
+ }
+
+ return createCommandFromWikiRow(command);
+}
+
+function commandStarted(command) {
+ commandNode = document.createElement("div");
+ innerHTML = command.command + '(';
+ if (command.target != null && command.target != "") {
+ innerHTML += command.target;
+ if (command.value != null && command.value != "") {
+ innerHTML += ', ' + command.value;
+ }
+ }
+ innerHTML += ")";
+ commandNode.innerHTML = innerHTML;
+ commandNode.style.backgroundColor = workingColor;
+ document.getElementById("commandList").removeChild(cmd1);
+ document.getElementById("commandList").removeChild(cmd2);
+ document.getElementById("commandList").removeChild(cmd3);
+ document.getElementById("commandList").removeChild(cmd4);
+ cmd4 = cmd3;
+ cmd3 = cmd2;
+ cmd2 = cmd1;
+ cmd1 = commandNode;
+ document.getElementById("commandList").appendChild(cmd4);
+ document.getElementById("commandList").appendChild(cmd3);
+ document.getElementById("commandList").appendChild(cmd2);
+ document.getElementById("commandList").appendChild(cmd1);
+}
+
+function commandComplete(result) {
+ if (result.failed) {
+ postResult = result.failureMessage;
+ commandNode.title = result.failureMessage;
+ commandNode.style.backgroundColor = failColor;
+ } else if (result.passed) {
+ postResult = "PASSED";
+ commandNode.style.backgroundColor = passColor;
+ } else {
+ postResult = result.result;
+ commandNode.style.backgroundColor = doneColor;
+ }
+}
+
+function commandError(message) {
+ postResult = "ERROR";
+ commandNode.style.backgroundColor = errorColor;
+ commandNode.title = message;
+}
+
+function slowClicked() {
+ slowMode = !slowMode;
+}
+
+function delay(millis) {
+ startMillis = new Date();
+ while (true) {
+ milli = new Date();
+ if (milli-startMillis > millis) {
+ break;
+ }
+ }
+}
+
+function getIframeDocument(iframe) {
+ if (iframe.contentDocument) {
+ return iframe.contentDocument;
+ }
+ else {
+ return iframe.contentWindow.document;
+ }
+}
+
+// Parses a Wiki table row into a Javascript expression
+function createCommandFromWikiRow(wikiRow) {
+ var tokens;
+ if(tokens = wikiRow.trim().match(/^\|([^\|]*)\|([^\|]*)\|([^\|]*)\|$/m)) {
+ var functionName = tokens[1].trim();
+ var arg1 = tokens[2].trim();
+ var arg2 = tokens[3].trim();
+ return new SeleniumCommand(functionName, arg1, arg2);
+ } else {
+ throw new Error("Bad wiki row format:" + wikiRow);
+ }
+}