selenium-webdriver 2.48.2 → 2.53.3

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 (534) hide show
  1. package/CHANGES.md +116 -0
  2. package/NOTICE +1 -1
  3. package/README.md +59 -9
  4. package/builder.js +375 -358
  5. package/chrome.js +549 -586
  6. package/edge.js +378 -0
  7. package/error.js +9 -6
  8. package/example/google_search.js +1 -1
  9. package/example/google_search_generator.js +2 -4
  10. package/example/logging.js +6 -2
  11. package/example/sample.js +21 -0
  12. package/executors.js +11 -27
  13. package/firefox/binary.js +149 -98
  14. package/firefox/extension.js +15 -19
  15. package/firefox/index.js +256 -163
  16. package/firefox/profile.js +223 -243
  17. package/http/index.js +487 -81
  18. package/http/util.js +40 -36
  19. package/ie.js +288 -309
  20. package/index.js +34 -125
  21. package/io/exec.js +58 -39
  22. package/io/index.js +72 -60
  23. package/lib/README +4 -0
  24. package/lib/actions.js +596 -0
  25. package/lib/by.js +277 -0
  26. package/lib/capabilities.js +450 -0
  27. package/lib/{webdriver/command.js → command.js} +91 -72
  28. package/lib/{webdriver/button.js → devmode.js} +13 -8
  29. package/lib/error.js +690 -0
  30. package/lib/events.js +212 -0
  31. package/lib/firefox/amd64/libnoblur64.so +0 -0
  32. package/lib/firefox/i386/libnoblur.so +0 -0
  33. package/lib/firefox/webdriver.json +5 -1
  34. package/lib/firefox/webdriver.xpi +0 -0
  35. package/lib/{webdriver/key.js → input.js} +84 -2
  36. package/lib/logging.js +670 -0
  37. package/lib/{webdriver/promise.js → promise.js} +817 -644
  38. package/lib/safari/client.js +266 -214
  39. package/lib/session.js +80 -0
  40. package/lib/{webdriver/serializable.js → symbols.js} +16 -19
  41. package/lib/test/build.js +4 -4
  42. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  43. package/lib/test/data/click_tests/overlapping_elements.html +15 -4
  44. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  45. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  46. package/lib/test/data/hidden_partially.html +45 -0
  47. package/lib/test/data/readOnlyPage.html +1 -1
  48. package/lib/test/data/selectPage.html +18 -2
  49. package/lib/test/fileserver.js +3 -4
  50. package/lib/test/index.js +7 -3
  51. package/lib/test/resources.js +1 -1
  52. package/lib/until.js +376 -0
  53. package/lib/webdriver.js +2440 -0
  54. package/net/index.js +4 -0
  55. package/net/portprober.js +16 -12
  56. package/opera.js +295 -314
  57. package/package.json +6 -5
  58. package/phantomjs.js +144 -147
  59. package/proxy.js +10 -6
  60. package/remote/index.js +289 -238
  61. package/safari.js +326 -311
  62. package/test/chrome/options_test.js +11 -9
  63. package/test/element_finding_test.js +51 -13
  64. package/test/execute_script_test.js +17 -3
  65. package/test/firefox/firefox_test.js +0 -32
  66. package/test/http/http_test.js +671 -61
  67. package/test/http/util_test.js +25 -23
  68. package/test/io_test.js +67 -1
  69. package/test/lib/by_test.js +139 -0
  70. package/test/lib/capabilities_test.js +111 -0
  71. package/test/lib/error_test.js +325 -0
  72. package/test/lib/events_test.js +177 -0
  73. package/test/lib/logging_test.js +272 -0
  74. package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
  75. package/test/lib/promise_error_test.js +808 -0
  76. package/test/lib/promise_flow_test.js +2282 -0
  77. package/test/lib/promise_generator_test.js +308 -0
  78. package/test/lib/promise_test.js +996 -0
  79. package/test/lib/testutil.js +90 -0
  80. package/test/lib/until_test.js +400 -0
  81. package/test/lib/webdriver_test.js +2157 -0
  82. package/test/page_loading_test.js +7 -9
  83. package/test/remote_test.js +50 -3
  84. package/test/session_test.js +53 -0
  85. package/test/stale_element_test.js +2 -2
  86. package/test/testing/assert_test.js +374 -0
  87. package/test/testing/index_test.js +9 -11
  88. package/testing/assert.js +334 -17
  89. package/testing/index.js +12 -2
  90. package/_base.js +0 -200
  91. package/docs/Changes.html +0 -356
  92. package/docs/class_bot_Error.html +0 -15
  93. package/docs/class_webdriver_ActionSequence.html +0 -115
  94. package/docs/class_webdriver_Alert.html +0 -24
  95. package/docs/class_webdriver_AlertPromise.html +0 -92
  96. package/docs/class_webdriver_Capabilities.html +0 -60
  97. package/docs/class_webdriver_Command.html +0 -15
  98. package/docs/class_webdriver_EventEmitter.html +0 -35
  99. package/docs/class_webdriver_FileDetector.html +0 -21
  100. package/docs/class_webdriver_Locator.html +0 -12
  101. package/docs/class_webdriver_Serializable.html +0 -9
  102. package/docs/class_webdriver_Session.html +0 -13
  103. package/docs/class_webdriver_TouchSequence.html +0 -49
  104. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  105. package/docs/class_webdriver_WebDriver.html +0 -313
  106. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  107. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  108. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  109. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  110. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  111. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  112. package/docs/class_webdriver_WebElement.html +0 -223
  113. package/docs/class_webdriver_WebElementPromise.html +0 -274
  114. package/docs/class_webdriver_http_Executor.html +0 -22
  115. package/docs/class_webdriver_http_Request.html +0 -12
  116. package/docs/class_webdriver_http_Response.html +0 -13
  117. package/docs/class_webdriver_logging_Entry.html +0 -15
  118. package/docs/class_webdriver_logging_Level.html +0 -55
  119. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  120. package/docs/class_webdriver_logging_Logger.html +0 -119
  121. package/docs/class_webdriver_logging_Preferences.html +0 -8
  122. package/docs/class_webdriver_promise_CancellationError.html +0 -17
  123. package/docs/class_webdriver_promise_ControlFlow.html +0 -153
  124. package/docs/class_webdriver_promise_Deferred.html +0 -84
  125. package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
  126. package/docs/class_webdriver_promise_Promise.html +0 -75
  127. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  128. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  129. package/docs/class_webdriver_testing_Assertion.html +0 -99
  130. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  131. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  132. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  133. package/docs/class_webdriver_until_Condition.html +0 -7
  134. package/docs/dossier.css +0 -1
  135. package/docs/dossier.js +0 -86
  136. package/docs/enum_bot_ErrorCode.html +0 -3
  137. package/docs/enum_bot_Error_State.html +0 -2
  138. package/docs/enum_webdriver_Browser.html +0 -2
  139. package/docs/enum_webdriver_Button.html +0 -2
  140. package/docs/enum_webdriver_Capability.html +0 -33
  141. package/docs/enum_webdriver_CommandName.html +0 -3
  142. package/docs/enum_webdriver_Key.html +0 -12
  143. package/docs/enum_webdriver_logging_Type.html +0 -6
  144. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  145. package/docs/index.html +0 -125
  146. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  147. package/docs/interface_webdriver_http_Client.html +0 -10
  148. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  149. package/docs/module_selenium-webdriver.html +0 -23
  150. package/docs/module_selenium-webdriver__base.html +0 -23
  151. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  152. package/docs/module_selenium-webdriver_builder.html +0 -2
  153. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  154. package/docs/module_selenium-webdriver_chrome.html +0 -90
  155. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  156. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  157. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  158. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  159. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  160. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  161. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  162. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  163. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  164. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  165. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  166. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  167. package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
  168. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
  169. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  170. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  171. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  172. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  173. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  174. package/docs/module_selenium-webdriver_error.html +0 -4
  175. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  176. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  177. package/docs/module_selenium-webdriver_executors.html +0 -10
  178. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  179. package/docs/module_selenium-webdriver_firefox.html +0 -68
  180. package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
  181. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
  182. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
  183. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  184. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  185. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  186. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  187. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  188. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  189. package/docs/module_selenium-webdriver_http.html +0 -9
  190. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  191. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  192. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  193. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  194. package/docs/module_selenium-webdriver_http_util.html +0 -17
  195. package/docs/module_selenium-webdriver_ie.html +0 -11
  196. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  197. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  198. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  199. package/docs/module_selenium-webdriver_io.html +0 -37
  200. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  201. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  202. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  203. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  204. package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
  205. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  206. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  207. package/docs/module_selenium-webdriver_net.html +0 -7
  208. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  209. package/docs/module_selenium-webdriver_opera.html +0 -62
  210. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  211. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  212. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  213. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  214. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  215. package/docs/module_selenium-webdriver_proxy.html +0 -28
  216. package/docs/module_selenium-webdriver_remote.html +0 -8
  217. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  218. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  219. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
  220. package/docs/module_selenium-webdriver_safari.html +0 -9
  221. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  222. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  223. package/docs/module_selenium-webdriver_testing.html +0 -74
  224. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  225. package/docs/namespace_bot.html +0 -4
  226. package/docs/namespace_bot_json.html +0 -20
  227. package/docs/namespace_bot_response.html +0 -18
  228. package/docs/namespace_bot_userAgent.html +0 -33
  229. package/docs/namespace_webdriver.html +0 -30
  230. package/docs/namespace_webdriver_By.html +0 -56
  231. package/docs/namespace_webdriver_http.html +0 -6
  232. package/docs/namespace_webdriver_logging.html +0 -70
  233. package/docs/namespace_webdriver_promise.html +0 -688
  234. package/docs/namespace_webdriver_stacktrace.html +0 -17
  235. package/docs/namespace_webdriver_testing.html +0 -7
  236. package/docs/namespace_webdriver_testing_assert.html +0 -9
  237. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  238. package/docs/namespace_webdriver_until.html +0 -82
  239. package/docs/source/_base.js.src.html +0 -1
  240. package/docs/source/builder.js.src.html +0 -1
  241. package/docs/source/chrome.js.src.html +0 -1
  242. package/docs/source/error.js.src.html +0 -1
  243. package/docs/source/executors.js.src.html +0 -1
  244. package/docs/source/firefox/binary.js.src.html +0 -1
  245. package/docs/source/firefox/extension.js.src.html +0 -1
  246. package/docs/source/firefox/index.js.src.html +0 -1
  247. package/docs/source/firefox/profile.js.src.html +0 -1
  248. package/docs/source/http/index.js.src.html +0 -1
  249. package/docs/source/http/util.js.src.html +0 -1
  250. package/docs/source/ie.js.src.html +0 -1
  251. package/docs/source/index.js.src.html +0 -1
  252. package/docs/source/io/exec.js.src.html +0 -1
  253. package/docs/source/io/index.js.src.html +0 -1
  254. package/docs/source/lib/atoms/error.js.src.html +0 -1
  255. package/docs/source/lib/atoms/json.js.src.html +0 -1
  256. package/docs/source/lib/atoms/response.js.src.html +0 -1
  257. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  258. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  259. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  260. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  261. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  262. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  263. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  264. package/docs/source/lib/goog/base.js.src.html +0 -1
  265. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  266. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  267. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  268. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  269. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  270. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  271. package/docs/source/lib/goog/deps.js.src.html +0 -1
  272. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  273. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  274. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  275. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  276. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  277. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  278. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  279. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  280. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  282. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  283. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  284. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  285. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  286. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  287. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  288. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  289. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  290. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  291. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  292. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  293. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  294. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  295. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  296. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  297. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  298. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  299. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  300. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  301. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  302. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  303. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  304. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  305. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  306. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  307. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  308. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  309. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  310. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  311. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  312. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  313. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  314. package/docs/source/lib/goog/log/log.js.src.html +0 -1
  315. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  316. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  317. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  318. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  319. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  320. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  321. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  322. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  323. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  324. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  325. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  326. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  327. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  328. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  329. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  330. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  331. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  332. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  333. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  334. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  335. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  336. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  344. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  345. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  346. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  347. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  348. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  349. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  350. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  351. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  352. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  353. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  354. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  355. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  356. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  357. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  358. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  366. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  367. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  368. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  369. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  370. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  371. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  372. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  373. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  374. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  375. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  376. package/docs/source/net/index.js.src.html +0 -1
  377. package/docs/source/net/portprober.js.src.html +0 -1
  378. package/docs/source/opera.js.src.html +0 -1
  379. package/docs/source/phantomjs.js.src.html +0 -1
  380. package/docs/source/proxy.js.src.html +0 -1
  381. package/docs/source/remote/index.js.src.html +0 -1
  382. package/docs/source/safari.js.src.html +0 -1
  383. package/docs/source/testing/assert.js.src.html +0 -1
  384. package/docs/source/testing/index.js.src.html +0 -1
  385. package/docs/types.js +0 -1
  386. package/lib/atoms/error.js +0 -202
  387. package/lib/atoms/json.js +0 -80
  388. package/lib/atoms/response.js +0 -110
  389. package/lib/atoms/userAgent.js +0 -257
  390. package/lib/goog/LICENSE +0 -176
  391. package/lib/goog/array/array.js +0 -1654
  392. package/lib/goog/asserts/asserts.js +0 -365
  393. package/lib/goog/async/freelist.js +0 -88
  394. package/lib/goog/async/nexttick.js +0 -241
  395. package/lib/goog/async/run.js +0 -133
  396. package/lib/goog/async/workqueue.js +0 -139
  397. package/lib/goog/base.js +0 -2548
  398. package/lib/goog/debug/debug.js +0 -653
  399. package/lib/goog/debug/entrypointregistry.js +0 -158
  400. package/lib/goog/debug/error.js +0 -63
  401. package/lib/goog/debug/logbuffer.js +0 -148
  402. package/lib/goog/debug/logger.js +0 -873
  403. package/lib/goog/debug/logrecord.js +0 -242
  404. package/lib/goog/deps.js +0 -151
  405. package/lib/goog/disposable/disposable.js +0 -307
  406. package/lib/goog/disposable/idisposable.js +0 -45
  407. package/lib/goog/dom/browserfeature.js +0 -72
  408. package/lib/goog/dom/dom.js +0 -2991
  409. package/lib/goog/dom/nodetype.js +0 -48
  410. package/lib/goog/dom/safe.js +0 -347
  411. package/lib/goog/dom/tagname.js +0 -160
  412. package/lib/goog/dom/tags.js +0 -41
  413. package/lib/goog/dom/vendor.js +0 -96
  414. package/lib/goog/events/browserevent.js +0 -400
  415. package/lib/goog/events/browserfeature.js +0 -85
  416. package/lib/goog/events/event.js +0 -143
  417. package/lib/goog/events/eventid.js +0 -47
  418. package/lib/goog/events/events.js +0 -984
  419. package/lib/goog/events/eventtarget.js +0 -394
  420. package/lib/goog/events/eventtype.js +0 -237
  421. package/lib/goog/events/keycodes.js +0 -427
  422. package/lib/goog/events/listenable.js +0 -335
  423. package/lib/goog/events/listener.js +0 -131
  424. package/lib/goog/events/listenermap.js +0 -308
  425. package/lib/goog/fs/url.js +0 -109
  426. package/lib/goog/functions/functions.js +0 -442
  427. package/lib/goog/html/safehtml.js +0 -757
  428. package/lib/goog/html/safescript.js +0 -234
  429. package/lib/goog/html/safestyle.js +0 -442
  430. package/lib/goog/html/safestylesheet.js +0 -276
  431. package/lib/goog/html/safeurl.js +0 -398
  432. package/lib/goog/html/trustedresourceurl.js +0 -224
  433. package/lib/goog/html/uncheckedconversions.js +0 -232
  434. package/lib/goog/i18n/bidi.js +0 -908
  435. package/lib/goog/iter/iter.js +0 -1302
  436. package/lib/goog/json/json.js +0 -363
  437. package/lib/goog/labs/testing/assertthat.js +0 -58
  438. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  439. package/lib/goog/labs/testing/matcher.js +0 -80
  440. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  441. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  442. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  443. package/lib/goog/labs/useragent/browser.js +0 -341
  444. package/lib/goog/labs/useragent/engine.js +0 -160
  445. package/lib/goog/labs/useragent/platform.js +0 -160
  446. package/lib/goog/labs/useragent/util.js +0 -148
  447. package/lib/goog/log/log.js +0 -197
  448. package/lib/goog/math/box.js +0 -398
  449. package/lib/goog/math/coordinate.js +0 -268
  450. package/lib/goog/math/math.js +0 -451
  451. package/lib/goog/math/rect.js +0 -476
  452. package/lib/goog/math/size.js +0 -227
  453. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  454. package/lib/goog/net/xhrlike.js +0 -124
  455. package/lib/goog/net/xmlhttp.js +0 -246
  456. package/lib/goog/net/xmlhttpfactory.js +0 -67
  457. package/lib/goog/object/object.js +0 -686
  458. package/lib/goog/promise/promise.js +0 -1350
  459. package/lib/goog/promise/resolver.js +0 -48
  460. package/lib/goog/promise/thenable.js +0 -126
  461. package/lib/goog/reflect/reflect.js +0 -77
  462. package/lib/goog/string/const.js +0 -182
  463. package/lib/goog/string/string.js +0 -1599
  464. package/lib/goog/string/typedstring.js +0 -48
  465. package/lib/goog/structs/collection.js +0 -56
  466. package/lib/goog/structs/map.js +0 -457
  467. package/lib/goog/structs/set.js +0 -279
  468. package/lib/goog/structs/structs.js +0 -354
  469. package/lib/goog/style/style.js +0 -2037
  470. package/lib/goog/testing/asserts.js +0 -1278
  471. package/lib/goog/testing/events/events.js +0 -767
  472. package/lib/goog/testing/functionmock.js +0 -175
  473. package/lib/goog/testing/jsunit.js +0 -162
  474. package/lib/goog/testing/loosemock.js +0 -242
  475. package/lib/goog/testing/mock.js +0 -645
  476. package/lib/goog/testing/mockclock.js +0 -606
  477. package/lib/goog/testing/mockcontrol.js +0 -220
  478. package/lib/goog/testing/mockinterface.js +0 -45
  479. package/lib/goog/testing/mockmatchers.js +0 -400
  480. package/lib/goog/testing/objectpropertystring.js +0 -68
  481. package/lib/goog/testing/propertyreplacer.js +0 -262
  482. package/lib/goog/testing/recordfunction.js +0 -215
  483. package/lib/goog/testing/stacktrace.js +0 -594
  484. package/lib/goog/testing/strictmock.js +0 -130
  485. package/lib/goog/testing/testcase.js +0 -1629
  486. package/lib/goog/testing/testrunner.js +0 -440
  487. package/lib/goog/uri/uri.js +0 -1524
  488. package/lib/goog/uri/utils.js +0 -1064
  489. package/lib/goog/useragent/product.js +0 -183
  490. package/lib/goog/useragent/product_isversion.js +0 -144
  491. package/lib/goog/useragent/useragent.js +0 -572
  492. package/lib/webdriver/actionsequence.js +0 -356
  493. package/lib/webdriver/builder.js +0 -207
  494. package/lib/webdriver/capabilities.js +0 -412
  495. package/lib/webdriver/events.js +0 -179
  496. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  497. package/lib/webdriver/http/corsclient.js +0 -133
  498. package/lib/webdriver/http/http.js +0 -525
  499. package/lib/webdriver/http/xhrclient.js +0 -67
  500. package/lib/webdriver/locators.js +0 -257
  501. package/lib/webdriver/logging.js +0 -347
  502. package/lib/webdriver/session.js +0 -74
  503. package/lib/webdriver/stacktrace.js +0 -619
  504. package/lib/webdriver/test/builder_test.js +0 -53
  505. package/lib/webdriver/test/capabilities_test.js +0 -72
  506. package/lib/webdriver/test/events_test.js +0 -203
  507. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  508. package/lib/webdriver/test/http/http_test.js +0 -428
  509. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  510. package/lib/webdriver/test/locators_test.js +0 -59
  511. package/lib/webdriver/test/logging_test.js +0 -85
  512. package/lib/webdriver/test/promise_error_test.js +0 -892
  513. package/lib/webdriver/test/promise_flow_test.js +0 -2365
  514. package/lib/webdriver/test/promise_generator_test.js +0 -323
  515. package/lib/webdriver/test/promise_test.js +0 -2012
  516. package/lib/webdriver/test/stacktrace_test.js +0 -480
  517. package/lib/webdriver/test/test_bootstrap.js +0 -67
  518. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  519. package/lib/webdriver/test/testing/client_test.js +0 -88
  520. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  521. package/lib/webdriver/test/testutil.js +0 -209
  522. package/lib/webdriver/test/testutil_test.js +0 -104
  523. package/lib/webdriver/test/until_test.js +0 -411
  524. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  525. package/lib/webdriver/test/webdriver_test.js +0 -2369
  526. package/lib/webdriver/testing/asserts.js +0 -487
  527. package/lib/webdriver/testing/client.js +0 -179
  528. package/lib/webdriver/testing/jsunit.js +0 -363
  529. package/lib/webdriver/testing/testcase.js +0 -168
  530. package/lib/webdriver/testing/window.js +0 -244
  531. package/lib/webdriver/touchsequence.js +0 -248
  532. package/lib/webdriver/until.js +0 -412
  533. package/lib/webdriver/webdriver.js +0 -2511
  534. package/test/_base_test.js +0 -129
package/testing/assert.js CHANGED
@@ -32,30 +32,347 @@
32
32
  * assert(driver.getTitle()).equalTo('Google');
33
33
  */
34
34
 
35
- var base = require('../_base'),
36
- assert = base.require('webdriver.testing.assert');
35
+ 'use strict';
37
36
 
37
+ const assert = require('assert');
38
38
 
39
- // PUBLIC API
39
+ function trueType(v) {
40
+ if (v === null) {
41
+ return 'null';
42
+ }
43
+
44
+ let type = typeof v;
45
+ if (type === 'object') {
46
+ if (Array.isArray(v)) {
47
+ type = 'array';
48
+ }
49
+ }
50
+ return type;
51
+ }
52
+
53
+
54
+ function checkType(v, want) {
55
+ let got = trueType(v);
56
+ if (got !== want) {
57
+ throw new TypeError('require ' + want + ', but got ' + got);
58
+ }
59
+ return v;
60
+ }
61
+
62
+ const checkNumber = v => checkType(v, 'number');
63
+ const checkFunction = v => checkType(v, 'function');
64
+ const checkString = v => checkType(v, 'string');
65
+
66
+ const isFunction = v => trueType(v) === 'function';
67
+ const isNumber = v => trueType(v) === 'number';
68
+ const isObject = v => trueType(v) === 'object';
69
+ const isString = v => trueType(v) === 'string';
70
+
71
+
72
+ function describe(value) {
73
+ let ret;
74
+ try {
75
+ ret = `<${String(value)}>`;
76
+ } catch (e) {
77
+ ret = `<toString failed: ${e.message}>`;
78
+ }
79
+
80
+ if (null !== value && void(0) !== value) {
81
+ ret += ` (${trueType(value)})`;
82
+ }
83
+
84
+ return ret;
85
+ }
86
+
87
+
88
+ function evaluate(value, predicate) {
89
+ if (isObject(value) && isFunction(value.then)) {
90
+ return value.then(predicate);
91
+ }
92
+ predicate(value);
93
+ }
40
94
 
41
95
 
42
96
  /**
43
- * Creates a new assertion.
44
- * @param {*} value The value to perform an assertion on.
45
- * @return {!webdriver.testing.Assertion} The new assertion.
97
+ * @private
46
98
  */
47
- module.exports = function(value) {
48
- return assert(value);
49
- };
99
+ class Assertion {
100
+ /**
101
+ * @param {?} subject The subject of this assertion.
102
+ * @param {boolean=} opt_invert Whether to invert any assertions performed by
103
+ * this instance.
104
+ */
105
+ constructor(subject, opt_invert) {
106
+ /** @private {?} */
107
+ this.subject_ = subject;
108
+ /** @private {boolean} */
109
+ this.invert_ = !!opt_invert;
110
+ }
111
+
112
+ /**
113
+ * @param {number} expected The minimum permissible value (inclusive).
114
+ * @param {string=} opt_message An optional failure message.
115
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
116
+ * is a promised-value. Otherwise, the assertion is performed immediately
117
+ * and nothing is returned.
118
+ */
119
+ atLeast(expected, opt_message) {
120
+ checkNumber(expected);
121
+ return evaluate(this.subject_, function(actual) {
122
+ if (!isNumber(actual) || actual < expected) {
123
+ assert.fail(actual, expected, opt_message, '>=');
124
+ }
125
+ });
126
+ }
127
+
128
+ /**
129
+ * @param {number} expected The maximum permissible value (inclusive).
130
+ * @param {string=} opt_message An optional failure message.
131
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
132
+ * is a promised-value. Otherwise, the assertion is performed immediately
133
+ * and nothing is returned.
134
+ */
135
+ atMost(expected, opt_message) {
136
+ checkNumber(expected);
137
+ return evaluate(this.subject_, function (actual) {
138
+ if (!isNumber(actual) || actual > expected) {
139
+ assert.fail(actual, expected, opt_message, '<=');
140
+ }
141
+ });
142
+ }
143
+
144
+ /**
145
+ * @param {number} expected The maximum permissible value (exclusive).
146
+ * @param {string=} opt_message An optional failure message.
147
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
148
+ * is a promised-value. Otherwise, the assertion is performed immediately
149
+ * and nothing is returned.
150
+ */
151
+ greaterThan(expected, opt_message) {
152
+ checkNumber(expected);
153
+ return evaluate(this.subject_, function(actual) {
154
+ if (!isNumber(actual) || actual <= expected) {
155
+ assert.fail(actual, expected, opt_message, '>');
156
+ }
157
+ });
158
+ }
159
+
160
+ /**
161
+ * @param {number} expected The minimum permissible value (exclusive).
162
+ * @param {string=} opt_message An optional failure message.
163
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
164
+ * is a promised-value. Otherwise, the assertion is performed immediately
165
+ * and nothing is returned.
166
+ */
167
+ lessThan(expected, opt_message) {
168
+ checkNumber(expected);
169
+ return evaluate(this.subject_, function (actual) {
170
+ if (!isNumber(actual) || actual >= expected) {
171
+ assert.fail(actual, expected, opt_message, '<');
172
+ }
173
+ });
174
+ }
175
+
176
+ /**
177
+ * @param {number} expected The desired value.
178
+ * @param {number} epsilon The maximum distance from the desired value.
179
+ * @param {string=} opt_message An optional failure message.
180
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
181
+ * is a promised-value. Otherwise, the assertion is performed immediately
182
+ * and nothing is returned.
183
+ */
184
+ closeTo(expected, epsilon, opt_message) {
185
+ checkNumber(expected);
186
+ checkNumber(epsilon);
187
+ return evaluate(this.subject_, function(actual) {
188
+ checkNumber(actual);
189
+ if (Math.abs(expected - actual) > epsilon) {
190
+ assert.fail(opt_message || `${actual} === ${expected} (± ${epsilon})`);
191
+ }
192
+ });
193
+ }
194
+
195
+ /**
196
+ * @param {function(new: ?)} ctor The exptected type's constructor.
197
+ * @param {string=} opt_message An optional failure message.
198
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
199
+ * is a promised-value. Otherwise, the assertion is performed immediately
200
+ * and nothing is returned.
201
+ */
202
+ instanceOf(ctor, opt_message) {
203
+ checkFunction(ctor);
204
+ return evaluate(this.subject_, function(actual) {
205
+ if (!(actual instanceof ctor)) {
206
+ assert.fail(
207
+ opt_message
208
+ || `${describe(actual)} instanceof ${ctor.name || ctor}`);
209
+ }
210
+ });
211
+ }
212
+
213
+ /**
214
+ * @param {string=} opt_message An optional failure message.
215
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
216
+ * is a promised-value. Otherwise, the assertion is performed immediately
217
+ * and nothing is returned.
218
+ */
219
+ isNull(opt_message) {
220
+ return this.isEqualTo(null);
221
+ }
222
+
223
+ /**
224
+ * @param {string=} opt_message An optional failure message.
225
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
226
+ * is a promised-value. Otherwise, the assertion is performed immediately
227
+ * and nothing is returned.
228
+ */
229
+ isUndefined(opt_message) {
230
+ return this.isEqualTo(void(0));
231
+ }
232
+
233
+ /**
234
+ * Ensures the subject of this assertion is either a string or array
235
+ * containing the given `value`.
236
+ *
237
+ * @param {?} value The value expected to be contained within the subject.
238
+ * @param {string=} opt_message An optional failure message.
239
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
240
+ * is a promised-value. Otherwise, the assertion is performed immediately
241
+ * and nothing is returned.
242
+ */
243
+ contains(value, opt_message) {
244
+ return evaluate(this.subject_, function(actual) {
245
+ if (actual instanceof Map || actual instanceof Set) {
246
+ assert.ok(actual.has(value), opt_message || `${actual}.has(${value})`);
247
+ } else if (Array.isArray(actual) || isString(actual)) {
248
+ assert.ok(
249
+ actual.indexOf(value) !== -1,
250
+ opt_message || `${actual}.indexOf(${value}) !== -1`);
251
+ } else {
252
+ assert.fail(
253
+ `Expected an array, map, set, or string: got ${describe(actual)}`);
254
+ }
255
+ });
256
+ }
257
+
258
+ /**
259
+ * @param {string} str The expected suffix.
260
+ * @param {string=} opt_message An optional failure message.
261
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
262
+ * is a promised-value. Otherwise, the assertion is performed immediately
263
+ * and nothing is returned.
264
+ */
265
+ endsWith(str, opt_message) {
266
+ checkString(str);
267
+ return evaluate(this.subject_, function(actual) {
268
+ if (!isString(actual) || !actual.endsWith(str)) {
269
+ assert.fail(actual, str, 'ends with');
270
+ }
271
+ });
272
+ }
273
+
274
+ /**
275
+ * @param {string} str The expected prefix.
276
+ * @param {string=} opt_message An optional failure message.
277
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
278
+ * is a promised-value. Otherwise, the assertion is performed immediately
279
+ * and nothing is returned.
280
+ */
281
+ startsWith(str, opt_message) {
282
+ checkString(str);
283
+ return evaluate(this.subject_, function(actual) {
284
+ if (!isString(actual) || !actual.startsWith(str)) {
285
+ assert.fail(actual, str, 'starts with');
286
+ }
287
+ });
288
+ }
289
+
290
+ /**
291
+ * @param {!RegExp} regex The regex the subject is expected to match.
292
+ * @param {string=} opt_message An optional failure message.
293
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
294
+ * is a promised-value. Otherwise, the assertion is performed immediately
295
+ * and nothing is returned.
296
+ */
297
+ matches(regex, opt_message) {
298
+ if (!(regex instanceof RegExp)) {
299
+ throw TypeError(`Not a RegExp: ${describe(regex)}`);
300
+ }
301
+ return evaluate(this.subject_, function(actual) {
302
+ if (!isString(actual) || !regex.test(actual)) {
303
+ let message = opt_message
304
+ || `Expected a string matching ${regex}, got ${describe(actual)}`;
305
+ assert.fail(actual, regex, message);
306
+ }
307
+ });
308
+ }
309
+
310
+ /**
311
+ * @param {?} value The unexpected value.
312
+ * @param {string=} opt_message An optional failure message.
313
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
314
+ * is a promised-value. Otherwise, the assertion is performed immediately
315
+ * and nothing is returned.
316
+ */
317
+ notEqualTo(value, opt_message) {
318
+ return evaluate(this.subject_, function(actual) {
319
+ assert.notStrictEqual(actual, value, opt_message);
320
+ });
321
+ }
322
+
323
+ /** An alias for {@link #isEqualTo}. */
324
+ equalTo(value, opt_message) {
325
+ return this.isEqualTo(value, opt_message);
326
+ }
327
+
328
+ /** An alias for {@link #isEqualTo}. */
329
+ equals(value, opt_message) {
330
+ return this.isEqualTo(value, opt_message);
331
+ }
332
+
333
+ /**
334
+ * @param {?} value The expected value.
335
+ * @param {string=} opt_message An optional failure message.
336
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
337
+ * is a promised-value. Otherwise, the assertion is performed immediately
338
+ * and nothing is returned.
339
+ */
340
+ isEqualTo(value, opt_message) {
341
+ return evaluate(this.subject_, function(actual) {
342
+ assert.strictEqual(actual, value, opt_message);
343
+ });
344
+ }
345
+
346
+ /**
347
+ * @param {string=} opt_message An optional failure message.
348
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
349
+ * is a promised-value. Otherwise, the assertion is performed immediately
350
+ * and nothing is returned.
351
+ */
352
+ isTrue(opt_message) {
353
+ return this.isEqualTo(true, opt_message);
354
+ }
355
+
356
+ /**
357
+ * @param {string=} opt_message An optional failure message.
358
+ * @return {(Promise|undefined)} The result of this assertion, if the subject
359
+ * is a promised-value. Otherwise, the assertion is performed immediately
360
+ * and nothing is returned.
361
+ */
362
+ isFalse(opt_message) {
363
+ return this.isEqualTo(false, opt_message);
364
+ }
365
+ }
366
+
367
+
368
+ // PUBLIC API
50
369
 
51
370
 
52
371
  /**
53
- * Registers a new assertion to expose from the
54
- * {@link webdriver.testing.Assertion} prototype.
55
- * @param {string} name The assertion name.
56
- * @param {(function(new: goog.labs.testing.Matcher, *)|
57
- * {matches: function(*): boolean,
58
- * describe: function(): string})} matcherTemplate Either the
59
- * matcher constructor to use, or an object literal defining a matcher.
372
+ * Creates an assertion about the given `value`.
373
+ * @return {!Assertion} the new assertion.
60
374
  */
61
- module.exports.register = assert.register;
375
+ module.exports = function assertThat(value) {
376
+ return new Assertion(value);
377
+ };
378
+ module.exports.Assertion = Assertion; // Exported to help generated docs
package/testing/index.js CHANGED
@@ -116,7 +116,7 @@ function wrapped(globalFn) {
116
116
  function makeAsyncTestFn(fn) {
117
117
  var async = fn.length > 0; // if test function expects a callback, its "async"
118
118
 
119
- var ret = function(done) {
119
+ var ret = /** @type {function(this: mocha.Context)}*/ (function(done) {
120
120
  var runnable = this.runnable();
121
121
  var mochaCallback = runnable.callback;
122
122
  runnable.callback = function() {
@@ -145,7 +145,7 @@ function makeAsyncTestFn(fn) {
145
145
  }
146
146
  }, flow);
147
147
  }, runnable.fullTitle()).then(seal(done), done);
148
- };
148
+ });
149
149
 
150
150
  ret.toString = function() {
151
151
  return fn.toString();
@@ -189,6 +189,16 @@ function ignore(predicateFn) {
189
189
 
190
190
  // PUBLIC API
191
191
 
192
+
193
+ /**
194
+ * @return {!promise.ControlFlow} the control flow instance used by this module
195
+ * to coordinate test actions.
196
+ */
197
+ exports.controlFlow = function(){
198
+ return flow;
199
+ };
200
+
201
+
192
202
  /**
193
203
  * Registers a new test suite.
194
204
  * @param {string} name The suite name.
package/_base.js DELETED
@@ -1,200 +0,0 @@
1
- // Licensed to the Software Freedom Conservancy (SFC) under one
2
- // or more contributor license agreements. See the NOTICE file
3
- // distributed with this work for additional information
4
- // regarding copyright ownership. The SFC licenses this file
5
- // to you under the Apache License, Version 2.0 (the
6
- // "License"); you may not use this file except in compliance
7
- // with the License. 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,
12
- // software distributed under the License is distributed on an
13
- // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- // KIND, either express or implied. See the License for the
15
- // specific language governing permissions and limitations
16
- // under the License.
17
-
18
- /**
19
- * @fileoverview The base module responsible for bootstrapping the Closure
20
- * library and providing a means of loading Closure-based modules.
21
- *
22
- * <p>Each script loaded by this module will be granted access to this module's
23
- * {@code require} function; all required non-native modules must be specified
24
- * relative to <em>this</em> module.
25
- *
26
- * <p>This module will load all scripts from the "lib" subdirectory, unless the
27
- * SELENIUM_DEV_MODE environment variable has been set to 1, in which case all
28
- * scripts will be loaded from the Selenium client containing this script.
29
- */
30
-
31
- 'use strict';
32
-
33
- var fs = require('fs'),
34
- path = require('path'),
35
- vm = require('vm');
36
-
37
-
38
- /**
39
- * If this script was loaded from the Selenium project repo, it will operate in
40
- * development mode, adjusting how it loads Closure-based dependencies.
41
- * @type {boolean}
42
- */
43
- var devMode = (function() {
44
- var buildDescFile = path.join(__dirname, '..', 'build.desc');
45
- return fs.existsSync(buildDescFile);
46
- })();
47
-
48
-
49
- /** @return {boolean} Whether this script was loaded in dev mode. */
50
- function isDevMode() {
51
- return devMode;
52
- }
53
-
54
-
55
- /**
56
- * @type {string} Path to Closure's base file, relative to this module.
57
- * @const
58
- */
59
- var CLOSURE_BASE_FILE_PATH = (function() {
60
- var relativePath = isDevMode() ?
61
- '../../../third_party/closure/goog/base.js' :
62
- './lib/goog/base.js';
63
- return path.join(__dirname, relativePath);
64
- })();
65
-
66
-
67
- /**
68
- * @type {string} Path to Closure's base file, relative to this module.
69
- * @const
70
- */
71
- var DEPS_FILE_PATH = (function() {
72
- var relativePath = isDevMode() ?
73
- '../../../javascript/deps.js' :
74
- './lib/goog/deps.js';
75
- return path.join(__dirname, relativePath);
76
- })();
77
-
78
-
79
- /**
80
- * Maintains a unique context for Closure library-based code.
81
- * @param {boolean=} opt_configureForTesting Whether to configure a fake DOM
82
- * for Closure-testing code that (incorrectly) assumes a DOM is always
83
- * present.
84
- * @constructor
85
- */
86
- function Context(opt_configureForTesting) {
87
- var closure = this.closure = vm.createContext({
88
- console: console,
89
- setTimeout: setTimeout,
90
- setInterval: setInterval,
91
- clearTimeout: clearTimeout,
92
- clearInterval: clearInterval,
93
- process: process,
94
- require: require,
95
- Buffer: Buffer,
96
- Error: Error,
97
- TypeError: TypeError,
98
- CLOSURE_BASE_PATH: path.dirname(CLOSURE_BASE_FILE_PATH) + '/',
99
- CLOSURE_IMPORT_SCRIPT: function(src, opt_srcText) {
100
- if (opt_srcText !== undefined) {
101
- // Windows paths use backslashes, which must be properly escaped before
102
- // evaluated with vm.runInContext.
103
- opt_srcText = opt_srcText.replace(/\\/g, '/');
104
- vm.runInContext(opt_srcText, closure, src);
105
- } else {
106
- loadScript(src);
107
- }
108
- return true;
109
- },
110
- CLOSURE_NO_DEPS: !isDevMode(),
111
- CLOSURE_UNCOMPILED_DEFINES: {'goog.json.USE_NATIVE_JSON': true},
112
- goog: {}
113
- });
114
- closure.window = closure.top = closure;
115
-
116
- if (opt_configureForTesting) {
117
- closure.document = {
118
- body: {},
119
- createElement: function() { return {}; },
120
- getElementsByTagName: function() { return []; }
121
- };
122
- closure.document.body.ownerDocument = closure.document;
123
- }
124
-
125
- loadScript(CLOSURE_BASE_FILE_PATH);
126
- loadScript(DEPS_FILE_PATH);
127
-
128
- // Redefine retrieveAndExecModule_ to load modules. Closure's version
129
- // assumes XMLHttpRequest is defined (and by extension that scripts
130
- // are being loaded from a server).
131
- closure.goog.retrieveAndExecModule_ = function(src) {
132
- var normalizedSrc = path.normalize(src);
133
- var contents = fs.readFileSync(normalizedSrc, 'utf8');
134
- contents = closure.goog.wrapModule_(src, contents);
135
- vm.runInContext(contents, closure, normalizedSrc);
136
- };
137
-
138
- /**
139
- * Synchronously loads a script into the protected Closure context.
140
- * @param {string} src Path to the file to load.
141
- */
142
- function loadScript(src) {
143
- src = path.normalize(src);
144
- var contents = fs.readFileSync(src, 'utf8');
145
- vm.runInContext(contents, closure, src);
146
- }
147
- }
148
-
149
-
150
- var context = new Context();
151
-
152
-
153
- /**
154
- * Loads a symbol by name from the protected Closure context.
155
- * @param {string} symbol The symbol to load.
156
- * @return {?} The loaded symbol, or {@code null} if not found.
157
- * @throws {Error} If the symbol has not been defined.
158
- */
159
- function closureRequire(symbol) {
160
- context.closure.goog.require(symbol);
161
- return context.closure.goog.getObjectByName(symbol);
162
- }
163
-
164
-
165
- // PUBLIC API
166
-
167
-
168
- /**
169
- * Loads a symbol by name from the protected Closure context and exports its
170
- * public API to the provided object. This function relies on Closure code
171
- * conventions to define the public API of an object as those properties whose
172
- * name does not end with "_".
173
- * @param {string} symbol The symbol to load. This must resolve to an object.
174
- * @return {!Object} An object with the exported API.
175
- * @throws {Error} If the symbol has not been defined or does not resolve to
176
- * an object.
177
- */
178
- exports.exportPublicApi = function(symbol) {
179
- var src = closureRequire(symbol);
180
- if (typeof src != 'object' || src === null) {
181
- throw Error('"' + symbol + '" must resolve to an object');
182
- }
183
-
184
- var dest = {};
185
- Object.keys(src).forEach(function(key) {
186
- if (key[key.length - 1] != '_') {
187
- dest[key] = src[key];
188
- }
189
- });
190
-
191
- return dest;
192
- };
193
-
194
-
195
- if (isDevMode()) {
196
- exports.closure = context.closure;
197
- }
198
- exports.Context = Context;
199
- exports.isDevMode = isDevMode;
200
- exports.require = closureRequire;