rainux-selenium-webdriver 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
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
+ };