Skip to content

0.5.1 - 2022-11-25

Compare
Choose a tag to compare
@valfirst valfirst released this 29 Nov 12:00
· 1865 commits to master since this release
release-0.5.1
4be1e83

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

Fixed

#3349 [vividus] Fix handling of an attempt to run empty suite

An explicit error is thrown in case of run of empty test suite: InvalidConfigurationException: No batches with tests to execute are configured

#3341 [vividus-plugin-web-app-to-rest-api] Treat RFC-non-compliant URL as assertion failure

Previously invalid URLs break the step and stop it and scenario execution, now the failed assertions is recorded instead.

#3383 [vividus-to-***-exporter] Ignore BeforeStories.json and AfterStories.json while parsing output results

BeforeStories.json and AfterStories.json files should be skipped while parsing output results since they don't contain information to be exported.

#3373 (Fixes #3081) [VIVIDUS developers only] [vividus] Fail on registration of step beans with duplicating names