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.
Files changed (192) hide show
  1. data/COPYING +204 -0
  2. data/chrome/prebuilt/Win32/Release/npchromedriver.dll +0 -0
  3. data/chrome/prebuilt/x64/Release/npchromedriver.dll +0 -0
  4. data/chrome/src/extension/background.html +9 -0
  5. data/chrome/src/extension/background.js +995 -0
  6. data/chrome/src/extension/content_script.js +1321 -0
  7. data/chrome/src/extension/icons/busy.png +0 -0
  8. data/chrome/src/extension/icons/free.png +0 -0
  9. data/chrome/src/extension/manifest-nonwin.json +19 -0
  10. data/chrome/src/extension/manifest-win.json +20 -0
  11. data/chrome/src/extension/utils.js +231 -0
  12. data/chrome/src/rb/lib/selenium/webdriver/chrome.rb +8 -0
  13. data/chrome/src/rb/lib/selenium/webdriver/chrome/bridge.rb +358 -0
  14. data/chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb +124 -0
  15. data/chrome/src/rb/lib/selenium/webdriver/chrome/launcher.rb +135 -0
  16. data/common/src/js/abstractcommandprocessor.js +134 -0
  17. data/common/src/js/asserts.js +296 -0
  18. data/common/src/js/by.js +149 -0
  19. data/common/src/js/command.js +304 -0
  20. data/common/src/js/context.js +58 -0
  21. data/common/src/js/core/Blank.html +7 -0
  22. data/common/src/js/core/InjectedRemoteRunner.html +8 -0
  23. data/common/src/js/core/RemoteRunner.html +101 -0
  24. data/common/src/js/core/SeleniumLog.html +109 -0
  25. data/common/src/js/core/TestPrompt.html +145 -0
  26. data/common/src/js/core/TestRunner-splash.html +55 -0
  27. data/common/src/js/core/TestRunner.html +165 -0
  28. data/common/src/js/core/icons/all.png +0 -0
  29. data/common/src/js/core/icons/continue.png +0 -0
  30. data/common/src/js/core/icons/continue_disabled.png +0 -0
  31. data/common/src/js/core/icons/pause.png +0 -0
  32. data/common/src/js/core/icons/pause_disabled.png +0 -0
  33. data/common/src/js/core/icons/selected.png +0 -0
  34. data/common/src/js/core/icons/step.png +0 -0
  35. data/common/src/js/core/icons/step_disabled.png +0 -0
  36. data/common/src/js/core/lib/cssQuery/cssQuery-p.js +6 -0
  37. data/common/src/js/core/lib/cssQuery/src/cssQuery-level2.js +142 -0
  38. data/common/src/js/core/lib/cssQuery/src/cssQuery-level3.js +150 -0
  39. data/common/src/js/core/lib/cssQuery/src/cssQuery-standard.js +53 -0
  40. data/common/src/js/core/lib/cssQuery/src/cssQuery.js +356 -0
  41. data/common/src/js/core/lib/prototype.js +2006 -0
  42. data/common/src/js/core/lib/scriptaculous/builder.js +101 -0
  43. data/common/src/js/core/lib/scriptaculous/controls.js +815 -0
  44. data/common/src/js/core/lib/scriptaculous/dragdrop.js +915 -0
  45. data/common/src/js/core/lib/scriptaculous/effects.js +958 -0
  46. data/common/src/js/core/lib/scriptaculous/scriptaculous.js +47 -0
  47. data/common/src/js/core/lib/scriptaculous/slider.js +283 -0
  48. data/common/src/js/core/lib/scriptaculous/unittest.js +383 -0
  49. data/common/src/js/core/lib/snapsie.js +91 -0
  50. data/common/src/js/core/scripts/find_matching_child.js +69 -0
  51. data/common/src/js/core/scripts/htmlutils.js +8716 -0
  52. data/common/src/js/core/scripts/injection.html +72 -0
  53. data/common/src/js/core/scripts/selenium-api.js +3291 -0
  54. data/common/src/js/core/scripts/selenium-browserbot.js +2457 -0
  55. data/common/src/js/core/scripts/selenium-browserdetect.js +153 -0
  56. data/common/src/js/core/scripts/selenium-commandhandlers.js +379 -0
  57. data/common/src/js/core/scripts/selenium-executionloop.js +175 -0
  58. data/common/src/js/core/scripts/selenium-logging.js +148 -0
  59. data/common/src/js/core/scripts/selenium-remoterunner.js +695 -0
  60. data/common/src/js/core/scripts/selenium-testrunner.js +1362 -0
  61. data/common/src/js/core/scripts/selenium-version.js +5 -0
  62. data/common/src/js/core/scripts/ui-doc.html +808 -0
  63. data/common/src/js/core/scripts/ui-element.js +1644 -0
  64. data/common/src/js/core/scripts/ui-map-sample.js +979 -0
  65. data/common/src/js/core/scripts/user-extensions.js +3 -0
  66. data/common/src/js/core/scripts/user-extensions.js.sample +75 -0
  67. data/common/src/js/core/scripts/xmlextras.js +153 -0
  68. data/common/src/js/core/selenium-logo.png +0 -0
  69. data/common/src/js/core/selenium-test.css +43 -0
  70. data/common/src/js/core/selenium.css +316 -0
  71. data/common/src/js/core/xpath/dom.js +566 -0
  72. data/common/src/js/core/xpath/javascript-xpath-0.1.11.js +2816 -0
  73. data/common/src/js/core/xpath/util.js +549 -0
  74. data/common/src/js/core/xpath/xmltoken.js +149 -0
  75. data/common/src/js/core/xpath/xpath.js +2481 -0
  76. data/common/src/js/extension/README +2 -0
  77. data/common/src/js/extension/dommessenger.js +152 -0
  78. data/common/src/js/factory.js +55 -0
  79. data/common/src/js/future.js +141 -0
  80. data/common/src/js/jsunit.js +40 -0
  81. data/common/src/js/jsunit/app/css/jsUnitStyle.css +50 -0
  82. data/common/src/js/jsunit/app/css/readme +10 -0
  83. data/common/src/js/jsunit/app/emptyPage.html +11 -0
  84. data/common/src/js/jsunit/app/jsUnitCore.js +534 -0
  85. data/common/src/js/jsunit/app/jsUnitMockTimeout.js +81 -0
  86. data/common/src/js/jsunit/app/jsUnitTestManager.js +705 -0
  87. data/common/src/js/jsunit/app/jsUnitTestSuite.js +44 -0
  88. data/common/src/js/jsunit/app/jsUnitTracer.js +102 -0
  89. data/common/src/js/jsunit/app/jsUnitVersionCheck.js +59 -0
  90. data/common/src/js/jsunit/app/main-counts-errors.html +12 -0
  91. data/common/src/js/jsunit/app/main-counts-failures.html +13 -0
  92. data/common/src/js/jsunit/app/main-counts-runs.html +13 -0
  93. data/common/src/js/jsunit/app/main-counts.html +21 -0
  94. data/common/src/js/jsunit/app/main-data.html +178 -0
  95. data/common/src/js/jsunit/app/main-errors.html +23 -0
  96. data/common/src/js/jsunit/app/main-frame.html +19 -0
  97. data/common/src/js/jsunit/app/main-loader.html +45 -0
  98. data/common/src/js/jsunit/app/main-progress.html +25 -0
  99. data/common/src/js/jsunit/app/main-results.html +67 -0
  100. data/common/src/js/jsunit/app/main-status.html +13 -0
  101. data/common/src/js/jsunit/app/testContainer.html +16 -0
  102. data/common/src/js/jsunit/app/testContainerController.html +77 -0
  103. data/common/src/js/jsunit/app/xbDebug.js +306 -0
  104. data/common/src/js/jsunit/changelog.txt +60 -0
  105. data/common/src/js/jsunit/css/jsUnitStyle.css +83 -0
  106. data/common/src/js/jsunit/images/green.gif +0 -0
  107. data/common/src/js/jsunit/images/logo_jsunit.gif +0 -0
  108. data/common/src/js/jsunit/images/powerby-transparent.gif +0 -0
  109. data/common/src/js/jsunit/images/red.gif +0 -0
  110. data/common/src/js/jsunit/licenses/JDOM_license.txt +56 -0
  111. data/common/src/js/jsunit/licenses/Jetty_license.html +213 -0
  112. data/common/src/js/jsunit/licenses/MPL-1.1.txt +470 -0
  113. data/common/src/js/jsunit/licenses/gpl-2.txt +340 -0
  114. data/common/src/js/jsunit/licenses/index.html +141 -0
  115. data/common/src/js/jsunit/licenses/lgpl-2.1.txt +504 -0
  116. data/common/src/js/jsunit/licenses/mpl-tri-license-c.txt +35 -0
  117. data/common/src/js/jsunit/licenses/mpl-tri-license-html.txt +35 -0
  118. data/common/src/js/jsunit/readme.txt +19 -0
  119. data/common/src/js/jsunit/testRunner.html +167 -0
  120. data/common/src/js/jsunit/version.txt +1 -0
  121. data/common/src/js/key.js +117 -0
  122. data/common/src/js/localcommandprocessor.js +185 -0
  123. data/common/src/js/testcase.js +217 -0
  124. data/common/src/js/timing.js +89 -0
  125. data/common/src/js/webdriver.js +890 -0
  126. data/common/src/js/webelement.js +485 -0
  127. data/common/src/rb/README +30 -0
  128. data/common/src/rb/lib/selenium-webdriver.rb +1 -0
  129. data/common/src/rb/lib/selenium/webdriver.rb +67 -0
  130. data/common/src/rb/lib/selenium/webdriver/bridge_helper.rb +91 -0
  131. data/common/src/rb/lib/selenium/webdriver/child_process.rb +180 -0
  132. data/common/src/rb/lib/selenium/webdriver/core_ext/dir.rb +41 -0
  133. data/common/src/rb/lib/selenium/webdriver/driver.rb +252 -0
  134. data/common/src/rb/lib/selenium/webdriver/driver_extensions/takes_screenshot.rb +24 -0
  135. data/common/src/rb/lib/selenium/webdriver/element.rb +262 -0
  136. data/common/src/rb/lib/selenium/webdriver/error.rb +67 -0
  137. data/common/src/rb/lib/selenium/webdriver/find.rb +89 -0
  138. data/common/src/rb/lib/selenium/webdriver/keys.rb +84 -0
  139. data/common/src/rb/lib/selenium/webdriver/navigation.rb +27 -0
  140. data/common/src/rb/lib/selenium/webdriver/options.rb +50 -0
  141. data/common/src/rb/lib/selenium/webdriver/platform.rb +86 -0
  142. data/common/src/rb/lib/selenium/webdriver/target_locator.rb +70 -0
  143. data/firefox/prebuilt/Win32/Release/webdriver-firefox.dll +0 -0
  144. data/firefox/prebuilt/linux/Release/libwebdriver-firefox.so +0 -0
  145. data/firefox/prebuilt/linux/Release/x_ignore_nofocus.so +0 -0
  146. data/firefox/prebuilt/linux64/Release/libwebdriver-firefox.so +0 -0
  147. data/firefox/prebuilt/linux64/Release/x_ignore_nofocus.so +0 -0
  148. data/firefox/prebuilt/nsICommandProcessor.xpt +0 -0
  149. data/firefox/prebuilt/nsINativeEvents.xpt +0 -0
  150. data/firefox/prebuilt/nsIResponseHandler.xpt +0 -0
  151. data/firefox/src/extension/chrome.manifest +3 -0
  152. data/firefox/src/extension/components/badCertListener.js +294 -0
  153. data/firefox/src/extension/components/context.js +37 -0
  154. data/firefox/src/extension/components/driver-component.js +127 -0
  155. data/firefox/src/extension/components/firefoxDriver.js +810 -0
  156. data/firefox/src/extension/components/json2.js +273 -0
  157. data/firefox/src/extension/components/keytest.html +554 -0
  158. data/firefox/src/extension/components/nsCommandProcessor.js +643 -0
  159. data/firefox/src/extension/components/promptService.js +208 -0
  160. data/firefox/src/extension/components/screenshooter.js +81 -0
  161. data/firefox/src/extension/components/socketListener.js +185 -0
  162. data/firefox/src/extension/components/utils.js +1263 -0
  163. data/firefox/src/extension/components/webLoadingListener.js +57 -0
  164. data/firefox/src/extension/components/webdriverserver.js +106 -0
  165. data/firefox/src/extension/components/wrappedElement.js +683 -0
  166. data/firefox/src/extension/content/fxdriver.xul +30 -0
  167. data/firefox/src/extension/content/server.js +95 -0
  168. data/firefox/src/extension/idl/nsICommandProcessor.idl +38 -0
  169. data/firefox/src/extension/idl/nsIResponseHandler.idl +34 -0
  170. data/firefox/src/extension/install.rdf +29 -0
  171. data/firefox/src/rb/lib/selenium/webdriver/firefox.rb +31 -0
  172. data/firefox/src/rb/lib/selenium/webdriver/firefox/binary.rb +107 -0
  173. data/firefox/src/rb/lib/selenium/webdriver/firefox/bridge.rb +484 -0
  174. data/firefox/src/rb/lib/selenium/webdriver/firefox/extension_connection.rb +90 -0
  175. data/firefox/src/rb/lib/selenium/webdriver/firefox/launcher.rb +155 -0
  176. data/firefox/src/rb/lib/selenium/webdriver/firefox/profile.rb +233 -0
  177. data/firefox/src/rb/lib/selenium/webdriver/firefox/profiles_ini.rb +59 -0
  178. data/firefox/src/rb/lib/selenium/webdriver/firefox/util.rb +23 -0
  179. data/jobbie/prebuilt/Win32/Release/InternetExplorerDriver.dll +0 -0
  180. data/jobbie/prebuilt/x64/Release/InternetExplorerDriver.dll +0 -0
  181. data/jobbie/src/rb/lib/selenium/webdriver/ie.rb +14 -0
  182. data/jobbie/src/rb/lib/selenium/webdriver/ie/bridge.rb +565 -0
  183. data/jobbie/src/rb/lib/selenium/webdriver/ie/lib.rb +99 -0
  184. data/jobbie/src/rb/lib/selenium/webdriver/ie/util.rb +147 -0
  185. data/remote/client/src/rb/lib/selenium/webdriver/remote.rb +16 -0
  186. data/remote/client/src/rb/lib/selenium/webdriver/remote/bridge.rb +408 -0
  187. data/remote/client/src/rb/lib/selenium/webdriver/remote/capabilities.rb +105 -0
  188. data/remote/client/src/rb/lib/selenium/webdriver/remote/commands.rb +53 -0
  189. data/remote/client/src/rb/lib/selenium/webdriver/remote/default_http_client.rb +71 -0
  190. data/remote/client/src/rb/lib/selenium/webdriver/remote/response.rb +49 -0
  191. data/remote/client/src/rb/lib/selenium/webdriver/remote/server_error.rb +32 -0
  192. 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
+ };