!;       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                       !Helpers for parsing config files.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXSafe"#F 4 webdriver-w3c*Representation of a remote end connection.6 webdriver-w3cScheme, auth, and hostname8 webdriver-w3cAdditional path component9 webdriver-w3c*Pool of remote end connections per driver.< webdriver-w3cRemote end name.? webdriver-w3c7Push a remote end to the pool stack for a given driver.@ webdriver-w3cAttempt to pop a remote end from the pool stack for a given driver. Returns the new pool, whether or not a remote end was popped. Returns a `Just Just` if a remote end was found, a `Just Nothing` if the driver has an empty stack of remotes, and ) if the pool is undefined for the driver.A webdriver-w3cRParse a remote end config file. This file consists of 0 or more blocks of the form -DRIVER_NAME - REMOTE_END_URI - REMOTE_END_URIwhere  DRIVER_NAME is either  geckodriver or  chromedriver and each REMOTE_END_URIQ is the uri of a WebDriver remote end, including scheme. Blank lines are ignored.B webdriver-w3c`Parse a remote end command line option. This option consists of 0 or more substrings of the form .DRIVER_NAME: REMOTE_END_URI REMOTE_END_URI ...where  DRIVER_NAME is either  geckodriver or  chromedriver and each REMOTE_END_URI8 is the uri of a WebDriver remote end, including scheme.C webdriver-w3c>Parse a single remote end URI. Must include the scheme (http:/ or https:!/) even though this is redundant.D webdriver-w3cHelper function for parsing command line options with a required argument. Assumes long-form option names starting with a hyphen. Note the return type;  Just Nothing2 indicates that the option was not present, while NothingI indicates that the option was present but its required argument was not.D webdriver-w3c)Option to parse for, including hyphen(s). webdriver-w3cList of command line arguments.456789:;<=>?@ABCD<=>9:;?@45678CABD0Mini language for making falsifiable assertions.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXSafe"#N webdriver-w3c]s are the most granular kind of "test" this library deals with. Typically we'll be interested in sets of many assertions. A single test case will include one or more assertions, which for reporting purposes we'd like to summarize. The summary for a list of assertions will include the number of successes, the number of failures, and the actual failures. Modeled this way assertion summaries form a monoid, which is handy.T webdriver-w3cJAssertions are made and evaluated inside some context, represented by the T class.U webdriver-w3cMake an assertion. Typically m is a monad, and the T# instance handles the assertion in m) by e.g. logging it, changing state, etc.V webdriver-w3cLType representing the result (success or failure) of an evaluated assertion.W webdriver-w3c8Human-readable explanation for why an assertion is made.Z webdriver-w3c4Human-readable statement which may be true or false.] webdriver-w3cAn ] consists of the following:MA human-readable statement being asserted, which may be either true or false.%A result (either success or failure).A comment, representing why0 the assertion was made, to assist in debugging.1To construct assertions outside this module, use ` and a.^ webdriver-w3cDetects successful assertions._ webdriver-w3c,Basic string representation of an assertion.` webdriver-w3c!Construct a successful assertion.a webdriver-w3cConstruct a failed assertion.b webdriver-w3c.Generic boolean assertion; asserts success if Bool is true and failure otherwise.c webdriver-w3cAssertion that always succeeds.d webdriver-w3cAssertion that always fails.e webdriver-w3c Succeeds if Bool is .f webdriver-w3c Succeeds if Bool is .g webdriver-w3cSucceeds if the given ts are equal according to their   instance.h webdriver-w3cSucceeds if the given t#s are not equal according to their   instance.i webdriver-w3cISucceeds if the first list is an infix of the second, according to their   instance.j webdriver-w3cMSucceeds if the first list is not an infix of the second, according to their   instance.k webdriver-w3cUSucceeds if the first list is an infix of the second, named list, according to their   instance. This is similar to i, except that the "name" of the second list argument is used in reporting failures. Handy if the second list is very large -- say the source of a webpage.l webdriver-w3cYSucceeds if the first list is not an infix of the second, named list, according to their   instance. This is similar to j, except that the "name" of the second list argument is used in reporting failures. Handy if the second list is very large -- say the source of a webpage.! webdriver-w3cSummarize a single assertion.m webdriver-w3cSummarize a list of ]s.n webdriver-w3cSummarize a list of Ns.o webdriver-w3c'Very basic string representation of an N." webdriver-w3c Total number of assertions made. ` webdriver-w3cStatement being asserted (the what) webdriver-w3cAn additional comment (the why)a webdriver-w3cStatement being asserted (the what) webdriver-w3cAn additional comment (the why)b webdriver-w3cStatement being asserted (the what) webdriver-w3cAn additional comment (the why)c webdriver-w3cAn additional comment (the why)d webdriver-w3cAn additional comment (the why)e webdriver-w3cAn additional comment (the why)f webdriver-w3cAn additional comment (the why)g webdriver-w3cAn additional comment (the why)h webdriver-w3cAn additional comment (the why)i webdriver-w3cAn additional comment (the why)j webdriver-w3cAn additional comment (the why)k webdriver-w3cAn additional comment (the why)l webdriver-w3cAn additional comment (the why)"NOPQRSTUVWXYZ[\]^_`abcdefghijklmno"]`aZ[\WXYV^_TUNOPQRSmnobcdefghijklType representing key presses.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXSafe~ webdriver-w3cSee  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#keyboard-actions. webdriver-w3cSee  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#keyboard-actions.''2Types and functions for validating parts of a URI.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXSafe webdriver-w3cThe port part of a URI. webdriver-w3cThe host part of a URI. See  +https://tools.ietf.org/html/rfc3986#page-18. webdriver-w3c9Constructor for hosts that checks for invalid characters. webdriver-w3cConstructor for ports.(Typed arguments for WebDriver endpoints.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXNone"#?} webdriver-w3cSee  Shttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-table-for-cookie-conversion. webdriver-w3c name webdriver-w3c value webdriver-w3c path webdriver-w3c domain webdriver-w3c secure webdriver-w3c httpOnly webdriver-w3c  expiryTime webdriver-w3cSee  ^https://w3c.github.io/webdriver/webdriver-spec.html#dfn-known-prompt-handling-approaches-table. webdriver-w3c dismiss webdriver-w3c accept webdriver-w3c dismiss and notify webdriver-w3c accept and notify webdriver-w3c ignore webdriver-w3cSee  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#get-element-rect. webdriver-w3c x webdriver-w3c y webdriver-w3c width webdriver-w3c height webdriver-w3cSee  _https://w3c.github.io/webdriver/webdriver-spec.html#dfn-process-an-input-source-action-sequence. webdriver-w3c type webdriver-w3c duration webdriver-w3c origin webdriver-w3c value webdriver-w3c button webdriver-w3c x webdriver-w3c y webdriver-w3cSee  Khttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-pointer-input-state. webdriver-w3c subtype webdriver-w3cSee  Ahttps://w3c.github.io/webdriver/webdriver-spec.html#terminology-0. webdriver-w3c pause webdriver-w3c keyUp webdriver-w3c keyDown webdriver-w3c  pointerDown webdriver-w3c  pointerUp webdriver-w3c  pointerMove webdriver-w3c  pointerCancel webdriver-w3cSee  Ohttps://w3c.github.io/webdriver/webdriver-spec.html#processing-actions-requests. webdriver-w3c type webdriver-w3c id webdriver-w3c  parameters webdriver-w3c actions webdriver-w3cSee  Khttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-pointer-input-state. webdriver-w3c mouse webdriver-w3c pen webdriver-w3c touch webdriver-w3cSee  Ehttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-input-sources. webdriver-w3c null webdriver-w3c key webdriver-w3c pointer webdriver-w3cSee  Thttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-table-of-location-strategies. webdriver-w3c  css selector webdriver-w3c  link text webdriver-w3c partial link text webdriver-w3c tag name webdriver-w3c xpath webdriver-w3cSee  @https://w3c.github.io/webdriver/webdriver-spec.html#dfn-timeouts. webdriver-w3c script webdriver-w3c pageLoad webdriver-w3c implicit webdriver-w3cSee  Ahttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-proxytype. webdriver-w3c pac webdriver-w3c direct webdriver-w3c  autodetect webdriver-w3c system webdriver-w3c manual webdriver-w3cSee  Nhttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-host-and-optional-port. webdriver-w3cSee  9https://w3c.github.io/webdriver/webdriver-spec.html#proxy. webdriver-w3c  proxyType webdriver-w3c proxyAutoconfigUrl webdriver-w3c ftpProxy webdriver-w3c  httpProxy webdriver-w3c noProxy webdriver-w3c sslProxy webdriver-w3c  socksProxy webdriver-w3c  socksVersion webdriver-w3cSee  1https://github.com/mozilla/geckodriver#log-object. webdriver-w3cSee  1https://github.com/mozilla/geckodriver#log-object. webdriver-w3cSee  ;https://github.com/mozilla/geckodriver#firefox-capabilities. webdriver-w3c binary webdriver-w3c args webdriver-w3c prefs webdriver-w3cSee  Ahttps://sites.google.com/a/chromium.org/chromedriver/capabilities. webdriver-w3c binary webdriver-w3c args webdriver-w3c prefs webdriver-w3cUsed in $.  webdriver-w3cUsed in $.$ webdriver-w3cSee  @https://w3c.github.io/webdriver/webdriver-spec.html#capabilities.& webdriver-w3c  browserName' webdriver-w3c browserVersion( webdriver-w3c  platformName) webdriver-w3c acceptInsecureCerts* webdriver-w3c pageLoadStrategy+ webdriver-w3c proxy, webdriver-w3c  setWindowRect- webdriver-w3c timeouts. webdriver-w3c unhandledPromptBehavior/ webdriver-w3c  chromeOptions0 webdriver-w3c moz:firefoxOptions1 webdriver-w3c#Semantic HTTP error responses. See  Fhttps://w3c.github.io/webdriver/webdriver-spec.html#locator-strategies.N webdriver-w3c Just in case!O webdriver-w3cPossible frame references; see  Chttps://w3c.github.io/webdriver/webdriver-spec.html#switch-to-frame.S webdriver-w3c Used with getElementCssValue.T webdriver-w3c Used with getNamedCookie.U webdriver-w3c JavascriptV webdriver-w3c Used with getElementProperty.W webdriver-w3c Used with getElementAttribute.X webdriver-w3cFor use with a Locator Strategy. See  Fhttps://w3c.github.io/webdriver/webdriver-spec.html#locator-strategies.Y webdriver-w3cIdentifier for a browsing context; see  Phttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-current-browsing-context.\ webdriver-w3cSee  Mhttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-web-element-reference._ webdriver-w3cSee  Bhttps://w3c.github.io/webdriver/webdriver-spec.html#dfn-session-id.` webdriver-w3c$ with all members set to .a webdriver-w3cAll members set to  except & , which is  Just Firefox.b webdriver-w3c-Passing the "-headless" parameter to Firefox.c webdriver-w3cAll members set to  except & , which is  Just Chrome.d webdriver-w3cAll members set to .e webdriver-w3cAll members set to .f webdriver-w3c object with all members set to .g webdriver-w3c object with all members set to .h webdriver-w3cAll members set to  except , which is the empty list.i webdriver-w3cAll members set to .j webdriver-w3cAll members set to `0`.k webdriver-w3cAll members set to .# webdriver-w3cAll members other than name and value set to .# webdriver-w3c name webdriver-w3c value      !"#$%&'()*+,-./016MFK2345789:;<=>?@ABCDEGHIJLNOPQRSTUVWXYZ[\]^_`abcdefghijk_\]^YZ[XWVUTSOPQR$%&'()*+,-./0 !"#`abc     edfghijk16MFK2345789:;<=>?@ABCDEGHIJLNA WebDriver session monad.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXNone "#&'HSX2pE$ webdriver-w3c&Show the current state and environment% webdriver-w3c!Turn breakpoints off and continue& webdriver-w3cClient-supplied action webdriver-w3cWebDriver specific effects' webdriver-w3c2Representation of the actions we can perform on a Session (in the wreq sense). webdriver-w3c@Type representing an abstract outcome. Do with it what you will. webdriver-w3cWebDriver specific log entries. webdriver-w3c Includes a  Maybe String= representing the current session ID, if one has been opened.  webdriver-w3ciFormat flag for HTTP responses from the remote end. Chromedriver, for instance, is not spec-compliant. :)  webdriver-w3c#Responses as described in the spec.  webdriver-w3c%Responses as emitted by chromedriver.  webdriver-w3c'Version of the WebDriver specification.  webdriver-w3c'Candidate Recommendation, March 4, 2018 webdriver-w3c6Read-only environment variables specific to WebDriver. webdriver-w3c'Hostname of the remote WebDriver server webdriver-w3c#Port of the remote WebDriver server webdriver-w3c*Extra path for the remote WebDriver server webdriver-w3c Path where secret data is stored webdriver-w3cqFlag for the format of HTTP responses from the remote end. Needed because not all remote ends are spec-compliant. webdriver-w3c'Version of the WebDriver specification. webdriver-w3c&Errors specific to WebDriver sessions. webdriver-w3cSee Chttps://w3c.github.io/webdriver/webdriver-spec.html#handling-errors" webdriver-w3c( over (.# webdriver-w3c@Type representing configuration settings for a WebDriver session( webdriver-w3cWrapper type around )I; a stack of error, reader, writer, state, and prompt monad transformers.) webdriver-w3c-Lift a value from the inner transformed monad* webdriver-w3cDefault * effects- webdriver-w3c!Uses default geckodriver settings. webdriver-w3c'Noisy, JSON, in color, without headers./ webdriver-w3c Execute a ( session.0 webdriver-w3c Execute a (9 session, returning an assertion summary with the result.1 webdriver-w3cFor testing with QuickCheck.2 webdriver-w3c Execute a " session.3 webdriver-w3c Execute a "9 session, returning an assertion summary with the result.4 webdriver-w3cFor testing with QuickCheck5 webdriver-w3c#Get a computed value from the state6 webdriver-w3cMutate the state7 webdriver-w3c)Get a computed value from the environment: webdriver-w3cWrite a comment to the log.; webdriver-w3cBSuspend the current session. Handy when waiting for pages to load.@ webdriver-w3c3Explicitly handle any of the error types thrown in (A webdriver-w3cRethrows other error typesB webdriver-w3cRethrows other error typesC webdriver-w3cRethrows other error typesD webdriver-w3cRethrows other error typesE webdriver-w3c May throw a  JsonError.F webdriver-w3c May throw a  JsonError.G webdriver-w3c May throw a  JsonError.H webdriver-w3cCapures  HttpExceptions.I webdriver-w3cdDoes not write request or response info to the log, except to note that a request occurred. Capures  HttpExceptions.J webdriver-w3cCapures  HttpExceptions.K webdriver-w3cdDoes not write request or response info to the log, except to note that a request occurred. Capures  HttpExceptions.L webdriver-w3cCapures  HttpExceptions.M webdriver-w3cdDoes not write request or response info to the log, except to note that a request occurred. Capures  HttpExceptions.N webdriver-w3cCapures +s.O webdriver-w3cCapures +s.P webdriver-w3c+Filter the assertions from a WebDriver log., webdriver-w3cPretty printer for log entries.S webdriver-w3c$For validating responses. Throws an = error if the two arguments are not equal according to their   instance.T webdriver-w3c$For validating responses. Throws an  error if the a) argument does not satisfy the predicate.- webdriver-w3c1Promote semantic HTTP exceptions to typed errors.. webdriver-w3cFor pretty printing.V webdriver-w3cPrompt for input on /.W webdriver-w3cPrompt for input on /d, but do not echo the typed characters back to the terminal -- handy for getting suuper secret info.X webdriver-w3c Captures +sY webdriver-w3c Captures +sZ webdriver-w3c Captures +s] webdriver-w3c Standard * evaluator for .^ webdriver-w3c Standard 0 evaluator for .1 webdriver-w3c Condense to * webdriver-w3c Result check4 webdriver-w3c Condense to * webdriver-w3c Result check; webdriver-w3cWait time in millisecondsT webdriver-w3cHuman readable error labelV webdriver-w3c Prompt textW webdriver-w3c Prompt text %$#"! &-,+*)('3210/.U      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^"234(/01)]^#$%&'*+,-.567:;89<=>?STUABCD@EFGHIJKLMNOUVWXYZQR\[3210/. !      &-,+*)('%$#"! PUtility typeclasses2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXNone<r webdriver-w3cTypes which carry a  window handle as described in  1https://www.w3.org/TR/webdriver/#command-contexts.t webdriver-w3cTypes which carry a web element reference as described in  )https://www.w3.org/TR/webdriver/#elements.rstuturs.Type-safe bindings for the WebDriver HTTP API.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXNonehCx webdriver-w3c;Spec-defined "web element identifier" string constant. See  <https://w3c.github.io/webdriver/webdriver-spec.html#elements.y webdriver-w3c:Spec-defined "web window identifier" string constant. See  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#command-contexts.z webdriver-w3c9Spec-defined "web frame identifier" string constant. See  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#command-contexts.1 webdriver-w3c#Url of the remote WebDriver server.2 webdriver-w3c4Url of the remote WebDriver server, with session ID.3 webdriver-w3cSet the session id of a .4 webdriver-w3cuIf a WebDriver session ends without issuing a delete session command, then the server keeps its session state alive. 4# catches errors and ensures that a ~ request is sent.{ webdriver-w3cqRun a WebDriver computation in an isolated browser session. Ensures that the session is closed on the remote end.| webdriver-w3cSee  ?https://w3c.github.io/webdriver/webdriver-spec.html#new-sessionZ. For an extensible version allowing arbitrary changes to the JSON value representing the $ parameter, see }.} webdriver-w3cSee  ?https://w3c.github.io/webdriver/webdriver-spec.html#new-session. This generalizes }" by taking an additional function Value -> Value that is applied to the $S parameter after it is converted to JSON, but before it is passed to the HTTP call.~ webdriver-w3cSee  Bhttps://w3c.github.io/webdriver/webdriver-spec.html#delete-session. webdriver-w3cSee  :https://w3c.github.io/webdriver/webdriver-spec.html#status. webdriver-w3cSee  @https://w3c.github.io/webdriver/webdriver-spec.html#get-timeouts. webdriver-w3cSee  @https://w3c.github.io/webdriver/webdriver-spec.html#set-timeouts. webdriver-w3cSee  ?https://w3c.github.io/webdriver/webdriver-spec.html#navigate-toH. To access this enpoint without logging the request or the result, use . webdriver-w3cSee  ?https://w3c.github.io/webdriver/webdriver-spec.html#navigate-toa. This function does not log the request or response; if you do want the interaction logged, use . webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#get-current-url. webdriver-w3cSee  8https://w3c.github.io/webdriver/webdriver-spec.html#back. webdriver-w3cSee  ;https://w3c.github.io/webdriver/webdriver-spec.html#forward. webdriver-w3cSee  ;https://w3c.github.io/webdriver/webdriver-spec.html#refresh. webdriver-w3cSee  =https://w3c.github.io/webdriver/webdriver-spec.html#get-title. webdriver-w3cSee  Ehttps://w3c.github.io/webdriver/webdriver-spec.html#get-window-handle. webdriver-w3cSee  @https://w3c.github.io/webdriver/webdriver-spec.html#close-window. webdriver-w3cSee  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#switch-to-window. webdriver-w3cSee  Fhttps://w3c.github.io/webdriver/webdriver-spec.html#get-window-handles. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#switch-to-frame. webdriver-w3cSee  Jhttps://w3c.github.io/webdriver/webdriver-spec.html#switch-to-parent-frame. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#get-window-rect. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#set-window-rect. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#maximize-window. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#minimize-window. webdriver-w3cSee  Ehttps://w3c.github.io/webdriver/webdriver-spec.html#fullscreen-window. webdriver-w3cSee  @https://w3c.github.io/webdriver/webdriver-spec.html#find-element. webdriver-w3cSee  Ahttps://w3c.github.io/webdriver/webdriver-spec.html#find-elements. webdriver-w3cSee  Mhttps://w3c.github.io/webdriver/webdriver-spec.html#find-element-from-element. webdriver-w3cSee  Nhttps://w3c.github.io/webdriver/webdriver-spec.html#find-elements-from-element. webdriver-w3cSee  Fhttps://w3c.github.io/webdriver/webdriver-spec.html#get-active-element. webdriver-w3cSee  Ghttps://w3c.github.io/webdriver/webdriver-spec.html#is-element-selected. webdriver-w3cSee  Ihttps://w3c.github.io/webdriver/webdriver-spec.html#get-element-attribute. webdriver-w3cSee  Hhttps://w3c.github.io/webdriver/webdriver-spec.html#get-element-property. webdriver-w3cSee  Ihttps://w3c.github.io/webdriver/webdriver-spec.html#get-element-css-value. webdriver-w3cSee  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#get-element-text. webdriver-w3cSee  Hhttps://w3c.github.io/webdriver/webdriver-spec.html#get-element-tag-name. webdriver-w3cSee  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#get-element-rect. webdriver-w3cSee  Fhttps://w3c.github.io/webdriver/webdriver-spec.html#is-element-enabled. webdriver-w3cSee  Ahttps://w3c.github.io/webdriver/webdriver-spec.html#element-click. webdriver-w3cSee  Ahttps://w3c.github.io/webdriver/webdriver-spec.html#element-clear. webdriver-w3cSee  Ehttps://w3c.github.io/webdriver/webdriver-spec.html#element-send-keys. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#get-page-source. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#get-page-source1. Does not dump the page source into the logs. :) webdriver-w3cSee  Bhttps://w3c.github.io/webdriver/webdriver-spec.html#execute-script. webdriver-w3cSee  Hhttps://w3c.github.io/webdriver/webdriver-spec.html#execute-async-script. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#get-all-cookies. webdriver-w3cSee  Dhttps://w3c.github.io/webdriver/webdriver-spec.html#get-named-cookie. webdriver-w3cSee  >https://w3c.github.io/webdriver/webdriver-spec.html#add-cookie. webdriver-w3cSee  Ahttps://w3c.github.io/webdriver/webdriver-spec.html#delete-cookie. webdriver-w3cSee  Fhttps://w3c.github.io/webdriver/webdriver-spec.html#delete-all-cookies. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#perform-actionsQ. For a variant on this endpoint that does not log the request and response, see . webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#perform-actions . This function is identical to _ except that it does not log the request or response. Handy if the action includes secret info. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#release-actions. webdriver-w3cSee  Ahttps://w3c.github.io/webdriver/webdriver-spec.html#dismiss-alert. webdriver-w3cSee  @https://w3c.github.io/webdriver/webdriver-spec.html#accept-alert. webdriver-w3cSee  Bhttps://w3c.github.io/webdriver/webdriver-spec.html#get-alert-text. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#send-alert-text. webdriver-w3cSee  Chttps://w3c.github.io/webdriver/webdriver-spec.html#take-screenshot. webdriver-w3cSee  Khttps://w3c.github.io/webdriver/webdriver-spec.html#take-element-screenshot.5 webdriver-w3ciDetect empty responses by response format. Necessary because chromedriver is not strictly spec compliant.4 webdriver-w3c WebDriver session that may throw errors>xyz{|}~>{|}~xyz !Higher level WebDriver utilities.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXNone  webdriver-w3c2Save all cookies for the current domain to a file. webdriver-w3c$Load cookies from a file saved with  . Returns 1 if the cookie file is missing or cannot be read.6 webdriver-w3c0Write cookies to a file under the secrets path. 7 webdriver-w3c%Read cookies from a file stored with 6 . Returns  if the file does not exist. webdriver-w3cWrite a 8 to the data directory webdriver-w3cRead a 8 from the data directory webdriver-w3c Write JSON to the data directory webdriver-w3c Read a JSON Value from the data directory9 webdriver-w3c with the given :. webdriver-w3cSimulate pressing a . webdriver-w3cSimulate typing some text. webdriver-w3c<Passed through SHA1, and the digest is used as the filename. webdriver-w3c<Passed through SHA1, and the digest is used as the filename.6 webdriver-w3cFile path; relative to $DATA_PATH/secrets/cookies/7 webdriver-w3cFile path; relative to $DATA_PATH/secrets/cookies/ webdriver-w3cFile path, relative to  $DATA_PATH, with leading slash webdriver-w3cFile path, relative to  $DATA_PATH, with leading slash webdriver-w3cFile path, relative to  $DATA_PATH, with leading slash webdriver-w3cFile path, relative to  $DATA_PATH, with leading slash .A monad for expressing WebDriver interactions.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXNone9 %$#"! &-,+*)('3210/.NOPQRSTUVWXYZ[\]^_`abcdefghijklmno      !"#$%&'()*+,-./016MFK2345789:;<=>?@ABCDEGHIJLNOPQRSTUVWXYZ[\]^_`abcdefghijk      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^rstuxyz{|}~ 5WebDriverT integration with the Tasty test framework.2018, Automattic, Inc.GPL-3%Nathan Bloomfield (nbloomf@gmail.com) experimentalPOSIXNone"#2SX G% webdriver-w3cMutable remote end pool webdriver-w3c-Representation of the deployment environment. webdriver-w3cLocal environment webdriver-w3c#CI server (for testing the library) webdriver-w3c Production -- e.g. testing a real site webdriver-w3cNamed deployment environment. webdriver-w3cDelay between test attempts. webdriver-w3c6Console out location. Used to mock stdout for testing. webdriver-w3c4Console in location. Used to mock stdin for testing. webdriver-w3cMax number of retries. webdriver-w3cLog Noise Level. webdriver-w3c Log location. webdriver-w3cWebDriver API version. webdriver-w3cExpected API response format. webdriver-w3cPath to browser binary. webdriver-w3cVerbosity level passed to  geckodriver webdriver-w3cPath where secrets are stored. webdriver-w3cRun in private mode. webdriver-w3cRun in headless mode. webdriver-w3c)Governs whether logs are printed in color webdriver-w3cRemote end name. webdriver-w3c WebDriver test case with the default * effect evaluator. webdriver-w3c WebDriver* test case with a custom effect evaluator. webdriver-w3c" test case with the default * effect evaluator. webdriver-w3c"* test case with a custom effect evaluator. webdriver-w3c WebDriverG test case with additional setup and teardown phases using the default * effect evaluator. Setup runs before the test (for e.g. logging in) and teardown runs after the test (for e.g. deleting temp files). webdriver-w3c WebDriver test case with additional setup and teardown phases and a custom effect evaluator. Setup runs before the test (for e.g. logging in) and teardown runs after the test (for e.g. deleting temp files). webdriver-w3c"G test case with additional setup and teardown phases using the default * effect evaluator. Setup runs before the test (for e.g. logging in) and teardown runs after the test (for e.g. deleting temp files). webdriver-w3c" test case with additional setup and teardown phases and a custom effect evaluator. Setup runs before the test (for logging in, say) and teardown runs after the test (for deleting temp files, say).  webdriver-w3cSet local options if the Driver option is a given value. webdriver-w3cSet local options if the Driver option is not a given value. webdriver-w3cSet local options if the  Deployment option is a given value. webdriver-w3cSet local options if the  Deployment option is not a given value. webdriver-w3cSet local options if  is true. webdriver-w3cSet local options if  is false. webdriver-w3c<Run a tree of WebDriverT tests. Thin wrapper around tasty's  defaultMainf that attempts to determine the deployment tier and interprets remote end config command line options.; webdriver-w3cGet the value of an option that can be controlled by either a command line flag or an environment variable, with the flag taking precedence.  webdriver-w3cThe test webdriver-w3c Evaluator webdriver-w3cConversion to * webdriver-w3cConversion to * webdriver-w3cThe test webdriver-w3c Evaluator webdriver-w3cConversion to *. webdriver-w3cThe test webdriver-w3cSetup webdriver-w3cTeardown webdriver-w3cThe test webdriver-w3c Evaluator webdriver-w3cConversion to * webdriver-w3cSetup webdriver-w3cTeardown webdriver-w3cThe test webdriver-w3cConversion to * webdriver-w3cSetup webdriver-w3cTeardown webdriver-w3cTest webdriver-w3c Evaluator webdriver-w3cConversion to *. webdriver-w3cSetup webdriver-w3cTeardown webdriver-w3cTest; webdriver-w3c Flag name webdriver-w3c$Mapping flag values to option values webdriver-w3cEnvironment variable name webdriver-w3c4Mapping environment variable values to option values webdriver-w3c9Default option value (if neither flag nor env var is set)W456789:;<=>?@ABCDI<=><                    ! " # # $ % & ' ' ( ) * + , - . / ( 01 02 03 04 05 06 07 07 89 8: 8; 8< 8= 8=>>?@ABBCDEFGHIJKLMNOPQRSTUVVWXYZ[\]^^_``abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRRSTTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                               !"#$ % &'() *+ ,-*webdriver-w3c-0.0.2-8qIoYWzxhpZIey1MYRqdwyWeb.Api.WebDriver.MonadTest.Tasty.WebDriver.ConfigWeb.Api.WebDriver.Assert Web.Api.WebDriver.Types.KeyboardWeb.Api.WebDriver.UriWeb.Api.WebDriver.TypesWeb.Api.WebDriver.ClassesWeb.Api.WebDriver.EndpointsWeb.Api.WebDriver.HelpersTest.Tasty.WebDriverWeb.Api.WebDriver)script-monad-0.0.3-EPChAuP8olpJUwwgVwabZ3Control.Monad.Script.Http evalMockIOevalIO logEntries printHttpLogsbasicLogEntryPrinterE_env_httpErrorInject_uid_logLock _logHandle_logEntryPrinter _logOptionsR _printUserLog_printUserError _logHeaders_logMinSeverity _logSilent_logJson _logColor LogOptions _userState _httpSession _httpOptionsSP HttpDeleteHttpPostHttpGet ThreadDelay GetSystemTimeHPutStrLnBlocking HPutStrLnNetwork.HTTP.Client.ExtrasUrl_responseCookieJar _responseBody_responseHeaders_responseVersion_responseStatus HttpResponseData.Aeson.ExtrasJsonConstructErrorJsonKeyLookupOffObjectJsonKeyDoesNotExistJsonParseError JsonError RemoteEnd remoteEndHost remoteEndPort remoteEndPath RemoteEndPoolfreeRemoteEnds DriverName Geckodriver ChromedriveraddRemoteEndForDrivergetRemoteEndForDriverparseRemoteEndConfigparseRemoteEndOptionparseRemoteEndparseOptionWithArgument$fShowDriverName$fShowRemoteEnd$fMonoidRemoteEndPool$fSemigroupRemoteEndPool$fEqDriverName$fOrdDriverName $fEqRemoteEnd$fEqRemoteEndPool$fShowRemoteEndPoolAssertionSummary numSuccesses numFailuresfailures successesAssertassertAssertionResultAssertionCommenttheAssertionCommentAssertionStatementtheAssertionStatement Assertion isSuccessprintAssertionsuccessfailureassertSuccessIf assertSuccess assertFailure assertTrue assertFalse assertEqualassertNotEqualassertIsSubstringassertIsNotSubstringassertIsNamedSubstringassertIsNotNamedSubstring summarize summarizeAll printSummary$fArbitraryAssertionStatement$fIsStringAssertionStatement$fShowAssertionStatement$fArbitraryAssertionComment$fIsStringAssertionComment$fShowAssertionComment$fArbitraryAssertionResult$fMonoidAssertionSummary$fSemigroupAssertionSummary$fEqAssertionStatement$fEqAssertionComment$fEqAssertionResult$fShowAssertionResult $fEqAssertion$fShowAssertion$fEqAssertionSummary$fShowAssertionSummaryKeyUnidentifiedKey CancelKeyHelpKey BackspaceKeyTabKeyClearKey ReturnKeyEnterKeyShiftKey ControlKeyAltKeyPauseKey EscapeKey PageUpKey PageDownKeyEndKeyHomeKey ArrowLeftKey ArrowUpKey ArrowRightKey ArrowDownKey InsertKey DeleteKeyF1KeyF2KeyF3KeyF4KeyF5KeyF6KeyF7KeyF8KeyF9KeyF10KeyF11KeyF12KeyMetaKeyZenkakuHankakuKey keyToCharPortHostmkHostmkPort$fArbitraryHost $fShowHost$fArbitraryPort $fShowPort$fEqHost$fEqPortCookie _cookieName _cookieValue _cookiePath _cookieDomain _cookieSecure_cookieHttpOnly_cookieExpiryTime PromptHandlerDismissPrompts AcceptPromptsDismissPromptsAndNotifyAcceptPromptsAndNotify IgnorePromptsRect_rectX_rectY _rectWidth _rectHeight ActionItem _actionType_actionDuration _actionOrigin _actionValue _actionButton_actionX_actionYInputSourceParameter_pointerSubtype ActionType PauseAction KeyUpAction KeyDownActionPointerDownActionPointerUpActionPointerMoveActionPointerCancelActionAction_inputSourceType_inputSourceId_inputSourceParameters _actionItemsPointerSubtype PointerMouse PointerPen PointerTouch InputSourceNullInputSourceKeyInputSourcePointerInputSourceLocationStrategy CssSelectorLinkTextSelectorPartialLinkTextSelectorTagName XPathSelector TimeoutConfig_script _pageLoad _implicit ProxyTypeProxyPac ProxyDirectProxyAutodetect ProxySystem ProxyManualHostAndOptionalPort_urlHost_urlPort ProxyConfig _proxyType_proxyAutoconfigUrl _ftpProxy _httpProxy_noProxy _sslProxy _socksProxy _socksVersionLogLevelLogTraceLogDebug LogConfigLogInfoLogWarnLogErrorLogFatal FirefoxLog_firefoxLogLevelFirefoxOptions_firefoxBinary _firefoxArgs _firefoxLog _firefoxPrefs ChromeOptions _chromeBinary _chromeArgs _chromePrefs PlatformNameMac BrowserNameFirefoxChromeSafari Capabilities _browserName_browserVersion _platformName_acceptInsecureCerts_pageLoadStrategy_proxy_setWindowRect _timeouts_unhandledPromptBehavior_chromeOptions_firefoxOptionsResponseErrorCodeElementClickInterceptedElementNotSelectableElementNotInteractableInsecureCertificateInvalidArgumentInvalidCookieDomainInvalidCoordinatesInvalidElementStateInvalidSelectorInvalidSessionIdJavaScriptErrorMoveTargetOutOfBounds NoSuchAlert NoSuchCookie NoSuchElement NoSuchFrame NoSuchWindow ScriptTimeoutSessionNotCreatedStaleElementReferenceTimeoutUnableToSetCookieUnableToCaptureScreenUnexpectedAlertOpenUnknownCommand UnknownError UnknownMethodUnsupportedOperationUnhandledErrorCodeFrameReference TopLevelFrame FrameNumberFrameContainingElementCssPropertyName CookieNameScript PropertyName AttributeNameSelector ContextId theContextId ElementRef theElementRef SessionIdemptyCapabilitiesdefaultFirefoxCapabilitiesheadlessFirefoxCapabilitiesdefaultChromeCapabilitiesdefaultChromeOptionsdefaultFirefoxOptionsemptyProxyConfigemptyTimeoutConfig emptyActionemptyActionItem emptyRect emptyCookie$fIsStringElementRef$fShowElementRef$fIsStringContextId$fShowContextId$fArbitraryResponseErrorCode$fToJSONResponseErrorCode$fFromJSONResponseErrorCode$fArbitraryBrowserName$fToJSONBrowserName$fFromJSONBrowserName$fArbitraryPlatformName$fToJSONPlatformName$fFromJSONPlatformName$fArbitraryChromeOptions$fToJSONChromeOptions$fFromJSONChromeOptions$fArbitraryLogLevel$fToJSONLogLevel$fFromJSONLogLevel$fArbitraryFirefoxLog$fToJSONFirefoxLog$fFromJSONFirefoxLog$fArbitraryFirefoxOptions$fToJSONFirefoxOptions$fFromJSONFirefoxOptions$fArbitraryHostAndOptionalPort$fToJSONHostAndOptionalPort$fFromJSONHostAndOptionalPort$fArbitraryProxyType$fToJSONProxyType$fFromJSONProxyType$fArbitraryProxyConfig$fToJSONProxyConfig$fFromJSONProxyConfig$fArbitraryTimeoutConfig$fToJSONTimeoutConfig$fFromJSONTimeoutConfig$fArbitraryLocationStrategy$fToJSONLocationStrategy$fFromJSONLocationStrategy$fArbitraryInputSource$fToJSONInputSource$fFromJSONInputSource$fArbitraryPointerSubtype$fToJSONPointerSubtype$fFromJSONPointerSubtype$fArbitraryActionType$fToJSONActionType$fFromJSONActionType$fArbitraryInputSourceParameter$fToJSONInputSourceParameter$fFromJSONInputSourceParameter$fArbitraryActionItem$fToJSONActionItem$fFromJSONActionItem$fArbitraryAction$fToJSONAction$fFromJSONAction$fArbitraryRect$fFromJSONRect $fToJSONRect$fArbitraryPromptHandler$fToJSONPromptHandler$fFromJSONPromptHandler$fArbitraryCapabilities$fToJSONCapabilities$fFromJSONCapabilities$fArbitraryCookie$fFromJSONCookie$fToJSONCookie$fEqElementRef $fEqContextId$fEqFrameReference$fShowFrameReference$fEqResponseErrorCode$fShowResponseErrorCode$fEqBrowserName$fShowBrowserName$fEnumBrowserName$fBoundedBrowserName$fEqPlatformName$fShowPlatformName$fEnumPlatformName$fBoundedPlatformName$fEqChromeOptions$fShowChromeOptions $fEqLogLevel$fShowLogLevel$fEnumLogLevel$fBoundedLogLevel$fEqFirefoxLog$fShowFirefoxLog$fEqFirefoxOptions$fShowFirefoxOptions$fEqHostAndOptionalPort$fShowHostAndOptionalPort $fEqProxyType$fShowProxyType$fEnumProxyType$fBoundedProxyType$fEqProxyConfig$fShowProxyConfig$fEqTimeoutConfig$fShowTimeoutConfig$fEqLocationStrategy$fShowLocationStrategy$fEnumLocationStrategy$fBoundedLocationStrategy$fEqInputSource$fShowInputSource$fEnumInputSource$fBoundedInputSource$fEqPointerSubtype$fShowPointerSubtype$fEnumPointerSubtype$fBoundedPointerSubtype$fEqActionType$fShowActionType$fEnumActionType$fBoundedActionType$fEqInputSourceParameter$fShowInputSourceParameter$fEqActionItem$fShowActionItem $fEqAction $fShowAction$fEqRect $fShowRect$fEqPromptHandler$fShowPromptHandler$fEnumPromptHandler$fBoundedPromptHandler$fEqCapabilities$fShowCapabilities $fEqCookie $fShowCookieWDAct ReadFilePath WriteFilePath FileExistsHGetLineHGetLineNoEchoOutcome IsSuccess IsFailureWDLog LogAssertion LogSessionLogUnexpectedResult LogBreakpointWDState _sessionId _breakpointsBreakpointSetting BreakpointsOnBreakpointsOffResponseFormat SpecFormat ChromeFormat ApiVersion CR_2018_03_04WDEnv_remoteHostname _remotePort _remotePath _dataPath_responseFormat _apiVersion_stdin_stdoutWDError NoSession ResponseErrorUnableToConnectRemoteEndTimeoutUnhandledHttpExceptionImageDecodeErrorUnexpectedValueUnexpectedResultBreakpointHaltError WebDriverTWebDriverConfigWDConfig _initialState _environment _evaluator WebDriverTTliftWebDriverTTdefaultWebDriverConfigdefaultWebDriverStatedefaultWebDriverEnvironment defaultWDEnvdefaultWebDriverLogOptionsexecWebDriverTTdebugWebDriverTTcheckWebDriverTTexecWebDriverTdebugWebDriverTcheckWebDriverT fromState modifyStatefromEnvlogDebug logNoticecommentwait throwErrorthrowJsonErrorthrowHttpExceptionthrowIOException catchAnyError catchErrorcatchJsonErrorcatchHttpExceptioncatchIOException parseJson lookupKeyJsonconstructFromJsonhttpGet httpSilentGethttpPosthttpSilentPost httpDeletehttpSilentDelete hPutStrLnhPutStrLnBlocking getAssertions breakpointsOnbreakpointsOffexpectexpectIsgetStrLnpromptForStringpromptForSecret readFilePath writeFilePath fileExistsbreakpointWith breakpoint evalWDActevalWDActMockIO$fAssertWebDriverTT$fMonadWebDriverTT$fApplicativeWebDriverTT$fFunctorWebDriverTT$fEqApiVersion$fShowApiVersion$fEqResponseFormat$fShowResponseFormat$fEqBreakpointSetting$fShowBreakpointSetting $fShowWDState $fEqOutcome $fShowOutcome $fShowWDError$fEqSessionVerb$fShowSessionVerb $fShowWDLog$fEqBreakpointAction$fShowBreakpointAction HasContextId contextIdOf HasElementRef elementRefOf$fHasElementRefElementRef$fHasContextIdContextId_WEB_ELEMENT_ID_WEB_WINDOW_ID _WEB_FRAME_ID runIsolated newSession newSession' deleteSession sessionStatus getTimeouts setTimeouts navigateTonavigateToStealth getCurrentUrlgoBack goForward pageRefreshgetTitlegetWindowHandle closeWindowswitchToWindowgetWindowHandles switchToFrameswitchToParentFrame getWindowRect setWindowRectmaximizeWindowminimizeWindowfullscreenWindow findElement findElementsfindElementFromElementfindElementsFromElementgetActiveElementisElementSelectedgetElementAttributegetElementPropertygetElementCssValuegetElementTextgetElementTagNamegetElementRectisElementEnabled elementClick elementClearelementSendKeys getPageSourcegetPageSourceStealth executeScriptexecuteAsyncScript getAllCookiesgetNamedCookie addCookie deleteCookiedeleteAllCookiesperformActionsperformActionsStealthreleaseActions dismissAlert acceptAlert getAlertText sendAlertTexttakeScreenshottakeElementScreenshot stashCookies loadCookies writeDataFile readDataFile writeJsonFile readJsonFilepress typeString RemoteEndReftheRemoteEndRefDeploymentTierDEVTESTPROD Deployment theDeployment TestDelay theTestDelayConsoleOutHandletheConsoleOutHandleConsoleInHandletheConsoleInHandle NumRetries theNumRetries LogNoiseLevelNoisyLog SilentLog LogHandle theLogHandleWebDriverApiVersiontheWebDriverApiVersionApiResponseFormattheApiResponseFormat BrowserPaththeBrowserPathGeckodriverLogtheGeckodriverLogDataPath theDataPath PrivateModethePrivateModeHeadless theHeadless LogColors theLogColorsDriver theDrivertestCase testCaseM testCaseT testCaseTMtestCaseWithSetuptestCaseWithSetupMtestCaseWithSetupTtestCaseWithSetupTM ifDriverIsunlessDriverIsifTierIs unlessTierIs ifHeadlessunlessHeadlessdefaultWebDriverMain$fIsOptionDriver$fIsOptionLogColors$fIsOptionHeadless$fIsOptionPrivateMode$fIsOptionDataPath$fIsOptionGeckodriverLog$fIsOptionBrowserPath$fIsOptionApiResponseFormat$fIsOptionWebDriverApiVersion$fIsOptionLogHandle$fIsOptionLogPrinterLock$fIsOptionLogNoiseLevel$fIsOptionNumRetries$fIsOptionConsoleInHandle$fIsOptionConsoleOutHandle$fIsOptionTestDelay$fIsOptionDeployment$fIsOptionRemoteEndRef$fIsOptionRemoteEndOpt$fIsTestWebDriverTest $fEqTestDelay$fShowTestDelay$fEqDeploymentTier$fShowDeploymentTier$fEqDeploymentbase GHC.MaybeNothingghc-prim GHC.TypesTrueFalse GHC.ClassesEqsummary numAssertionscookieBreakpointDumpBreakpointSilence BreakpointAct SessionVerbtransformers-0.5.5.0Control.Monad.Trans.Identity IdentityTHttpTTIOGHC.IO.Exception IOException printWDLogpromoteHttpResponseError printWDErrorGHC.IO.Handle.FDstdin Data.MockIOMockIO theRemoteUrltheRemoteUrlWithSession setSessionIdcleanupOnErrorexpectEmptyObjectwriteCookieFilereadCookieFilebytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringkeypressChargetEnvVarDefaultOption