Skip to content

Latest commit

 

History

History
126 lines (92 loc) · 5.5 KB

CHANGELOG.md

File metadata and controls

126 lines (92 loc) · 5.5 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Changed

  • No description yet.

0.4.0 - 2021-02-25

Added

  • ClientInterface::getSessionIdentifiers() implementation to get a list with WebDriver sessions from the active pool (as an opportunity to resume existing sessions).

Fixed

  • Missed type checks after WebDriver response deserialization for some methods (e.g. to prevent misreading an error array as a valid command output).

0.3.0 - 2021-02-11

Added

  • ClientInterface::removeSession() implementation to properly close a WebDriver session.
  • Configurable checkInterval for the WebDriverInterface::waitUntil() method, to define a custom frequency for the condition checks.
  • README: minimal configuration snippet.

Fixed

  • command.timeout option now accepts both float and int values (will be normalized to float by the driver factory).
  • onCommandConfirmation hook is now propagates driver error message from the response alongside the predefined error label.

0.2.1 - 2020-12-22

Fixed

  • WebDriverInterface::waitUntil(): a resulting value from the promise, that has been generated by the "condition-to-satisfy" callback, is now properly forwarded to the onFulfilled handler, for the waitUntil method itself.

0.2.0 - 2020-12-18

Added

  • ClientInterface::getTabIdentifiers() method implementation (reading a list of tabs, which are opened in the browser).
  • Implementations for the ClientInterface::getActiveTabIdentifier() and ClientInterface::setActiveTab() commands, to determine which of the tabs is currently "focused" and to open (focus) a specific one.
  • ClientInterface::openUri() and ClientInterface::getCurrentUri() implementations, to open a web page in the current browser tab and read an URI from the address bar.
  • ClientInterface::getSource() for acquiring source code of the web resource that is opened in the active (focused) browser tab (view-source action).
  • ClientInterface::getElementIdentifier() to get an internal WebDriver handle of the specific element on the page.
  • ClientInterface::getActiveElementIdentifier() to get an internal handle of the currently focused element.
  • ClientInterface::getElementVisibility() to check if the target is visible on the page.
  • ClientInterface::mouseMove() and ClientInterface::mouseLeftClick() to perform the most common mouse actions in the browser window.
  • ClientInterface::keypressElement() to send keyboard keys to the element on the page.
  • ClientInterface::getScreenshot() and a WebDriverInterface::saveScreenshot() shortcut implementation, to capture a screen state of the remote browser instance.
  • WebDriverInterface::wait() and WebDriverInterface::waitUntil() to make delays and conditional checks (waiting for element visibility, etc.).
  • README: a "Requirements" block, description improvements.

Changed

  • Timeout\Interceptor is now raising a single exception with both method-specific message and a timeout context.

Fixed

  • Interface fixes and a minor redesign for some signatures.

This version brings an async variant for most methods (no tests yet), which were defined by the WebDriverInterface and ClientInterface, to communicate with a remote Selenium WebDriver service in non-blocking mode, except: getSessionIdentifiers, removeSession and clickElement commands (the last one can be supplanted by the mouseLeftClick, in combination with the mouseMove action).

At this moment, ClientInterface::createSession() is able to send only a hardcoded set of capabilities (settings for the executable file and profile preferences) to launch a browser instance (will be patched in the later versions):

{
    "browserName": "chrome",
    "goog:chromeOptions": {
        "args": [
            "--user-data-dir=\u002fopt\u002fgoogle\u002fchrome\u002fprofiles"
        ],
        "prefs": {
            "intl.accept_languages": "RU-ru,ru,en-US,en"
        }
    }
}

0.1.0 (core design) - 2020-12-02

Added

  • WebDriverInterface and low-level ClientInterface to communicate with Selenium Grid server asynchronously, using the centralized event loop and promise API.
  • SeleniumHubDriver and Client\W3CClient stubs for W3C compliant webdriver implementation.
  • WebDriverFactory as a shortcut for driver instantiation.
  • Timeout\Interceptor to prevent unresolved (hanging) driver promises, whenever it fails (using reactphp/promise-timer).
  • ClientInterface::createSession() method implementation (opening a Selenium hub session to interact with remote browser instance).

This early development version doesn't yet contain full implementation for the introduced WebDriverInterface, only core design solutions and library interfaces are defined.