0.5.0 - 2022-10-23
Added
#3145 (Closes #712) [vividus] Add ability to put data with line breaks to ExamplesTable
New inlined property is introduced:
{processEscapeSequences=true}
|header |
|line 1\nline 2 |
#3251 [vividus] Allow to use dots (.
) in ExamplesTable
column names
Scenario: Resolve ExamplesTable placeholders with dot character
Then `<xy.z>` is equal to `hello`
Examples:
|xy.z |
|hello|
#3228 [vividus] Add ability to set custom range for ITERATING
table transformer
{transformer=ITERATING, startInclusive=0, endInclusive=4}
#3225 (Closes #3118) [vividus] Add substringBefore
& substringAfter
expressions
#{substringBefore(abc, b)} => a
#{substringAfter(abc, b)} => c
#3288 [vividus] Add ability to set the encryption password via environment variable
Environment variable is VIVIDUS_ENCRYPTOR_PASSWORD
#3172 [vividus-plugin-yaml] Introduce YAML plugin (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New step:
When I save YAML element value from `$yaml` by YAML path `$yamlPath` to $scopes variable `$variableName`
#3264 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add step waiting for number of elements
New step:
When I wait until number of elements located by `$locator` is $comparisonRule $number
#3202 [vividus-plugin-web-app][vividus-plugin-mobile-app] Improve logging of search results
The logging at search doesn't add several messages for single operation anymore, the single message is always logged and its content depends on search results.
#3258 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add validation of locator visibility flag in steps waiting appearance/disappearance
The cases like waiting for appearance of invisible elements are invalid, and now such cases leads to the errors breaking steps execution
#3235 (Closes #3190) [vividus-plugin-web-app] Add step clicking on element with retry on StaleElementReferenceException
New step syntax:
When I click on element located by `$locator`
#3259 [vividus-plugin-web-app] Add ability to configure path to Safari driver executable
web.driver.safari.driver-executable-path=/path/to/driver/executable
#3273 [vividus-plugin-web-app] Add ability to configure Edge browser path
web.driver.edge.binary-path=/path/to/custom/browser/executable
#3138 [vividus-plugin-mobile-app] Add step changing device screen orientation
New step:
When I change device screen orientation to $orientation
#3128 [vividus-plugin-mobile-app] Make steps executing JS available for mobile app tests
Steps:
When I execute javascript `$script` with arguments:$arguments
When I execute javascript `$script` and save result to $scopes variable `$variableName`
#3287 [vividus-plugin-mobile-app] Add support of iOS NS Predicate locator
When I tap on element located by `iosNsPredicate(name == 'selectImage')`
See iOS Predicate Syntax for more details
#3131 [vividus-plugin-web-app-to-rest-api] Add SVG files to crawler exclusions
Now SVG-files are not attempted to be parsed by Crawler.
#3229, #3245 [vividus-plugin-electron] Simplify naming of properties
New properties for Electron-based applications management are introduced:
electron-app.binary-path
electron-app.chromium-version
electron-app.command-line-arguments
#3173 [VIVIDUS Docker image] Add database connectors into docker image
The following database drivers were added to VIVIDUS Docker image:
* mysql-connector-java
(MySQL)
* mssql-jdbc
(Microsoft SQL Server, Azure SQL)
* postgresql
(PostgreSQL)
* ojdbc10
(Oracle Database)
* db2jcc
(DB2)
* csvjdbc
(CSV)
* h2
(H2)
* snowflake-jdbc
(Snowflake)
#3156 [VIVIDUS developers only] Standardize plugins configuration
VIVIDUS plugins configuration is standardized and the developers guide is published.
Changed
#3136 (Fixes #1746) [vividus] Fix step executing sub-steps basing on the provided conditional to accept strict conditions only
Breaking change: the tests may be broken after migration, in case if invalid condition value is used, the tests and/or conditions must be fixed.
The affected step
When the condition '$condition' is true I do$stepsToExecute
Previously this step executed sub-steps if $condition
was equal to true
and did nothing if $condition
was not equal to true
. This behaviour is considered error-prone and can be misleading (especially if $condition
was implemented with mistakes). The new behaviour for $condition
value is:
Steps are performed | Steps are not performed |
---|---|
1 | 0 |
true | false |
t | f |
on | off |
yes | no |
y | n |
And the error will stop steps execution in case if unsupported $condition value is provided. |
#3263 [vividus] Improve error on invalid byRandomRows
in FILTERING
transformer
New error message adds more details, for example:
'byRandomRows' is 4, but it must be less than or equal to 3 (the number of table rows)
#3290 [vividus] Improve logging of test meta-info
- Shrinked logged table with failures and errors
- Unified format and align logged info tables
- Fixed rendering of table with failures and errors in Windows console
#3290 [vividus] Do not mask properties with 'keys' word
The property db.duplicate-keys-strategy
was false-positively masked as the one containing sensitive information.
#2914 [vividus-plugin-visual] Adjust DPR calculation for android
Breaking change: there is a chance the full re-establishment of visual baselines may be required for Android mobile apps tests.
The ratio between the device window size and taken screenshot size is always equal to 1 regardless of the device display density on Android platform. (See for details: appium/appium-base-driver#306).
#3149 [vividus-plugin-mobile-app]/[vividus-plugin-visual] Do not downscale mobile app screenshots by default
Breaking change: the downscaling was deprecated in 0.4.0
and it's a default behaviour now. There is a chance (depending on the DPR of the used devices/simulators) nothing will be affected. But also there is a possibility, the full re-establishment of visual baselines will be required for iOS mobile apps tests. Alternatively the downscaling may be enabled back via the property, but keep in mind this behaviour is deprecated and will be removed completely in VIVIDUS 0.6.0
.
The downscaling is disabled by default:
mobile.screenshot.downscale=false
#2978 (Closes #2896) [vividus-plugin-web-app] Use chrome driver to manage Opera browser
Now ChromeDriver is used to run tests in Opera browser, the following property becomes mandatory for Opera:
web.driver.OPERA.binary-path=<path to opera>
#2947 [vividus-plugin-web-app] Stop using Windows 10 as default platform
Now the properties defining the required platform:
selenium.grid.platform-name=
selenium.grid.platform-version=
are left empty for all profiles except web/desktop/iexplore
(Windows 10 is preserved here). If any Cloud provider is used, make use its default platform values match your requirements.
#3255 [vividus-plugin-web-app] Decrease Selenium Cloud idle timeout from 6 to 3 minutes
selenium.grid.idle-timeout=180
Deprecated
#3222 [vividus] Unify syntax of steps initializing variables
Deprecated step | 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> |
#3228 [vividus] Deprecate limit
property of ITERATING
table transformer
The replacement for
{transformer=ITERATING, limit=5}
is
{transformer=ITERATING, startInclusive=0, endInclusive=4}
#3166 [vividus-plugin-azure-***] Deprecate non-generic steps managing Azure resources
Deprecated step | 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>` |
#3260 [vividus-plugin-web-app] Deprecate device-orientation-specific mobile profiles
The profiles listed below are deprecated and will be removed in further VIVIDUS versions:
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.
#3265 [vividus-plugin-web-app] Deprecate web/desktop/edge/chromium
profile in favor of web/desktop/edge
web/desktop/edge/chromium
profile is deprecated in favor of web/desktop/edge
and will be removed in further VIVIDUS versions.
EdgeHTML was retired some time ago, so only Chromium backed Edge is available now, thus there is no need to distinguish Edge builds anymore.
#3177 [vividus-plugin-web-app] Deprecate steps validating list of links within search context
Deprecated step | 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` |
#3178 [vividus-plugin-web-app] Deprecate step changing state of multiple checkboxes
Deprecated step | 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" |
#3235 [vividus-plugin-web-app] Deprecate step clicking on element without retry on StaleElementReferenceException
Deprecated step | Replacement pattern |
---|---|
When I click on element located `$locator` | When I click on element located by `<locator>` |
#3278 [vividus-plugin-web-app] Deprecate majority of steps using explicit xpaths as locators
Deprecated step | 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 |
#3250 [vividus-plugin-web-app][vividus-plugin-mobile-app] Align syntax of step validating elements sorting order
Deprecated step | 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 |
#3289 [vividus-plugin-mobile-app] Unify syntax of steps performing tap and swipe actions
Deprecated step | 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> |
#3220 (Closes #3207) [vividus-plugin-rest-api] Unify syntax of REST API steps
Deprecated step | 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 |
#3211 [vividus-plugin-json] [vividus-plugin-rest-api] Unify syntax of steps to work with JSON
Deprecated step | 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> |
Removed
#3113 [vividus-plugin-web-app] Remove deprecated excessive image steps
Removed step (deprecated in 0.4.0 ) |
Replacement |
---|---|
When I hover a mouse over an image with the src '$src' | When I hover a mouse over an element with the xpath './/img[@src='<src>']' |
When I hover a mouse over an image with the tooltip '$tooltipImage' | When I hover a mouse over an element with the xpath './/img[@alt='<tooltipImage>' or @title='<tooltipImage>']' |
When I click on an image with the src '$src' | When I click on an element by the xpath './/img[@src='<src>']' |
When I click on an image with the name '$imageName' | When I click on an element by the xpath './/img[@*='<imageName>' or text()='<imageName>']' |
Then an image with the src '$src' exists | Then number of elements found by `By.xpath(.//img[@src='<src>'])` is equal to `1` |
Then a [$state] image with the src '$src' exists | Then number of elements found by `By.xpath(.//img[@src='<src>'])->filter.state(<state>)` is equal to `1` |
Then an image with the src '$src' does not exist | Then number of elements found by `By.xpath(.//img[@src='<src>'])` is equal to `0` |
Then an image with the src containing '$srcpart' exists | Then number of elements found by `By.xpath(.//img[contains(@src,'<srcpart>')])` is equal to `1` |
Then an image with the tooltip '$tooltip' and src containing '$srcpart' exists | Then number of elements found by `By.xpath(.//img[contains(@src,'<srcpart>') and (@alt='<tooltip>' or @title='<tooltip>')])` is equal to `1` |
Then an image with the src '$imageSrc' and tooltip '$tooltip' exists | Then number of elements found by `By.xpath(.//img[@src='<imageSrc>' and (@alt='<tooltip>' or @title='<tooltip>')])` is equal to `1` |
Then a [$state] image with the src '$imageSrc' and tooltip '$tooltip' exists | Then number of elements found by `By.xpath(.//img[@src='<imageSrc>' and (@alt='<tooltip>' or @title='<tooltip>')])->filter.state(<state>)` is equal to `1` |
Then a [$state] image with the src containing '$srcpart' exists | Then number of elements found by `By.xpath(.//img[contains(@src,'<srcpart>')])->filter.state(<state>)` is equal to `1` |
Then a [$state] image with the tooltip '$tooltipImage' exists | Then number of elements found by `By.xpath(.//img[@alt='<tooltipImage>' or @title='<tooltipImage>'])->filter.state(<state>)` is equal to `1` |
Then an image with the tooltip '$tooltipImage' exists | Then number of elements found by `By.xpath(.//img[@alt='<tooltipImage>' or @title='<tooltipImage>'])` is equal to `1` |
#3114 [vividus-plugin-web-app] Remove deprecated non-unified steps setting search context
Removed step (deprecated in 0.4.0 ) |
Replacement |
---|---|
When I change context to an element by the xpath '$xpath' | When I change context to element located `By.xpath(<xpath>)` |
When I change context to an element by the CSS selector '$cssSelector' | When I change context to element located `By.cssSelector(<cssSelector>)` |
When I change context to an element with the name '$name' | When I change context to element located `By.name(<name>)` |
When I change context to the page | When I reset context |
#3129 [vividus-plugin-web-app] Remove support of deprecated @browserWindowSize
meta tag
@browserWindowSize
meta tag (deprecated in 0.4.1
) is removed. The replacement is step:
When I change window size to `$targetSize`
#2991 (Closes #2489) [vividus-plugin-web-app] Remove deprecated non-unified video player steps
Removed step (deprecated in 0.4.3 ) |
Replacement |
---|---|
When I play video in the video player with the name '$videoPlayerName' | When I play video in video player located `xpath(//video[@*='<videoPlayerName>'])` |
When I rewind time to '$number' seconds in the video player with the name '$videoPlayerName' | When I rewind time to `<number>` seconds in video player located `xpath(//video[@*='<videoPlayerName>'])` |
When I pause video in the video player with the name '$videoPlayerName' | When I pause video in video player located `xpath(//video[@*='<videoPlayerName>'])` |
#2972 (Closes #2660) [vividus-plugin-web-app] Remove deprecate non-unified step interacting with local storage
Removed step (deprecated in 0.4.6
:
Then local storage item with `$key` does not exist
Replacement:
Then local storage item with key `<key>` does not exist
#3151 [vividus-plugin-web-app] Remove deprecated steps executing JavaScript
Removed step (deprecated in 0.4.10 ) |
Replacement |
---|---|
When I perform javascript '$jsCode' and save result to the '$scopes' variable '$variableName' | When I execute javascript `<jsCode>` and save result to <scopes> variable `<variableName>` |
When I perform async javascript '$jsCode' and save result to the '$scopes' variable '$variableName' | When I execute async javascript `<jsCode>` and save result to <scopes> variable `<variableName>` |
#3112 [vividus-plugin-mobile-app] Remove deprecated step switching to web view by index
The removed step (deprecated in 0.4.0
) is:
When I switch to web view with index `$index`
The reason of the removal is the order of web views returned by Appium is not consistent.
- For Android platform the web views are retrieved by parsing UNIX socket names from /proc/net/unix.
- For iOS platform the web views are considered as separate processes within the active application.
Sorting the web view by Inode number for android or PID for iOS doesn't seem logical for end users and as practice shows the order is not guaranteed.
The replacement is the step switching to the web view by name:
When I switch to web view with name that $comparisonRule `$value`
#3115 [vividus-plugin-rest-api] Remove deprecated non-unified HTTP and JSON steps
Removed step (deprecated in 0.4.0 ) |
Replacement |
---|---|
When I send HTTP $httpMethod to the relative URL '$relativeURL' with content: '$content' | Given request body: <content> When I send HTTP <httpMethod> to the relative URL '<relativeURL>' |
Then a JSON element by the JSON path '$jsonPath' exists | Then number of JSON elements by JSON path `<jsonPath>` is > 0 |
When I save a JSON element from response by JSON path '$jsonPath' to $scopes variable '$variableName' | When I save JSON element from `${response}` by JSON path `<jsonPath>` to <scopes> variable `<variableName>` |
When I save JSON element from response by JSON path `$jsonPath` to $scopes variable `$variableName` | When I save JSON element from `${response}` by JSON path `<jsonPath>` to <scopes> variable `<variableName>` |
#3041 (Closes #2539) [vividus-plugin-rest-api] Remove deprecate non-unified step executing HTTP request
Removed step (deprecated in 0.4.4 ) |
Replacement |
---|---|
When I issue a HTTP $httpMethod request for a resource with the URL '$url' | When I execute HTTP <httpMethod> request for resource with URL `<url>` |
#3154 [vividus-plugin-rest-api] Remove deprecated non-unified step validating ZIP-archives from the latest HTTP response
Removed step (deprecated in 0.4.9 ) |
Replacement |
---|---|
Then the response archive contains entries with the names:$parameters | Then `${response-as-bytes}` archive contains entries with names:<parameters> |
#3154 [vividus-plugin-rest-api] Remove deprecated steps interacting with ZIP-archives from the latest HTTP response
Removed step (deprecated in 0.4.10 ) |
Replacement |
---|---|
When I save content of the response archive entries to the variables:$parameters | When I save content of `${response-as-bytes}` archive entries to variables:<parameters> |
Then response archive contains entries with names:$parameters | Then `${response-as-bytes}` archive contains entries with names:<parameters> |
#3034 (Closes #2512) [vividus-plugin-html] Remove deprecated non-unified HTML steps
Removed step (deprecated in 0.4.3 ) |
Replacement |
---|---|
When I save $dataType of element from HTML `$html` by CSS selector `$cssSelector` to $scopes variable `$variableName` | When I save <dataType> of element found by CSS selector `<cssSelector>` in HTML `<html>` to <scopes> variable `<variableName>` |
Then HTML `$html` contains data `$expectedData` by CSS selector `$cssSelector` | Then element found by CSS selector `<cssSelector>` in HTML `<html>` contains text `<expectedData>` |
When I save `$attributeName` attribute value of element from HTML `$html` by CSS selector `$cssSelector` to $scopes variable `$variableName` | When I save `<attributeName>` attribute value of element found by CSS selector `<cssSelector>` in HTML `<html>` to <scopes> variable `<variableName>` |
#3148 [vividus-plugin-web-app-to-rest-api] Remove deprecated FROM_HEADLESS_CRAWLING
transformer properties
Removed property (deprecated in 0.4.6 ) |
Replacement |
---|---|
bdd.transformer.headless.filter-redirects |
transformer.from-headless-crawling.filter-redirects |
bdd.transformer.headless.seed-relative-urls |
transformer.from-headless-crawling.seed-relative-urls |
#3158 [vividus-plugin-web-app-to-rest-api] Remove deprecated non-unified table transformers properties
FROM_HEADLESS_CRAWLING
transformer properties:
Removed property (deprecated in 0.4.7 ) |
Replacement |
---|---|
transformer.headless.* |
transformer.from-headless-crawling.* |
FROM_SITEMAP
transformer properties:
Removed property (deprecated in 0.4.7 ) |
Replacement |
---|---|
bdd.transformer.sitemap.ignore-errors |
transformer.from-sitemap.ignore-errors |
bdd.transformer.sitemap.filter-redirects |
transformer.from-sitemap.filter-redirects |
#3127 (Closes ##3126) [vividus-plugin-visual] Remove deprecated steps with unclear syntax
Removed step (deprecated in 0.4.11 ) |
Replacement |
---|---|
When I $actionType baseline with `$name` | When I <actionType> baseline with name `<name>` |
When I $actionType baseline with `$name` using screenshot configuration:$screenshotConfiguration | When I <actionType> baseline with name `<name>` using screenshot configuration:<screenshotConfiguration> |
When I $actionType baseline with `$name` ignoring:$checkSettings | When I <actionType> baseline with name `<name>` ignoring:<checkSettings> |
When I $actionType baseline with `$name` ignoring:$checkSettings using screenshot configuration:$screenshotConfiguration | When I <actionType> baseline with name `<name>` ignoring:<checkSettings> using screenshot configuration:<screenshotConfiguration> |
#3127 (Closes ##3126) [vividus-plugin-visual] Remove deprecated steps and properties with misleading visual baseline naming
Removed property (deprecated in 0.4.13 ) |
Replacement |
---|---|
ui.visual.baseline-repository |
ui.visual.baseline-storage |
Removed step (deprecated in 0.4.13 ) |
Replacement |
---|---|
When I $actionType baseline with name `$name` using repository `$repository` | When I <actionType> baseline with name `<name>` using storage `<repository>` |
When I $actionType baseline with name `$name` using repository `$repository` and screenshot configuration:$screenshotConfiguration | When I <actionType> baseline with name `<name>` using storage `<repository>` and screenshot configuration:<screenshotConfiguration> |
When I $actionType baseline with name `$name` using repository `$repository` and ignoring:$checkSettings | When I <actionType> baseline with name `<name>` using storage `<repository>` and ignoring:<checkSettings> |
When I $actionType baseline with name `$name` using repository `$repository` and ignoring:$checkSettings and screenshot configuration:$screenshotConfiguration | When I <actionType> baseline with name `<name>` using storage `<repository>` and ignoring:<checkSettings> and screenshot configuration:<screenshotConfiguration> |
#3127 (Closes ##3126) [vividus-plugin-visual] Remove deprecate non-generic property configuring the folder for filesystem
baseline storage
Removed property (deprecated in 0.4.13 ) |
Replacement |
---|---|
ui.visual.baselines-folder |
ui.visual.baseline-storage.filesystem.folder |
#3155 [vividus-plugin-applitools] Remove deprecated Applitools properties to align naming
Remove property (deprecated in 0.4.9 ) |
Replacement |
---|---|
web.visual.applitools.execute-api-key |
ui.visual.applitools.execute-api-key |
web.visual.applitools.read-api-key |
ui.visual.applitools.read-api-key |
web.visual.applitools.baseline-env-name |
ui.visual.applitools.baseline-env-name |
web.visual.applitools.host-app |
ui.visual.applitools.host-app |
web.visual.applitools.host-os |
ui.visual.applitools.host-os |
web.visual.applitools.viewport-size |
ui.visual.applitools.viewport-size |
web.visual.applitools.match-level |
ui.visual.applitools.match-level |
web.visual.applitools.server-uri |
ui.visual.applitools.server-uri |
web.visual.applitools.app-name |
ui.visual.applitools.app-name |
#3150 [vividus-plugin-datetime] Remove deprecated locale property for generateDate
expression
Removed property (deprecated in 0.4.15 ) |
Replacement |
---|---|
bdd.date-expression-processor.locale |
expression.generate-date.locale |
#3153 [vividus-plugin-excel] Remove deprecated steps validating of Excel document from the latest HTTP response
Removed step (deprecated in 0.4.10 ) |
Replacement |
---|---|
Then response contains excel sheet with index `$index` and records:$records | Then `${response-as-bytes}` contains excel sheet with index `<index>` and records:<records> |
Then response contains excel sheet with name `$name` and records:$records | Then `${response-as-bytes}` contains excel sheet with name `<name>` and records:<records> |
#3146 [vividus-plugin-azure-*] Remove deprecated plugin-specific properties configuring Azure environment
All Azure service environment properties (azure.{azure-service-name}.environment
) deprecated in 0.4.4
are removed:
azure.data-factory.environment
azure.event-grid.environment
azure.event-hub.environment
azure.functions.environment
azure.key-vault.environment
azure.sql-db.environment
azure.storage-account.environment
There are actually 4 different, hosted clouds called Microsoft Azure. There’s the Public Azure Cloud and there are also separate Azure clouds for US Government, Germany, and China. There is no reason to use different types of clouds within one eco-system, thus there is no reason to provide the ability to use plugins for different clouds within single test execution (https://docs.microsoft.com/en-us/graph/deployments).
#3152 [vividus-plugin-azure-storage-account] Remove deprecated Blob Service endpoint property
Removed property (deprecated in 0.4.11 ) |
Replacement |
---|---|
azure.storage-account.<storage-account-key> |
azure.storage-account.<storage-account-key>.blob-service |
Fixed
#3165 [vividus] Fix reporting shattering when system after story step failed
Now the report is generated and displays failures in system after story steps correctly.
#3174 [vividus] Do not mark composite step with composed comments as commented
The status of the composite step ignores the comment status and is equal to the highest status of the composite steps.
#3232 [vividus] Fix resolution of story-level ExamplesTable
placeholders in scenario-level ExamplesTable
placeholder name
Story example demoing the fixed behaviour:
Lifecycle:
Examples:
|a|
|y|
Scenario: Resolve story-level ExamplesTable placeholders in scenario-level ExamplesTable placeholder name
Then `<x<a>z>` is equal to `hello`
Examples:
|xyz |
|hello|
#3160 [vividus] Fix generation of data for ru-RU
locale
#{generateLocalized(Address.streetAddress, ru-RU)}
#{generateLocalized(Company.name, ru-RU)}
#3188 [vividus-plugin-web-app] Do not wait for element presence in step waiting its disappearance
The affected step is:
When I wait until an element with the tag '$elementTag' and attribute '$attributeType'='$attributeValue' disappears
#3275 [vividus-plugin-web-app] Fix publishing of web element source code
outerHTML
is used instead of innerHTML
in order to attach the full source code of the search context (including search context root element).
#3200 (Relates #2750) [vividus-plugin-web-app][vividus-plugin-mobile-app] Take into account visibility parameter at wait on search
The visibility flag of the locator is taken into account while searching for elements with waiting enabled.
#3201 (Closes #2750) [vividus-plugin-web-app][vividus-plugin-mobile-app] Search for element at first in the step validating element existence
The affected step is:
Then element located `$locator` exists for `$duration` duration
The step searches for the element to validate existence (this search may include wait for element appearance if it's configured) and then validates the element has presented for the period specified by the duration.
#3134 [vividus-plugin-mobile-app] Do not log app
capability if it's not available
BrowserStack doesn't return app
capability, so nothing should be logged in this case.
#3213 [vividus-plguin-mobile-app] Fix swipe exit condition to handle search context set to element
Swipe-actions take into search context set before.
[vividus-plugin-saucelabs] Use Sauce Connect REST API endpoint instead of generic one
SauceConnect has started failing with error URL https://eu-central-1.saucelabs.com/rest/v1/*****/tunnels - 406 (Not Acceptable) Error: request failed
. The fix is to use the endpoints listed here: https://docs.saucelabs.com/basics/data-center-endpoints/. For example, the old endpoint https://eu-central-1.saucelabs.com/rest/v1/
is replaced with a new one https://api.eu-central-1.saucelabs.com/rest/v1/
.
#3133 [vividus-plugin-browserstack] Fix wait for Network Logs to address BrowserStack API changes
BrowserStack has started returning 403 Forbidden
error on attempt to retrieve Network Logs while they are processing.
Promoted features
Promoted features are features that were incubating in previous versions of VIVIDUS but are now supported and subject to backwards compatibility.
Azure DevOps Exporter
Azure DevOps Exporter vividus-to-azure-devops-exporter
is promoted to stable.
Azure Plugins
The following Azure plugins are promoted to stable:
vividus-plugin-azure-event-hub
vividus-plugin-azure-key-vault
vividus-plugin-azure-resource-manager
vividus-plugin-azure-sql-db
Avro plugin
Avro plugin vividus-plugin-avro
is promoted to stable.
WinRM plugin
WinRM plugin vividus-plugin-winrm
is promoted to stable.
Notifications
The feature to send notifications upon tests completion is promoted to stable.
Self-healing UI context
Self-healing UI context (vividus-plugin-web-app
, vividus-plugin-mobile-app
) is promoted to stable.