Skip to content

Releases: vividus-framework/vividus

0.5.7 - 2023-03-28

29 Mar 10:17
release-0.5.7
0372818
Compare
Choose a tag to compare

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

13 Mar 08:21
release-0.5.6
52071f5
Compare
Choose a tag to compare

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:

#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

21 Feb 09:13
release-0.5.5
a6b6f7c
Compare
Choose a tag to compare

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

06 Feb 21:09
release-0.5.4
29229ef
Compare
Choose a tag to compare

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

  1. SauceLabs has started using MacOS as a default platform when platformName capability is equal to single whitespace,
    while empty platformName capability defaults to Windows by Selenium client.
  2. 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

10 Jan 12:49
release-0.5.3
bb27254
Compare
Choose a tag to compare

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.

#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

12 Dec 11:36
release-0.5.2
07e8e06
Compare
Choose a tag to compare

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

29 Nov 12:00
release-0.5.1
4be1e83
Compare
Choose a tag to compare

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...
Read more

0.5.0 - 2022-10-23

01 Nov 14:20
release-0.5.0
6ebb1c2
Compare
Choose a tag to compare

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 |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------...

Read more

0.4.16 - 2022-08-26

26 Aug 15:18
release-0.4.16
e0a7fb9
Compare
Choose a tag to compare

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, use cutBottom 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.

0.4.15 - 2022-08-16

16 Aug 19:28
release-0.4.15
e2b0f32
Compare
Choose a tag to compare

Added

#3036 Introduce WinRM plugin (Incubating)

"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.

New plugin vividus-plugin-winrm provides functionality to execute commands via WinRM.

#3073 [vividus] Add story and scenario meta as tags to report

tags

#3057 (Closes #3056) [vividus] Introduce escapeJSON expression

The expression escapes reserved JSON characters: converts any string into one that's properly escaped for inclusion in JSON as a value.

#3050 (Closes #3038) [vividus-plugin-excel] Add ability to create Excel files with non-distinct columns

Deprecated

#3053 [vividus-plugin-datetime] Unify naming of locale property for generateDate expression

Deprecated property Replacement
bdd.date-expression-processor.locale expression.generate-date.locale

Fixed

#3044 (Fixes #3040) [vividus-to-zephyr-exporter] Fix validation for zephyr.exporter.source-directory property

The error on missing directory is displayed now instead of NullPointerException