Skip to main content

Serenity/JS Changelog 🎁

Subscribe to RSS feeds or follow on LinkedIn to stay up to date with new releases!

Summary

This release introduces improvements to the internal structure of Serenity/JS.

View detailed code diff on GitHub

Summary

This release introduces improvements to the following Serenity/JS modules:

View detailed code diff on GitHub

Bug Fixes

  • core: you can now retrieve the .length property of an Array wrapped in an Adapter<Array> (c36e210)

Features

  • web: ElementExpectation makes it easier to define custom PageElement-related Expectations (92ebf7d)
  • web: Text.ofAll accepts mapped PageElements (5314246)

Summary

This release introduces improvements to the following Serenity/JS modules:

View detailed code diff on GitHub

Bug Fixes

  • core: refactored Mappable so that it's easier to implement filters (176e0cd), closes #1074
  • core: removed interface Reducible since it's not used any more (1e9f23b)
  • deps: updated tiny-types to 1.17.0 (3187051)
  • examples: updated the examples to use the new PageElement, By, and .where APIs (54961a7), closes #805
  • rest: corrected LastResponse to wrap .status(), .body(), .header() and .headers() in Adapters (aab8e93), closes #1082
  • web: corrected synchronisation in Web questions and interactions (c3a0ad1)
  • web: Photographer skips taking a screenshot if the Window is closed (DevTools protocol) (b682577)
  • web: refactored Selector and NativeElementLocator classes to simplify the implementation (f0c8f11)
  • web: simplified the selectors (b167e42), closes #1074

Features

  • core: forEach for List and PageElements (4592fb7), closes #823
  • core: List supports custom collectors (cd3f2bc)
  • core: new implementation of List.where filters (45b3c80), closes #1074
  • core: support for Screenplay-style collection filters and mapping (List.where & .eachMappedTo) (3d3c02e), closes #1074
  • web: isVisible checks if the element is in viewport and not hidden behind other elements (429040f)
  • web: new PageElement retrieval model based on Selectors (48bd94f)
  • web: re-introduced PageElements.where DSL and universal By selectors (39fe0a1), closes #1081

Summary

This release introduces improvements to the internal structure of Serenity/JS.

View detailed code diff on GitHub

Bug Fixes

  • lerna: corrected versions of internal deps (582b922)

Summary

This release addresses #805 and introduces improvements to the following Serenity/JS modules:

Related external tickets: jasmine/jasmine#1939

View detailed code diff on GitHub

Bug Fixes

  • core: formatted can be configured to produce single- or multi-line descriptions (21145a3)
  • core: inspected produces a better description of functions used as parameters (15535c6)
  • core: 3.0 RC (469d54e), closes #805
  • core: answerProxy renamed to ProxyAnswer to better reflect its purpose (a98fe41)
  • core: corrected type defs of Question.as (681ce22)
  • core: exported createProxyAnswer to make it easier to use (5471989)
  • core: removed Loop as it will be replaced (0b63d27)
  • core: removed Property as it will be replaced by new Question (fd7fa10)
  • core: removed Transform and mapping functions as they'll be replaced with new Question (506eaea)
  • core: renamed "Model" type to "Adapter" to better reflect its purpose (b4ea7a1), closes #805
  • cucumber: support for recognising non-Serenity AssertionErrors in older version of Cucumber (31e9e99)
  • deps: updated WebdriverIO (9de63d4)
  • deps: web (b075b8e)
  • jasmine: upgraded Jasmine to 3.10.0 (707dbff), closes jasmine/jasmine#1939
  • protractor: fixed the interaction to Switch (762ca84)
  • protractor: lastScriptExecution.result() returns undefined instead of null for void functions (997d87a)
  • protractor: modernised ProtractorParam to return a Screenplay Model (43c2032)
  • protractor: removed interaction to ResizeBrowserWindow in favour of Page.setViewportSize() (b8e471d)
  • protractor: replaced obsolete "Window", replaced by "Page" in @serenity-js/web (a3442c4)
  • web: added missing export (c5ffc0a), closes #805
  • web: corrected timestamp rounding when retrieving the expiry date of a cookie (d636965)
  • webdriverio: ensure getLastScriptExecutionResult returns undefined for void functions (aa00dfd)
  • webdriverio: fixed synchronisation issue in ModalDialog (12324b2), closes #805
  • webdriverio: separated UIElement.hoverOver from UIElement.scrollIntoView (cf4ca2c)
  • webdriverio: updated WebdriverIO to 7.13.2 (ef79d19)
  • webdriverio: updated WebdriverIO to 7.16.7 (3316e29)
  • web: ensure all Web interactions extend the same base class (b358c0b)
  • web: fixed the interaction to Select (10b7b74)
  • web: optimised PhotoTakingStrategy (085b7f7)
  • web: removed Cookie as it will be re-implemented (cb3d081)
  • web: removed incorrect export (ebf80c0)
  • web: removed incorrect import (90cb025)
  • web: removed window-specific APIs from BrowseTheWeb that got replaced by Page (918f447), closes #805
  • web: renamed Element and associated classes to PageElement to avoid name conflicts (1e4204b)
  • web: renamed PageElementList to PageElements to improve readability (a9903a7), closes #805
  • web: standardised getters across PageElement implementations (336472b)
  • web: wordsmithing of interface names (5a1e76a)

Features

  • core: question.about creates a proxy around the answer to simplify the API (25e0841)
  • core: question.about produces "props" that proxy the methods of the underlying model (f771872)
  • protractor: compatibility with @serenity-js/web (9df4db2), closes #805
  • protractor: removed Protractor-specific Target implementations in favour of @serenity-js/web (5cfc7e5)
  • web: a common way to run the tests for all the web adapters (c7e584a)
  • web: added Page.viewportSize and Page.setViewportSize methods (4cabbe2)
  • web: all Screenplay APIs migrated from @serenity-js/webdriverio to @serenity-js/web (7b6b95d)
  • webdriverio: support for native WebdriverIO services (8d5ad22)
  • web: interaction to set a Cookie (c056439), closes #805
  • web: interaction to setViewportSize of a Page (dd7f180)
  • web: introduced UIElementQuestion to help ensure no NPEs in UI-related questions (fe29121)
  • web: migrated Photographer from @serenity-js/protractor to @serenity-js/web (4506dac), closes #805
  • web: ModalDialog available for both Protractor and WebdriverIO adapters (ef3c566), closes #805
  • web: new module @serenity-js/web to provide Web-related Screenplay Pattern APIs (bead861)
  • web: page provides an abstraction around browser window (2e70a3b)
  • web: Page.url() and Page.title() replace Website.url() and Website.title() (49fe009), closes #805
  • web: removed Target in favour of PageElement (69496c4), closes #805
  • web: support for switching browsing context (a73a635), closes #805
  • web: support for working with cookies (39cde6d), closes #805

BREAKING CHANGES

  • core: Introduced @serenity-js/web - a shared library for Serenity/JS Web integration modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.