Releases: vividus-framework/vividus
0.6.16 - 2025-10-08
Added
#5951, #5952, #5965, #5975, #5982, #5979, #6052, #6171 [vividus-mcp-server] Add MCP server prototype
New Model Context Protocol (MCP) server provides integration capabilities with AI-powered development environments and enables AI assistants to understand and interact with VIVIDUS.
#5182 (Closes #1551) [vividus-plugin-azure-key-vault] Add ability to pull secrets from Azure KeyVault
New placeholder to be used in properties is:
AZURE_KEY_VAULT(<secret_name>)#6180 (Closes #6133) [vividus-plugin-aws-secrets-manager] Add ability to pull secrets from AWS Secret Manager
New placeholder to be used in properties is:
AWS_SECRETS_MANAGER(<secret>/<secret_name>)
AWS_SECRETS_MANAGER(<profile>, <secret>/<secret_name>)#5970 [vividus-plugin-web-app] Add ability to type text in the focused input
Currently focused elements (for example, by previous steps or by application) can be used by step typing text using keyboard. Previously the elements in focus were ignored.
#5950 (Closes #5925) [vividus-plugin-web-app] Introduce normalization of RGBA CSS values to RGB
Improved CSS value handling by normalizing RGBA color values to RGB format for consistent color comparisons.
#5976 [vividus-plugin-web-app][vividus-plugin-mobile-app] Enable capturing of HTTP messages with status code 302 by proxy
HTTP message capture enhanced to do not exclude status code 302 (redirect) responses for comprehensive network monitoring.
#6117 [vividus-plugin-mobile-app] Add property to skip iOS keyboard hiding workaround
New property:
mobile-app.ios.skip-keyboard-hiding-workaround=trueProvides control over iOS-specific keyboard behavior controlling whether a workaround to hide the on-screen keyboard is applied. When enabled (default), VIVIDUS attempts to dismiss the keyboard by tapping the last button on the iOS keyboard when it is shown.
For XCUIElementTypeTextView on real devices the workaround is not applied.
#6050 [vividus-plugin-applitools] Add ability to set before render hook
Custom before render hooks (the JS script executed prior to capturing a screenshot) can be set via property or via step input parameters.
#5989 [vividus-plugin-xml] Check if XML is well formed before steps actions
XML steps enhanced to validate whether XML is well formed before performing step actions preventing runtime errors.
#6079 (Closes #6016) [vividus-plugin-excel] Add step to validate names of excel document sheets
New step to validate Excel document sheet names:
Then `$excelDocument` contains excel sheet with name `$name` at index `$index`#6167 (Closes #6017) [vividus-plugin-excel] Add step to check exact row count in Excel sheet by index
New step to validate exact number of rows in Excel sheets:
Then `$excelDocument` contains exactly `$expectedRowCount` rows in sheet with index `$sheetIndex`Deprecated
#6168 [vividus-plugin-web-app] Deprecate non-generic composite steps
| Deprecated step | Replacement pattern |
|---|---|
Then a link with the URL '$URL' exists |
Then number of elements found by `linkUrl(<URL>)` is equal to `1` |
Then a link with the URL containing '$URLpart' exists |
Then number of elements found by `linkUrlPart(<URLpart>)` is equal to `1` |
Then the page title is '$pageTitle' |
Then page title is equal to `<pageTitle>` |
Then the page title contains the text '$text' |
Then page title contains `<text>` |
Then an element with the name '$elementName' containing text '$text' exists |
Then number of elements found by `name(<elementName>)->filter.textPart(<text>)` is equal to `1` |
Then an element with the name '$elementName' and text '$text' exists |
Then number of elements found by `name(<elementName>)->filter.caseSensitiveText(<text>)` is equal to `1` |
Then an element with the name '$elementName' exists |
Then number of elements found by `name(<elementName>)` is equal to `1` |
Then an element with the name '$elementName' does not exist |
Then number of elements found by `name(<elementName>)` is equal to `0` |
Then an element with the tag '$elementTag' and text '$text' exists |
Then number of elements found by `tagName(<elementTag>)->filter.caseSensitiveText(<text>)` is equal to `1` |
When I click on an element with the attribute '$attributeType'='$attributeValue' |
When I click on element located by `xpath(.//*[@<attributeType>='<attributeValue>'])` |
When I click on an element with the text '$text' |
When I click on element located by `caseSensitiveText(<text>)` |
Then an element with the attribute '$attributeType'='$attributeValue' exists |
Then number of elements found by `xpath(.//*[@<attributeType>='<attributeValue>'])` is equal to `1` |
Then an element with the tag '$elementTag' and attribute '$attributeType'='$attributeValue' exists |
Then number of elements found by `xpath(.//<elementTag>[@<attributeType>='<attributeValue>'])` is equal to `1` |
Then an element with the attribute '$attributeType' containing '$attributeValue' exists |
Then number of elements found by `xpath(.//*[contains(@<attributeType>, '<attributeValue>')])` is equal to `1` |
Then at least one element with the attribute '$attributeType'='$attributeValue' exists |
Then number of elements found by `xpath(.//*[@<attributeType>='<attributeValue>'])` is greater than or equal to `1` |
Then an element by the cssSelector '$cssSelector' exists |
Then number of elements found by `cssSelector(<cssSelector>)` is equal to `1` |
Fixed
#6132, #6126 [vividus] Fix generation of CSV with exact number of rows using generate expression
Previously generated CSV data had 1 extra row in addition to the input number.
#5995 [vividus-plugin-web-app][vividus-plugin-mobile-app] Fix work of @proxy meta tag at scenario level
Proxy meta tag functionality fixed for proper operation at scenario level.
#6057 [vividus-plugin-mobitru] Avoid duplicate calls of session recording start/stop
0.6.15 - 2025-06-17
Added
#5572 [vividus] Add ability to configure HTTP basic authentication per host
Example of basic authentication configuration:
http.context.myapp.origin=https://securedomain.com
http.context.myapp.auth.username=bob
http.context.myapp.auth.password=3db8a57ba925a522c8bf
http.context.myapp.auth.preemptive-auth-enabled=p@$$w0rd#5714 [vividus] Add ability to configure HTTP headers per host
Example of HTTP headers configuration:
http.context.myapp.origin=https://example.com
http.context.myapp.headers.User-Agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
http.context.myapp.headers.Accept-Charset=utf-8#5684 [vividus] Add ability to add custom static tab to report
User can add a new tab to the report with custom content in Markdown format, such as instructions, project information, or other relevant details.
#5726 (Closes #5655) [vividus] Add 'at most' and 'at least' aliases for comparison rules
The equivalent of LESS_THAN_OR_EQUAL_TO is at most, GREATER_THAN_OR_EQUAL_TO - at least
#5590 [vividus-plugin-web-app] Add step to check element presence in viewport
New step:
Then element located by `$locator` $presence visible in viewport#5769 [vividus-plugin-web-app] Add step to wait element appearance in the browser viewport
New step:
When I wait until element located by `$locator` appears in viewport#5794 [vividus-plugin-web-app] Add step to maximize browser window
New step:
When I maximize window#5824 [vividus-plugin-web-app] Add steps to configure browser permissions
New steps:
When I set state of `$permission` browser permission to `$state`
When I configure browser permissions:$permissions#5685 [vividus-plugin-web-app] Add ability to disable browser window maximization on start
New property:
web.browser.maximizeWindowOnStart=true#5685 [vividus-plugin-web-app][vividus-plugin-mobile-app] Do not keep alive mocked connections in proxy
HTTP header Connection: close is added for mocked HTTP responses
#5808 [vividus-plugin-web-app][vividus-plugin-mobile-app] Allow to refer context element in JS steps
You can refer to search context element in JS code by using arguments[0] reference, e.g.:
Given I am on page with URL `https://vividus-test-site-a92k.onrender.com`
When I change context to element located by `tagName(body)`
When I execute javascript `arguments[0].style.color = 'red';`#5852 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add ability to disable source code publishing via meta
@noSourceCodeOnFailure meta tag can be used to disable source code publishing at the story or scenario level.
#5906 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add ability to set HTTP connection timeout for Selenium Grid/Cloud requests
New property:
selenium.grid.http.connection-timeout=PT10Sthe maximum amount of time to wait to establish a TCP connection with Selenium Grid/Cloud.
#5696 [vividus-plugin-web-app-to-rest-api] Reuse HTTP headers of crawlers at redirects checks
HTTP headers of crawlers are re-used to perform HTTP redirect checks for resources found by crawlers.
#5575 [vividus-plugin-visual] Add ability to disable scrollbar hiding while taking screenshot
New screenshot configuration parameter:
hideScrollbars- Hide the scrollbar before capturing the screenshot, defaults totrue. (Web only)
#5921 [vividus-plugin-rest-api] Add functionality to check redirect status code
New ExamplesTable column statusCodes (optional comma-separated sequence of expected HTTP status codes of the redirects) is added, e.g.:
Then I validate HTTP redirects:
|startUrl |endUrl |statusCodes |
|http://example.com/redirect |http://example.com/get-response |301 |#5797 [vividus-plugin-json] Add expression to format JSON in one line
New expression syntax:
#{formatToOneLineJson( $json )}
#5643 [vividus-plugin-xml] Add step to check if XML document is well formed
New step:
Then XML `$xml` is well formed#5949 [vividus-plugin-xml] Add step to save number of XML elements
New step:
When I save number of elements found by xpath `$xpath` in XML `$xml` to $scopes variable `$variableName`#5649 [vividus-plugin-azure-resource-manager] Add report attachments with Azure resources info
The steps managing Azure resources produce report attachments containing JSON-s with full information about the Azure resource was touched.
#5722 [vividus-plugin-saucelabs] Add ability to wait for free device
New property:
saucelabs.free-device-wait-timeout=PT0S#5707, #5873 (Closes #5695, #5765) [vividus-plugin-mobitru] Add ability to search device by list of known udid-s
Example of new property usage:
selenium.grid.capabilities.mobitru-device-search\:udids=83f1493135524933, ad0c1603a8c1c4db04, LGM250KBIRD6MJEECA#5904 (Closes #5811) [vividus-plugin-mobitru] Add support of workspaces
New property:
mobitru.workspace-id#5766 [vividus-plugin-applitools] Add ability to set Applitools Test properties
New ExamplesTable column:
properties- The list of key value pairs used as a metadata for visual test in Applitools. The required value format iskey1=value1, key2=value2, ...where the key must not be empty e.g.Component name=Menu Item, State=Open, Version=1.
#5833, #5837, #5838, #5931, #5928, #5934 [vividus-plugin-lighthouse] Add step to run local Lighthouse
New step:
When I perform local Lighthouse scan of `$webPageUrl` page with options `$options`:$metricsValidations
When I perform local Lighthouse scan of `$webPageUrl` page with options `$options` and save result path to $scopes variable `$variableName`:$metricsValidations#5933 [vividus-plugin-lighthouse] Add ability to generate lighthouse diff report from JSON results
New step:
When I generate Lighthouse diff from comparison of baseline at path `$baselineJsonResultPath` and checkpoint at path `$checkpointJsonResultPath`#5752 [vividus-to-xray-exporter] Add ability to use scenario title as description for new test cases
New property:
xray-exporter.test-case.use-scenario-title-as-description=falseIf enabled (true value), the scenario title will be used as the description, but only for newly created test cases, otherwise the description will be left empty.
#5755 [vividus-to-xray-exporter] Add description field for Test Execution
New property:
xray-exporter.test-execution.description=Changed
#5642 [vividus-plugin-rest-api] Ignore case while searching for HTTP header by name
Each header field consists of a name followed by a colon (":") and the field value. Field names are case-insensitive. -- RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1, Section 4.2
Just as in HTTP/1.x, header field names are strings of ASCII characters that are compared in a case-insensitive fashion. However, header field names MUST be converted to lowercase prior to their encoding in HTTP/2. A request or response containing uppercase header field names MUST be treated as malformed -- RFC 7540, Hypertext Transfer Protocol Version 2 (HTTP/2), Section 8.1.2
[vividus-plugin-web-app] Do not apply timeout for page load start on iOS
The timeout for page load start is ineffective on iOS because there are cases where navigation has not yet started when waiting for the page load to begin.
#5884 [vividus-plugin-saucelabs] Migrate SauceConnect from 4 to 5 keeping legacy CLI
Now SauceConnect 5 is run in compatibility mode with Sauce Connect 4.9.X.
#5753 [vividus-plugin-lighthouse] Make Lighthouse API key mandatory
Google made Lighthouse API key mandatory, so it's required to set it now. There are no code changes in VIVIDUS, only docs updates. But users are forced to add keys if they want to use Lighthouse.
Deprecated
#5590 [vividus-plugin-web-app] Deprecate non-generic steps validating presence of element in the viewport
| Deprecated step | Replacement pattern |
|---|---|
Then page is scrolled to element located by `$locator` |
Then element located by `<locator>` is visible in viewport |
#5800 [vividus-plugin-web-app] Align syntax of wait step with timeout
| Deprecated step | Replacement pattern |
|---|---|
Then element located by `$locator` appears in `$timeout` |
When I wait until element located by `<locator>` appears in `<timeout>` |
#5949 [vividus-plugin-xml] Deprecate non-generic step check presence of XML element
Deprecated step:
Then XML `$xml` contains element by xpath `$xpath`Replacement pattern:
When I save number of elements found by xpath `<xpath>` in XML `<xml>` to scenario variable `numberOfXmlElements`
Then `${numberOfXmlElements}` is equal to `1`When("I save number of elements found by xpath $xpath in XML $xml to $scopes variable $variableName
#5755 [vividus-to-xray-exporter] Group properties configuring Test Execution fields
| Deprecated property | Replacement |
|---|---|
xray-exporter.test-execution-key |
xray-exporter.test-execution.key |
xray-exporter.test-execution-summary |
xray-exporter.test-execution.summary |
xray-exporter.test-execution-attachments |
xray-exporter.test-execution.attachments |
Fixed
#5638 [vividus-plugin-web-app] Reset cached screen size on device metri...
0.6.14 - 2024-12-04
Added
#5285 [vividus] Add LEFT_JOIN table transformer
The LEFT_JOIN transformer combines all rows from the left table with matching rows from the right table, and includes rows from the left table even if there are no matches in the right table.
#5528 [vividus] Add transformer to resolve variables eagerly
New transformer: RESOLVING_VARIABLES_EAGERLY
#5327 [vividus] Add ability to set start index for INDEXING transformer
startIndex parameters can be used to define the start index, negative integer numbers are allowed.
#5373 [vividus] Add ability to define custom report title
New property
report.title=VIVIDUS Reportis used to provide a title to display on Summary widget of Overview tab. Also it is used as HTML title of the document.
#5376, #5379 [vividus] Add ability to specify custom translations for report
report.translations.<lang>.<translation key>This family of properties allows overriding text values in report controls, such as labels, buttons, etc. These values
represent translations for the chosen language.
#5423 [vividus] Add ability to configure report layout
Now certain report tabs, widgets and charts can be hidden in the report using the corresponding properties.
#5488 [vividus] Add ability to customize report logo and title
New properties:
report.brand.logo-path=/customer-data/logo-icon.svg
report.brand.title=MY BRAND#5387 [vividus] Add feature allowing to report custom metadata publicly available
It is allowed to add metadata to be displayed in the report and the output logs. There are 2 types of metadata configuration: static and dynamic.
#5506 [vividus] Add ability to customize tab with defect categories
It is possible to customize the names of categories in the report, as well as the statuses of tests that will be categorized under these names.
#5522 [vividus] Add ability to enable filtering by table meta
New property:
engine.filtering-by-table-meta-enabled=false[vividus] Add new data providers for #{generate($data-provider-and-its-arguments)} expression
- 2 new providers
Dota2Dota2.attributeDota2. buildingDota2.factionDota2.heroDota2.itemDota2.neutralItemDota2.playerDota2.rankDota2.teamDota2.tier
FinancialTermsFinancialTerms.adjectiveFinancialTerms.nounFinancialTerms.verb
WordWord.adjectiveWord.adverbWord.conjunctionWord.interjectionWord.nounWord.prepositionWord.verb
- New data generators in
ImageproviderImage.base64BMPImage.base64JPEGImage.base64TIFF
#5432 (Closes ##5411) [vividus-plugin-web-app] Add ability to hide shadow DOM source attachments in report
New property:
ui.publish-shadow-dom-source-on-failure=truedefines whether to publish the source code of Shadow DOM elements on failure or not.
#5433 [vividus-plugin-web-app] Collect Shadow DOM sources into a single report attachment
Now all sources of shadow DOM elements are collected in a single report attachment
#5502, #5548 [vividus-plugin-web-app] Add geolocation emulation steps
New steps:
When I emulate Geolocation using coordinates with latitude `$latitude` and longitude `$longitude`
When I reset Geolocation emulation#5546 [vividus-plugin-web-app] Add step to clear browser console logs
New step:
When I clear browser console logs#5449 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add possibility to use dot char . in custom locators.
Now locator names can contain dot:
ui.locator.loginPage.username.locator-type=xpath
ui.locator.loginPage.username.pattern=//*[@alt = 'username']#5547 [vividus-plugin-web-app][vividus-plugin-mobile-app] Increase allowed published HAR size to ~40 MB
#5329 [vividus-plugin-rest-api] Add expression to decode URI
New expression:
#{decodeUri($uri)}
decodes percent-encoded URI into a human-readable format.
#5332 [vividus-plugin-rest-api] Retry resource check with HTTP GET if HEAD returns status code 403
Some websites may return response with status code 403 for HEAD requests, to overcome this limitation resource check is retried using GET method for such cases.
#5382 [vividus-plugin-rest-api] Add ability to clean up cookies after each step
The property:
rest-api.http.cookie-store-level=globalсonfigures the level of cookie storage:
global- cookies are stored globally and are accessible across the entire suite from all threads: cookies set in
one scenario are available and reused in all subsequent scenarios and stories.story- cookies are reused within the scope of a single story and are cleared upon its completion.scenario- cookies are reused within the scope of a single scenario and are cleared upon its completion.step- cookies are cleared after each executed step.
#5501 [viviuds-plugin-rest-api] Improve validation status of requests blocked by Akamai
The new status Blocked is used to mark resources requiring manual validation when an HTTP request has been blocked by the Akamai Web Application Firewall.
#5556 [vividus-plugin-rest-api] Add step to remove all cookies from HTTP context
New step:
When I remove all HTTP cookies#5325 [vividus-plugin-web-app-to-rest-api] Validate HTTP status code at sitemap.xml download
Validate HTTP status code is equal to 200 for HTTP response fetching sitemap.xml.
#5416 [vividus-plugin-web-app-to-rest-api] Add ability to set checked attributes for resource checker
New property:
resource-checker.attributes-to-check=href,src
#5550 [vividus-plugin-web-app-to-rest-api] Add step to set HTTP client cookies to browser
New step:
When I set browser cookies to HTTP contextdefines a comma-separated list of HTML attributes where resource URLs will be searched.
#5414 (Closes ##5313) [vividus-plugin-json] Add ability to source data for FROM_JSON table transformer from JSON resource
New parameter path specifies JSON resource name or the JSON file path.
#5414 (Closes ##5313) [vividus-plugin-html] Add ability to source data for FROM_HTML table transformer from HTML resource
New parameter path specifies HTML resource name or the HTML file path.
#5444 [vividus-plugin-html] Add ability to specify base URI for FROM_HTML transformer
New parameter baseUri specifies the base URI that can be used to get an absolute URL from an attribute that may be a relative URL: make sure to add the prefix abs:.
#5270 [vividus-plugin-applitools] Add option to limit screenshots max height
Max screenshot page can now be configured via both steps parameters and global properties.
NOTE: All images with height greater than 15000px are trimmed on the server side.
#5552 [vividus-plugin-applitools] Add ability to configure screenshot scaling
The scale ratio of the image: the less the ratio the smaller the image and vice versa, for example if we want to make the image 25% smaller the ration should be set to 0.75, this can be useful if image height exceeds the Applitools height limit (15000 pixels).
#5415 [vividus-plugin-applitools] Fail visual test on contrast advisor violations
Now visual step is marked as failed if there are any contrast advisor violations.
#5307 [vividus-plugin-mobitru] Add ability to capture video recordings
New property:
mobitru.video-recording-enabled=falseenabling the video recording for entire appium session was added. The output recording is attached to the report.
#5364 (Closes ##5359) [vividus-plugin-azure-service-bus] Add possibility to send messages with custom properties
New step:
When I send message to `$serviceBusKey` service bus with payload:`$payload` and custom properties:$customPropertiesChanged
#5380 [vividus] Rename tab and widget: from Suites to Batches
Name Batches better reflects the structure of VIVIDUS tests.
#5312 Move FROM_HTML transformer from vividus-plugin-web-app-to-rest-api to vividus-plugin-html
This change does not require any action from users since vividus-plugin-web-app-to-rest-api already includes vividus-plugin-html. In case if vividus-plugin-web-app-to-rest-api is applied only to use the mentioned transformer in tests, this plugin can be replaced with vividus-plugin-html.
#5467 [vividus-docker-image] Bump Java in docker image from 17 to 21
As a preparation to migration step the base image of VIVIDUS docker image is updated to Java 21.
#5537 [vividus-plugin-mobile-app] Remove property alias selenium.grid.automation-name
The property was used internally to map Appium capability, users are not expected to be affected, the replacement is a regular property for capabilities: selenium.grid.capabilities.automationName
Deprecated
#5259 [vividus-plugin-web-app] Deprecate non-generic locator filter types
| Deprecated locator filter | Replacement |
|---|---|
tooltip |
...->filter.attribute(title=<expected>) |
imageSrcPart |
No straightforward replacement is available, use a combination of locator and filters |
placeholder |
...->filter.attribute(placeholder=<placeholder>) |
validationIconSource |
No straightforward replacement is available, use a combination of locator and filters |
#5289 [vividus-plugin-web-app] Deprecate elementName locator type
elementName locator type is deprecated and will be removed....
0.6.13 - 2024-07-29
Added
#5184 [vividus-plugin-web-app-to-rest-api] Exclude webp files from headless crawling
Changed
#5243 Move step for redirects validations from vividus-plugin-web-app-to-rest-api to vividus-plugin-rest-api
No changes on user side is needed, since vividus-plugin-web-app-to-rest-api depends on vividus-plugin-rest-api explicitly.
Deprecated
#5183 [vividus] Use more specific property placeholder for secrets from Hashi Corp's Vault
| Deprecated property placeholder | Replacement |
|---|---|
VAULT(..) |
HASHI_CORP_VAULT(..) |
Fixed
#5217 [vividus] Fix NPE on attempt to execute HTTP request with URI having invalid protocol
#5223 [vividus] Decode credentials defined in URI when converting them to Basic Authentication
#5238 [vividus-plugin-web-app] Fix scrolling of element in shadow DOM overflow container
#5239 [vividus-plugin-web-app] Fix infinite loops in script scrolling to the end of page
0.6.12 - 2024-07-04
Added
[vividus] Add new data providers for #{generate($data-provider-and-its-arguments)} expression
-
9 new providers
BoardgameBoardgame.artistBoardgame.categoryBoardgame.designerBoardgame.mechanicBoardgame.nameBoardgame.publisherBoardgame.subdomain
CareProviderCareProvider.hospitalNameCareProvider.medicalProfession
ImageImage.base64GIFImage.base64JPGImage.base64PNGImage.base64SVG
LargeLanguageModelLargeLanguageModel.embeddingModelLargeLanguageModel.textModelLargeLanguageModel.tokenizer
LocationLocation.buildingLocation.natureLocation.otherworldlyLocation.privateSpaceLocation.publicSpaceLocation.work
MedicalProcedureMedicalProcedure. icd10MedicalProcedure.drugName
ObservationObservation. symptom
TimeTime.future '60' 'MINUTES'Time.past '60' 'MINUTES'
TimeAndDateTimeAndDate.birthdayTimeAndDate.birthday 'MM/dd/yyyy'TimeAndDate.birthday '5' '10'TimeAndDate.birthday '18' '65' 'MM/dd/yyyy'TimeAndDate.futureTimeAndDate.future '60' 'MINUTES'TimeAndDate.future '60' '30' 'MINUTES'TimeAndDate.future '5' 'DAYS' 'MM/dd/yyyy'TimeAndDate.future '10' '5' 'DAYS' 'MM/dd/yyyy'TimeAndDate.pastTimeAndDate.past '60' 'MINUTES'TimeAndDate.past '5' 'DAYS' 'MM/dd/yyyy'TimeAndDate.past '60' '30' 'MINUTES'TimeAndDate.past '10' '5' 'DAYS' 'MM/dd/yyyy'
-
New data generators in
AwsproviderAws.service
-
New data generators in
DiseaseproviderDisease.anyDiseaseDisease.icd10
-
New data generators in
MedicalproviderMedical.medicalProfession
-
New data generators in
PhoneNumberproviderPhoneNumber.cellPhoneInternational
#5143 [vividus-plugin-web-app] Add step to set cookies without applying changes
New step:
When I set all cookies for current domain without applying changes:$parameters#5179 [vividus-plugin-web-app] Add steps to check cookie present using string comparison rules
New steps:
Then cookie with name that $stringComparisonRule `$cookieName` is set
Then cookie with name that $stringComparisonRule `$cookieName` is not set#5122, #5144 [vividus-plugin-kafka] Add step to add headers to event
New step:
When I set Kafka event headers:$headers#5142 [vividus-plugin-excel] Add ability to preserve cells format
New property
excel.preserve-cell-formatting=falseIf true, the original cells format will be preserved. For example cell's date value 3/31/1994 will be represented in human-readable format 3/31/94, not 34424.0 (number of days after 01/01/1900), number value 1 will be represented as 1, not 1.0.
#5146 (Closes #4553) [vividus-plugin-excel] Add ability to set cells type at Excel document creation
Now it's possible to set target excel cell type as well as a type for all cells in a column.
#5128 [vividus-plugin-rest-api] Add expression for PKCE code challenge generation
Proof Key for Code Exchange (PKCE) - an extension of the OAuth 2.0 protocol that helps prevent code interception attacks. In scope of PKCE a new flow with three new parameters: code verifier, code challenge, code challenge method and dependencies between them was introduced. This expression helps to generate code challenge using SHA-256 hashing and base64 URL encoding for provided code verifier value:
#{generateCodeChallenge(...)}#5134 [vividus-plugin-mobitru] Use dedicated API endpoint to take device when UDID is provided
See details: https://app.mobitru.com/wiki/apidoc/#api-Device-TakeDeviceBySerial
Deprecated
#5179 [vividus-plugin-web-app] Deprecate non-generic steps validating cookie presence
| Deprecated step | Replacement pattern |
|---|---|
Then cookie with name `$cookieName` is set |
Then cookie with name that is equal to `<cookieName>` is set |
Then cookie with name `$cookieName` is not set |
Then cookie with name that is equal to `<cookieName>` is not set |
Fixed
[vividus-plugin-web-app] Fix screenshot strategy for web/phone/android profile
#5166 [vividus-plugin-excel] Fix handling of cells without content
NullPointerException is fixed, and now Excel cells without content are recorded as null-s.
0.6.11 - 2024-06-12
Added
#5071 (Closes #4864) [vividus-plugin-web-app] Add ability to configure basic authentication
Now it's allowed to add predefined configurations for Basic authentication. The settings are available only for desktop Chromium browsers (Chrome, Opera, Microsoft Edge) and allow to define multiple configurations for authentication on different sites.
#5120 [vividus-plugin-web-app][vividus-plugin-mobile-app] Add step to execute JavaScript
New step:
When I execute javascript `$jsCode`executes passed JavaScript code on the opened page.
#5088 [vividus-plugin-rest-api] Add HTTP response time log message to reports
At some point logging of HTTP response time was removed from reports, but users find it useful, so the log messages have been added back.
#5104 (Closes #4918) [vividus-plugin-web-app-to-rest-api] Publish response body for failed resource checks
Use the resource-checker.publish-response-body (false by default) property to attach the HTTP response body for HTTP calls with non-successful status codes.
#5098 (Closes #5084) [vividus-plugin-excel] Add ability to set collection of ranges in FROM_EXCEL transformer
Now range parameter can contain the semicolon-separated collection of Excel ranges from the specified excel sheet. The table header is always taken from the first range and the number of columns in subsequent ranges must correspond to the header.
#5119 (Closes #5017) [vividus-plugin-saucelabs] Add check if SauceConnect tunnel is active before tests start
According to SauceLabs support there could be cases when SauceConnect is started, but tunnel is not yet ready. As the result tests trying to use this tunnel fail. The check for tunnel readiness based on REST API calls is added.
#5089 [vividus-plugin-azure-cosmos-db] Add ability to configure connection mode
The mechanism how the client connects to Azure Cosmos DB can be configured now, the supported modes are DIRECT (used by default) and GATEWAY.
Changed
[vividus-plugin-web-app] Always use default device orientation for mobile web profiles
The configuration of Appium capability (selenium.grid.capabilities.deviceOrientation=portrait) is removed from web/phone/iphone and web/tablet/* profiles. Users are not affected, since all mobile devices use portrait orientation by default.
#5115 [vividus-plugin-web-app] Consider sorting of collection with one element as passed
The step
Then elements located by `$locator` are sorted by text in $sortingOrder ordervalidating sorting order of elements is passed now, if total number of found elements is 1.
Removed
[vividus-plugin-web-app] Remove unsupported Appium capability screenshotWaitTimeout
The configuration of outdated Appium capability (selenium.grid.capabilities.screenshotWaitTimeout=20) is removed from web/phone/iphone and web/tablet/* profiles. Users are not affected, since the setting of this capability doesn't have any effect.
[vividus-plugin-web-app] Remove hardcoded appiumVersion capability from mobile web profiles
The configuration of Appium capability (selenium.grid.capabilities.appiumVersion=2.0.0) is removed from web/phone/iphone and web/tablet/* profiles. Users are not affected, since this capability is ignored by local Appium server and respected by Cloud providers only, but at the same time each Cloud provider specifies own range of supported versions.
Fixed
[vividus] Fix parsing of URL with percent-encoded spaces in URL path
0.6.10 - 2024-05-20
Added
#5011 [vividus] Add expression #{extractSchemeFromUrl(..)}
New expression extracts the scheme component from the given URL.
#5013, #5016 (Closes #4664) Handle user info provided in URI by HTTP client
URI user info is handled in the fully-automated way while executing HTTP requests: user info provided as a part of URI is converted to basic authentication configuration for all HTTP methods.
#5029 [vividus-plugin-accessibility] Add ability to report each violation as separate assertion
New property:
accessibility.report-violations-as-assertions=false#5048 [vividus-plugin-web-app-to-rest-api] Add ability to collect URLs not under base URL by FROM_SITEMAP transformer
New property:
transformer.from-sitemap.strict=truedefines whether invalid URLs will be rejected silently (where "invalid" means that the URL is not under the base URL, see sitemap file location explanation for more details).
Also strict transformer parameter is available, it's exclusively applicable to the transformer in which it is declared.
#5056 [vividus-plugin-mobitru] Add support of doInjection option at app installation
New property:
mobitru.do-injection=falsedefines whether to inject special code into application to allow emulation of "touch id" action and QR code scan.
Changed
#5042, #5049 [vividus-plugin-lighthouse] Support latest Lighthouse
- PWA category is removed: https://github.com/GoogleChrome/lighthouse/releases/tag/v12.0.0:
"As per Chrome’s updated Installability Criteria, Lighthouse has removed the PWA category. For future PWA testing, users will be directed to use the updated PWA documentation." - Reporting format is updated
Fixed
#5012 [vividus-plugin-visual-tetsing] Keep order of ignore locators in visual configuration
#5050 [vividus-plugin-web-app-to-rest-api] Quietly handle non-encoded Sitemap URLs by FROM_SITEMAP transformer
According to standard all Sitemap URLs must be URL-escaped and encoded,
but there could be cases when production contains invalid URLs and it's needed to crawl websites, so FROM_SITEMAP transformer
must be able to handle such invalid URLs.
0.6.9 - 2024-04-25
Added
#4823 (Closes #4822) Add ability to define format for indices of story-level Examples rows in report
New property:
story.example-index-format=\u0020[0]#4959 [vividus] Add ability to keep all columns in DISTINCTING transformer
New parameter: keepAllColumns (false by default). If false, only the columns specified in byColumnNames will appear in the resulting table. Otherwise, all columns from the initial table will be included in the resulting table. If the initial table has rows with repeated values, the value from the first row will be retained in the resulting table.
#5003, #5005 [vividus] Add new data providers for #{generate($data-provider-and-its-arguments)} expression
- 3 new providers
PlanetPlanet.atmosphericCompositionPlanet.atmosphericComposition 'JUPITER'Planet.axialTiltPlanet.axialTilt 'JUPITER'Planet.classificationPlanet.classification 'JUPITER'Planet.densityPlanet.density 'JUPITER'Planet.discoveryYearPlanet.discoveryYear 'JUPITER'Planet.eccentricityPlanet.eccentricity 'JUPITER'Planet.equatorialGravityPlanet.equatorialGravity 'JUPITER'Planet.equatorialRadiusPlanet.equatorialRadius 'JUPITER'Planet.escapeVelocityPlanet.escapeVelocity 'JUPITER'Planet.gravitationParametersPlanet.gravitationParameters 'JUPITER'Planet.inclinationPlanet.inclination 'JUPITER'Planet.lengthOfDayPlanet.lengthOfDay 'JUPITER'Planet.massPlanet.mass 'JUPITER'Planet.meanAirTemperaturePlanet.meanAirTemperature 'JUPITER'Planet.meanDistanceFromTheSunPlanet.meanDistanceFromTheSun 'JUPITER'Planet.meanOrbitalSpeedPlanet.meanOrbitalSpeed 'JUPITER'Planet.meanSurfaceTemperaturePlanet.meanSurfaceTemperature 'JUPITER'Planet.namePlanet.numberOfKnownMoonsPlanet.numberOfKnownMoons 'JUPITER'Planet.orbitalPeriodPlanet.orbitalPeriod 'JUPITER'Planet.planetaryDiscriminantPlanet.planetaryDiscriminant 'JUPITER'Planet.ringsPlanet.rings 'JUPITER'Planet.rotationPeriodPlanet.rotationPeriod 'JUPITER'Planet.surfaceAreaPlanet.surfaceArea 'JUPITER'Planet.symbolPlanet.symbol 'JUPITER'Planet.volumePlanet.volume 'JUPITER'
PronounsPronouns.objectivePronouns.possessivePronouns.reflexivePronouns.subjective
- New data generators in
IdNumberproviderIdNumber.validGeIDNumber
- New data generators in
LoremproviderLorem.supplemental
- New data generators in
MedicalproviderMedical.medicalProfession
- New data generators in
MoneyproviderMoney.currencyNumericCodeMoney.currencySymbol
- New data generators in
StockproviderStock.exchangesStock.lseSymbolStock.nseSymbol
#4848,#4876 (Closes #3486) [vividus-plugin-azure-service-bus] Introduce Azure Service Bus plugin (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New steps:
When I send message to `$serviceBusKey` service bus with payload:`$payload`
When I start consuming messages from `$serviceBusKey` service bus
When I stop consuming messages from `$serviceBusKey` service bus
When I wait with `$timeout` timeout until count of consumed `$serviceBusKey` service bus messages is $comparisonRule `$expectedCount`
When I $operation consumed `$serviceBusKey` service bus messages to $scopes variable `$variableName`#4893 (Closes #4875) [vividus-plugin-web-app] Add step to wait for element appearance with desired timeout
New step
Then element located by `$locator` appears in `$timeout`#4819, #4845, #4846 (Closes #4666) [vividus-plugin-web-app] Optimize and improve scrolling of element into view
- #4819 Consider sticky header when scrolling element into view
- #4819 If the element to scroll is located inside an overflow container, then native scrollIntoView JS method with top alignment is used by step
When I scroll element located by `$locator` into view - #4845 Optimize wait for scroll completion: current browser is checked while waiting for scroll completion, see more: scrollend event
- #4846, #4863 Fix scrolling of element into view from non-initial window position
#4830 [vividus-plugin-web-app] [vividus-plugin-mobile-app] Retry search on StaleElementReferenceException at filtering
#4820 [vividus-plugin-mobile-app] Add support of Appium Android UIAutomator2 driver 3.+
W3C actions or gesture shortcuts are used instead of removed obsolete MJSONWP touch route handlers.
#4913 [vividus-plugin-applitools] Add ability to disable browser fetching on UFG
New property:
ui.visual.applitools.disable-browser-fetching=falseif true, page resources for rendering on the UFG will be fetched from outside of the browser.
#4947 [vividus-plugin-applitools] Enable layout breakpoints in UFG
New property:
ui.visual.applitools.layout-breakpoints=trueif true the viewport width and height are changed to the specified device's values prior to capturing the page source for rendering in UFG.
#4910, #4930 (Closes #4887) [vividus-plugin-datetime] Add fromEpochMilli/toEpochMilli expressions
toEpochMilliconverts the input date to the number of milliseconds from the epoch of 1970-01-01T00:00:00Z.fromEpochMilliconverts the input number of milliseconds from the epoch of 1970-01-01T00:00:00Z to the date.
#4929 (Closes #4919) [vividus-plugin-html] Add step to save number of elements from HTML document
New step:
When I save number of elements found by $htmlLocatorType `$htmlLocator` in HTML `$html` to $scopes variable `$variableName`#4999 [vividus-plugin-csv] Respect CSV format configuration by step saving CSV to variable
The properties csv.delimiter-char and csv.escape-char applied to both the transformer and the step from the plugin.
Changed
#4957 [vividus] Do not fail FILTERING table transformer when random rows number is greater than total rows number
If the number of rows in the original table is less than the value specified in 'byRandomRows' parameter, then all the original table rows are kept. The behaviour is changed to make consistent with byMaxRows and byMaxColumns behaviour.
Deprecated
#4865 [vividus-plugin-web-app] Deprecate step validating number of invisible elements
The step:
Then number of invisible elements `$locator` is $comparisonRule `$quantity`is deprecated and will be removed in VIVIDUS 0.8.0. The replacement is the step:
Then number of elements found by `$locator` is $comparisonRule `$quantity`make sure to put the proper visibility type to the locator.
#4912 [vividus-plugin-web-app] Deprecate steps using button attributes as input parameters
| Deprecated step | Replacement pattern |
|---|---|
When I hover a mouse over a button with the name '$buttonName' |
When I hover mouse over element located `By.buttonName(<buttonName>)` |
When I click on a button with the name '$buttonName' |
When I click on element located by `buttonName(<buttonName>)` |
When I click on a button with the image src '$imageSrc' |
When I click on element located by `xpath(.//button[./img[@src='<imageSrc>']])` |
Then a button with the name '$buttonName' exists |
Then number of elements found by `buttonName(<buttonName>)` is equal to `1` |
Then a button with the name '$buttonName' does not exist |
Then number of elements found by `buttonName(<buttonName>)` is equal to `0` |
Then a button with image with the src '$imageSrc' exists |
Then number of elements found by `xpath(.//button[./img[@src='<imageSrc>']])` is equal to `1` |
Then a button with the tooltip '$tooltip' and image with the src '$imageSrc' exists |
Then number of elements found by `xpath(.//button[./img[@src='<imageSrc>'] and @title='<tooltip>'])` is equal to `1` |
#4911 [vividus-plugin-web-app] Deprecate steps saving text and attributes of elements to variables
| Deprecated step | Replacement pattern |
|---|---|
When I set the text found in search context to the '$scopes' variable '$variableName' |
When I save text of context element to <scopes> variable `<variableName>` |
When I set '$attributeName' attribute value of the context element to the '$scopes' variable '$variableName' |
When I save `<attributeName>` attribute value of context element to <scopes> variable `<variableName>` |
When I set '$attributeName' attribute value of the element by $locator to the $scopes variable '$variableName' |
When I save `<attributeName>` attribute value of element located by `<locator>` to <scopes> variable `<variableName>` |
Fixed
#4994 [vividus] Fix NullPointerException while collecting variables data containing variable with null value
#4917 [vividus] Percent-encode all non-ASCII characters in URL fragment
#4978 [vividus] Handle closing script tag in template generating text visual diff
#4993 (Fixes #4662) [vividus] Include know-issues i...
0.6.8 - 2024-02-09
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 storagewhere $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,600sets 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.
0.6.7 - 2024-02-05
Added
#4741 (Closes #4735) [vividus-plugin-web-app-to-rest-api] Add validation of jump links to named anchors
Jump links using anchors based on name attribute are included into validation scope.
#4760 (Closes #4736) [vividus-plugin-web-app-to-rest-api] Filter jump links during contextual validations
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.