Skip to content

Latest commit

 

History

History
515 lines (453 loc) · 20 KB

CHANGELOG.adoc

File metadata and controls

515 lines (453 loc) · 20 KB

Changelog

A release with an intentional breaking changes is marked with:

  • [breaking] you probably need to change your code

  • [minor breaking] you likely don’t need to change your code

Unreleased

  • Changes

    • #679: Add new-window function that exposes WebDriver’s New Window endpoint. (@dgr)

v1.1.42 - 2024-09-27

  • Changes

    • #559: Create query-from and query-all-from as replacements for child and children. Rewrite logic such that q parameter allows for vector syntax similar to query and query-all. Deprecate child and children. (@dgr)

    • #559: Make get-active-element a public API. This was previously private. (@dgr)

    • #559: Deprecate use of :active with query and other APIs that use query under the hood. (@dgr)

    • #620: Get stricter when unwrapping elements. (@dgr)

    • #629: Added fill-human-active as a convenience function that fills the currently active input using fill-human-el. (@dgr)

    • #642: Add driver-type to retrieve driver type keyword. (@dgr)

    • #644: Deprecate when-predicate and when-not-predicate macros. See docstrings for guidance on alternatives. These will may be removed from the API at the next release that contains breaking changes. (@dgr)

    • #647: Fix logic bug in intersects?. Added tests to test suite. (@dgr)

    • #649: When supplied a vector argument for q-text, fill-multi and fill-human-multi now fill fields in the order that fields appear in the vector. Previously, the order was not guaranteed. (@dgr)

    • #657: Make set-<xyz>-timeout functions resilient to reasonable non-integer timeouts (e.g., rationals, doubles, etc.). (@dgr)

    • #661: Fix :fn/enabled. (@dgr)

    • #663: query throws a more accurate exception with a more accurate error message when provided with an empty query vector. (@dgr)

    • #666: Previously, in some error conditions, Etaoin would throw a very generic clojure.lang.Exception object. Some of those cases have been replaced by throwing a map with Slingshot, providing more information about the problem. (@dgr)

    • #668: Throw an exception for unknown :fn/* keywords in map queries.

  • Docs

    • #656: Correctly describe behavior when query’s parameter is a string. The User Guide and query doc strings say that a string passed to query is interpreted as an XPath expression. In fact, query interprets this as either XPath or CSS depending on the setting of the driver’s :locator parameter, which can be changed. (@dgr)

  • Quality

    • #640: Significantly improved test coverage. (@dgr)

    • #646: Fixed race condition leading to unreliable test. (@dgr)

    • #674: Fixed race condition leading to unreliable test. (@dgr)

v1.1.41 [minor breaking] - 2024-08-14

  • Minor breaking

    • #615: Etaoin now requires a minimum of JDK11 and Clojure 1.10 (@lread)

    • #612: Remove all support for long obsolete and long untested PhantomJS (@lread)

    • #467: Move to W3C WebDriver spec. (@lread)

      • The impetus was Firefox no longer supporting legacy :capabilities syntax. The breaking impact was on Chrome/Edge, when in "w3c mode" it will fail on WebDriver endpoints where there is a viable w3c alternative. This means some custom Chrome specific fns should now be expressed as w3c WebDriver actions. The following Chrome-specific fns have been deleted:

        • mouse-btn-down

        • mouse-btn-up

        • with-mouse-btn

        • mouse-move-to (was also available in Firefox)

        • mouse-click

        • right-click

        • left-click

        • touch-down

        • touch-move

        • touch-up

      • Remove internal support for undocumented :desired-capabilities. The implementation was either ultra legacy or misunderstood legacy APIs.

  • Other changes

    • bump all deps to current versions (@lread)

    • Add new fns that more lightly abstract W3C WebDriver Spec (as part of #467 API review sweep) (@lread)

      • get-timeouts - as alternative to get-*-timeout

      • set-timeouts - as alternative to set-*-timeout

      • get-element-rect - as alternative to get-element-size, get-element-location

      • get-element-rect-el - as alternative to get-element-size-el, get-element-location-el

      • get-window-rect - as alternative to get-window-size, get-window-position

      • set-window-rect - as alternative to set-window-size, set-window-position

    • Review tests and add some missing coverage (as part of #467 API review sweep) (@lread)

    • #552: Add support for wide characters to input fill functions (@tupini07)

    • #566: Recognize :driver-log-level for Edge (@lread)

    • #563: Support "debug" :driver-log-level for Safari (@lread)

    • #517: Properly cleanup after failed webdriver launch (@lread)

    • #604: Add support for shadow DOM (@dgr)

    • #603: Add :fn/index as alias for :index in map syntax (@dgr)

    • tests

      • #572: stop using chrome --no-sandbox option, it has become problematic on Windows (and we did not need it anyway) (@lread)

    • docs

      • Review docs for spellos, punctuation, clarity (@lread)

      • #534: better describe etaoin.api/select and its alternatives (@lread)

      • #536: user guide examples are now all os agnostic and CI tested via test-doc-blocks on all supported OSes (@lread)

      • #602: Document all :fn/* query pseudo-functions in a definitive list (@dgr)

      • #484: Add W3C WebDriver Spec links to docstrings (@lread)

      • #522: Describe how to get other common properties in docstrings (@lread)

v1.0.40 - 2023-03-08

  • #524: fix failure in bb related to Thread/sleep interop in JDK19 (@borkdude)

v1.0.39 - 2022-12-03

  • #503: Address Clojure interop issue introduced by new Thread/sleep signature in JDK 19 (@lread)

  • #513: Fix rendering of exception when used from REPL (@lread)

  • bumped Etaoin dependencies (@lread)

  • docs:

    • #447: Describe testing without a display in the user guide, including a new requirement for a windows manager when using a virtual display on Linux (@lread)

    • #507: The current version of babashka, which is the only one we support, no longer requires the a dependency to the babashka spec.alpha fork to use the Etaoin ide feature. Tests and docs updated accordingly. (@lread)

v1.0.38 [minor breaking] - 2022-08-04

Minor Breaking Changes

  • #412: Rename etaoin.keys/num-. to etaoin.keys/num-dot. (@lread)
    The symbol num-. is technically an invalid Clojure symbol and can confuse tooling.
    A grep.app for num-. found Etaoin itself as the only user of this var. If your code uses etaoin.keys/num-., you’ll need to rename it to etaoin.keys/num-dot.

  • #471: etaoin.api/defaults keyword :path renamed to :path-driver to match keyword used in driver options. (@lread)

  • #430: Declare the public API. (@lread)
    We made what we think is a good guess at what the public Etaoin API is. The following namespaces are now considered internal and subject to change:

    old namespace new internal namespace

    etaoin.client

    etaoin.impl.client

    etaoin.driver

    etaoin.impl.driver

    etaoin.proc

    etaoin.impl.proc

    etaoin.util

    etaoin.impl.util

    etaoin.xpath

    etaoin.impl.xpath

    etaoin.ide.api

    etaoin.ide.impl.api

    etaoin.ide.spec

    etaoin.ide.impl.spec

    The following vars are now considered internal and subject to change:

    namespace var

    etaoin.api

    default-locator

    dispatch-driver

    find-elements*

    format-date

    get-pwd

    join-path

    locator-css

    locator-xpath

    make-url

    make-screenshot-file-path

    postmortem-handler

    process-log

    proxy-env

    use-locator

    with-exception

    with-locator

    etaoin.dev

    build-request

    group-requests

    log→request

    parse-json

    parse-method

    process-log

    request?

    try-parse-int

    etaoin.ide.flow

    all except for: run-ide-script

    etaoin.ide.main

    all except for: -main

    If we got this wrong your code will fail, you will tell us, and we can discuss.

Other Changes

  • #380: Etaoin is now Babashka compatible! (@lread)

  • #413: Etaoin now exports a clj-kondo config to help with the linting of its many handy macros (@lread)

  • #357: Add support for connecting to a remote WebDriver via :webdriver-url (thanks @verma for the PR and @mjmeintjes for the example usage!)

  • #355: Add support for W3C WebDriver print to PDF feature (@lread)

  • #466: WebDriver process output can now also be directed to console (@lread)

  • #468: Failed WebDriver process launch can now be automatically retried (@lread)

  • #453: The etaoin.api/with-<browser> macros no longer require opts to be specified. This makes the advantage of newer etaoin.api2/with-<browser> macros maybe less obvious. That said, for Etaoin users who have adopted and prefer the api2 versions, they are still there, but no longer documented in the user guide. (@lread)

  • #383: Drop testing for Safari on Windows, Apple no longer releases Safari for Windows (@lread)

  • #388: Drop testing for PhantomJS, development has long ago stopped for PhantomJS (@lread)

  • #387: No longer testing multiple key modifiers for a single webdriver send keys request (@lread)

  • #384: Look for safaridriver on PATH by default (@lread)

  • #402: Only send body for webdriver POST requests to appease safaridriver (@lread)

  • #403: The select fn now clicks on the select element before clicking the option element to appease safaridriver (@lread)

  • #408: Fix switch-window for msedgedriver (@lread)

  • #432: Switched from project.clj to deps.edn. This will allow for easier testing of unreleased versions of Etaoin via git deps. It also unconvered that our minimum Clojure version was 1.10, instead of the advertised v1.9. Fixed. (@lread)

  • #455: Automatically create specified parent dirs for screenshots (@lread)

  • #469: Include WebDriver process liveness in http client exception (@lread)

  • #446: Bump Etaoin dependencies to current releases (@lread)

  • Docs

  • Internal quality

    • #382: Fix process fork testing on Windows (@lread)

    • #391: Identify browser name on failed ide tests (@lread)

    • #390: Add internal clj-kondo config (@lread)

    • #381: In addition to ubuntu, now also testing on macOS and Windows (using GitHub Actions #392 with parallelization #420) (@lread)

    • #422: Automate release workflow (@lread)

v0.4.6 - 2021-08-28

v0.4.5 - 2021-07-05

v0.4.4 - 2021-06-27

v0.4.3 - 2021-06-25

v0.4.2 - 2021-06-25

v0.4.1 - 2020-10-27

v0.4.0 - 2020-10-20 [breaking]

Breaking Changes

  • #111: the driver instance is now a map instead of an atom. (@Uunnamed)

    Breaking changes are never embarked on lightly but we felt it important to transition to more a more idiomatic use of Clojure.

    All the internal functions that used to modify the driver atom now just return a new version of a map. If you have swap! or something similar in your code for the driver, please refactor your code before you update.

Other Changes

v0.3.10 - 2020-08-25

v0.3.9 - 2020-08-18

v0.3.8 - 2020-08-04

v0.3.7 - 2020-07-23

Earlier Releases

Not described, see github.