Releases: vividus-framework/vividus
0.4.5 - 2022-04-06
Added
#2620 [vividus-plugin-web-app] Add step to close current window with alerts handling
Step syntax:
When I attempt to close current window with possibility to handle alert
#2623 [vividus-plugin-json] Add until
-like JSON steps
Steps syntax:
When I find $comparisonRule `$elementsNumber` JSON elements in `$json` 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
#2619 (Closes #2314) [vividus-plugin-saucelabs] Add ability to set hosts to bypass proxy in Sauce Connect
New property: saucelabs.sauce-connect.skip-host-glob-patterns
#2624 [vividus-plugin-azure-storage-account] Add step to upsert of a blob
Step syntax:
When I upsert blob with name `$blobName` and data `$data` to container `$containerName` of storage account `$storageAccountKey`
Fixed
#2626 [vividus] Align status and statistics calculations
All status and statistics calculations are unified and both logs and reporting follow the same status priority strategy
#2639 [vividus] Load properties from roots for corresponding empty configuration properties
When any of configuration properties (profiles
, suites
, environments
) is empty, the corresponding properties are loaded from root (e.g. for suites
it's /properties/suite/*.properties
)
#2604 [vividus-plugin-browserstack] Fix usage of core debug steps with BrowserStack plugin applied
The conflict of the core debug step (When I wait `$period` for debug) and BrowserStack steps is fixed, now all steps can be used successfully.
#2605 [Azure plugins] Fix start-up failures when any Azure plugin is used without vividus-plugin-azure-data-factory
The redundant dependency is not needed anymore: each Azure plugin can be used independently
0.4.4 - 2022-03-24
Added
#2544 [vividus] Add HTML escaping expression
Expression syntax:
#{escapeHTML(...)}
#2564 (Closes #2584) [vividus] Publish unified diff for strings comparison
The step comparing values:
Then `$variable1` is $comaprisonRule `$variable2`
publishes the comparison results in the unified diff format for the strings with the length more than specified in the property:
report.text-length-diff-threshold=100
#2517 (Closes #2482) [vividus-plugin-web-app] Make sticky header size percentage configurable
Before the click VIVIDUS scrolls element into the viewport, new property defines top edge indent in viewport percent for the scroll:
web-application.sticky-header-size-percentage=25
#2543 [vividus-plugin-web-app] Publish shadow DOM source code on failure
#2566 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add steps allowing to set nested search contexts
Step syntax:
When I change context to element located `$locator` in scope of current context
#2537 [vividus-plugin-rest-api] Unify syntax of step executing HTTP request
Updated step syntax:
When I execute HTTP $httpMethod request for resource with URL `$url`
#2536 [vividus-plugin-azure-sql-db] Add step listing databases by server
Step syntax:
When I collect databases from SQL Server `$sqlServerName` from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName`
#2541 [vividus-plugin-azure-sql-db] Add step listing servers by resource group
Step syntax:
When I collect SQL Servers from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName`
#2562 [vividus-plugin-azure-resource-manager] Introduce Azure resource manager plugin (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New step:
When I get Azure resource with identifier `$azureResourceIdentifier` using API version `$apiVersion` and save it to $scopes variable `$variableName`
#2567 (Closes #2524) [vividus-plugin-json] Add steps converting JSON to VIVIDUS variable
Steps syntax:
When I convert JSON `$json` to $scopes variable `$variableName`
When I convert JSON from context to $scopes variable `$variableName`
Changed
#2534 [vivdus-plugin-azure-sql-db] Use latest Azure API version to retrieve SQL DB properties
The latest available Azure REST API version (2021-08-01-preview
) is used to retrieve SQL DB properties: the latest API version provides more properties than the previous one (2020-07-01
).
#2556 Use latest Azure REST API version for all resource management steps
The latest API versions provide more details than the previous ones.
Plugin | Resource management API version |
---|---|
vividus-plugin-azure-event-grid |
2021-12-01 |
vividus-plugin-azure-key-vault |
2021-10-01 |
vividus-plugin-azure-storage-account |
2021-08-01 |
Deprecated
#2537 [vividus-plugin-rest-api] Deprecate non-unified step executing HTTP request
Deprecated step | 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>` |
#2557 Deprecate plugin-specific properties configuring Azure environment
All Azure service envrionment properties (azure.{azure-service-name}.environment
) are deprecated.
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).
Fixed
#2565 Fix handling of scenario fail-fast triggered from composed and nested steps
Previously composed and nested steps triggering scenario fail-fast may cause data losses and bring inconsistency to the reporting.
#2561 (Fixes #2515) [vividus] Fix skipping of the story part in case of enabled story fail-fast option configured via known-issue
#2590 (Fixes #2588) [vividus] Fix resolution of default variable value with colon
The default variable value containing colon is resolved correctly now, e.g. the default value for variable placeholder ${not-exists::I:am:here:}
is :I:am:here:
.
#2563 [vividus-plugin-web-app] Respect element visibility attribute in nested steps
Now the step iterating through web elements:
When I find $comparisonRule `$number` elements by `$locator` and for each element do$stepsToExecute
respects the initial visibility provided in $locator
at each search iteration.
#2535 [vividus-plugin-rest-api] Add result validation as the last action of the step waiting for HTTP status code
Previously the step was marked as successful when max number of attempts is reached and status code is not equal to the awaited one.
#2520, #2521 (Fixes #2464) [vividus-plugin-applitools] Skip publishing of Applitools HTTP messages to report
Applitools HTTP messages are not published and are not logged to report anymore as they don't bring much useful information and introduce a lot of noise in case of several visual checks.
#2533 [vividus-plugin-visual] Skip visual diff calculation if baseline is missing
This is a performance improvement allowing to avoid useless visual check operations if baseline is missing
0.4.3 - 2022-02-22
WARNING
This version has critical regression issue: composed and nested steps triggering scenario fail-fast may cause data losses and bring inconsistency to the reporting. Users must migrate to version 0.4.4
, which contains the fix for the issue (#2565).
Added
#2492 [vividus] Add ability to load steps aliases from JSON
It's allowed to define set of custom aliases for steps in JSON format and then use them in stories. See the official documentation for more details.
#2510 (Closes #2443) [vividus] Resolve SpEL expressions in configuration properties
Now it's possible to use SpEL expressions in configuration properties: configuration.profiles
, configuration.suites
, configuration.environments
#2487 [vividus-plugin-web-app] Add video player steps relying on web locators
New steps
When I play video in video player located `$locator`
When I pause video in video player located `$locator`
When I rewind time to `$number` seconds in video player located `$locator`
When I save info from video player located `$locator` to $scopes variable `$variableName`
#2494 (Closes #2481) [vividus-plugin-html] Add support of XPath locators in HTML steps
New steps:
Then number of elements found by $locatorType `$locator` in HTML `$html` is $comparisonRule `$number`
Then element found by $locatorType `$locator` in HTML `$html` contains text `$expectedText`
When I save `$attributeName` attribute value of element found by $locatorType `$locator` in HTML `$html` to $scopes variable `$variableName`
When I save $dataType of element found by $locatorType `$locator` in HTML `$html` to $scopes variable `variableName`
#2485 [vividus-plugin-azure-storage-account] Add step to collect blob service properties via management API
New step:
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`
#2491 [vividus-plugin-azure-key-vault] Add step to collect key vault properties via management API (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New step:
When I retrieve properties of key vault with name `$keyVaultName` from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName`
#2511 [vividus-plugin-azure-sql-db] Add step to collect SQL Database properties via management API (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New step:
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`
Deprecated
#2487 [vividus-plugin-web-app] Deprecate non-unified video player steps
Deprecated step | 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>'])` |
#2494 (Relates #2481) [vividus-plugin-html] Deprecate non-unified HTML steps
Deprecated step | 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>` |
Fixed
#2497 [vividus] Improve handling of VIVIDUS expression in properties
Now VIVIDUS expressions which are not parsable SpEL expressions are handled correctly: the error is logged and the test execution is continued.
Promoted features
Promoted features are features that were incubating in previous versions of VIVIDUS but are now supported and subject to backwards compatibility.
Web Accessibility plugin
Web Accessibility plugin vividus-plugin-accessibility
is promoted to stable.
0.4.2 - 2022-02-11
WARNING
This version has critical regression issue: composed and nested steps triggering scenario fail-fast may cause data losses and bring inconsistency to the reporting. Users must migrate to version 0.4.4
, which contains the fix for the issue (#2565).
Added
#2463 [vividus-plugin-azure-storage-account] Add step to collect blob service properties
Syntax:
When I retrieve blob service properties of storage account `$storageAccountKey` and save them to $scopes variable `$variableName`
Fixed
#2467 (Fixes #2465) [vividus] Consider system hooks status at exit code calculation
The regression issue introduced in 0.4.1
is fixed: the exit code for failed tests was 0
(successful) despite the failed tests
0.4.1 - 2022-02-09
WARNING
This version has critical regression issue #2465: the exit code for failed tests is 0
(successful) despite the failed tests). Users must migrate to version 0.4.2
, which contains the fix for the issue.
This version has critical regression issue: composed and nested steps triggering scenario fail-fast may cause data losses and bring inconsistency to the reporting. Users must migrate to version 0.4.4
, which contains the fix for the issue (#2565).
Added
#2414 [vividus] Log execution plan
The test execution plan is logged, e.g.:
------------------------------------------------------------
Execution plan:
batch-1:
file:/home/vividus/main/story/Accessibility.story
file:/home/vividus/main/story/ActionSteps.story
batch-2:
file:/home/vividus/main/story/AssertStepsTests.story
batch-3:
file:/home/vividus/main/story/Avro.story
------------------------------------------------------------
#2430 (Closes #2423) Add ability to use JWP for clouds (SmartBear CrossBrowserTesting)
SmartBear CrossBrowserTesting doesn't support W3C WebDriver protocol fully, that's why fallback to legacy JSON Wire Protocol (JWP) is needed. The old behavior can be turned on via an internal property (however it is not expected to be changed by the end-users)
selenium.grid.use-w3c=false
#2296 [vividus-plugin-web-app] Add step to resize browser window
Syntax:
When I change window size to `$targetSize`
#2412 [vividus-plugin-web-app][vividus-plugin-mobile-app] Introduce self-healing UI context (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
The self-healing UI context can be enabled via the following property:
ui.context.self-healing=true
If the value is set to true
(the default value is false
), an attempt to reset context will be performed when it becomes stale.
#2439 [VIVIDUS developers only] Standardize extensions configuration
The configuration of VIVIDUS extensions (extensions are basements for the plugins and provide generic abstraction for common
functionality or wraps an external framework API) is standardized and the developers guide is published.
Deprecated
#2461 [vividus-plugin-web-app] Deprecate @browserWindowSize
meta tag
@browserWindowSize
meta tag is deprecated and will be removed in VIVIDUS 0.5.0. The replacement is step:
When I change window size to `$targetSize`
Fixed
#2415 (Fixes #2411) [vividus] Fix exit status for test runs without tests
Previously test execution was marked as successful (exit code 0
) when no stories were run. Now the exit code is 2
(test execution is failed).
#2421 [vividus] Avoid infinite recursive traversal of sub-folders on filesystem
#2441 (Fixes #2413) Fix status of steps with known issues failing scenario fast
Before:
![]() |
After:
![]() |
#2452 (Fixes #2451) [vividus-plugin-web-app] [vividus-plugin-web-app-to-rest-api] Fix headless crawler to work on Java 16+
#2424 (Fixes #2146) [vividus-agent-reportportal] Do not report comments to ReportPortal
The reporting of the comments in any of the available statuses may affect the overall statistics., that's why it's skipped.
#2454 [vividus-agent-reportportal] Use synchronous reporting for multithreaded runs
#2437 [vividus-to-azure-devops-exporter] Fix HTTP configuration broken in 0.4.0
Promoted features
Promoted features are features that were incubating in previous versions of VIVIDUS but are now supported and subject to backwards compatibility.
JSON plugin
JSON plugin vividus-plugin-json
is promoted to stable.
0.4.0 - 2022-01-26
Added
#2169 (Closes #1647) [vividus] Add expressions for hash calculation
New expressions:
#{calculateHash($algorithm, $input)}
#{calculateFileHash($algorithm, $resourceNameOrFilePath)}
Supported algorithms: MD2, MD5, SHA-1, SHA-256, SHA-384, SHA-512.
#2159 [vividus] Add ability to use encrypted System properties
System properties (system.*
) can contain encrypted values:
system.my-property=ENC(/v9MYtKjG1F1UfZet0XYOGLSO7FWLIW2bxqtjcONnV0=)
#2253 [vividus] Add validation of byColumnNames
property of filtering transformers
In case if byColumnNames
contains nonexistent table columns the exception with list of the invalid columns will be thrown.
#2259 [vividus] Improve error message in case of invalid input ExamplesTable size
The step (Then `$variable` is equal to table ignoring extra columns:$table) expecting the table with single row adds the actual number of rows in case of error.
#2333 (Closes #2322) [vividus] Allow VIVIDUS expressions in global
variables
It is possible to use VIVIDUS expressions in global
variables. Mind that expression will be executed lazily at the runtime and randomizing/generating expressions may produce different results per usage.
#2370 (Closes #2345) Add expression generating null
-s
The expression represents null
(a.k.a. NULL
). In most case null
means no value (see NULL
in SQL and null
in JSON).
#2376 [VIVIDUS developers only] Standardize dynamic variables API
The dynamic variables API is standardized and the developers guide is published.
#2168, #2213 (Closes #2112) [vividus-plugin-web-app] [vividus-plugin-mobile-app] Add step to scan barcodes and QR codes
New step:
When I scan barcode from screen and save result to $scopes variable `$variableName`
#2194 [vividus-plugin-mobile-app] Add ability to switch to web view by name
New step:
When I switch to web view with name that $comparisonRule `$value`
#2256 [vividus-plugin-mobile-app] Make proxy steps available for mobile applications
Keep in mind Appium doesn't support proxy: it means the proxy should be configured at the device level.
#1988 (Closes #1789) [vividus-plugin-mobile-app] Add steps to record iOS apps performance metrics
New steps:
When I start recording `$instrument` metrics
When I stop recording `$instrument` metrics and save results to file `$path`
#2377 [vividus-plugin-mobile-app] Add steps to interact with sliders
New steps:
When I set value of iOS slider located `$locator` to `$percent` percents
When I set value of Android slider located `$locator` to `$number`
#2108 (Closes #2057) [vividus-plugin-mobile-app] Add step managing network connections
New step:
When I turn $toggle `$connectionName` network connection
#2323 (Closes #2195) [vividus-visual-testing] Add possibility to disable screenshots downscale
The downscaling can be disabled using property (old baselines must be re-established if the property set):
mobile.screenshot.downscale=false
Keep in mind the disabled downscale will be the default behavior in VIVIDUS 0.5.0, so it's recommended to use this approach for new projects.
#2337 (Closes #2114) [vividus-plugin-json] Add steps to manipulate JSON element values
New steps:
When I save JSON element value from context by JSON path `$jsonPath` to $scopes variable `$variableName`
When I save JSON element value from `$json` by JSON path `$jsonPath` to $scopes variable `$variableName`
Then JSON element value from context by JSON path `$jsonPath` $comparisonRule `$expectedValue`
Then JSON element value from `$json` by JSON path `$jsonPath` $comparisonRule `$expectedValue`
#2198 [vividus-plugin-azure-data-factory] Add ability to collect pipeline runs
New step:
When I collect runs of pipeline `$pipelineName` filtered by:$filters in Data Factory `$factoryName` from resource group `$resourceGroupName` and save them as JSON to $scopes variable `$variableName`
#2355 (Closes #2088) [vividus-plugin-azure-data-factory] Add step to run pipeline with parameters
New step:
When I run pipeline `$pipelineName` in Data Factory `$factoryName` from resource group `$resourceGroupName` with wait timeout `$waitTimeout` and with input parameters `$inputParametersJson` and expect run status to be equal to `$expectedPipelineRunStatus`
#1972 [plugin-azure-storage-account] Add new step to find blobs using filters
New step:
When I filter blobs by:$filter in container `$containerName` of storage account `$storageAccountKey` and save result to $scopes variable `$variableName`
#2271 [vividus-to-xray-exporter] Make sure export is not interrupted at error on adding test to test set and test execution
In case of error on adding test to test set and test execution the error is recorded and the export process continues
#1742, #2342, #2270 (Closes #2390) [vividus-to-xray-exporter] [vividus-to-zephyr-exporter] Add ability to configure multiple JIRA instances
Now users are allowed to use multiple JIRA instances to export tests and test results
Changed
#2053 (Closes #1896) [vividus-plugin-web-app] Bump default macOS version from Catalina to Big Sur
Default macOS version is changed from 10.15
to 11.00
#2295 (Closes #1795) [vividus-plugin-web-app] [vividus-plugin-mobile-app] Publish screenshots to the report only
The screenshot taking step (When I take screenshot) is updated to publish screenshots to the report only (previously duplicated screenshot file was created in a special folder). This change is introduced to save disk space.
If it's needed, use another step (When I take screenshot and save it to folder `$path`) to publish screenshot only to the folder.
#1909 [vividus-plugin-browserstack] Increase network logs wait timeout from 50 to 90 seconds
50 seconds are not always enough.
#2300 Change baseline version of supported ReportPortal to v5
- The support of ReportPortal v4 is dropped.
- The default test level is scenario (i.e. the minimal RP test entity is scenario). The RP v4 behavior can be restored by setting the property
system.rp.test-entity=STEP
Deprecated
#2216 [vividus-plugin-mobile-app] Deprecate step switching to web view by index
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 step:
When I switch to web view with index `$index`
is deprecated and will be removed in VIVIDUS 0.5.0.
#2236 [vividus-plugin-web-app] Deprecate excessive image steps
Deprecated step | 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 ... |
0.3.12 - 2021-11-09
Added
#2152 Introduce Avro plugin (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New step:
When I convert Avro data from `$resourceNameOrFilePath` to JSON and save result to $scopes variable `$variableName`
#2144 (Closes #2000) [vividus] Add ability to encrypt property value partially
The properties can included encrypted parts, e.g.:
bdd.variables.global.my-var=required username="my-username" password=ENC(tUWY/ltftWUA5tDnlHU+jrmBi1iuWqge)
#2152 [vividus] Add ability to create temporary file with binary data
When I create temporary file with name `image.png` and content `#{loadBinaryResource(/data/image.png)}` and put path to scenario variable `temp-file-path`
#2141 (Closes #2122) [vividus-plugin-web-app] Add step to configure page load timeout
When I set page load timeout to `$duration`
#2147 (Closes #1772) [vividus-plugin-web-app] Add ability to capture HTTP response via proxy
Example:
When I capture HTTP POST request with URL pattern `http://httpbin\.org/post` and save response data to scenario variable `data`
#2092 (Closes #2073) [vividus-plugin-mobile-app] Add steps to terminate and to reinstall application
New steps:
When I terminate application with bundle identifier `$bundleId`
When I reinstall mobile application with bundle identifier `$bundleId`
#2151 (Closes #1739) [vividus-plugin-rest-api] Add ability to execute HTTP requests with binary content
Example:
Given request body: #{loadBinaryResource(/data/image.png)}
Fixed
#2145 (Fixes #2055) [vividus-plugin-rest-api] Do not attach HTTP messages to report at resource validation
Previously the resource validation checks posted HTTP request/response details for each resource, this approach overloaded step details and the resulting attachment was hard to find. In order to simplify step usage the publishing of redundant attachments for resource validation checks were disabled.
0.3.11 - 2021-11-02
Added
#2136 Introduce plugin for Azure Event Hub (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New step:
When I $toggle data capturing for event hub `$eventHubName` in namespace `$namespaceName` from resource group `$resourceGroupName`
#2113 (Closes #1895) [vividus] Add ability to select random rows from table
New property byRandomRows
is supported by FILTERING
transformer:
{transformer=FILTERING, byRandomRows=2}
|key1 |
|value1|
|value2|
|value3|
#2126 (Closes #1800) [vividus] Create new steps executing steps from ExamplesTable
The step syntax:
When I execute steps:$stepsToExecute
The step maybe useful when it's required to use different set of steps depending on the conditions, in this case the path to ExamplesTable with steps can be parametrized.
#2115 [vividus] Enhance error message on conflicting headers in merging tables
Now the error contains the set of conflicting headers of the tables to be merged.
#2138 (Closes #2106) [vividus-plugin-rest-api] Add ability to upload file from file system via HTTP
Now the step Given multipart request:$requestParts
accepts file system paths as input parameters, e.g.:
When I initialize the scenario variable `temp-file-content` with value `Your first and last stop for No-Code Test Automation!`
When I create temporary file with name `abc.txt` and content `${temp-file-content}` and put path to scenario variable `temp-file-path`
Given multipart request:
|type |name |value |contentType|
|file |file-key2 |${temp-file-path}|text/plain |
When I send HTTP POST to the relative URL '/post'
#2121 (Closes #2087) [vividus-plugin-mobile-app] Add support of long press action for tvOS and iOS
Now the step When I long press $key key
supports iOS and tvOS in addition to previously supported Android. The property mobile-application.long-press-duration
is used to set a long press duration for iOS and tvOS (default value is PT2S
).
Deprecated
#2120 [plugin-web-app] Deprecate non-generic step saving number of elements found by attribute
Deprecated step | Replacement |
---|---|
When I set the number of elements found by the attribute '$attributeType'='$attributeValue' to the '$scopes' variable '$variableName' | When I save number of elements located `$locator` to $scopes variable `$variableName` |
#2139 [vividus-plugin-web-app][vividus-plugin-mobile-app] Deprecate non-generic meta tags setting capabilities
Deprecated controlling meta tags:
browserName
version
screen-resolution
appiumVersion
deviceName
device-orientation
platformVersion
platformName
iedriver-version
seleniumVersion
The existing generic meta tag capability.{any-capability-name}
should be used to set capabilities at story/scenario level.
Fixed
#2095 (Fixes #1989) [vividus] Fix attaching of evidences (application source code, etc.) to report when scenario fail-fast
is enabled
#2109 [vividus] Handle special char % in printing failures table
The error like java.util.MissingFormatArgumentException: Format specifier '%e'
reproducing when printing of failures table is enabled (statistics.print-failures=true
) and failures contain percent char %
is fixed.
#2119 [vividus] Normalize resources paths to unify added/removed batch items
Now paths of all batch resources are normalized to provide consistent inclusion/exclusion mechanisms.
#2111 [vividus-plugin-web-app][vividus-plugin-mobile-app] Fix execution of mobile tests on SauceLabs
SauceLabs made some changes on their side without any notice, as result the tests running on SauceLabs mobile platforms have been failing since 2021-10-25. The affected projects must upgrade Vividus, also the projects performing visual testing of iOS native applications must ensure they use Appium 1.21.0 or higher (re-establishment of all baselines may be needed in case of Appium upgrade).
#2090 [vividus-plugin-web-app] Make sure deprecated properties are not required for test execution
The error java.lang.IllegalArgumentException: Could not resolve placeholder 'selenium.screenshot.debug-directory' in value "${selenium.screenshot.debug-directory}"
(reproduced depending on the classpath state, not all users were affected) is fixed.
#2091 [vividus-plugin-mobile-app] Fix status bar calculation for tvOS
The status bar height is always 0
for Apple tvOS.
#2093 [vividus-extension-azure] Fix JSON serialization of Azure responses
Due to changes in Azure SDK (Azure/azure-sdk-for-java@bf82b20#diff-f9966c32cd440a243d000cba9e1061cc421866f77ccf428466dc4197cbd7f355 (Azure/azure-sdk-for-java#23441) and Azure/azure-sdk-for-java@e68f02a#diff-f9966c32cd440a243d000cba9e1061cc421866f77ccf428466dc4197cbd7f355 (Azure/azure-sdk-for-java#24138)) some entities saved by Azure plugins contained not all fields. Now the issue is fixed.
0.3.10 - 2021-10-15
Added
#2015 [vividus] Add ability to load resources from file system
*.story
and *.table
files can be loaded as classpath and file system resources now. The prefix file://
should be used to set loading from file system, e.g.:
Then `<column>` is equal to `value`
Examples:
file:///path/to/my/examples.table
#2044 [vividus] Skip resolution of dynamic variables & expressions at dry run
When dry run mode is enabled (bdd.configuration.dry-run=true
), then dynamic variables and expressions are not resolved.
#1912 (Closes #1494) [vividus-plugin-web-app] Add ability to interact with Shadow DOM
New locator is shadowCssSelector
, it represents a chain of CSS selectors, separated by ;
, where the first value is selector for upper shadow host, the last value is a target element selector, e.g.:
By.shadowCssSelector(.upperHost; #innerHost1; #innerHost2; .targetValue)
#2052 [vividus-plugin-web-app] Add step to check web performance metrics
New step is
Then metric $webPerformanceMetric is $comparisonRule `$duration`
where $webPerformanceMetric
is one of TIME_TO_FIRST_BYTE
, DNS_LOOKUP_TIME
, DOM_CONTENT_LOAD_TIME
, PAGE_LOAD_TIME
.
#2056 (Closes #2054) [vividus-plugin-mobile-app] Make loop-step with element condition applicable for mobile apps
The step
When I find $comparisonRule `$number` elements `$locator` and while they exist do up to $iterationLimit iteration of$stepsToExecute
and its alias
When I find $comparisonRule '$number' elements $locator and while they exist do up to $iterationLimit iteration of$stepsToExecute
are applicable for both web and native mobile applications now.
#2051 (Closes #1990) [vividus-plugin-mobile-app] Make ${source-code}
dynamic variable applicable for mobile apps
${source-code}
variable provides source code of the UI of the application under test.
#2058 [vividus-plugin-mobile-app] Add profile for tvOS
New profile is mobile_app/tvos
.
#2058 (Closes #1984) [vividus-plugin-mobile-app] Add profile for local executions
New profile is mobile_app/local
. The profile simplifies execution of tests against the local Appium server. It could be used in conjunction with: mobile_app/android
, mobile_app/ios
, mobile_app/tvos
.
Deprecated
#2050 (Closes #2013) [vividus] Deprecate dymanicPatterns
in known issues.
dynamicPatterns
field is deprecated in known issues and will be removed in VIVIDUS 0.4.0, use variablePatterns
instead. The dynamic pattern currentPageUrl
must be replaced with variable pattern currentPageUrl
.
#2045 (Closes #2042) [vividus] Unify syntax of steps creating files
Deprecated step | Replacement |
---|---|
When I create temporary file with name '$name' and content '$content' and put path to '$scopes' variable with name '$pathVariable' | When I create temporary file with name `$name` and content `$content` and put path to $scopes variable `$variableName` |
When I create a file with the pathname `$pathname` and the content `$fileContent` | When I create file with content `$fileContent` at path `$filePath` |
#2051 [vividus-plugin-web-app] Deprecate ${page-source}
dynamic variable in favor of generic ${source-code}
dynamic variable.
Dynamice variable ${page-source}
is deprecated and will be removed in VIVIDUS 0.4.0, please use ${source-code}
instead
#2052 [vividus-plugin-web-app] Deprecate non-generic step validating page load time
The step
Then the page load time should be less than '$pageLoadTimeThreshold' milliseconds
is deprecated and will be removed in VIVIDUS 0.4.0. The replacement is
Then $webPerformanceMetric is $comparisonRule `$duration`
with the PAGE_LOAD_TIME
metric name.
Fixed
#2021, #2046 (Fixes #2016) [vividus] Restore integration with ReportPortal
Previously incompatibility in dependencies versions caused exception: java.lang.NoSuchMethodError: 'void org.apache.tika.io.IOUtils.closeQuietly(java.io.InputStream)'
#2024 [vividus] Fix known issues validator
Now Gradle task
./gradlew validateKnownIssues
works as expected.
#2025 [vividus-plugin-web-app] Fix NPE in steps validating text when context is missing
Previously NullPointerException
was thrown at attempt to validate the text within missing search context.
#2043 [vividus-plugin-web-app]/[vividus-plugin-mobile-app] Handle missing context in dynamic context size variables
-1
is returned in case of missing context while attempting to get size/coordinate of the context.
#2028 (Fixes #1993) [vividus-plugin-web-app] Fix parsing of locators with colon :
The locators containing colon :
are parsed properly now.
0.3.9 - 2021-09-30
Added
#1947 [vividus] Add ability to load ExamplesTable
-s from variables
Global, batch and next-batches variables can be used to define ExamplesTable
path to load it on runtime:
Examples:
${examples-table-path}
#2014 (Closes #2011) [vividus] Add ability to set description for known issue
New optional field description
is added to provide possibility to put any information like a comment or additional details for the known issue. Users could rely on information from bug-tracking systems, but it doesn't cover the case when you need to put some info alongside the known issue, so it may be seen in the report. For example:
"VVD-10": {
"type": "External",
"assertionPattern": "HTTP response body is not present",
"description": "Flaky issue caused by bug in load balancer should be fixed after deploying of new version (date: TBD)"
}
#1992 [vividus] Add ability to use variables in Freemarker step
Now it's allowed to use variable instead of ExamplesTable
in the step generating data using Freemarker template, e.g.:
When I initialize scenario variable `table` with values:
|country |capital |
|Belarus |Minsk |
|Netherlands |Amsterdam |
Given I initialize the scenario variable `countries-json` using template `/data/complex-template.ftl` with parameters:
${table}
where /data/complex-template.ftl
has the following content:
[
<#list country as c>
{
"country": "${c}",
"capital": "${capital[c?index]}"
}<#sep>,</#sep>
</#list>
]
#1951 [vividus-plugin-db] Add FROM_DB
table transformer
FROM_DB
transformer generates ExamplesTable
based on the data retrieved from the specified database using SQL query, e.g.:
{transformer=FROM_DB, dbKey=university-db, sqlQuery=SELECT * FROM students, nullReplacement= }
#1986 (Closes #1927) [vividus-plugin-mobile-app] Add step typing text and keeping keyboard opened
New step:
When I type `$text` in field located `$locator` and keep keyboard opened
#2004 (Сloses #2003) [vividus-plugin-mobile-app] Add step for Android to long press on a key
[Android only] New step:
When I long press $key key
Example:
When I long press POWER key
Changed
#1939 (Closes #1933 ) [vividus-plugin-mobile-app] Add possibility to swipe the context element
The step performing swipe action:
When I swipe $direction to element located `$locator` with duration $swipeDuration
takes into account the current context: if you need to perform swipe on the element, you need to switch the context to this element.
Fixed
#1970 (Fixes #1967 ) [vividus] Enable dotall
mode for step asserting against regex
The dotall
mode is enabled by default (the expression .
matches any character, including a line terminator) for the step:
Then `$value` matches `$regex`
#1971 [vividus-plugin-web-app] Fix downloading of Firefox driver binaries
Now users are not needed to specify GitHub PAT to download Firefox driver binaries
#2008 (Fixes #2007 ) [vividus-plugin-mobile-app] Fix status bar calculation for Android TV
The workaround is for Android TV only. It is not clear whether any of the Android TVs could have a status bar at all, but the session capabilities contains statBarHeight
, and to be on the safe side fall-back code was added to get the status bar height.
#1972 [vividus-plugin-azure-storage-account] Fix FileAlreadyExistsException
when downloading blob to a temporary file
Promoted features
Promoted features are features that were incubating in previous versions of VIVIDUS but are now supported and subject to backwards compatibility.
Azure Plugins
The following Azure plugins are promoted to stable:
vividus-plugin-azure-cosmos-db
vividus-plugin-azure-data-factory
vividus-plugin-azure-event-grid
vividus-plugin-azure-functions
vividus-plugin-azure-storage-account
vividus-plugin-azure-storage-queue