Vividus Versions Save

VIVIDUS is all in one test automation tool

release-0.6.8

3 months ago

Added

#4809 [vividus] Add Java 21 migration notice

All users are welcomed to migrate to Java 21. If version of Java is lower than 17, the notification warning will be printed. In case of issues please report bugs as earlier as possible. The target date when support of Java versions lower than 21 will be dropped is July 1, 2024 (the first release after this date will require Java 21+). The old versions of VIVIDUS will start slowing down the tests intentionally after August 1, 2023 in order to push users to the migration.

#4806 (Closes #4734) [vividus-plugin-web-app] Add ability to remove items from web storage

New steps:

When I remove item with key `$key` from $storageType storage
When I clear $storageType storage

where $storageType is one of the web storage mechanisms: either local or session.

#4807 (Closes #4799) [vividus-plugin-web-app] Add shortcut property to set window size for Headless Chrome

New property:

web.headless.chrome.window-size=800,600

sets the initial window size, it is ignored when custom CLI arguments are set using web.driver.chrome.command-line-arguments property.

Deprecated

#4808 [vividus-plugin-web-app] Deprecate Internet Explorer profile

Since Internet Explorer 11 has retired and is officially out of support, web/desktop/iexplore profile is deprecated and will be removed in VIVIDUS 0.8.0.

release-0.6.7

3 months ago

Added

Jump links using anchors based on name attribute are included into validation scope.

Validation of jump links is skipped when the current context is restricted to a portion of the document (it's not possible to find target with the given anchor as it may belong to a rest part of the document): such resources are marked as filtered.

#4791 [vividus-plugin-web-app-to-rest-api] Log filtered redirect chains by crawling transformers

Now all redirect chains filtered during the crawling by the corresponding transformers are logged.

#4783 [vividus-plugin-azure-cosmos-db] Add ability to use default authentication to access Cosmos DB service

If master or readonly key is not configured to authenticate to Cosmos database service, the default Azure authentication mechanism described will be used.

#4753 [vividus-to-xray-exporter] Skip test case update if its fields are up to date in JIRA

This enhancement reduces number of test case re-openings and as result helps to avoid JIRA history pollution.

Deprecated

#4792 [vividus-agent-reportportal] Deprecate reporting of steps as test cases

The reporting of steps as ReportPortal test cases is deprecated. As such, system.rp.test-entity property is deprecated and will be removed in VIVIDUS 0.8.0. The default behavior will be to report scenarios as test cases (system.rp.test-entity= SCENARIO).

Fixed

#4748 [vividus-plugin-web-app-to-rest-api] Fix filtering of resources excluded from validation

Now resource excluded from validation scope via property resource-checker.uri-to-ignore-regex are correctly filtered out.

release-0.6.6

3 months ago

Added

#4709 [vividus-plugin-web-app] Add step to save size and coordinates of an element

New step:

When I save coordinates and size of element located by `$locator` to $scopes variable `$variableName`

#4719 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add context source code dynamic variable

New dynamic variable:

${context-source-code}

provides source code of the current UI context of the application under test.

#4683 [vividus-plugin-web-app-to-rest-api] Support xPath locator in steps validating resources

New steps:

Then all resources found by $htmlLocatorType `$htmlLocator` are valid on:$pages
Then all resources found by $htmlLocatorType `$htmlLocator` in $html are valid

where $htmlLocatorType is either CSS selector or XPath.

#4725 [vividus-plugin-web-app-to-rest-api] Add ability to set seed URL for crawling transformers in parameters

New transformer parameter mainPageUrl is supported by FROM_SITEMAP and FROM_HEADLESS_CRAWLING table transformers. The corresponding properties are:

  • transformer.from-sitemap.main-page-url
  • transformer.from-headless-crawling.main-page-url

#4669 (Closes #4663) [vividus-plugin-mobitru] Add ability to disable iOS app resigning on Mobitru

New property (default value is true):

mobitru.resign-ios-app=true

#4713 [vividus] Add new data providers for #{generate($data-provider-and-its-arguments)} expression

  • 3 new providers
    • Joke
      • Joke.knockKnock
      • Joke.pun
    • LanguageCode
      • LanguageCode.iso639
    • Tire
      • Tire.aspectRatio
      • Tire.code
      • Tire.code
      • Tire.construction
      • Tire.loadIndex
      • Tire.rimSize
      • Tire.speedrating
      • Tire.vehicleType
      • Tire.width
  • New data generators in Aviation provider
    • Aviation.engineType
    • Aviation.flightStatus
    • Aviation.gate
    • Aviation.manufacturer
    • Aviation.specialTypeDesignator
  • New data generators in Internet provider
    • Internet.emailSubject
    • Internet.username
  • New data generators in Name provider
    • Name.femaleFirstName
    • Name.maleFirstName

Changed

#4707 (Closes #4665) [vividus-plugin-mobile-app] Do not break test on attempt to terminate not running app

Now an attempt to terminate the application which is not running results in the failed step instead of broken one. Having this behaviour users can mark this failure as known issue.

Deprecated

#4612 [vividus-plugin-web-app] Deprecate steps validating script elements

Deprecated step Replacement pattern
Then a javascript file with the name '$jsFileName' is included in the source code Then number of elements found by `xpath(.//script[contains(@src()='%1$s']):a` is equal to `1`
Then a javascript with the text '$jsText' is included in the source code Then number of elements found by `xpath(.//script[text()='%1$s']):a` is equal to `1`
Then a javascript with the textpart '$jsTextPart' is included in the source code Then number of elements found by `xpath(.//script[contains(text(),'%1$s')]):a` is equal to `1`

#4709 [vividus-plugin-web-app] Deprecate dynamic variables for context element rectangle

The dynamic variables:

  • ${context-height}
  • ${context-width}
  • ${context-x-coordinate}
  • ${context-y-coordinate}

are deprecated in favour of step:

When I save coordinates and size of element located by `$locator` to $scopes variable `$variableName`

#4719 [vividus-plugin-web-app][vividus-plugin-mobile-app] Deprecate source code dynamic variable

The dynamic variable:

${source-code}

is deprecated in favour of another dynamic variable:

${context-source-code}

#4683 [vividus-plugin-web-app-to-rest-api] Deprecated steps validating resources using cssSelector only.

Deprecated step Replacement pattern
Then all resources by selector `$cssSelector` from $html are valid Then all resources found by CSS selector `<cssSelector>` in <html> are valid
Then all resources by selector `$cssSelector` are valid on:$pages Then all resources found by CSS selector `<cssSelector>` are valid on:<pages>

#4725 [vividus-plugin-web-app-to-rest-api] Deprecate ability to set seed URL for crawling transformers via web application main page URL property.

The use of web-application.main-page-url property for setting of main page for crawling by FROM_SITEMAP and FROM_HEADLESS_CRAWLING table transformers is deprecated. mainPageUrl transformer parameter or corresponding properties transformer.from-sitemap.main-page-url and transformer.from-headless-crawling.main-page-url must be used instead.

Fixed

#4682, #4702 (Fixes #4680) [vividus] Fix logging and monitoring of deprecated steps without parameters inside composite steps

NullPointerException occurred when running a particular composite step inside another composite step is fixed.

release-0.6.5

4 months ago

Added

#4656 [vividus-plugin-web-app] Add mobile emulation steps

New steps:

When I emulate mobile device with configuration:`$jsonConfiguration`
When I reset mobile device emulation

#4651 [vividus-plugin-web-app] Retry mouse clicks if element position changes during click

Mouse click is retried if page has dynamically loaded content which results in invalid (sometimes negative) coordinates for click, e.g: Element is not clickable at point (498, -377) or Element is not clickable at point (550, -11228).

#4659 [vividus-plugin-web-app] Recognise chrome-headless-shell browser as Chrome

This change is explained on the Chrome for Developers blog: Download old Headless Chrome as chrome-headless-shell

#4633 [vividus-plugin-json] Introduce distinct() JSON path function

Given JSON:

{
    "type": [
      "b",
      "b",
      "a",
      "c",
      "a"
    ],
    "name": [
      "abc"
    ]
}

When the following JSON path with distinct() function is applied:

$.type.distinct()

The resulting JSON is:

[
    "b",
    "a",
    "c"
]

#4639 [vividus-plugin-web-app-to-rest-api] Add ability to exclude URLs by regex in FROM_HEADLESS_CRAWLING table transformer

New property:

transformer.from-headless-crawling.exclude-urls-regex=.*(css\|gif\|gz\|ico\|jpeg\|jpg\|js\|mp3\|mp4\|pdf\|png\|svg\|zip\|woff2
\|woff\|ttf\|doc\|docx\|xml\|json\|webmanifest)$

The property transformer.from-headless-crawling.exclude-extensions-regex is deprecated and will be removed in VIVIDUS 0.7.0, please use new property instead.

#4652 [vividus-plugin-web-app-to-rest-api] Introduce variable name as HTML source in FROM_HTML table transformer

New parameter variableName is introduced. It's a name of the variable containing source HTML, only variables of scopes global and next_batches are allowed.

The pageUrl parameter is deprecated and will be removed in VIVIDUS 0.7.0, please use new parameter instead.

#4632 [vividus-plugin-web-app-to-rest-api] Retry SSLLabs status check on HTTP 502 Bad Gateway error

Deprecated

#4580 [vividus-plugin-web-app] Unify syntax of steps performing drag-n-drop actions

Deprecated step Replacement pattern
When I drag element located `$draggable` and drop it at $location of element located `$target` When I drag element located by `<draggable>` and drop it at <location> of element located by `<target>`
When I simulate drag of element located `$draggable` and drop at element located `$target` When I simulate drag of element located by `<draggable>` and drop at element located by `<target>`

Fixed

#4638 [vividus] Percent-encode all non-ASCII characters in URL user info

#4658 [vividus-plugin-web-app-to-rest-api] Fix handling of URI user info by SiteMap parser

URI user info provided as a part of SiteMap URI is treated as non-preemptive basic authentication now,

release-0.6.4

5 months ago

Added

#4610 (Closes #4596) [vividus] Introduce decrypt expression

New expression decrypts an input string using the same algorithm and password employed for the decryption of properties.

#4620 [vividus] Enable usage of non-ASCII chars in ExamplesTable parameters names

Any chars (excluding system ones reservered to identify parameters) can be used in ExamplesTable headers names.

#4362 [vividus-plugin-web-app] Introduce profile for Headless Edge browser

New profile is added: web/headless/edge.

#4598 [vividus-plugin-web-app-to-rest-api] Add ability to set HTTP headers for headless crawler

New property pattern:

transformer.from-headless-crawling.http.headers.<header name>=<header value>

#4622 [vividus-plugin-web-app-to-rest-api] Introduce FROM_HTML table transformer

New transformer generates a table based on the text content, HTML content or attributes of HTML elements found in the provided HTML page.

#4537 (Closes #4437) [vividus-plugin-rest-api] Introduce extended logging for HTTP messages

New property rest-api.http.extended-logging enables logging of HTTP request/response headers and bodies (applied to the following content types only: text/*, application/json, application/xml).

#4621 [vividus-plugin-rest-api] Add ability to set an empty string as HTTP request body

New alias

Given request body:`$content`

is introduced for the step Given request body: $content.

Fixed

#4597 [vividus-plugin-visual] Fix handling of ignore options when custom screenshot strategy is set

The broken link to HTML CodeSniffer standard in the report attachment is fixed to point WCAG 2.1 standard.

release-0.6.3

5 months ago

Added

#4552 [vividus-plugin-web-app] Add support of CKEditor 5 text editor

Now the steps typing text into field can work with web forms using CKEditor of version 5

Fixed

#4565 (Fixes Closes #4564) [vividus] Fix parsing of Lifecycle steps on Windows OS

Composite steps used in Lifecycle section with Examples are parsed and run correctly now (only Windows users were affected).

release-0.6.2

6 months ago

Added

#4534 (Closes #1047) [vividus] Add ability to hide Parameters section in report

Within the report section Suites > Overview > Parameters] houses input data from both the scenario-level and story-level ExamplesTable if any of them is available. When the test data contains numerous records, the Parameters section can become lengthy, thus increasing the difficulty of navigating to the actual Execution body. The property report.show-parameters-section can be used to hide the Parameters section, making navigation easier.

#4510 (Closes #4507) [vividus-plugin-web-app][vividus-plugin-mobile-app] Add ability to configure HTTP read timeout for Selenium Grid

New property is selenium.grid.http.read-timeout.

#4550 [vividus-plugin-web-app] Speed up web application open

Now browser info is not retrieved at web application open stage, it's collected lazily upon the need.

#4545 [vividus-plugin-applitools] Improve report UX: always open UFG results page in a new tab

Changed

#4516 [vividus] Increase size of single log file to 10 MB

The size of single log file is increased from 1 MB to 10 MB.

Deprecated

#4474 [vividus-plugin-web-app] Unify syntax steps interacting with video players

Deprecated step Replacement pattern
When I play video in video player located `$locator` When I play video in video player located by `<locator>`
When I pause video in video player located `$locator` When I pause video in video player located by `<locator>`
When I rewind time to `$number` seconds in video player located `$locator` When I rewind time to `<number>` seconds in video player located by `<locator>`
When I save info from video player located `$locator` to $scopes variable `$variableName` When I save info from video player located by `<locator>` to <scopes> variable `<variableName>`

#4482 [vividus-plugin-web-app] Unify syntax of web application wait steps

Deprecated step Replacement pattern
When I wait until an alert appears When I wait until alert appears
When I wait until an alert disappears When I wait until alert disappears
When I wait until a frame with the name '$frameName' appears When I wait until element located by `xpath(//*[(local-name()='frame' or local-name()='iframe') and @*='<frameName>'])` appears
When I wait until a frame with the name '$frameName' appears and I switch to it When I wait until frame with name `$frameName` appears and I switch to it
When I wait until the page has the title '$title' When I wait until page title is equal to `<title>`
When I wait until the page title contains the text '$text' When I wait until page title contains `<text>`

#4509 [vividus-plugin-web-app] Unify syntax of steps interacting with slider element

Deprecated step Replacement pattern
When I set value `$value` in slider located by `$locator` When I select the value '<value>' in a slider by the xpath '<xpath>'
Then value `$value` is selected in slider located by `$locator` Then the value '<value>' is selected in a slider by the xpath '<xpath>'

Fixed

#4517 [vividus-plugin-web-app] Fix assertion messages in step switching to new tab

Affected step: When I switch to new tab Assertion message like Fail: New tab is found was ambiguous. The step is improved to have clear log and assertion messages. NOTE: Updated of step patterns in known issues may be required.

#4506 (Fixes #4501) [*-exporter] Fix Loggers conflict blocking execution of exporters

Logger frameworks conflict is resolved, exporters work as expected.

release-0.6.1

6 months ago

Added

#4361 [vividus-plugin-web-app-to-rest-api] Add step to check SSL rating using SSL Labs

New step:

Then SSL rating for URL `$url` is $comparisonRule `$gradeName`

#4380, #4409, #4416, #4417, #4426 [vividus-plugin-lighthouse] Allow fine-tuning configuration to get more accurate Lighthouse results

Lighthouse performance scores are changed due to inherent variability in web and network technologies, even if there hasn't been a code change, to alleviate these effects this property allows to run several Lighthouse measurements and perform metrics validation on a measurement selected by user. Properties:

  • lighthouse.performance.percentile - allows to choose a measurement for validation based on the specified percentile.
  • lighthouse.performance.measurements-number - specifies the number of Lighthouse measurements performed for validation.

#4463 [vividus-plugin-aws-s3] Add ability to upload binary data to S3

Single step can be used to upload both text and binary data to S3:

When I upload data `$data` with key `$objectKey` and content type `$contentType` to S3 bucket `$bucketName`

#4460 [vividus-docker] Add Applitools plugin back to Docker image

Deprecated

#4424 [vividus-plugin-web-app] Unify syntax of step validating context text with regex

Deprecated step Replacement pattern
Then the text matches '$regex' Then text matches `<regex>`

#4478 [vividus-plugin-rest-api] Deprecate #{removeWrappingDoubleQuotes(..)} expression

#{removeWrappingDoubleQuotes(..)} expression is deprecated and will be removed in VIVIDUS 0.7.0. Please use JSON steps validating and saving JSON element values instead

#4463 [vividus-plugin-aws-s3] Deprecate step uploading project resource to S3

Deprecated step Replacement pattern
When I upload resource `$resourcePath` with key `$objectKey` and content type `$contentType` to S3 bucket `$bucketName` When I upload data `#{loadResource(<resourcePath>)}` with key `<objectKey>` and content type `<contentType>` to S3 bucket `<bucketName>`

Fixed

#4386, #4425 [vividus] Percent-encode all non-ASCII characters in URL path and URL query parameters

#4423 [vividus] Fix busy resource error occurred when deleting mounted folder

#4475 [vividus-plugin-web-app] Add workaround for error on scrolling to element

The workaround was added for Chrome/Chromium driver/browser bug: MoveTargetOutOfBoundsException is caught while scrolling to element and attempt to scroll via JS is performed.

#4392 [vividus-plugin-lighthouse] Handle scans not collecting performance metrics

Fix NullPointerException occurred at scans which do not collect performance metrics

release-0.6.0

7 months ago

Added

#4295 [vividus] Add ability to replace deprecated properties automatically

New Gradle task allowing to replace deprecated properties automatically is created:

./gradlew replaceDeprecatedProperties

Find more details in the documentation. NOTE: Make sure to update VIVIDUS build system before.

#4067 [vividus] Improve data generation via expression

  • 3 new providers
    • Final Fantasy XIV
    • Red Dead Redemption 2
    • Transport
  • New data generators in Aviation provider

#4297 Introduce VIVIDUS BOM

Bill of Materials (BOM) file is added to the project. It simplifies management of dependencies, see vividus-starter and vividus-sample-tests projects for details how to use VIVIDUS BOM.

#4319 [vividus] Add ability to use scenario ExamplesTable parameters in Lifecycle steps

Now Lifecycle Before/After scenario steps can use parameters from scenario ExamplesTable

#4309 [visual-testing] Improve rendering of images with transparent parts in report

Now transparent parts are rendered as a chessboard.

#4352 [vividus-plugin-web-app] Introduce profile for Headless Firefox browser

New profile is added: web/headless/firefox.

#4353 [vividus-plugin-web-app] Add ability to configure CLI args for Edge browser

New property can be used to set Edge browser CLI arguments: web.driver.edge.command-line-arguments

#4280 (Closes #4063) [vividus-plugin-web-app]/[vividus-plugin-mobile-app] Add step to save text of element

New step:

When I save text of element located by `$locator` to $scopes variable `$variableName`

#4349 [vividus-plugin-web-app]/[vividus-plugin-mobile-app] Add step waiting until element text matches regex

New step:

When I wait until element located by `$locator` has text matching `$regex`

#4344 [vividus-plugin-web-app-to-rest-api] Add step to validate HTTP redirects

New step:

Then I validate HTTP redirects: $expectedRedirects

Now steps validating resources checks jump links in fully-automated way

#4345 (Closes #4334) [vividus-plugin-datetime] Add ability to configure locale for formatDate expression

New property is added: expression.format-date.locale.

#4341 [vividus-plugin-lighthouse] Add ability to compare Lighthouse scans

New step:

Then Lighthouse $scanType audit scores for `$checkpointPage` page are not less than for `$baselinePage` page

Changed

#4113 Drop support of Java 11

Breaking change: all users must migrate to Java 17 or higher. Support of Java 11 is dropped (Java 11 will reach EOL on 30 Sep 2023).

#4290 [vividus] Drop support of VIVIDUS Build System 1.0

Breaking change: all users must migrate to VIVIDUS Build System 2.0 See Migration Guide for more details

#4363 [vividus] Reduce default story execution timeout from 3 to 2 hours

If story execution timeout is not configured explicitly, then it defaults to 2 hours now

#4369 [vividus] Change batch defaults to collect all stories from all subfolders

Now batch include patterns default to **/*.story, in other words all stories from all subfolders are included in batch by default. Previously it was empty value meaning no stories are included in batch by default.

#4284 [vividus] Change priority of encryptor password from environment variable to highest

Now the encryption password is sought in the following sequence: first the OS environment variable, then the password set via the command line, and finally the project system property. If the password is discovered at any point in this sequence, the search stops, and additional options are not considered.

#4282 [vividus] Use granular permissions for eval expression

Now only restricted (explicitly listed) set of actions invoking Java code can be executed via eval expression

[vividus-plugin-db] Increase content size threshold in table comparison attachment

Now more characters are visible in cell by default (the left text tail is hidden with ... more abbreviation and button)

#4287 [vividus-plugin-web-app] Simplify web timeouts configuration

Removed properties Replacement
selenium.timeout.page-load-timeout
selenium.timeout.page-load-timeout-unit
web.timeouts.page-load
selenium.timeout.async-script-timeout
selenium.timeout.async-script-timeout-unit
web.timeouts.async-script

#4370 [vividus-plugin-web-app] Bump default macOS version from Big Sur to Ventura

The profile web/desktop/safari is configured to use macOS Ventura (previously it was macOS Big Sur)

#4310 [vividus-plugin-web-app] Bump Appium to 2.0.0 in mobile web profiles

Appium 2.0.0 is configured to be used for web/phone/* and web/tablet/* profiles by default.

#4291 [vividus-plugin-mobile-app] Disable adding bottom navigation bar to screenshots on Android

The default value of mobile.screenshot.android.append-bottom-navigation-bar property was changed from true (deprecated in 0.5.1) to false. In future this property will be removed, users are needed to re-establish affected baselines. The fallback can be used only temporarily.

#4381 [vividus-plugin-web-app][vividus-plugin-mobile-app] Clean up and improve assertion message on failed wait

The assertion message on failed wait was revised and cleaned up to do not include any duplicated info, also its readability was improved. All users relying on such messages in known issues are recommended to review them to make sure known issues are still properly detected. An example of changes are shown below.

Before: before-wait

After: after-wait

#4249 [vividus-plugin-json] Move FROM_JSON table transformer to JSON plugin

FROM_JSON table transformer is moved from vividus-plugin-rest-api to vividus-plugin-json

Deprecated

#4347 (Closes #4346) [vividus] Deprecate @severity meta tag in favor of @priority meta tag

@priority meta tag should be used to mark importance of the test where, most usually, the smallest number is the most important test, the highest number is the least important one.

#4228 [vividus-plugin-web-app] Unify syntax of steps interacting with dropdowns

Deprecated step Replacement pattern
Then dropdown located `$locator` contains options:$options Then dropdown located by `<locator>` contains options:$options
Then dropdown located `$locator` exists and selected option is `$option` Then dropdown located by `<locator>` exists and selected option is `<option>`
When I add `$option` to selection in dropdown located `$locator` When I add `<option>` to selection in dropdown located by `<locator>`
When I select `$option` in dropdown located `$locator` When I select `<option>` in dropdown located by `<locator>`

#4288 [vividus-plugin-web-app] Unify syntax steps switching context

Deprecated step Replacement pattern
When I switch back to the page When I switch back to page
When I switch to frame located `$locator` When I switch to frame located by `<locator>`

#4219 [vividus-plugin-web-app] Unify syntax of steps interacting with elements

Deprecated step Replacement pattern
When I select element located `$locator` and upload file `$filePath` When I select element located by `<locator>` and upload `<filePath>`
When I click on an element '$locator' then the page does not refresh When I click on element located by `<locator>` then page does not refresh
When I perform right click on element located `$locator` When I perform right-click on element located by `<locator>`
When I hover mouse over element located `$locator` When I hover mouse over element located by `<locator>`
Then the context element has the CSS property '$cssName'='$cssValue' Then context element has CSS property `<cssName>` with value that is equal to `<cssValue>`
Then the context element has the CSS property '$cssName' containing '$cssValue' Then context element has CSS property `<cssName>` with value that contains `<cssValue>`
Then each element located `$locator` has same `$dimension` Then each element located by `<locator>` has same `<dimension>`
Then the context has a width of '$widthInPerc'% Then context element has width of <widthInPerc>%
Then the context element has a width of '$widthInPerc'% relative to the parent element Then context element has width of <widthInPerc>% relative to parent element

#4318 [vividus-plugin-web-app] Deprecate radio button steps in favor of new locator radioButton

Deprecated step Replacement pattern
Then a radio button with the name '$radioOption' exists Then number of elements found by `radioButton(<radioOption>)` is equal to `1`
When I select a radio button with the name '$radioOption' When I click on element located by `radioButton(<radioOption>)`
Then a [$state] radio button with the name '$radioOption' exists Then number of <state> elements found by `radioButton(<radioOption>)` is equal to `1`
Then an element contains the radio buttons:$radioOptions Use several steps Then number of elements found by `radioButton(<radioOption>)` is equal to `1` executed one by one

#4283 [vividus-plugin-web-app]/[vividus-plugin-mobile-app] Unify syntax of steps saving UI data to variables

Deprecated step Replacement pattern
When I save `$attributeName` attribute value of element located `$locator` to $scopes variable `$variableName` When I save `<attributeName>` attribute value of element located by `<locator>` to <scopes> variable `<variableName>`
When I save number of elements located `$locator` to $scopes variable `$variableName` When I save number of elements located by `<locator>` to <scopes> variable `<variableName>`

Removed

#4281, #4389 (Closes #3892) [vividus] Drop default encryptor password

All passwords should be defined by users and be stored on user's side.

#4236 [viviuds] Remove support of deprecated fail-fast properties

Removed property (deprecated in 0.5.2) Replacement
bdd.batch.fail-fast batch.fail-fast
bdd.story.fail-fast story.fail-fast
bdd.scenario.fail-fast scenario.fail-fast

#4236 [vividus] Remove support of deprecated properties configuring batches

Removed property (deprecated in 0.5.2) Replacement
bdd.story-loader.batch-<batch-number>.* batch-<batch-number>.*
bdd.batch-<batch-number>.* batch-<batch-number>.*

#4236 [vividus] Remove support of deprecated properties declaring variables

Removed property (deprecated in 0.5.2) Replacement
bdd.variables.global.* variables.*
bdd.variables.batch-<batch-number>.* batch-<batch-number>.variables.*

#4236 [vividus] Remove support of deprecated property configuring path patterns of composite steps files

Removed property (deprecated in 0.5.2) Replacement
bdd.configuration.composite-paths engine.composite-paths

#4239 [vividus] Remove deprecated internal property configuring path patterns of all composite steps files (including internal ones)

Previously property bdd.configuration.all-composite-paths was internal (it's not expected to be used by end-users) and it's used to configure composite files paths: both internal and external. But it's turned out users misused the property and overrode default VIVIDUS composite steps, the decision was taken to drop the property and it was implemented in #3436. The property was deprecated in 0.5.2 in favour of engine.composite-paths to do not break backward compatibility.

#4148 [vividus] Remove deprecated non-unified steps initializing variables

Removed step (deprecated in 0.5.0) Replacement pattern
When I initialize the $scopes variable `$variableName` with value `$variableValue` Given I initialize <scopes> variable `<variableName>` with value `<variableValue>`
Given I initialize the $scopes variable `$variableName` using template `$templatePath` with parameters:$templateParameters Given I initialize <scopes> variable `<variableName>` using template `<templatePath>` with parameters:<templateParameters>

#4189 [vividus] Remove deprecated limit property of ITERATING table transformer

The replacement for limit property (deprecated in 0.5.0):

{transformer=ITERATING, limit=5}

is a combination of 2 properties:

{transformer=ITERATING, startInclusive=0, endInclusive=4}

#4190 [vividus-plugin-web-app] Remove deprecated device-orientation-specific mobile profiles

The profiles deprecated in 0.5.0 and listed below are removed:

  • web/phone/iphone/landscape
  • web/phone/iphone/portrait
  • web/tablet/ipad/landscape
  • web/tablet/ipad/portrait

selenium.grid.capabilities.deviceOrientation property should be used to configure device orientation and custom meta tags and meta filters should be used to configure test suite to execute.

#4190 [vividus-plugin-web-app] Remove deprecated web/desktop/edge/chromium profile in favor of web/desktop/edge

web/desktop/edge/chromium profile deprecated in 0.5.0 is removed in favor of web/desktop/edge. EdgeHTML was retired a long time ago, so only Chromium backed Edge is available now, thus there is no need to distinguish Edge builds anymore.

Removed step (deprecated in 0.5.0) Replacement
Then context contains list of link items with the text and link: $expectedLinkItems Then number of elements found by `$locator` is $comparisonRule `$quantity`
Then context contains list of link items with the text: $expectedLinkItems Then number of elements found by `$locator` is $comparisonRule `$quantity`

#4192 [vividus-plugin-web-app] Remove deprecated step changing state of multiple checkboxes

Removed step (deprecated in 0.5.0) Replacement
When I $checkboxAction all checkboxes located by `$checkboxesLocator` When I $checkBoxAction checkbox located by `$checkboxLocator` and When I find $comparisonRule `$number` elements by `$locator` and for each element do$stepsToExecute

#4193 [vividus-plugin-web-app] Remove deprecated step clicking on element without retry on StaleElementReferenceException

Removed step (deprecated in 0.5.0) Replacement
When I click on element located `$locator` When I click on element located by `<locator>`

#4208 [vividus-plugin-web-app] Remove deprecated steps using explicit XPaths as locators

Removed step (deprecated in 0.5.0) Replacement pattern
Then invisible element by xpath '$xpath' exists Then number of invisible elements `By.xpath(<xpath>)` is equal to `1`
When I set the number of elements found by xpath '$xpath' to the '$scopes' variable '$variableName' When I save number of elements located `By.xpath(<xpath>)` to <scopes> variable `<variableName>`
Then the number of elements found by the xpath '$xpath' is $comparisonRule '$quantity' Then number of elements found by `By.xpath(<xpath>)` is <comparisonRule> `<quantity>`
When I add '$text' to a field by the xpath '$xpath' When I add `<text>` to field located `By.xpath(<xpath>)`
When I clear a field by the xpath '$xpath' When I clear field located `By.xpath(<xpath>)`
When I clear a field by the xpath '$xpath' using keyboard When I clear field located `By.xpath(<xpath>)` using keyboard
When I enter '$text' in a field by the xpath '$xpath' When I enter `<text>` in field located `By.xpath(<xpath>)`
When I select '$text' from a drop down by the xpath '$xpath' When I select `<text>` from drop down located `By.xpath(<xpath>)`
Then an element by the xpath '$xpath' does not exist Then number of elements found by `By.xpath(<xpath>)` is equal to `0`
When I click on an element by the xpath '$xpath' When I click on element located by `xpath(<xpath>)`
When I click on all elements by xpath '$xpath' When I click on all elements located `By.xpath(<xpath>)`
Then each element by the xpath '$xpath' has same '$dimension' Then each element located `By.xpath(<xpath>)` has same `<dimension>`
Then each element by the xpath '$elementXpath' has '$number' child elements by the xpath '$childXpath' Then each element with locator `By.xpath(<elementXpath>)` has `<number>` child elements with locator `By.xpath(<childXpath>)`
Then at least one element by the xpath '$xpath' exists Then number of elements found by `By.xpath(<xpath>)` is greater than or equal to `1`
Then an element by the xpath '$xpath' exists Then number of elements found by `By.xpath(<xpath>)` is equal to `1`
When I hover a mouse over an element with the xpath '$xpath' When I hover mouse over element located `By.xpath(<xpath>)`
When I perform right click on an element by the xpath '$xpath' When I perform right click on element located `By.xpath(<xpath>)`
When I wait until an element with the xpath '$xpath' appears When I wait until element located `By.xpath(<xpath>)` appears
When I wait until an element with the xpath '$xpath' disappeares When I wait until element located `By.xpath(<xpath>)` disappears

#4226 [vividus-plugin-web-app] Remove deprecated wait steps

Removed step (deprecated in 0.5.1) Replacement pattern
When I wait until an element with the text '$text' appears When I wait until element located by `caseSensitiveText(<text>)` appears
When I wait until an element with the text '$text' disappears When I wait until element located by `caseSensitiveText(<text>)` disappears
When I wait until an element with the name '$elementName' disappears When I wait until element located by `elementName(<elementName>)` disappears
When I wait until an element with the name '$elementName' appears When I wait until element located by `elementName(<elementName>)` appears
When I wait until the state of an element with the name '$elementName' becomes [$state] When I wait until state of element located by `elementName(<elementName>)` is <state>
When I wait until an element with the name '$elementName' is stale When I wait until element located by `elementName(<elementName>)` is stale
When I wait until an element with the name '$elementName' contains the text '$text' When I wait until element located by `elementName(<elementName>)` contains text `<text>`
Then an element with the name '$elementName' disappears in '$timeout' seconds Then element located by `elementName(<elementName>)` disappears in `<timeout>`
When I wait `$duration` with `$pollingDuration` polling until element located `$locator` becomes $state When I wait `<duration>` with `<pollingDuration>` polling until element located by `<locator>` becomes <state>
When I wait until state of element located `$locator` is $state When I wait until state of element located by `<locator>` is <state>
When I wait until element located `$locator` is stale When I wait until element located by `<locator>` is stale
When I wait until element located `$locator` contains text '$text' When I wait until element located by `<locator>` contains text `<text>'
Then element located '$locator' disappears in '$timeout' Then element located by `<locator>` disappears in `<timeout>`
Removed step (deprecated in 0.5.1) Replacement
When I wait until an element with the tag '$elementTag' and attribute '$attributeType'='$attributeValue' disappears When I wait until element located `$locator` disappears
When I wait until an element with the tag '$elementTag' and attribute '$attributeType'='$attributeValue' appears When I wait until element located `$locator` appears
Then an element with the id '$id' disappears When I wait until element located `$locator` disappears

#4232 [vividus-plugin-web-app] Remove deprecated step clicking on multiple elements

The step

When I click on all elements located `$locator`

is removed (deprecated in 0.5.1).

The combination of steps

When I click on element located by `$locator`

and

When I find $comparisonRule `$number` elements by `$locator` and for each element do$stepsToExecute

should be used instead.

#4235 [vividus-plugin-web-app] Remove deprecated steps interacting with fields

Removed step (deprecated in 0.5.1) Replacement
When I clear field located `$locator` When I clear field located by `$locator`
When I clear field located `$locator` using keyboard When I clear field located by `$locator` using keyboard
When I add `$text` to field located `$locator` When I add `$text` to field located by `$locator`
When I enter `$text` in field located `$locator` When I enter `$text` in field located by `$locator`
Removed step (deprecated in 0.5.1) Replacement pattern
Then field located `$locator` does not exist Then number of elements found by `<locator>` is equal to `0`
Then field located `$locator` exists Then number of elements found by `<locator>` is equal to `1`
Then a field with the name '$fieldName' exists Then number of elements found by `fieldName(<fieldName>)` is equal to `1`
When I clear a field with the name '$fieldName' When I clear field located by `fieldName(<fieldName>)`
When I clear a field with the name '$fieldName' using keyboard When I clear field located by `fieldName(<fieldName>)` using keyboard
When I add '$text' to a field with the name '$fieldName' When I add `<text>` to field located by `fieldName(<fieldName>)`
When I enter '$text' in a field with the name '$fieldName' When I enter `<text>` in field located by `fieldName(<fieldName>)`
Then a field with the name '$fieldName' and text containing '$textpart' exists Then number of elements found by `fieldName(<fieldName>):a->filter.fieldTextPart(<textpart>)` is equal to `1`
Then a field with the name '$fieldName' does not exist Then number of elements found by `fieldName(<fieldName>)` is equal to `0`
Then a [$state] field with the name '$fieldName' and text '$text' exists Then number of elements found by `fieldName(<fieldName>)->filter.fieldText(<text>).state(<state>)` is equal to `1`
Then a field with the name '$fieldName' and text '$text' does not exist Then number of elements found by `fieldName(<fieldName>):a->filter.fieldText(<text>)` is equal to `0`
Then a field with the name '$fieldName' and text '$text' exists Then number of elements found by `fieldName(<fieldName>)->filter.fieldText(<text>)` is equal to `1`
Then a field with the name '$fieldName' and placeholder text '$text' exists Then number of elements found by `fieldName(<fieldName>):a->filter.placeholder(<text>)` is equal to `1`
Then a [$state] field with the name '$fieldName' and placeholder text '$text' exists Then number of elements found by `fieldName(<fieldName>)->filter.placeholder(<text>).state(<state>)` is equal to `1`
Then a field with the name '$fieldName' placeholder text '$text' does not exist Then number of elements found by `fieldName(<fieldName>):a->filter.placeholder(<text>)` is equal to `0`
Then a [$state] field with the name '$fieldName' exists Then number of elements found by `fieldName(<fieldName>):a->filter.state(<state>)` is equal to `1`

#4213 [vividus-plugin-web-app][vividus-plugin-mobile-app] Remove deprecated step validating elements sorting order

Removed step (deprecated in 0.5.0) Replacement pattern
Then elements located `$locator` are sorted by text in $sortingOrder order Then elements located by `<locator>` are sorted by text in <sortingOrder> order

#4221 [vividus-plugin-web-app] [vividus-plugin-mobile-app] Remove deprecated wait steps

Removed step (deprecated in 0.5.1) Replacement pattern
When I wait until element located `$locator` appears When I wait until element located by `<locator>` appears
When I wait until element located `$locator` disappears When I wait until element located by `<locator>` disappears
Then element located `$locator` exists for `$duration` duration Then element located by `<locator>` exists for `<duration>` duration

#4252 [vividus-plugin-web-app] Remove deprecated step refreshing page

Removed step (deprecated in 0.5.8) Replacement
When I refresh the page When I refresh page

#4263 [vividus-plugin-web-app] Remove deprecated step validating page title

Removed step (deprecated in 0.5.8) Replacement
Then the page title $comparisonRule '$text' Then page title <comparisonRule> `<text>`

#4296 [vivius-plugin-web-app] Remove explicit wait for page load after navigation on iOS

iOS platform correctly handles and waits for web page load, additional explicit waits are removed (the behaviour is deprecated in 0.5.4).

#4214 [vividus-plugin-mobile-app] Remove deprecated steps performing tap and swipe actions

Removed step (deprecated in 0.5.0) Replacement pattern
When I tap on element located `$locator` with duration `$duration` When I tap on element located by `<locator>` with duration `<duration>`
When I tap on element located `$locator` When I tap on element located by `<locator>`
When I swipe $direction to element located `$locator` with duration $swipeDuration When I swipe <direction> to element located by `<locator>` with duration <swipeDuration>

#4115 [vividus-plugin-mobile-app]/[vividus-plugin-visual] Remove deprecated non-unified definitions of cut strategies for mobile apps

  • Deprecated screenshot configuration parameter nativeFooterToCut is removed, use cutBottom parameter for mobile applications.
  • Removed property:
Removed property (deprecated in 0.4.16) Replacement
mobile.screenshot.strategy.<YOUR_STRATEGY_NAME>.native-footer-to-cut mobile.screenshot.strategy.<YOUR_STRATEGY_NAME>.cut-bottom

#4116 [vividus-plugin-mobile-app]/[vividus-plugin-visual] Drop the ability to downscale mobile app screenshots

Breaking change: the downscaling was deprecated in 0.4.0 and since 0.5.0 downscaling functionality was disabled by default.

Removed property (deprecated in 0.4.0) Replacement
mobile.screenshot.downscale=false Not available, all mobile app screenshots must be used as is

#4243 [vividus-plugin-mobile-app]/[vividus-plugin-visual] Remove deprecated screenshooting strategy

Removed screenshooting strategy (deprecated in 0.5.4) Replacement
SIMPLE VIEWPORT

#4216 [vividus-plugin-rest-api] Remove deprecated HTTP steps

Removed step (deprecated in 0.5.0) Replacement pattern
When I send HTTP $httpMethod to the relative URL '$relativeURL' When I execute HTTP <httpMethod> request for resource with relative URL `<relativeURL>`
When I save response body to the $scopes variable '$variableName' Given I initialize <scopes> variable `<variableName>` with value `${response}`
Then the response does not contain body Then response does not contain body
Then the response body $comparisonRule '$content' Then `${response}` is <comparisonRule> `<content>`
Then the response body $validationRule resource at '$resourcePath' Then response body <validationRule> resource at `<resourcePath>`
Then the response code is $comparisonRule '$responseCode' Then response code is <comparisonRule> `<responseCode>`
Then the response time should be less than '$responseTimeThresholdMs' milliseconds Then response time is less than `<responseTimeThresholdMs>` milliseconds
Then response header '$httpHeaderName' contains attribute: $attributes Then response header `<httpHeaderName>` contains elements:<attributes>
Then the value of the response header '$httpHeaderName' $comparisonRule '$value' Then value of response header `<httpHeaderName>` <comparisonRule> `<value>`
Then the number of the response headers with the name '$headerName' is $comparisonRule $value Then number of response headers with name `<httpHeaderName>` is <comparisonRule> <value>
When I save response header '$httpHeaderName' value to $scopes variable '$variableName' When I save response header `<httpHeaderName>` value to <scopes> variable `<variableName>`
Then the connection is secured using $securityProtocol protocol Then connection is secured using <securityProtocol> protocol

#4240 [vividus-plugin-json] Remove deprecated parameters of FROM_JSON transformer

Parameter name Replacing parameter
url (deprecated in 0.5.3) variableName
variable (deprecated in 0.5.7) variableName

#4218 [vividus-plugin-json] Remove deprecated JSON steps

Removed step (deprecated in 0.5.1) Replacement pattern
When I save JSON element value from context by JSON path `$jsonPath` to $scopes variable `$variableName` When I save JSON element value from `${json-context}` by JSON path `<jsonPath>` to <scopes> variable `<variableName>`
When I save JSON element from context by JSON path `$jsonPath` to $scopes variable `$variableName` When I save JSON element from `${json-context}` by JSON path `<jsonPath>` to <scopes> variable `<variableName>`
When I convert JSON from context to $scopes variable `$variableName` When I convert JSON `${json-context}` to <scopes> variable `<variableName>`
When I set number of elements found by JSON path `$jsonPath` to $scopes variable `$variableName` When I save number of elements from `${json-context}` found by JSON path `<jsonPath>` to <scopes> variable `<variableName>`
When I find $comparisonRule `$elementsNumber` JSON elements by `$jsonPath` and for each element do$stepsToExecute When I find <comparisonRule> `<elementsNumber>` JSON elements from `${json-context}` by `<jsonPath>` and for each element do<stepsToExecute>
When I find $comparisonRule '$elementsNumber' JSON elements by '$jsonPath' and for each element doa$stepsToExecute When I find <comparisonRule> '<elementsNumber>' JSON elements from '${json-context}' by '<jsonPath>' and for each element do<stepsToExecute>
When I find $comparisonRule `$elementsNumber` JSON elements in context by `$jsonPath` and until variable `$variableName` $variableMatcher `$expectedValue` for each element I do:$stepsToExecute When I find <comparisonRule> `<elementsNumber>` JSON elements in `${json-context}` by `<jsonPath>` and until variable `<variableName>` <variableMatcher> `<expectedValue>` for each element I do:<stepsToExecute>
When I find $comparisonRule '$elementsNumber' JSON elements in context by '$jsonPath' and until variable '$variableName' $variableMatcher '$expectedValue' for each element I do:$stepsToExecute When I find <comparisonRule> '<elementsNumber>' JSON elements in '${json-context}' by '<jsonPath>' and until variable '<variableName>' <variableMatcher> '<expectedValue>' for each element I do:<stepsToExecute>
Then JSON element value from context by JSON path `$jsonPath` $comparisonRule `$expectedValue` Then JSON element value from `${json-context}` by JSON path `<jsonPath>` <comparisonRule> `<expectedValue>`
Then JSON element by JSON path `$jsonPath` is equal to `$expectedJson`$options Then JSON element from `${json-context}` by JSON path `<jsonPath>` is equal to `<expectedJson>`<options>
Then number of JSON elements by JSON path `$jsonPath` is $comparisonRule $elementsNumber Then number of JSON elements from `${json-context}` by JSON path `<jsonPath>` is <comparisonRule> <elementsNumber>

#4139 [vividus-plugin-azure-***] Remove deprecated non-generic steps managing Azure resources

Remove step (deprecated in 0.5.0) Replacement pattern
When I collect system topics in resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName` When I get Azure resource with identifier `resourceGroups/<resourceGroupName>/providers/Microsoft.EventGrid/systemTopics` using API version `2021-12-01` and save it to <scopes> variable `<variableName>`
When I retrieve properties of key vault with name `$keyVaultName` from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName` When I get Azure resource with identifier `resourceGroups/<resourceGroupName>/providers/Microsoft.KeyVault/vaults/<keyVaultName>` using API version `2021-10-01` and save it to <scopes> variable `<variableName>`
When I collect SQL Servers from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName` When I get Azure resource with identifier `resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers` using API version `2021-08-01-preview` and save it to <scopes> variable `<variableName>`
When I collect databases from SQL Server `$sqlServerName` from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName` When I get Azure resource with identifier `resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<sqlServerName>/databases` using API version `2021-08-01-preview` and save it to <scopes> variable `<variableName>`
When I retrieve properties of database with name `$databaseName` from SQL Server `$sqlServerName` from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName` When I get Azure resource with identifier `resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<sqlServerName>/databases/<databaseName>` using API version `2021-08-01-preview` and save it to <scopes> variable `<variableName>`
When I collect storage accounts in resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName` When I get Azure resource with identifier `resourceGroups/<resourceGroupName>/providers/Microsoft.Storage/storageAccounts` using API version `2021-08-01` and save it to <scopes> variable `<variableName>`
When I retrieve blob service properties of storage account with name `$storageAccountName` from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName` When I get Azure resource with identifier `resourceGroups/<resourceGroupName>/providers/Microsoft.Storage/storageAccounts/<storageAccountName>/blobServices/default` using API version `2021-08-01` and save it to <scopes> variable `<variableName>`

#4237 [vividus-plugin-kafka] Remove deprecated Kafka steps

Removed step (deprecated in 0.5.6) Replacement pattern
When I send data `$data` to `$producerKey` Kafka topic `$topic` When I send event with value `$value` to `$producerKey` Kafka topic `$topic`
When I start consuming messages from `$consumerKey` Kafka topics `$topics` When I start consuming events from `$consumerKey` Kafka topics `$topics`
When I $queueOperation consumed `$consumerKey` Kafka messages to $scopes variable `$variableName` When I $queueOperation consumed `$consumerKey` Kafka events to $scopes variable `$variableName`
When I wait with `$timeout` timeout until count of consumed `$consumerKey` Kafka messages is $comparisonRule `$expectedCount` When I wait with `$timeout` timeout until count of consumed `$consumerKey` Kafka events is $comparisonRule `$expectedCount`
When I stop consuming messages from `$consumerKey` Kafka When I stop consuming events from `$consumerKey` Kafka

#4251 [vividus-plugin-saucelabs] Drop support of deprecated Data Centers namings

SauceLabs added more data Centers and updated naming of the current ones to make them more specific

Removed SauceLabs Data Center (deprecated in 0.5.5) Replacement
US US_WEST
EU EU_CENTRAL

TIP: SauceLabs Data Center is configured via mandatory saucelabs.data-center property.

#4204 [vividus-plugin-cross-browser-testing] Remove deprecate CrossBrowserTesting plugin

CrossBrowserTesting cloud was sunset on July 2023:

...we have also announced that we will be sunsetting the CrossBrowserTesting cloud in July 2023, as this new product will replace CrossBrowserTesting.

vividus-plugin-cross-browser-testing plugin deprecated in 0.5.3 is removed.

Fixed

#4316 [vividus] Fix displaying of Lifecycle After Story steps in the report

#4212 [vividus-plugin-web-app] Use native scroll to element as JS scroll may break application UI

JS scrollIntoView method may break application UI, thus JS scroll was replaced with native scroll via mouse.

#4231 [vividus-plugin-web-app] Retry click with scroll only if element is overlapped

An explicit scroll to element to click was removed (Scroll to element to click should be done automatically), scroll of element into viewport center was left only in case of error saying that element to click is overlapped with another element.

#4357 [vividus-plugin-accessibility] Fix parsing of accessibility results provided by axe core engine

#4188 [vividus-plugin-electron] Fix passing of command-line arguments to Electron apps at start

The typo in default property configuring CLI arguments was fixed.

#4227 [vividus-plugin-applitools] Use default config for Applitools HTTP calls

Default HTTP config and properties are used to configure interactions with Applitools, previously HTTP config from REST API plugin was used.

#4234 [vividus-plugin-applitools] Fix quiet swallowing of errors on Applitools session start

Errors on Applitools session start are properly propagated to the top level and not hidden anymore.

release-0.5.13

9 months ago

Fixed

#4178 [vividus-plugin-web-app] Allow to use human-readable inputs in state filters

For example: tagName(div):a->filter.state(not visible), while previously it was required to put state value as NOT_VISIBLE.