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.
- package/CHANGES.md +116 -0
- package/NOTICE +1 -1
- package/README.md +59 -9
- package/builder.js +375 -358
- package/chrome.js +549 -586
- package/edge.js +378 -0
- package/error.js +9 -6
- package/example/google_search.js +1 -1
- package/example/google_search_generator.js +2 -4
- package/example/logging.js +6 -2
- package/example/sample.js +21 -0
- package/executors.js +11 -27
- package/firefox/binary.js +149 -98
- package/firefox/extension.js +15 -19
- package/firefox/index.js +256 -163
- package/firefox/profile.js +223 -243
- package/http/index.js +487 -81
- package/http/util.js +40 -36
- package/ie.js +288 -309
- package/index.js +34 -125
- package/io/exec.js +58 -39
- package/io/index.js +72 -60
- package/lib/README +4 -0
- package/lib/actions.js +596 -0
- package/lib/by.js +277 -0
- package/lib/capabilities.js +450 -0
- package/lib/{webdriver/command.js → command.js} +91 -72
- package/lib/{webdriver/button.js → devmode.js} +13 -8
- package/lib/error.js +690 -0
- package/lib/events.js +212 -0
- package/lib/firefox/amd64/libnoblur64.so +0 -0
- package/lib/firefox/i386/libnoblur.so +0 -0
- package/lib/firefox/webdriver.json +5 -1
- package/lib/firefox/webdriver.xpi +0 -0
- package/lib/{webdriver/key.js → input.js} +84 -2
- package/lib/logging.js +670 -0
- package/lib/{webdriver/promise.js → promise.js} +817 -644
- package/lib/safari/client.js +266 -214
- package/lib/session.js +80 -0
- package/lib/{webdriver/serializable.js → symbols.js} +16 -19
- package/lib/test/build.js +4 -4
- package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
- package/lib/test/data/click_tests/overlapping_elements.html +15 -4
- package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
- package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
- package/lib/test/data/hidden_partially.html +45 -0
- package/lib/test/data/readOnlyPage.html +1 -1
- package/lib/test/data/selectPage.html +18 -2
- package/lib/test/fileserver.js +3 -4
- package/lib/test/index.js +7 -3
- package/lib/test/resources.js +1 -1
- package/lib/until.js +376 -0
- package/lib/webdriver.js +2440 -0
- package/net/index.js +4 -0
- package/net/portprober.js +16 -12
- package/opera.js +295 -314
- package/package.json +6 -5
- package/phantomjs.js +144 -147
- package/proxy.js +10 -6
- package/remote/index.js +289 -238
- package/safari.js +326 -311
- package/test/chrome/options_test.js +11 -9
- package/test/element_finding_test.js +51 -13
- package/test/execute_script_test.js +17 -3
- package/test/firefox/firefox_test.js +0 -32
- package/test/http/http_test.js +671 -61
- package/test/http/util_test.js +25 -23
- package/test/io_test.js +67 -1
- package/test/lib/by_test.js +139 -0
- package/test/lib/capabilities_test.js +111 -0
- package/test/lib/error_test.js +325 -0
- package/test/lib/events_test.js +177 -0
- package/test/lib/logging_test.js +272 -0
- package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
- package/test/lib/promise_error_test.js +808 -0
- package/test/lib/promise_flow_test.js +2282 -0
- package/test/lib/promise_generator_test.js +308 -0
- package/test/lib/promise_test.js +996 -0
- package/test/lib/testutil.js +90 -0
- package/test/lib/until_test.js +400 -0
- package/test/lib/webdriver_test.js +2157 -0
- package/test/page_loading_test.js +7 -9
- package/test/remote_test.js +50 -3
- package/test/session_test.js +53 -0
- package/test/stale_element_test.js +2 -2
- package/test/testing/assert_test.js +374 -0
- package/test/testing/index_test.js +9 -11
- package/testing/assert.js +334 -17
- package/testing/index.js +12 -2
- package/_base.js +0 -200
- package/docs/Changes.html +0 -356
- package/docs/class_bot_Error.html +0 -15
- package/docs/class_webdriver_ActionSequence.html +0 -115
- package/docs/class_webdriver_Alert.html +0 -24
- package/docs/class_webdriver_AlertPromise.html +0 -92
- package/docs/class_webdriver_Capabilities.html +0 -60
- package/docs/class_webdriver_Command.html +0 -15
- package/docs/class_webdriver_EventEmitter.html +0 -35
- package/docs/class_webdriver_FileDetector.html +0 -21
- package/docs/class_webdriver_Locator.html +0 -12
- package/docs/class_webdriver_Serializable.html +0 -9
- package/docs/class_webdriver_Session.html +0 -13
- package/docs/class_webdriver_TouchSequence.html +0 -49
- package/docs/class_webdriver_UnhandledAlertError.html +0 -18
- package/docs/class_webdriver_WebDriver.html +0 -313
- package/docs/class_webdriver_WebDriver_Logs.html +0 -15
- package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
- package/docs/class_webdriver_WebDriver_Options.html +0 -41
- package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
- package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
- package/docs/class_webdriver_WebDriver_Window.html +0 -27
- package/docs/class_webdriver_WebElement.html +0 -223
- package/docs/class_webdriver_WebElementPromise.html +0 -274
- package/docs/class_webdriver_http_Executor.html +0 -22
- package/docs/class_webdriver_http_Request.html +0 -12
- package/docs/class_webdriver_http_Response.html +0 -13
- package/docs/class_webdriver_logging_Entry.html +0 -15
- package/docs/class_webdriver_logging_Level.html +0 -55
- package/docs/class_webdriver_logging_LogRecord.html +0 -45
- package/docs/class_webdriver_logging_Logger.html +0 -119
- package/docs/class_webdriver_logging_Preferences.html +0 -8
- package/docs/class_webdriver_promise_CancellationError.html +0 -17
- package/docs/class_webdriver_promise_ControlFlow.html +0 -153
- package/docs/class_webdriver_promise_Deferred.html +0 -84
- package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
- package/docs/class_webdriver_promise_Promise.html +0 -75
- package/docs/class_webdriver_stacktrace_Frame.html +0 -20
- package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
- package/docs/class_webdriver_testing_Assertion.html +0 -99
- package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
- package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
- package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
- package/docs/class_webdriver_until_Condition.html +0 -7
- package/docs/dossier.css +0 -1
- package/docs/dossier.js +0 -86
- package/docs/enum_bot_ErrorCode.html +0 -3
- package/docs/enum_bot_Error_State.html +0 -2
- package/docs/enum_webdriver_Browser.html +0 -2
- package/docs/enum_webdriver_Button.html +0 -2
- package/docs/enum_webdriver_Capability.html +0 -33
- package/docs/enum_webdriver_CommandName.html +0 -3
- package/docs/enum_webdriver_Key.html +0 -12
- package/docs/enum_webdriver_logging_Type.html +0 -6
- package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
- package/docs/index.html +0 -125
- package/docs/interface_webdriver_CommandExecutor.html +0 -9
- package/docs/interface_webdriver_http_Client.html +0 -10
- package/docs/interface_webdriver_promise_Thenable.html +0 -77
- package/docs/module_selenium-webdriver.html +0 -23
- package/docs/module_selenium-webdriver__base.html +0 -23
- package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
- package/docs/module_selenium-webdriver_builder.html +0 -2
- package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
- package/docs/module_selenium-webdriver_chrome.html +0 -90
- package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
- package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
- package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
- package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
- package/docs/module_selenium-webdriver_class_Builder.html +0 -138
- package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
- package/docs/module_selenium-webdriver_class_Command.html +0 -15
- package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
- package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
- package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
- package/docs/module_selenium-webdriver_class_Session.html +0 -13
- package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
- package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
- package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
- package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
- package/docs/module_selenium-webdriver_enum_Button.html +0 -2
- package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
- package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
- package/docs/module_selenium-webdriver_enum_Key.html +0 -12
- package/docs/module_selenium-webdriver_error.html +0 -4
- package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
- package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
- package/docs/module_selenium-webdriver_executors.html +0 -10
- package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
- package/docs/module_selenium-webdriver_firefox.html +0 -68
- package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
- package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
- package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
- package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
- package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
- package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
- package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
- package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
- package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
- package/docs/module_selenium-webdriver_http.html +0 -9
- package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
- package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
- package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
- package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
- package/docs/module_selenium-webdriver_http_util.html +0 -17
- package/docs/module_selenium-webdriver_ie.html +0 -11
- package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
- package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
- package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
- package/docs/module_selenium-webdriver_io.html +0 -37
- package/docs/module_selenium-webdriver_io_exec.html +0 -6
- package/docs/module_selenium-webdriver_namespace_By.html +0 -56
- package/docs/module_selenium-webdriver_namespace_error.html +0 -4
- package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
- package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
- package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
- package/docs/module_selenium-webdriver_namespace_until.html +0 -82
- package/docs/module_selenium-webdriver_net.html +0 -7
- package/docs/module_selenium-webdriver_net_portprober.html +0 -12
- package/docs/module_selenium-webdriver_opera.html +0 -62
- package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
- package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
- package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
- package/docs/module_selenium-webdriver_phantomjs.html +0 -2
- package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
- package/docs/module_selenium-webdriver_proxy.html +0 -28
- package/docs/module_selenium-webdriver_remote.html +0 -8
- package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
- package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
- package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
- package/docs/module_selenium-webdriver_safari.html +0 -9
- package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
- package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
- package/docs/module_selenium-webdriver_testing.html +0 -74
- package/docs/module_selenium-webdriver_testing_assert.html +0 -9
- package/docs/namespace_bot.html +0 -4
- package/docs/namespace_bot_json.html +0 -20
- package/docs/namespace_bot_response.html +0 -18
- package/docs/namespace_bot_userAgent.html +0 -33
- package/docs/namespace_webdriver.html +0 -30
- package/docs/namespace_webdriver_By.html +0 -56
- package/docs/namespace_webdriver_http.html +0 -6
- package/docs/namespace_webdriver_logging.html +0 -70
- package/docs/namespace_webdriver_promise.html +0 -688
- package/docs/namespace_webdriver_stacktrace.html +0 -17
- package/docs/namespace_webdriver_testing.html +0 -7
- package/docs/namespace_webdriver_testing_assert.html +0 -9
- package/docs/namespace_webdriver_testing_asserts.html +0 -18
- package/docs/namespace_webdriver_until.html +0 -82
- package/docs/source/_base.js.src.html +0 -1
- package/docs/source/builder.js.src.html +0 -1
- package/docs/source/chrome.js.src.html +0 -1
- package/docs/source/error.js.src.html +0 -1
- package/docs/source/executors.js.src.html +0 -1
- package/docs/source/firefox/binary.js.src.html +0 -1
- package/docs/source/firefox/extension.js.src.html +0 -1
- package/docs/source/firefox/index.js.src.html +0 -1
- package/docs/source/firefox/profile.js.src.html +0 -1
- package/docs/source/http/index.js.src.html +0 -1
- package/docs/source/http/util.js.src.html +0 -1
- package/docs/source/ie.js.src.html +0 -1
- package/docs/source/index.js.src.html +0 -1
- package/docs/source/io/exec.js.src.html +0 -1
- package/docs/source/io/index.js.src.html +0 -1
- package/docs/source/lib/atoms/error.js.src.html +0 -1
- package/docs/source/lib/atoms/json.js.src.html +0 -1
- package/docs/source/lib/atoms/response.js.src.html +0 -1
- package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
- package/docs/source/lib/goog/array/array.js.src.html +0 -1
- package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
- package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
- package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
- package/docs/source/lib/goog/async/run.js.src.html +0 -1
- package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
- package/docs/source/lib/goog/base.js.src.html +0 -1
- package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
- package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
- package/docs/source/lib/goog/debug/error.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
- package/docs/source/lib/goog/deps.js.src.html +0 -1
- package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
- package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
- package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
- package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
- package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
- package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
- package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
- package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
- package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
- package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
- package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
- package/docs/source/lib/goog/events/event.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
- package/docs/source/lib/goog/events/events.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
- package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
- package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
- package/docs/source/lib/goog/events/listener.js.src.html +0 -1
- package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
- package/docs/source/lib/goog/fs/url.js.src.html +0 -1
- package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
- package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
- package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
- package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
- package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
- package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
- package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
- package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
- package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
- package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
- package/docs/source/lib/goog/json/json.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
- package/docs/source/lib/goog/log/log.js.src.html +0 -1
- package/docs/source/lib/goog/math/box.js.src.html +0 -1
- package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
- package/docs/source/lib/goog/math/math.js.src.html +0 -1
- package/docs/source/lib/goog/math/rect.js.src.html +0 -1
- package/docs/source/lib/goog/math/size.js.src.html +0 -1
- package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
- package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
- package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
- package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
- package/docs/source/lib/goog/object/object.js.src.html +0 -1
- package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
- package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
- package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
- package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
- package/docs/source/lib/goog/string/const.js.src.html +0 -1
- package/docs/source/lib/goog/string/string.js.src.html +0 -1
- package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
- package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
- package/docs/source/lib/goog/structs/map.js.src.html +0 -1
- package/docs/source/lib/goog/structs/set.js.src.html +0 -1
- package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
- package/docs/source/lib/goog/style/style.js.src.html +0 -1
- package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
- package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
- package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
- package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
- package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
- package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
- package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
- package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
- package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
- package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
- package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
- package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
- package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
- package/docs/source/lib/webdriver/button.js.src.html +0 -1
- package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
- package/docs/source/lib/webdriver/command.js.src.html +0 -1
- package/docs/source/lib/webdriver/events.js.src.html +0 -1
- package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
- package/docs/source/lib/webdriver/key.js.src.html +0 -1
- package/docs/source/lib/webdriver/locators.js.src.html +0 -1
- package/docs/source/lib/webdriver/logging.js.src.html +0 -1
- package/docs/source/lib/webdriver/promise.js.src.html +0 -1
- package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
- package/docs/source/lib/webdriver/session.js.src.html +0 -1
- package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
- package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
- package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
- package/docs/source/lib/webdriver/until.js.src.html +0 -1
- package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
- package/docs/source/net/index.js.src.html +0 -1
- package/docs/source/net/portprober.js.src.html +0 -1
- package/docs/source/opera.js.src.html +0 -1
- package/docs/source/phantomjs.js.src.html +0 -1
- package/docs/source/proxy.js.src.html +0 -1
- package/docs/source/remote/index.js.src.html +0 -1
- package/docs/source/safari.js.src.html +0 -1
- package/docs/source/testing/assert.js.src.html +0 -1
- package/docs/source/testing/index.js.src.html +0 -1
- package/docs/types.js +0 -1
- package/lib/atoms/error.js +0 -202
- package/lib/atoms/json.js +0 -80
- package/lib/atoms/response.js +0 -110
- package/lib/atoms/userAgent.js +0 -257
- package/lib/goog/LICENSE +0 -176
- package/lib/goog/array/array.js +0 -1654
- package/lib/goog/asserts/asserts.js +0 -365
- package/lib/goog/async/freelist.js +0 -88
- package/lib/goog/async/nexttick.js +0 -241
- package/lib/goog/async/run.js +0 -133
- package/lib/goog/async/workqueue.js +0 -139
- package/lib/goog/base.js +0 -2548
- package/lib/goog/debug/debug.js +0 -653
- package/lib/goog/debug/entrypointregistry.js +0 -158
- package/lib/goog/debug/error.js +0 -63
- package/lib/goog/debug/logbuffer.js +0 -148
- package/lib/goog/debug/logger.js +0 -873
- package/lib/goog/debug/logrecord.js +0 -242
- package/lib/goog/deps.js +0 -151
- package/lib/goog/disposable/disposable.js +0 -307
- package/lib/goog/disposable/idisposable.js +0 -45
- package/lib/goog/dom/browserfeature.js +0 -72
- package/lib/goog/dom/dom.js +0 -2991
- package/lib/goog/dom/nodetype.js +0 -48
- package/lib/goog/dom/safe.js +0 -347
- package/lib/goog/dom/tagname.js +0 -160
- package/lib/goog/dom/tags.js +0 -41
- package/lib/goog/dom/vendor.js +0 -96
- package/lib/goog/events/browserevent.js +0 -400
- package/lib/goog/events/browserfeature.js +0 -85
- package/lib/goog/events/event.js +0 -143
- package/lib/goog/events/eventid.js +0 -47
- package/lib/goog/events/events.js +0 -984
- package/lib/goog/events/eventtarget.js +0 -394
- package/lib/goog/events/eventtype.js +0 -237
- package/lib/goog/events/keycodes.js +0 -427
- package/lib/goog/events/listenable.js +0 -335
- package/lib/goog/events/listener.js +0 -131
- package/lib/goog/events/listenermap.js +0 -308
- package/lib/goog/fs/url.js +0 -109
- package/lib/goog/functions/functions.js +0 -442
- package/lib/goog/html/safehtml.js +0 -757
- package/lib/goog/html/safescript.js +0 -234
- package/lib/goog/html/safestyle.js +0 -442
- package/lib/goog/html/safestylesheet.js +0 -276
- package/lib/goog/html/safeurl.js +0 -398
- package/lib/goog/html/trustedresourceurl.js +0 -224
- package/lib/goog/html/uncheckedconversions.js +0 -232
- package/lib/goog/i18n/bidi.js +0 -908
- package/lib/goog/iter/iter.js +0 -1302
- package/lib/goog/json/json.js +0 -363
- package/lib/goog/labs/testing/assertthat.js +0 -58
- package/lib/goog/labs/testing/logicmatcher.js +0 -212
- package/lib/goog/labs/testing/matcher.js +0 -80
- package/lib/goog/labs/testing/numbermatcher.js +0 -346
- package/lib/goog/labs/testing/objectmatcher.js +0 -317
- package/lib/goog/labs/testing/stringmatcher.js +0 -415
- package/lib/goog/labs/useragent/browser.js +0 -341
- package/lib/goog/labs/useragent/engine.js +0 -160
- package/lib/goog/labs/useragent/platform.js +0 -160
- package/lib/goog/labs/useragent/util.js +0 -148
- package/lib/goog/log/log.js +0 -197
- package/lib/goog/math/box.js +0 -398
- package/lib/goog/math/coordinate.js +0 -268
- package/lib/goog/math/math.js +0 -451
- package/lib/goog/math/rect.js +0 -476
- package/lib/goog/math/size.js +0 -227
- package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
- package/lib/goog/net/xhrlike.js +0 -124
- package/lib/goog/net/xmlhttp.js +0 -246
- package/lib/goog/net/xmlhttpfactory.js +0 -67
- package/lib/goog/object/object.js +0 -686
- package/lib/goog/promise/promise.js +0 -1350
- package/lib/goog/promise/resolver.js +0 -48
- package/lib/goog/promise/thenable.js +0 -126
- package/lib/goog/reflect/reflect.js +0 -77
- package/lib/goog/string/const.js +0 -182
- package/lib/goog/string/string.js +0 -1599
- package/lib/goog/string/typedstring.js +0 -48
- package/lib/goog/structs/collection.js +0 -56
- package/lib/goog/structs/map.js +0 -457
- package/lib/goog/structs/set.js +0 -279
- package/lib/goog/structs/structs.js +0 -354
- package/lib/goog/style/style.js +0 -2037
- package/lib/goog/testing/asserts.js +0 -1278
- package/lib/goog/testing/events/events.js +0 -767
- package/lib/goog/testing/functionmock.js +0 -175
- package/lib/goog/testing/jsunit.js +0 -162
- package/lib/goog/testing/loosemock.js +0 -242
- package/lib/goog/testing/mock.js +0 -645
- package/lib/goog/testing/mockclock.js +0 -606
- package/lib/goog/testing/mockcontrol.js +0 -220
- package/lib/goog/testing/mockinterface.js +0 -45
- package/lib/goog/testing/mockmatchers.js +0 -400
- package/lib/goog/testing/objectpropertystring.js +0 -68
- package/lib/goog/testing/propertyreplacer.js +0 -262
- package/lib/goog/testing/recordfunction.js +0 -215
- package/lib/goog/testing/stacktrace.js +0 -594
- package/lib/goog/testing/strictmock.js +0 -130
- package/lib/goog/testing/testcase.js +0 -1629
- package/lib/goog/testing/testrunner.js +0 -440
- package/lib/goog/uri/uri.js +0 -1524
- package/lib/goog/uri/utils.js +0 -1064
- package/lib/goog/useragent/product.js +0 -183
- package/lib/goog/useragent/product_isversion.js +0 -144
- package/lib/goog/useragent/useragent.js +0 -572
- package/lib/webdriver/actionsequence.js +0 -356
- package/lib/webdriver/builder.js +0 -207
- package/lib/webdriver/capabilities.js +0 -412
- package/lib/webdriver/events.js +0 -179
- package/lib/webdriver/firefoxdomexecutor.js +0 -175
- package/lib/webdriver/http/corsclient.js +0 -133
- package/lib/webdriver/http/http.js +0 -525
- package/lib/webdriver/http/xhrclient.js +0 -67
- package/lib/webdriver/locators.js +0 -257
- package/lib/webdriver/logging.js +0 -347
- package/lib/webdriver/session.js +0 -74
- package/lib/webdriver/stacktrace.js +0 -619
- package/lib/webdriver/test/builder_test.js +0 -53
- package/lib/webdriver/test/capabilities_test.js +0 -72
- package/lib/webdriver/test/events_test.js +0 -203
- package/lib/webdriver/test/http/corsclient_test.js +0 -151
- package/lib/webdriver/test/http/http_test.js +0 -428
- package/lib/webdriver/test/http/xhrclient_test.js +0 -196
- package/lib/webdriver/test/locators_test.js +0 -59
- package/lib/webdriver/test/logging_test.js +0 -85
- package/lib/webdriver/test/promise_error_test.js +0 -892
- package/lib/webdriver/test/promise_flow_test.js +0 -2365
- package/lib/webdriver/test/promise_generator_test.js +0 -323
- package/lib/webdriver/test/promise_test.js +0 -2012
- package/lib/webdriver/test/stacktrace_test.js +0 -480
- package/lib/webdriver/test/test_bootstrap.js +0 -67
- package/lib/webdriver/test/testing/asserts_test.js +0 -117
- package/lib/webdriver/test/testing/client_test.js +0 -88
- package/lib/webdriver/test/testing/testcase_test.js +0 -229
- package/lib/webdriver/test/testutil.js +0 -209
- package/lib/webdriver/test/testutil_test.js +0 -104
- package/lib/webdriver/test/until_test.js +0 -411
- package/lib/webdriver/test/webdriver_generator_test.js +0 -92
- package/lib/webdriver/test/webdriver_test.js +0 -2369
- package/lib/webdriver/testing/asserts.js +0 -487
- package/lib/webdriver/testing/client.js +0 -179
- package/lib/webdriver/testing/jsunit.js +0 -363
- package/lib/webdriver/testing/testcase.js +0 -168
- package/lib/webdriver/testing/window.js +0 -244
- package/lib/webdriver/touchsequence.js +0 -248
- package/lib/webdriver/until.js +0 -412
- package/lib/webdriver/webdriver.js +0 -2511
- 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
|
-
|
|
36
|
-
assert = base.require('webdriver.testing.assert');
|
|
35
|
+
'use strict';
|
|
37
36
|
|
|
37
|
+
const assert = require('assert');
|
|
38
38
|
|
|
39
|
-
|
|
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
|
-
*
|
|
44
|
-
* @param {*} value The value to perform an assertion on.
|
|
45
|
-
* @return {!webdriver.testing.Assertion} The new assertion.
|
|
97
|
+
* @private
|
|
46
98
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
*
|
|
54
|
-
*
|
|
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
|
|
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;
|