Releases: vividus-framework/vividus
0.5.8 - 2023-04-02
Deprecated
#3748 [vividus-plugin-web-app] Align syntax of the step refreshing page
Deprecated step | Replacement |
---|---|
When I refresh the page | When I refresh page |
#3748 [vividus-plugin-web-app] Align syntax of the step validating page title
Deprecated step | Replacement pattern |
---|---|
Then the page title $comparisonRule '$text' | Then page title <comparisonRule> `<text>` |
Fixed
#3783 [vividus-plugin-web-app-to-rest-api] Fix NullPointerException
on adding browser cookie without expiry date to HTTP context
The affect step is When I set browser cookies to the API context
.
#3778 (Fixes #3705) Restore attachments when scenario-level fail-fast is enabled
Attachments are now published correctly when fail-fast at scenario level is enabled. The affected steps:
- steps scanning barcode
- database steps comparing datasets
- steps for interactions with archives
- steps comparing complex variables
#3559 [vividus-plugin-web-app] Fix scroll position check for window.scrollY
with decimal component
If the document is rendered on a subpixel-precise device, then the value of window.scrollY
is also subpixel-precise and may contain a decimal component. Previously it led to false-negative assertions on checks whether page is scrolled to an element.
0.5.7 - 2023-03-28
WARNING
This version has critical regression issue: test projects using vivdus-plugin-web-app-to-rest-api
plugin may face with an error at step When I set browser cookies to the API context
blocking test execution:
java.lang.NullPointerException: Cannot invoke "java.util.Date.toInstant()" because the return value of "org.openqa.selenium.Cookie.getExpiry()" is null at org.vividus.ui.web.action.CookieManager.createHttpClientCookie(CookieManager.java:101) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707)
Users must migrate to version 0.5.8
, which contains the fix for the issue (#3783).
Added
#3709 (Closes #1810) [vividus] Add INNER_JOIN
table transformer
INNER_JOIN
transformer combines rows from two tables whenever there are matching values between the columns in other words it's an analogue of SQL INNER JOIN.
#3746 (Closes #3729) [vividus] Add support of Integrated Windows authentication
Integrated Windows authentication is enabled automatically whenever tests are run on Windows.
#3719 [vividus] Improve data generation via expression
31 new providers:
- Brand
- Chess
- CowboyBebop
- Futurama
- HalfLife
- HowToTrainYourDragon
- Myst
- Naruto
- NewGirl
- OlympicSport
- Show
- SonicTheHedgehog
- SouthPark
- Spongebob
- Stargate
- StrangerThings
- StreetFighter
- Suits
- SuperSmashBros
- Supernatural
- SwordArtOnline
- TheExpanse
- TheKingkillerChronicle
- TheRoom
- TheThickOfIt
- TheVentureBros
- VForVendetta
- VideoGame
- WarhammerFantasy
- WorldOfWarcraft
- Zodiac
#3749 [viviuds-plugin-mobile-app] Add step to download the file from the device
New step
When I download file `$filePath` from device and save its content to $scopes variable `$variableName`
#3750 (Closes #3643) [vividus-plugin-json] Add JSON matcher for array elements validation
JSON matcher validates whether the actual array contains any of entries from the expected one.:
#{json-unit.matches:anyOf}<input-array>
Changed
#3728 [VIVIDUS Docker image] Switch to use Java 17 as a base Docker image
Base Docker image is switched from Java 11 to Java 17.
Deprecated
#3718 (Closes #3642) [vividus-plugin-rest-api] Give better name to FROM_JSON
table transformer parameter for variable source
Deprecated parameter | Replacement |
---|---|
variable |
variableName |
Removed
#3745 [vividus] Drop obsolete HTTP cookie specifications and unify their naming
HTTP cookie specification can be configured using property http.cookie-spec
.
Remove property value | Replacement | Description |
---|---|---|
default |
N/A | Default cookie policy is a synthetic policy that picks up either RFC 2965, RFC 2109 or Netscape draft compliant implementation based on properties of cookies sent with the HTTP response (such as version attribute, now obsolete). This policy was deprecated in favor of the standard (RFC 6265 compliant) implementation. |
ignoreCookies |
ignore |
The policy that ignores cookies. |
standard-strict |
strict |
The RFC 6265 compliant policy (strict profile). |
standard |
relaxed |
The RFC 6265 compliant policy (interoperability profile). |
netscape |
N/A | This policy conforms to the original draft specification published by Netscape Communications. It should be avoided unless absolutely necessary for compatibility with legacy code. |
#3745 [vividus-plugin-rest-api] Disable ability to configure outdated HTTP request parameters and updated default values
The following items were excluded from the set of configuration options supported by step When I set HTTP request configuration:$configItems
:
staleConnectionCheckEnabled
relativeRedirectsAllowed
normalizeUri
socketTimeout
The default values were updated for the following items:
Configuration item name | Old default value | New default value |
---|---|---|
connectionRequestTimeout |
-1 (infinity) |
180000 (milliseconds) |
connectionTimeout |
-1 (infinity) |
180000 (milliseconds) |
The list of available options for cookieSpec
item was updated, see above release note to find info on the options.
Fixed
#3724 (Fixes #2589) [vividus-plugin-web-app] Fix field clearing using keyboard on MacOS
The step
When I clear field located by `$locator` using keyboard
works on macOS platform now.
#3766 [vividus-plugin-saucelabs] Fix report link to TestObject runs
0.5.6 - 2023-03-11
Added
#3708 [vividus-plugin-web-app] Add workaround for Chrome 111
Users running tests using Chrome 111 may see errors like:
Unable to establish websocket connection to http://localhost:59721/devtools/browser/6410977d-865e-452b-97bf-05b6ef4657aa
The reason is tighten security policies introduced at Chrome starting from version 111.
All VIVIDUS users are recommended to migrate to VIVIDUS 0.5.6.
If migration is not possible now, the local workaround may be applied: add the following property to the test project:
web.driver.CHROME.command-line-arguments=--remote-allow-origins=*
Links:
- Root cause: https://bugs.chromium.org/p/chromium/issues/detail?id=1422444
- Discussion: https://groups.google.com/g/chromedriver-users/c/xL5-13_qGaA?pli=1
- Selenium issue: SeleniumHQ/selenium#11750
#3687 (Closes #2915) [vividus-plugin-kafka] Add ability to send Kafka event with key
New step syntax:
When I send event with key `$key` and value `$value` to `$producerKey` Kafka topic `$topic`
Deprecated
#3682 [vividus-plugin-kafka] Align Kafka steps syntax with the official terminology
Deprecated step | Replacement pattern |
---|---|
When I send data `$data` to `$producerKey` Kafka topic `$topic` | When I send event with value `$value` to `$producerKey` Kafka topic `$topic` |
When I start consuming messages from `$consumerKey` Kafka topics `$topics` | When I start consuming events from `$consumerKey` Kafka topics `$topics` |
When I $queueOperation consumed `$consumerKey` Kafka messages to $scopes variable `$variableName` | When I $queueOperation consumed `$consumerKey` Kafka events to $scopes variable `$variableName` |
When I wait with `$timeout` timeout until count of consumed `$consumerKey` Kafka messages is $comparisonRule `$expectedCount` | When I wait with `$timeout` timeout until count of consumed `$consumerKey` Kafka events is $comparisonRule `$expectedCount` |
When I stop consuming messages from `$consumerKey` Kafka | When I stop consuming events from `$consumerKey` Kafka |
Fixed
#3689 [vividus] Throw an error on attempt to use non-existent table transformer
Previously attempts to use non-existent table transformers were silently ignored, now errors are thrown.
#3706 (Fixes #3690) [vividus] Handle special chars in template generating text visual diff
Special characters like $ and ` were broke attachment with text visual diff, now these characters are handled in a safe way.
#3666 (Fixes #3607) [vividus] Resolve collision on story files with same names
Stories with same file name from different folders are rendered in the report correctly now.
#3662 (Fixes #2843) [vividus-plugin-ssh] Avoid using empty string as result for SFTP commands not providing any result
SFTP commands returning results are:
get remote-path
ls [path]
pwd
0.5.5 - 2023-02-21
Added
#3626 (Closes #2462) [vividus] Introduce configuration sets
Configuration set simplifies re-usage of pre-defined combinations of profiles/suites/environments, e.g.:
configuration.properties
:
configuration-set.active=preprod-uat
configuration-set.preprod-uat.profiles=web/desktop/chrome
configuration-set.preprod-uat.suites=uat
configuration-set.preprod-uat.environments=preprod
configuration-set.test-regression.profiles=web/headless/chrome
configuration-set.test-regression.suites=regression
configuration-set.test-regression.environments=test
#3621 [vividus-plugin-web-app] Improve buttonName
locator to search button text in child elements
buttonName
locator can detect buttons with complex internal markup.
#3624 (Closes #3557) [vividus-plugin-web-app-to-rest-api] Make links clickable in resource validation results attachment
Navigation from reported resource validation results is improved.
#3574 [vividus-plugin-saucelabs] Add support of APAC_SOUTHEAST
SauceLabs Data Center
TIP: SauceLabs Data Center is configured via mandatory saucelabs.data-center
property.
Deprecated
#3574 [vividus-plugin-saucelabs] Deprecate non-specific SauceLabs Data Centers
SauceLabs adds more data Centers and updates naming of the current ones to make them more specific
Deprecated naming of SauceLabs Data Center | Replacement |
---|---|
US |
US_WEST |
EU |
EU_CENTRAL |
TIP: SauceLabs Data Center is configured via mandatory saucelabs.data-center
property.
Fixed
#3648 (Fixes #3646) [vividus-plugin-web-app] Fix XPath space normalization for sequence of functions
Now whitespace normalization is applied correctly in xPath-s having a set of functions applied one by one, like //*[contains(text(), 'night')]/parent::body/label[contains(text(), 'story')]
0.5.4 - 2023-02-03
Added
#3597 [vividus-plugin-json] Add step to validate JSON against schema
New step:
Then JSON `$json` is valid against schema `$schema`
#3556 [vividus-plugin-web-app][vividus-plugin-mobile-app] Allow to use hyphen in custom locator names
For example, now it's possible to define locators with any case format: both imageName
and image-name
are allowed:
# lowerCamelCase format
ui.locator.imageName.locator-type=xpath
ui.locator.imageName.pattern=//img[@name='%s' and @alt = '%s']
#kebab-case format
ui.locator.image-name.locator-type=xpath
ui.locator.image-name.pattern=//img[@name='%s' and @alt = '%s']
#3518 [vividus-plugin-web-app] Unify syntax of steps opening web application
New steps:
Given I am on main application page
Given I am on page with URL `$pageURL`
#3516 [vividus-plugin-web-app] Unify syntax of step opening relative URL
New step:
When I go to relative URL `$relativeURL`
#3519 [vividus-plugin-web-app] Unify syntax of steps validating text presence/absence
New steps:
Then text `$text` exists
Then text `$text` does not exist
#3517 [vividus-plugin-web-app][vividus-plugin-mobile-app] Unify syntax of steps changing context
New steps:
When I change context to element located by `$locator` in scope of current context
When I change context to element located by `$locator`
#3387 [vividus-plugin-mobile-app] Add step to zoom in/out context
New step:
When I zoom $zoomType context
#3205 (Closes #1808) [vividus-plugin-mobile-app] Add step performing sequence of touch actions
New step:
When I execute sequence of touch actions: $actions
where allowed actions types are:
- TAP
- TAP_AND_HOLD
- MOVE_TO
- MOVE_BY_OFFSET
- RELEASE
- WAIT
#3602 [vividus-plugin-mobile-app] Add step to upload file with dynamic data to the device
New step:
When I upload file with name `$fileName` and data `$data` to device
#3583 [vividus-plugin-mobile-app] Add shooting strategy to take fullscreen screenshot
New strategy name is FULL_SCREEN
, it takes fullscreen screenshot including top and bottom bars.
#3584 [vividus-plugin-azure-storage-account] Save binary blobs to variables as bytes
It's possible to perform actions with not only textual, but binary blobs as well.
Changed
#3601 [vividus-plugin-web-app] Record failed assertion for intercepted click instead of retry via JS
Now if element by the specified locator is not clickable (overlapped by another element, problems with page/context loading or the element is disabled) the step will fail with corresponding error (ElementClickInterceptedException
). Previously the attempt to click via Javascript was performed, but it was a workaround for Chrome browser only and this attempt doesn't make sense now.
#3541, #3558 [vividus-plugin-saucelabs] Refactor used embedded SauceConnect options:
- Switch from deprecated
--no-remove-colliding-tunnels
option to--tunnel-pool
one. - Remove deprecated
--no-proxy-caching
option: according to SauceConnect logs:Flag --no-proxy-caching has been deprecated, the functionality is not configurable.
Deprecated
#3518 [vividus-plugin-web-app] Unify syntax of steps opening web application
Deprecated step | Replacement pattern |
---|---|
Given I am on the main application page | Given I am on main application page |
Given I am on a page with the URL '$pageURL' | Given I am on page with URL `<pageURL>` |
#3516 [vividus-plugin-web-app] Unify syntax of step opening relative URL
Deprecated step | Replacement pattern |
---|---|
When I go to the relative URL '$relativeURL' | When I go to relative URL `<relativeURL>` |
#3519 [vividus-plugin-web-app] Unify syntax of steps validating text presence/absence
Deprecated step | Replacement pattern |
---|---|
Then the text '$text' exists | Then text `<text>` exists |
Then the text '$text' does not exist | Then text `<text>` does not exist |
#3517 [vividus-plugin-web-app][vividus-plugin-mobile-app] Unify syntax of steps changing context
Deprecated step | Replacement pattern |
---|---|
When I change context to element located `$locator` | When I change context to element located by `<locator>` |
When I change context to element located `$locator` in scope of current context | When I change context to element located by `<locator>` in scope of current context |
#3583 [vividus-plugin-mobile-app] Deprecate shooting strategy with name SIMPLE
The replacement is VIEWPORT
shooting strategy, it's equal to SIMPLE
(it takes screenshot with cut top and bottom bars), but has better naming
Fixed
#3582 [vividus] Fix parsing of nested expressions without parameters
The previous logic matched nested expressions without arguments correctly if the number of characters in this expression is multiple of three only (3+3+3...). For example, it parsed "story_random" or "target" correctly, but not "story_indexed" or "targets".
#3542 [vividus-plugin-web-app] Fix execution of desktop web tests on SauceLabs
- SauceLabs has started using MacOS as a default platform when
platformName
capability is equal to single whitespace,
while emptyplatformName
capability defaults to Windows by Selenium client. - SauceLabs has started using Windows 2008 as a default platform when
platformName
capability is empty and browser is
MicrosoftEdge
, but Windows 2008 doesn't have MS Edge installed
#3598 (Fixes #3535) [vividus-plugin-web-app][vividus-plugin-mobile-app] Fix space normalization for xpaths with contains
function
0.5.3 - 2023-01-10
Added
#3433 (Closes #3256, #3257) Make sure all expressions allow to escape commas and can accept arguments as is
Expressions accepting exactly 1 argument process it as is:
- all leading and trailing spaces are preserved;
- no symbols are changed or removed.
The rules used for processing of expressions accepting more than 1 argument are following:
- comma
,
is a delimiter for arguments; - all leading and trailing argument spaces are trimmed;
- meaningful commas (not used as delimiters) can be added to arguments in 2 ways:
- escape comma using backslash
\
; - wrap argument into triple quotes (it might be convenient when arguments are
get dynamically (e.g. from HTTP response) and escaping of such values could be a
bit complicated).
NOTE: The leading and trailing spaces outside triple quotes are trimmed, but the leading and trailing spaces inside triple quotes are preserved.
- escape comma using backslash
#3419 [vividus] Improve data generation via generate
expression
- Add Korean resident registration number generator: `#{generate(IdNumber.validKoKrRrn)}
- 2 new providers:
- Marvel Snap
- Silicon Valley
#3523 [vividus] Add decodeFromBase64ToBinary
expression
New expression decodes the input string from Base64 format to the binary data:
When I compare against baseline with name `expected` from image `#{decodeFromBase64toBinary(iVBORw0KGgoAAAANSU...)}`
#3520 [vividus-plugin-web-app] Add decodeDataUrl
expression
New expression parses Data URL-s and decodes their data if Base64 encoding is set:
#{decodeDataUrl(data:image/png;base64,iVBORw....)}
#3456 [vividus-plugin-json] Add ability to compare for “is not equal to” against null
values
Examples:
Then JSON element value from `${json}` by JSON path `$.store.book[0].category` is not equal to `#{null}`
Then JSON element value from context by JSON path `$.store.book[1]` is not equal to `#{null}`
Changed
#3463 [vividus-plugin-saucelabs] Use tunnelName
instead of deprecated tunnelIdentifier
https://docs.saucelabs.com/dev/test-configuration-options/#tunnelidentifier:
tunnelIdentifier is being deprecated in favor of tunnelName.
Deprecated
#3531 (Closes #3416) [vividus] Align naming of story execution timeout properties
Deprecated property | Replacement |
---|---|
batch-<batch-number>.story-execution-timeout |
batch-<batch-number>.story.execution-timeout |
bdd.story.execution-timeout :the format of the value is an integer number - number of seconds |
story.execution-timeout :the format of the value is ISO-8601 duration |
#3464 [vividus-plugin-cross-browser-testing] Deprecate CrossBrowserTesting plugin
CrossBrowserTesting cloud will be sunset on July 2023:
...we have also announced that we will be sunsetting the CrossBrowserTesting cloud in July 2023, as this new product will replace CrossBrowserTesting.
Taking into account this announcement:
- development of plugin features is stopped,
- any bug fixes for the plugin will be accepted and delivered till April 2023,
- the plugin will be dropped on July 2023
#3510 [vividus-plugin-rest-api] Deprecate url
parameter of FROM_JSON
table transformer
variable
parameter must be used instead as it provides more flexibility.
Fixed
#3472 (Fixes #3471) Fix validation of long float numbers in JSON-s
Now long fraction part of float number is not rounded:
Then JSON element value from `{
"long-long-float":485690.3866338789319252000000135498000000
}` by JSON path `$.long-long-float` is equal to `485690.3866338789319252000000135498000000`
#3509 [vividus] Fix generate
expression to be thread-safe again
The root cause of the fixed issue: datafaker-net/datafaker#574.
#3511 (Fixes #3501) [vividus] Fix expressions resolution in multiline strings
Now the following example works as expected:
Given I initialize scenario variable `jsonWithYear` with value `{
"year": #{generateDate(-P19Y, yyyy)}
}`
Then `${jsonWithYear}` matches `\{\s+"year": 200\d\s+}`
[vividus-plugin-mobile-app] Take screenshot on failure in steps performing keyboard input
#3522 [vividus-plugin-json] Fix broken JSON assert with IGNORING_EXTRA_ARRAY_ITEMS
option
#3527 [vividus-plugin-saucelabs] Fix race condition on SauceConnect process completion
There were collisions on file access when one SauceConnect process were completing and another one were starting.
0.5.2 - 2022-12-09
Added
#3409 [vividus] Add Java 17 migration notice
All users are welcomed to migrate to Java 17. 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 17 will be dropped is February 1, 2023 (the first release after this date will require Java 17+). The old versions of VIVIDUS will start slowing down the tests intentionally after April 1, 2023 in order to push users to the migration.
#3414 [vividus] Add ability to configure fail-fast options per batch
New property | Description |
---|---|
batch-<batch-number>.story.fail-fast |
Enables fail-fast for stories within the particular batch, override global setting story.fail-fast |
batch-<batch-number>.scenario.fail-fast |
Enables fail-fast for scenarios within the particular batch, override global setting scenario.fail-fast |
#3388 (Closes #3291) [vividus] Add logging of ExamplesTable
-s transformations
Now input and output tables and properties are logged for each ExamplesTable
transformer.
#3419 Improve data generation via expression
- 21 new providers
- Azure
- Baseball
- Compass
- Control
- Cosmere
- Cricket
- CultureSeries
- DetectiveConan
- DoctorWho
- Doraemon
- Drone
- DungeonsAndDragons
- Emoji
- FamilyGuy
- FreshPrinceOfBelAir
- FullmetalAlchemist
- HeroesOfTheStorm
- MoneyHeist
- OnePiece
- StudioGhibli
- Text
- Far better phone number generation. Almost all generated phone numbers are now valid numbers.
#3435 Introduce mobile web profiles for clouds
vividus-plugin-browserstack
new profiles:browserstack/web/phone
vividus-plugin-mobitru
(Incubating*) new profiles:mobitru/web
vividus-plugin-saucelabs
new profiles:saucelabs/web/phone/iphone
saucelabs/web/phone/android
- "Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
#3407, #3415 (Closes #3405) [vividus-plugin-datetime] Support E-notation numbers in fromEpochSecond
expression
For example {fromEpochSecond(1.669640468E9)}
expression will result in 2022-11-28T13:01:08
for UTC+0 timezone.
#3380, #3391 (Relates #3256) [vividus] & [vividus-plugin-datetime] Make sure all common and date/time expressions allow to escape commas
If expression argument allows meaningful commas (like, parts of the date format pattern), they should be escaped using \
.
Changed
#3426 Move ZIP-archive steps from REST API plugin to core
It's not required to install any plugins anymore to use the following steps (they are available out of the box, while they required vividus-plugin-rest-api
before):
When I save content of `$archiveData` archive entries to variables:$parameters
Then `$archiveData` archive contains entries with names:$parameters
#3436 (Relates #3434) [vividus] Do not allow to override predefined composite paths
Previously the internal property bdd.configuration.all-composite-paths
configuring path patterns of composite steps files might be mistakenly set by end-users, which might result in overriding of internal composite steps (steps/defaults/*.steps
). That led to errors when internal VIVIDUS composite steps were marked as not implemented. Now the above-mentioned property is removed, users are not able to hide internal VIVIDUS composite steps.
#3435 [vividus-plugin-mobitru] Change name of profile for native mobile apps tests: mobitru
-> mobitru/mobile_app
(Incubating):
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
Deprecated
#3410 [viviuds] Unify naming of fail-fast properties
Deprecated property | Replacement |
---|---|
bdd.batch.fail-fast |
batch.fail-fast |
bdd.story.fail-fast |
story.fail-fast |
bdd.scenario.fail-fast |
scenario.fail-fast |
#3413 [vividus] Unify naming of properties configuring batches
Deprecated property | Replacement |
---|---|
bdd.story-loader.batch-<batch-number>.* |
batch-<batch-number>.* |
bdd.batch-<batch-number>.* |
batch-<batch-number>.* |
#3429 [vividus] Unify naming of properties declaring variables
Deprecated property | Replacement |
---|---|
bdd.variables.global.* |
variables.* |
bdd.variables.batch-<batch-number>.* |
batch-<batch-number>.variables.* |
#3436 [vividus] Unify naming of property configuring path patterns of composite steps files
Deprecated property | Replacement |
---|---|
bdd.configuration.composite-paths |
engine.composite-paths |
Fixed
#3431 [viviuds-plugin-web-app] Do not prepend dot to cookie domains without subdomains
Now if the current page is http://localhost:8080/
, the cookie will be set for domain localhost
. The old behaviour is preserved: if the page is http://test.topdomain.com/
, the cookie domain will be .topdomain.com
#3390 [vividus-plugin-mobile-app] Check element position while swiping to it
Now the check whether the element is interactable (the location is in the area on the screen with indents from borders) while determining if swipe is needed. The affected step is:
When I swipe $direction to element located by `$locator` with duration $swipeDuration
0.5.1 - 2022-11-25
Added
#3297 [vividus-plugin-mobitru] Introduce integration with Mobitru (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New plugin defines profile (mobitru
) with a set of the preconfigured properties. In order to simplify work with Mobitru the plugin waits for the requested device to be available, takes it in the usage and installs application.
#3325 [vividus-plugin-shell] Introduce plugin to execute commands using shell (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New plugin provides functionality to execute commands via Shell. New steps:
When I execute command `$command` and save result to $scopes variable `$variableName`
When I execute command `$command` using $shellName and save result to $scopes variable `$variableName`
#3357 [vividus] Allow empty tables in CARTESIAN_PRODUCT
transformer
If any of tables provided to CARTESIAN_PRODUCT
transformer is empty, the resulting table will also be empty. Previously an error was thrown in case of empty table input.
#3385 [vividus] Introduce INDEXING
transformer
INDEXING
transformer adds a column with the rows indices in the specified order. Indices are zero-based.
{transformer=INDEXING, order=ASCENDING}
|key |
|value |
|value2|
will result in
|key |index|
|value |0 |
|value2|1 |
#3358 [vividus-plugin-web-app] Add step to open new browser tab
New step:
When I open new tab
#3318 [vividus-plugin-web-app] Add ability to use self-signed certificates for browser proxy
New property:
proxy.mitm.mitm-manager-type= IMPERSONATED
it defines the MITM type using the corresponding certificates. SELF_SIGNED
MITM manager uses self-signed certificates that
are generated lazily if the given key store file doesn't yet exist. Please note that certificates are usually generated
in the current working directory.
#3359 [vividus-plugin-web-app] [vividus-plugin-mobile-app] Add ability to compress images published to report
New property:
ui.report.image-compression-quality=1
it enables compressions of the images published to the report using the specified compression quality. If 1 is set then no compression will be performed.
#3381 [vividus-plugin-web-app] [vividus-plugin-mobile-app] Unify syntax of wait steps
New steps:
When I wait until element located by `$locator` appears
When I wait until element located by `$locator` disappears
Then element located by `$locator` exists for `$duration` duration
#3381 [vividus-plugin-web-app] Unify syntax of wait steps
New steps:
When I wait `$duration` with `$pollingDuration` polling until element located by `$locator` becomes $state
When I wait until state of element located by `$locator` is $state
When I wait until element located by `$locator` is stale
When I wait until element located by `$locator` contains text `$text`
Then element located by `$locator` disappears in `$timeout`
#3384 [vividus-plugin-web-app] Unify syntax of steps interacting with fields
New steps:
When I clear field located by `$locator`
When I clear field located by `$locator` using keyboard
When I add `$text` to field located by `$locator`
When I enter `$text` in field located by `$locator`
#3302 [vividus-plugin-mobile-app] Add profile for local execution using Appium 2.x server
New profile:
mobile_app/local2
#3350 [vividus-plugin-mobile-app] Add step to perform double tap on element
New step:
When I double tap on element located by `$locator`
#3292 [vividus-plugin-mobile-app] Take into account element position while checking if swiping to it should be stopped
Now element is considered intractable if it's on the central area of screen.
#3298 [vividus-plugin-mobile-app] Optimize viewport screenshot taking
The performance of taking viewport screenshots is improved.
New property is added:
mobile.screenshot.android.append-bottom-navigation-bar=true
it defines whether to append Android bottom navigation bar or not. The default behaviour will be changed in VIVIDUS 0.6.0: the navigation bar won't be appended.
#3348 [vividus-plugin-visual] Improve performance of visual checks in case of high number of detected diffs
#3324 (Closes #3206) [vividus-plugin-azure-resource-manager] Add step to get Azure resource by its URL
New step:
When I get Azure resource with URL `$azureResourceUrl` and save it to $scopes variable `$variableName`
Deprecated
#3381 [vividus-plugin-web-app] [vividus-plugin-mobile-app] Unify syntax of wait steps
Deprecated step | Replacement pattern |
---|---|
When I wait until element located `$locator` appears | When I wait until element located by `<locator>` appears |
When I wait until element located `$locator` disappears | When I wait until element located by `<locator>` disappears |
Then element located `$locator` exists for `$duration` duration | Then element located by `<locator>` exists for `<duration>` duration |
#3381 [vividus-plugin-web-app] Unify syntax of wait steps
Deprecated step | Replacement pattern |
---|---|
When I wait until an element with the text '$text' appears | When I wait until element located by `caseSensitiveText(<text>)` appears |
When I wait until an element with the text '$text' disappears | When I wait until element located by `caseSensitiveText(<text>)` disappears |
When I wait until an element with the name '$elementName' disappears | When I wait until element located by `elementName(<elementName>)` disappears |
When I wait until an element with the name '$elementName' appears | When I wait until element located by `elementName(<elementName>)` appears |
When I wait until the state of an element with the name '$elementName' becomes [$state] | When I wait until state of element located by `elementName(<elementName>)` is <state> |
When I wait until an element with the name '$elementName' is stale | When I wait until element located by `elementName(<elementName>)` is stale |
When I wait until an element with the name '$elementName' contains the text '$text' | When I wait until element located by `elementName(<elementName>)` contains text `<text>` |
Then an element with the name '$elementName' disappears in '$timeout' seconds | Then element located by `elementName(<elementName>)` disappears in `<timeout>` |
When I wait `$duration` with `$pollingDuration` polling until element located `$locator` becomes $state | When I wait `<duration>` with `<pollingDuration>` polling until element located by `<locator>` becomes <state> |
When I wait until state of element located `$locator` is $state | When I wait until state of element located by `<locator>` is <state> |
When I wait until element located `$locator` is stale | When I wait until element located by `<locator>` is stale |
When I wait until element located `$locator` contains text '$text' | When I wait until element located by `<locator>` contains text `<text>' |
Then element located '$locator' disappears in '$timeout' | Then element located by `<locator>` disappears in `<timeout>` |
Deprecated step | Replacement |
---|---|
When I wait until an element with the tag '$elementTag' and attribute '$attributeType'='$attributeValue' disappears | When I wait until element located `$locator` disappears |
When I wait until an element with the tag '$elementTag' and attribute '$attributeType'='$attributeValue' appears | When I wait until element located `$locator` appears |
Then an element with the id '$id' disappears | When I wait until element located `$locator` disappears |
#3377 [vividus-plugin-web-app] Deprecate step clicking on multiple elements
The step
When I click on all elements located `$locator`
is deprecated.
The combination of steps
When I click on element located by `$locator`
and
When I find $comparisonRule `$number` elements by `$locator` and for each element do$stepsToExecute
should be used instead
#3384 [vividus-plugin-web-app] Unify syntax of steps interacting with fields
Deprecated step | Replacement |
---|---|
When I clear field located `$locator` | When I clear field located by `$locator` |
When I clear field located `$locator` using keyboard | When I clear field located by `$locator` using keyboard |
When I add `$text` to field located `$locator` | When I add `$text` to field... |
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 |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------...
0.4.16 - 2022-08-26
Added
#3077 [vividus] Enable verbose mode for story failures
Internal story failures are printed to logs in verbose mode, i.e. including all details and stack-trace.
#3093 [vividus-plugin-web-app] Add support of INFO
level for the browser console logs
Previously it was possible to retrieve only ERROR
-s and WARNING
-s.
#3097 [vividus-plugin-web-app] Add step waiting for the browser console log messages
New step:
When I wait until browser console $logEntries by regex `$regex` appear and save all entries into $scopes variable `$variableName`
#3083 [viviuds-plugin-mobile-app] Add step to delete file from device/emulator/simulator
New step:
When I delete file `$filePath` from device
#3074 [vividus-plugin-visual] Allow to cut visual baselines and checkpoints from all sides
Now it's possible to cut off left and right side bars in visual tests.
#3094 [vividus-plugin-ssh] Add step to configure SSH
connections dynamically
New step:
When I configure SSH connection with key `$connectionKey` and parameters:$connectionParameters
#3096 [vividus-plugin-winrm] Add step to configure WinRM
connections dynamically (Incubating)
"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
New step:
When I configure WinRM connection with key `$connectionKey` and parameters:$connectionParameters
#2725 [vividus-to-zephyr-exporter] Add Zephyr Scale integration
Zephyr Scale exporter features:
- Create test executions
- Set test execution statuses
- Update statuses for existent execution
Deprecated
#3074 [vividus-plugin-visual] Deprecate non-unified definitions of cut strategies
- Screenshot configuration parameter
nativeFooterToCut
is deprecated for mobile applications, usecutBottom
instead. - Deprecated property:
Deprecated property | Replacement |
---|---|
mobile.screenshot.strategy.<YOUR_STRATEGY_NAME>.native-footer-to-cut |
mobile.screenshot.strategy.<YOUR_STRATEGY_NAME>.cut-bottom |
Fixed
#3092 [vividus-plugin-web-app] Disable browser console interactions for Safari
Safari driver doesn't allow to interact with browser console
#3075 [vividus-plugin-winrm] Fix disablement of certificate checks
SSL certificate checks for WinRM can be disabled now. Previously the property just didn't work. The complete list of supported Safari commands can be found here.
#3082 (Fixes #3076) [vividus-to-azure-devops-exporter] Allow to skip Area
config if it inherits project name
If the Area name is inherited from the Project name in AzureDevOps the property azure-devops-exporter.area
should be empty. You can check this by making a request for any Work Item within current Area and checking if the System.AreaPath
contains any data besides the Project name.
#3099 [vividus-to-xray-exporter][vividus-to-azure-devops-exporter] Include before/after hooks in test status calculation
Now the exporters take into account assertions failures recorded in after scenario hooks.