rainux-selenium-webdriver 0.0.17
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/COPYING +204 -0
- data/chrome/prebuilt/Win32/Release/npchromedriver.dll +0 -0
- data/chrome/prebuilt/x64/Release/npchromedriver.dll +0 -0
- data/chrome/src/extension/background.html +9 -0
- data/chrome/src/extension/background.js +995 -0
- data/chrome/src/extension/content_script.js +1321 -0
- data/chrome/src/extension/icons/busy.png +0 -0
- data/chrome/src/extension/icons/free.png +0 -0
- data/chrome/src/extension/manifest-nonwin.json +19 -0
- data/chrome/src/extension/manifest-win.json +20 -0
- data/chrome/src/extension/utils.js +231 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome.rb +8 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome/bridge.rb +358 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb +124 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome/launcher.rb +135 -0
- data/common/src/js/abstractcommandprocessor.js +134 -0
- data/common/src/js/asserts.js +296 -0
- data/common/src/js/by.js +149 -0
- data/common/src/js/command.js +304 -0
- data/common/src/js/context.js +58 -0
- data/common/src/js/core/Blank.html +7 -0
- data/common/src/js/core/InjectedRemoteRunner.html +8 -0
- data/common/src/js/core/RemoteRunner.html +101 -0
- data/common/src/js/core/SeleniumLog.html +109 -0
- data/common/src/js/core/TestPrompt.html +145 -0
- data/common/src/js/core/TestRunner-splash.html +55 -0
- data/common/src/js/core/TestRunner.html +165 -0
- data/common/src/js/core/icons/all.png +0 -0
- data/common/src/js/core/icons/continue.png +0 -0
- data/common/src/js/core/icons/continue_disabled.png +0 -0
- data/common/src/js/core/icons/pause.png +0 -0
- data/common/src/js/core/icons/pause_disabled.png +0 -0
- data/common/src/js/core/icons/selected.png +0 -0
- data/common/src/js/core/icons/step.png +0 -0
- data/common/src/js/core/icons/step_disabled.png +0 -0
- data/common/src/js/core/lib/cssQuery/cssQuery-p.js +6 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery-level2.js +142 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery-level3.js +150 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery-standard.js +53 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery.js +356 -0
- data/common/src/js/core/lib/prototype.js +2006 -0
- data/common/src/js/core/lib/scriptaculous/builder.js +101 -0
- data/common/src/js/core/lib/scriptaculous/controls.js +815 -0
- data/common/src/js/core/lib/scriptaculous/dragdrop.js +915 -0
- data/common/src/js/core/lib/scriptaculous/effects.js +958 -0
- data/common/src/js/core/lib/scriptaculous/scriptaculous.js +47 -0
- data/common/src/js/core/lib/scriptaculous/slider.js +283 -0
- data/common/src/js/core/lib/scriptaculous/unittest.js +383 -0
- data/common/src/js/core/lib/snapsie.js +91 -0
- data/common/src/js/core/scripts/find_matching_child.js +69 -0
- data/common/src/js/core/scripts/htmlutils.js +8716 -0
- data/common/src/js/core/scripts/injection.html +72 -0
- data/common/src/js/core/scripts/selenium-api.js +3291 -0
- data/common/src/js/core/scripts/selenium-browserbot.js +2457 -0
- data/common/src/js/core/scripts/selenium-browserdetect.js +153 -0
- data/common/src/js/core/scripts/selenium-commandhandlers.js +379 -0
- data/common/src/js/core/scripts/selenium-executionloop.js +175 -0
- data/common/src/js/core/scripts/selenium-logging.js +148 -0
- data/common/src/js/core/scripts/selenium-remoterunner.js +695 -0
- data/common/src/js/core/scripts/selenium-testrunner.js +1362 -0
- data/common/src/js/core/scripts/selenium-version.js +5 -0
- data/common/src/js/core/scripts/ui-doc.html +808 -0
- data/common/src/js/core/scripts/ui-element.js +1644 -0
- data/common/src/js/core/scripts/ui-map-sample.js +979 -0
- data/common/src/js/core/scripts/user-extensions.js +3 -0
- data/common/src/js/core/scripts/user-extensions.js.sample +75 -0
- data/common/src/js/core/scripts/xmlextras.js +153 -0
- data/common/src/js/core/selenium-logo.png +0 -0
- data/common/src/js/core/selenium-test.css +43 -0
- data/common/src/js/core/selenium.css +316 -0
- data/common/src/js/core/xpath/dom.js +566 -0
- data/common/src/js/core/xpath/javascript-xpath-0.1.11.js +2816 -0
- data/common/src/js/core/xpath/util.js +549 -0
- data/common/src/js/core/xpath/xmltoken.js +149 -0
- data/common/src/js/core/xpath/xpath.js +2481 -0
- data/common/src/js/extension/README +2 -0
- data/common/src/js/extension/dommessenger.js +152 -0
- data/common/src/js/factory.js +55 -0
- data/common/src/js/future.js +141 -0
- data/common/src/js/jsunit.js +40 -0
- data/common/src/js/jsunit/app/css/jsUnitStyle.css +50 -0
- data/common/src/js/jsunit/app/css/readme +10 -0
- data/common/src/js/jsunit/app/emptyPage.html +11 -0
- data/common/src/js/jsunit/app/jsUnitCore.js +534 -0
- data/common/src/js/jsunit/app/jsUnitMockTimeout.js +81 -0
- data/common/src/js/jsunit/app/jsUnitTestManager.js +705 -0
- data/common/src/js/jsunit/app/jsUnitTestSuite.js +44 -0
- data/common/src/js/jsunit/app/jsUnitTracer.js +102 -0
- data/common/src/js/jsunit/app/jsUnitVersionCheck.js +59 -0
- data/common/src/js/jsunit/app/main-counts-errors.html +12 -0
- data/common/src/js/jsunit/app/main-counts-failures.html +13 -0
- data/common/src/js/jsunit/app/main-counts-runs.html +13 -0
- data/common/src/js/jsunit/app/main-counts.html +21 -0
- data/common/src/js/jsunit/app/main-data.html +178 -0
- data/common/src/js/jsunit/app/main-errors.html +23 -0
- data/common/src/js/jsunit/app/main-frame.html +19 -0
- data/common/src/js/jsunit/app/main-loader.html +45 -0
- data/common/src/js/jsunit/app/main-progress.html +25 -0
- data/common/src/js/jsunit/app/main-results.html +67 -0
- data/common/src/js/jsunit/app/main-status.html +13 -0
- data/common/src/js/jsunit/app/testContainer.html +16 -0
- data/common/src/js/jsunit/app/testContainerController.html +77 -0
- data/common/src/js/jsunit/app/xbDebug.js +306 -0
- data/common/src/js/jsunit/changelog.txt +60 -0
- data/common/src/js/jsunit/css/jsUnitStyle.css +83 -0
- data/common/src/js/jsunit/images/green.gif +0 -0
- data/common/src/js/jsunit/images/logo_jsunit.gif +0 -0
- data/common/src/js/jsunit/images/powerby-transparent.gif +0 -0
- data/common/src/js/jsunit/images/red.gif +0 -0
- data/common/src/js/jsunit/licenses/JDOM_license.txt +56 -0
- data/common/src/js/jsunit/licenses/Jetty_license.html +213 -0
- data/common/src/js/jsunit/licenses/MPL-1.1.txt +470 -0
- data/common/src/js/jsunit/licenses/gpl-2.txt +340 -0
- data/common/src/js/jsunit/licenses/index.html +141 -0
- data/common/src/js/jsunit/licenses/lgpl-2.1.txt +504 -0
- data/common/src/js/jsunit/licenses/mpl-tri-license-c.txt +35 -0
- data/common/src/js/jsunit/licenses/mpl-tri-license-html.txt +35 -0
- data/common/src/js/jsunit/readme.txt +19 -0
- data/common/src/js/jsunit/testRunner.html +167 -0
- data/common/src/js/jsunit/version.txt +1 -0
- data/common/src/js/key.js +117 -0
- data/common/src/js/localcommandprocessor.js +185 -0
- data/common/src/js/testcase.js +217 -0
- data/common/src/js/timing.js +89 -0
- data/common/src/js/webdriver.js +890 -0
- data/common/src/js/webelement.js +485 -0
- data/common/src/rb/README +30 -0
- data/common/src/rb/lib/selenium-webdriver.rb +1 -0
- data/common/src/rb/lib/selenium/webdriver.rb +67 -0
- data/common/src/rb/lib/selenium/webdriver/bridge_helper.rb +91 -0
- data/common/src/rb/lib/selenium/webdriver/child_process.rb +180 -0
- data/common/src/rb/lib/selenium/webdriver/core_ext/dir.rb +41 -0
- data/common/src/rb/lib/selenium/webdriver/driver.rb +252 -0
- data/common/src/rb/lib/selenium/webdriver/driver_extensions/takes_screenshot.rb +24 -0
- data/common/src/rb/lib/selenium/webdriver/element.rb +262 -0
- data/common/src/rb/lib/selenium/webdriver/error.rb +67 -0
- data/common/src/rb/lib/selenium/webdriver/find.rb +89 -0
- data/common/src/rb/lib/selenium/webdriver/keys.rb +84 -0
- data/common/src/rb/lib/selenium/webdriver/navigation.rb +27 -0
- data/common/src/rb/lib/selenium/webdriver/options.rb +50 -0
- data/common/src/rb/lib/selenium/webdriver/platform.rb +86 -0
- data/common/src/rb/lib/selenium/webdriver/target_locator.rb +70 -0
- data/firefox/prebuilt/Win32/Release/webdriver-firefox.dll +0 -0
- data/firefox/prebuilt/linux/Release/libwebdriver-firefox.so +0 -0
- data/firefox/prebuilt/linux/Release/x_ignore_nofocus.so +0 -0
- data/firefox/prebuilt/linux64/Release/libwebdriver-firefox.so +0 -0
- data/firefox/prebuilt/linux64/Release/x_ignore_nofocus.so +0 -0
- data/firefox/prebuilt/nsICommandProcessor.xpt +0 -0
- data/firefox/prebuilt/nsINativeEvents.xpt +0 -0
- data/firefox/prebuilt/nsIResponseHandler.xpt +0 -0
- data/firefox/src/extension/chrome.manifest +3 -0
- data/firefox/src/extension/components/badCertListener.js +294 -0
- data/firefox/src/extension/components/context.js +37 -0
- data/firefox/src/extension/components/driver-component.js +127 -0
- data/firefox/src/extension/components/firefoxDriver.js +810 -0
- data/firefox/src/extension/components/json2.js +273 -0
- data/firefox/src/extension/components/keytest.html +554 -0
- data/firefox/src/extension/components/nsCommandProcessor.js +643 -0
- data/firefox/src/extension/components/promptService.js +208 -0
- data/firefox/src/extension/components/screenshooter.js +81 -0
- data/firefox/src/extension/components/socketListener.js +185 -0
- data/firefox/src/extension/components/utils.js +1263 -0
- data/firefox/src/extension/components/webLoadingListener.js +57 -0
- data/firefox/src/extension/components/webdriverserver.js +106 -0
- data/firefox/src/extension/components/wrappedElement.js +683 -0
- data/firefox/src/extension/content/fxdriver.xul +30 -0
- data/firefox/src/extension/content/server.js +95 -0
- data/firefox/src/extension/idl/nsICommandProcessor.idl +38 -0
- data/firefox/src/extension/idl/nsIResponseHandler.idl +34 -0
- data/firefox/src/extension/install.rdf +29 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox.rb +31 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/binary.rb +107 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/bridge.rb +484 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/extension_connection.rb +90 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/launcher.rb +155 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/profile.rb +233 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/profiles_ini.rb +59 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/util.rb +23 -0
- data/jobbie/prebuilt/Win32/Release/InternetExplorerDriver.dll +0 -0
- data/jobbie/prebuilt/x64/Release/InternetExplorerDriver.dll +0 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie.rb +14 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie/bridge.rb +565 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie/lib.rb +99 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie/util.rb +147 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote.rb +16 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/bridge.rb +408 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/capabilities.rb +105 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/commands.rb +53 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/default_http_client.rb +71 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/response.rb +49 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/server_error.rb +32 -0
- metadata +303 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* ***** BEGIN LICENSE BLOCK *****
|
|
2
|
+
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
3
|
+
*
|
|
4
|
+
* The contents of this file are subject to the Mozilla Public License Version
|
|
5
|
+
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
6
|
+
* the License. You may obtain a copy of the License at
|
|
7
|
+
* http://www.mozilla.org/MPL/
|
|
8
|
+
*
|
|
9
|
+
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
10
|
+
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
11
|
+
* for the specific language governing rights and limitations under the
|
|
12
|
+
* License.
|
|
13
|
+
*
|
|
14
|
+
* The Original Code is __________________________________________.
|
|
15
|
+
*
|
|
16
|
+
* The Initial Developer of the Original Code is
|
|
17
|
+
* ____________________________________________.
|
|
18
|
+
* Portions created by the Initial Developer are Copyright (C) 2___
|
|
19
|
+
* the Initial Developer. All Rights Reserved.
|
|
20
|
+
*
|
|
21
|
+
* Contributor(s):
|
|
22
|
+
*
|
|
23
|
+
* Alternatively, the contents of this file may be used under the terms of
|
|
24
|
+
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
25
|
+
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
26
|
+
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
27
|
+
* of those above. If you wish to allow use of your version of this file only
|
|
28
|
+
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
29
|
+
* use your version of this file under the terms of the MPL, indicate your
|
|
30
|
+
* decision by deleting the provisions above and replace them with the notice
|
|
31
|
+
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
32
|
+
* the provisions above, a recipient may use your version of this file under
|
|
33
|
+
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
34
|
+
*
|
|
35
|
+
* ***** END LICENSE BLOCK ***** */
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- ***** BEGIN LICENSE BLOCK *****
|
|
2
|
+
- Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
3
|
+
-
|
|
4
|
+
- The contents of this file are subject to the Mozilla Public License Version
|
|
5
|
+
- 1.1 (the "License"); you may not use this file except in compliance with
|
|
6
|
+
- the License. You may obtain a copy of the License at
|
|
7
|
+
- http://www.mozilla.org/MPL/
|
|
8
|
+
-
|
|
9
|
+
- Software distributed under the License is distributed on an "AS IS" basis,
|
|
10
|
+
- WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
11
|
+
- for the specific language governing rights and limitations under the
|
|
12
|
+
- License.
|
|
13
|
+
-
|
|
14
|
+
- The Original Code is __________________________________________.
|
|
15
|
+
-
|
|
16
|
+
- The Initial Developer of the Original Code is
|
|
17
|
+
- ____________________________________________.
|
|
18
|
+
- Portions created by the Initial Developer are Copyright (C) 2___
|
|
19
|
+
- the Initial Developer. All Rights Reserved.
|
|
20
|
+
-
|
|
21
|
+
- Contributor(s):
|
|
22
|
+
-
|
|
23
|
+
- Alternatively, the contents of this file may be used under the terms of
|
|
24
|
+
- either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
25
|
+
- the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
26
|
+
- in which case the provisions of the GPL or the LGPL are applicable instead
|
|
27
|
+
- of those above. If you wish to allow use of your version of this file only
|
|
28
|
+
- under the terms of either the GPL or the LGPL, and not to allow others to
|
|
29
|
+
- use your version of this file under the terms of the MPL, indicate your
|
|
30
|
+
- decision by deleting the provisions above and replace them with the notice
|
|
31
|
+
- and other provisions required by the LGPL or the GPL. If you do not delete
|
|
32
|
+
- the provisions above, a recipient may use your version of this file under
|
|
33
|
+
- the terms of any one of the MPL, the GPL or the LGPL.
|
|
34
|
+
-
|
|
35
|
+
- ***** END LICENSE BLOCK ***** -->
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
JsUnit
|
|
2
|
+
Copyright (C) 2001-6 Edward Hieatt, edward@jsunit.net
|
|
3
|
+
|
|
4
|
+
This program is free software; you can redistribute it and/or
|
|
5
|
+
modify it under the terms of the GNU General Public License
|
|
6
|
+
as published by the Free Software Foundation; either version 2
|
|
7
|
+
of the License, or (at your option) any later version.
|
|
8
|
+
|
|
9
|
+
This program is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with this program; if not, write to the Free Software
|
|
16
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
17
|
+
|
|
18
|
+
Please see http://www.jsunit.net/ for JsUnit documentation and
|
|
19
|
+
the "licenses" directory for license information.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
6
|
+
<title>JsUnit Test Runner</title>
|
|
7
|
+
<script language="JavaScript" type="text/javascript" src="app/xbDebug.js"></script>
|
|
8
|
+
<script language="JavaScript" type="text/javascript" src="app/jsUnitCore.js"></script>
|
|
9
|
+
<script language="JavaScript" type="text/javascript">
|
|
10
|
+
var DEFAULT_TEST_FRAME_HEIGHT = 250;
|
|
11
|
+
|
|
12
|
+
function jsUnitParseParms(string) {
|
|
13
|
+
var i;
|
|
14
|
+
var searchString = unescape(string);
|
|
15
|
+
var parameterHash = new Object();
|
|
16
|
+
|
|
17
|
+
if (!searchString) {
|
|
18
|
+
return parameterHash;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
i = searchString.indexOf('?');
|
|
22
|
+
if (i != -1) {
|
|
23
|
+
searchString = searchString.substring(i + 1);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var parmList = searchString.split('&');
|
|
27
|
+
var a;
|
|
28
|
+
for (i = 0; i < parmList.length; i++) {
|
|
29
|
+
a = parmList[i].split('=');
|
|
30
|
+
a[0] = a[0].toLowerCase();
|
|
31
|
+
if (a.length > 1) {
|
|
32
|
+
parameterHash[a[0]] = a[1];
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
parameterHash[a[0]] = true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return parameterHash;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function jsUnitConstructTestParms() {
|
|
42
|
+
var p;
|
|
43
|
+
var parms = '';
|
|
44
|
+
|
|
45
|
+
for (p in jsUnitParmHash) {
|
|
46
|
+
var value = jsUnitParmHash[p];
|
|
47
|
+
|
|
48
|
+
if (!value ||
|
|
49
|
+
p == 'testpage' ||
|
|
50
|
+
p == 'autorun' ||
|
|
51
|
+
p == 'submitresults' ||
|
|
52
|
+
p == 'showtestframe' ||
|
|
53
|
+
p == 'resultid') {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (parms) {
|
|
58
|
+
parms += '&';
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
parms += p;
|
|
62
|
+
|
|
63
|
+
if (typeof(value) != 'boolean') {
|
|
64
|
+
parms += '=' + value;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return escape(parms);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
var jsUnitParmHash = jsUnitParseParms(document.location.search);
|
|
71
|
+
|
|
72
|
+
// set to true to turn debugging code on, false to turn it off.
|
|
73
|
+
xbDEBUG.on = jsUnitGetParm('debug') ? true : false;
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
<script language="JavaScript" type="text/javascript" src="app/jsUnitTestManager.js"></script>
|
|
77
|
+
<script language="JavaScript" type="text/javascript" src="app/jsUnitTracer.js"></script>
|
|
78
|
+
<script language="JavaScript" type="text/javascript" src="app/jsUnitTestSuite.js"></script>
|
|
79
|
+
<script language="JavaScript" type="text/javascript">
|
|
80
|
+
|
|
81
|
+
var testManager;
|
|
82
|
+
var utility;
|
|
83
|
+
var tracer;
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
if (!Array.prototype.push) {
|
|
87
|
+
Array.prototype.push = function (anObject) {
|
|
88
|
+
this[this.length] = anObject;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (!Array.prototype.pop) {
|
|
93
|
+
Array.prototype.pop = function () {
|
|
94
|
+
if (this.length > 0) {
|
|
95
|
+
delete this[this.length - 1];
|
|
96
|
+
this.length--;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function shouldKickOffTestsAutomatically() {
|
|
102
|
+
return jsUnitGetParm('autorun') == "true";
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function shouldShowTestFrame() {
|
|
106
|
+
return jsUnitGetParm('showtestframe');
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function shouldSubmitResults() {
|
|
110
|
+
return jsUnitGetParm('submitresults');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function getResultId() {
|
|
114
|
+
if (jsUnitGetParm('resultid'))
|
|
115
|
+
return jsUnitGetParm('resultid');
|
|
116
|
+
return "";
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function submitResults() {
|
|
120
|
+
window.mainFrame.mainData.document.testRunnerForm.runButton.disabled = true;
|
|
121
|
+
window.mainFrame.mainResults.populateHeaderFields(getResultId(), navigator.userAgent, JSUNIT_VERSION, testManager.resolveUserEnteredTestFileName());
|
|
122
|
+
window.mainFrame.mainResults.submitResults();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function wasResultUrlSpecified() {
|
|
126
|
+
return shouldSubmitResults() && jsUnitGetParm('submitresults') != 'true';
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function getSpecifiedResultUrl() {
|
|
130
|
+
return jsUnitGetParm('submitresults');
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function init() {
|
|
134
|
+
var testRunnerFrameset = document.getElementById('testRunnerFrameset');
|
|
135
|
+
if (shouldShowTestFrame() && testRunnerFrameset) {
|
|
136
|
+
var testFrameHeight;
|
|
137
|
+
if (jsUnitGetParm('showtestframe') == 'true')
|
|
138
|
+
testFrameHeight = DEFAULT_TEST_FRAME_HEIGHT;
|
|
139
|
+
else
|
|
140
|
+
testFrameHeight = jsUnitGetParm('showtestframe');
|
|
141
|
+
testRunnerFrameset.rows = '*,0,' + testFrameHeight;
|
|
142
|
+
}
|
|
143
|
+
testManager = new jsUnitTestManager();
|
|
144
|
+
tracer = new JsUnitTracer(testManager);
|
|
145
|
+
if (shouldKickOffTestsAutomatically()) {
|
|
146
|
+
window.mainFrame.mainData.kickOffTests();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
</script>
|
|
152
|
+
</head>
|
|
153
|
+
|
|
154
|
+
<frameset id="testRunnerFrameset" rows="*,0,0" border="0" onload="init()">
|
|
155
|
+
|
|
156
|
+
<frame frameborder="0" name="mainFrame" src="./app/main-frame.html">
|
|
157
|
+
<frame frameborder="0" name="documentLoader" src="./app/main-loader.html">
|
|
158
|
+
<frame frameborder="0" name="testContainer" src="./app/testContainer.html">
|
|
159
|
+
|
|
160
|
+
<noframes>
|
|
161
|
+
<body>
|
|
162
|
+
<p>Sorry, JsUnit requires support for frames.</p>
|
|
163
|
+
</body>
|
|
164
|
+
</noframes>
|
|
165
|
+
</frameset>
|
|
166
|
+
|
|
167
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
JsUnit 22.2 alpha 11
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/** @license
|
|
2
|
+
Copyright 2007-2009 WebDriver committers
|
|
3
|
+
Copyright 2007-2009 Google Inc.
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
goog.provide('webdriver.Key');
|
|
19
|
+
|
|
20
|
+
goog.require('goog.array');
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Representations of pressable keys that aren't text. These are stored in
|
|
25
|
+
* the Unicode PUA (Private Use Area) code points, 0xE000-0xF8FF. Refer to
|
|
26
|
+
* http://www.google.com.au/search?&q=unicode+pua&btnG=Search
|
|
27
|
+
* @enum {string}
|
|
28
|
+
*/
|
|
29
|
+
webdriver.Key = {
|
|
30
|
+
NULL: '\uE000',
|
|
31
|
+
CANCEL: '\uE001', // ^break
|
|
32
|
+
HELP: '\uE002',
|
|
33
|
+
BACK_SPACE: '\uE003',
|
|
34
|
+
TAB: '\uE004',
|
|
35
|
+
CLEAR: '\uE005',
|
|
36
|
+
RETURN: '\uE006',
|
|
37
|
+
ENTER: '\uE007',
|
|
38
|
+
SHIFT: '\uE008',
|
|
39
|
+
LEFT_SHIFT: '\uE008', // alias
|
|
40
|
+
CONTROL: '\uE009',
|
|
41
|
+
LEFT_CONTROL: '\uE009', // alias
|
|
42
|
+
ALT: '\uE00A',
|
|
43
|
+
LEFT_ALT: '\uE00A', // alias
|
|
44
|
+
PAUSE: '\uE00B',
|
|
45
|
+
ESCAPE: '\uE00C',
|
|
46
|
+
SPACE: '\uE00D',
|
|
47
|
+
PAGE_UP: '\uE00E',
|
|
48
|
+
PAGE_DOWN: '\uE00F',
|
|
49
|
+
END: '\uE010',
|
|
50
|
+
HOME: '\uE011',
|
|
51
|
+
LEFT: '\uE012',
|
|
52
|
+
ARROW_LEFT: '\uE012', // alias
|
|
53
|
+
UP: '\uE013',
|
|
54
|
+
ARROW_UP: '\uE013', // alias
|
|
55
|
+
RIGHT: '\uE014',
|
|
56
|
+
ARROW_RIGHT: '\uE014', // alias
|
|
57
|
+
DOWN: '\uE015',
|
|
58
|
+
ARROW_DOWN: '\uE015', // alias
|
|
59
|
+
INSERT: '\uE016',
|
|
60
|
+
DELETE: '\uE017',
|
|
61
|
+
SEMICOLON: '\uE018',
|
|
62
|
+
EQUALS: '\uE019',
|
|
63
|
+
|
|
64
|
+
NUMPAD0: '\uE01A', // number pad keys
|
|
65
|
+
NUMPAD1: '\uE01B',
|
|
66
|
+
NUMPAD2: '\uE01C',
|
|
67
|
+
NUMPAD3: '\uE01D',
|
|
68
|
+
NUMPAD4: '\uE01E',
|
|
69
|
+
NUMPAD5: '\uE01F',
|
|
70
|
+
NUMPAD6: '\uE020',
|
|
71
|
+
NUMPAD7: '\uE021',
|
|
72
|
+
NUMPAD8: '\uE022',
|
|
73
|
+
NUMPAD9: '\uE023',
|
|
74
|
+
MULTIPLY: '\uE024',
|
|
75
|
+
ADD: '\uE025',
|
|
76
|
+
SEPARATOR: '\uE026',
|
|
77
|
+
SUBTRACT: '\uE027',
|
|
78
|
+
DECIMAL: '\uE028',
|
|
79
|
+
DIVIDE: '\uE029',
|
|
80
|
+
|
|
81
|
+
F1: '\uE031', // function keys
|
|
82
|
+
F2: '\uE032',
|
|
83
|
+
F3: '\uE033',
|
|
84
|
+
F4: '\uE034',
|
|
85
|
+
F5: '\uE035',
|
|
86
|
+
F6: '\uE036',
|
|
87
|
+
F7: '\uE037',
|
|
88
|
+
F8: '\uE038',
|
|
89
|
+
F9: '\uE039',
|
|
90
|
+
F10: '\uE03A',
|
|
91
|
+
F11: '\uE03B',
|
|
92
|
+
F12: '\uE03C',
|
|
93
|
+
|
|
94
|
+
COMMAND: '\uE03D', // Apple command key
|
|
95
|
+
META: '\uE03D' // alias for Windows key
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Simulate pressing many keys at once in a "chord". Takes a sequence of
|
|
100
|
+
* Keys.XXXX or strings; appends each of the values to a string, and adds the
|
|
101
|
+
* chord termination key (Keys.NULL) and returns the resultant string.
|
|
102
|
+
*
|
|
103
|
+
* Note: when the low-level webdriver key handlers see Keys.NULL, active
|
|
104
|
+
* modifier keys (CTRL/ALT/SHIFT/etc) release via a keyup event.
|
|
105
|
+
*
|
|
106
|
+
* @param {string|webdriver.Key} var_args The key sequence to concatenate.
|
|
107
|
+
* @see http://code.google.com/p/webdriver/issues/detail?id=79
|
|
108
|
+
*/
|
|
109
|
+
webdriver.Key.chord = function(var_args) {
|
|
110
|
+
var sequence = goog.array.reduce(
|
|
111
|
+
goog.array.slice(arguments, 0),
|
|
112
|
+
function(str, key) {
|
|
113
|
+
return str + key;
|
|
114
|
+
}, '');
|
|
115
|
+
sequence += webdriver.Key.NULL;
|
|
116
|
+
return sequence;
|
|
117
|
+
};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/** @license
|
|
2
|
+
Copyright 2007-2009 WebDriver committers
|
|
3
|
+
Copyright 2007-2009 Google Inc.
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @fileoverview Defines a command processor that uses a browser
|
|
20
|
+
* extension/plugin object available to the Javascript on the page.
|
|
21
|
+
* @author jmleyba@gmail.com (Jason Leyba)
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
goog.provide('webdriver.LocalCommandProcessor');
|
|
25
|
+
|
|
26
|
+
goog.require('goog.array');
|
|
27
|
+
goog.require('goog.debug.Logger');
|
|
28
|
+
goog.require('goog.dom');
|
|
29
|
+
goog.require('goog.events');
|
|
30
|
+
goog.require('goog.json');
|
|
31
|
+
goog.require('goog.object');
|
|
32
|
+
goog.require('webdriver.AbstractCommandProcessor');
|
|
33
|
+
goog.require('webdriver.CommandName');
|
|
34
|
+
goog.require('webdriver.Context');
|
|
35
|
+
goog.require('webdriver.Response');
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Command processor that uses a browser extension/plugin exposed to the page
|
|
40
|
+
* for executing WebDriver commands.
|
|
41
|
+
* @param {goog.dom.DomHelper} opt_dom The DomHelper for this instance to use;
|
|
42
|
+
* defaults to a DomHelper for the current document.
|
|
43
|
+
* @constructor
|
|
44
|
+
* @extends {webdriver.AbstractCommandProcessor}
|
|
45
|
+
*/
|
|
46
|
+
webdriver.LocalCommandProcessor = function(opt_dom) {
|
|
47
|
+
webdriver.AbstractCommandProcessor.call(this);
|
|
48
|
+
// TODO(jmleyba): IE, Chrome, et al. support
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The DomHelper for this instance to use.
|
|
52
|
+
* @type {goog.dom.DomHelper}
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
this.dom_ = opt_dom || goog.dom.getDomHelper();
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The element to use for communicating with the extension.
|
|
59
|
+
* @type {Element}
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
this.documentElement_ = this.dom_.getDocument().documentElement;
|
|
63
|
+
|
|
64
|
+
// Verify the extension is installed by checking for the webdriver attribute
|
|
65
|
+
// on the documentElement.
|
|
66
|
+
var webdriverAttribute = this.documentElement_.getAttribute('webdriver');
|
|
67
|
+
if (!webdriverAttribute) {
|
|
68
|
+
throw Error(
|
|
69
|
+
'The current browser does not support a LocalCommandProcessor');
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
goog.inherits(webdriver.LocalCommandProcessor,
|
|
73
|
+
webdriver.AbstractCommandProcessor);
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The custom event types used to communicate with the browser extension.
|
|
78
|
+
* @enum {string}
|
|
79
|
+
*/
|
|
80
|
+
webdriver.LocalCommandProcessor.EventType_ = {
|
|
81
|
+
COMMAND: 'webdriverCommand',
|
|
82
|
+
RESPONSE: 'webdriverResponse'
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The attributes used to store information passed to the browser extension.
|
|
88
|
+
* @enum {string}
|
|
89
|
+
*/
|
|
90
|
+
webdriver.LocalCommandProcessor.MessageAttribute_ = {
|
|
91
|
+
COMMAND: 'command',
|
|
92
|
+
RESPONSE: 'response'
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @override
|
|
98
|
+
*/
|
|
99
|
+
webdriver.LocalCommandProcessor.prototype.disposeInternal = function() {
|
|
100
|
+
goog.events.removeAll(this.documentElement_,
|
|
101
|
+
webdriver.LocalCommandProcessor.EventType_.RESPONSE);
|
|
102
|
+
webdriver.LocalCommandProcessor.superClass_.disposeInternal.call(this);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Event handler for command responses.
|
|
108
|
+
* @param {webdriver.Command} command The initiating command.
|
|
109
|
+
* @param {Event} e The response event. The target should be a node with a
|
|
110
|
+
* {@code response} attribute.
|
|
111
|
+
*/
|
|
112
|
+
webdriver.LocalCommandProcessor.onResponse_ = function(command, e) {
|
|
113
|
+
// It is technically possible that the response could be for a different
|
|
114
|
+
// command, but this should be prevented by code higher in the WebDriverJS
|
|
115
|
+
// stack, so we don't do any error checking here.
|
|
116
|
+
if (e.type != webdriver.LocalCommandProcessor.EventType_.RESPONSE) {
|
|
117
|
+
throw Error('Not a response event!');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var jsonResponse = e.target.getAttribute(
|
|
121
|
+
webdriver.LocalCommandProcessor.MessageAttribute_.RESPONSE);
|
|
122
|
+
if (!jsonResponse) {
|
|
123
|
+
throw Error('Empty response!');
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
var rawResponse = goog.json.parse(jsonResponse);
|
|
127
|
+
goog.debug.Logger.getLogger('webdriver.LocalCommandProcessor').fine(
|
|
128
|
+
'receiving:\n' + jsonResponse);
|
|
129
|
+
|
|
130
|
+
var response = new webdriver.Response(
|
|
131
|
+
rawResponse['isError'],
|
|
132
|
+
webdriver.Context.fromString(rawResponse['context']),
|
|
133
|
+
rawResponse['response']);
|
|
134
|
+
|
|
135
|
+
// Only code in this file should be dispatching command events and listening
|
|
136
|
+
// for response events, so this is safe. If someone else decided to attach a
|
|
137
|
+
// listener anyway, tough luck.
|
|
138
|
+
goog.events.removeAll(
|
|
139
|
+
e.target, webdriver.LocalCommandProcessor.EventType_.RESPONSE);
|
|
140
|
+
command.setResponse(response);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @override
|
|
146
|
+
*/
|
|
147
|
+
webdriver.LocalCommandProcessor.prototype.dispatchDriverCommand = function(
|
|
148
|
+
command) {
|
|
149
|
+
if (command.getName() == webdriver.CommandName.SEND_KEYS) {
|
|
150
|
+
command.setParameters(command.getParameters().join(''));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
var jsonCommand = {
|
|
154
|
+
'commandName': command.getName(),
|
|
155
|
+
'context': command.getDriver().getContext().toString(),
|
|
156
|
+
'parameters': command.getParameters()
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
if (command.element) {
|
|
160
|
+
try {
|
|
161
|
+
jsonCommand['elementId'] = command.element.getId().getValue();
|
|
162
|
+
} catch (ex) {
|
|
163
|
+
window.console.dir(command);
|
|
164
|
+
throw ex;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
jsonCommand = goog.json.serialize(jsonCommand);
|
|
169
|
+
goog.debug.Logger.getLogger('webdriver.LocalCommandProcessor').fine(
|
|
170
|
+
'sending:\n' + jsonCommand);
|
|
171
|
+
|
|
172
|
+
this.documentElement_.setAttribute(
|
|
173
|
+
webdriver.LocalCommandProcessor.MessageAttribute_.COMMAND,
|
|
174
|
+
jsonCommand);
|
|
175
|
+
|
|
176
|
+
goog.events.listen(this.documentElement_,
|
|
177
|
+
webdriver.LocalCommandProcessor.EventType_.RESPONSE,
|
|
178
|
+
goog.bind(webdriver.LocalCommandProcessor.onResponse_, null, command));
|
|
179
|
+
|
|
180
|
+
var commandEvent = this.dom_.getDocument().createEvent('Event');
|
|
181
|
+
commandEvent.initEvent(
|
|
182
|
+
webdriver.LocalCommandProcessor.EventType_.COMMAND,
|
|
183
|
+
/*canBubble=*/true, /*cancelable=*/true);
|
|
184
|
+
this.documentElement_.dispatchEvent(commandEvent);
|
|
185
|
+
};
|