Skip to content

Releases: vividus-framework/vividus

0.3.7 - 2021-07-05

26 Jul 15:06
release-0.3.7
a279f8d
Compare
Choose a tag to compare

Added

#1755 [vividus-crossbrowsertesting] Introduce CrossBrowserTesting plugin

New profile: crossbrowsertesting/web

#1622 [vividus] Resolve environment variables as VIVIDUS variables

If variable with the specified name is not found in any of VIVIDUS scopes, search for OS environment variable will be performed. If no OS environment variable is available, the variable placeholder will be kept as is: ${MY_VAR}

#1624 [vividus] Add CARTESIAN_PRODUCT table transformer

CARTESIAN_PRODUCT transformer creates a cartesian product from several tables.

{transformer=CARTESIAN_PRODUCT, tables=/data/colors.table}
|car  |
|Geely|
|KIA  |

#1650 [vividus] Make platform detection case insensitive

The iOS platform name is treated in the same manner as ios platform name

#1760 (Closes #1759) [vividus] Add expression to capitalize/uncapitalize string fully

New expressions:

  • capitalizeWords
  • capitalizeWordsFully
  • uncapitalizeWords

#1763 (Closes #1583) Add ability to compare for null values in ExamplesTable

By default all empty values in ExamplesTable are treated as empty strings. However it might be required to map certain values to null-s. It can be done at the step implementation level or by applying the generic approach at the table level:

{nullPlaceholder=NULL}
|header |
|value 1|
|NULL   |
|value 3|

This feature may be especially useful for cases when it's required to assert records in databases for NULL values.

#1754 [vividus-plugin-mobile-app] Add step to type text

Syntax:

When I type text `$text`

#1705 (Closes #1658) [vividus-plugin-db] Add ability to check one data set contains another data set

New data set comparison rules were introduced: is equal to and contains. The affected steps:

Then data from `$leftSqlQuery` executed against `$leftDbKey` $comparisonRule data from `$rightSqlQuery` executed against `$rightDbKey` matching rows using keys:$keys
When I wait for '$duration' duration retrying $retryTimes times while data from `$leftSqlQuery` executed against `$leftDbKey` $comparisonRule data from:$rightTable
Then `$leftData` matching rows using `$keys` from `$leftDbKey` $comparisonRule data from:$rightTable

#1672 [vividus-plugin-csv] Add ability to configure CSV delimiter for FROM_CSV transformer

New transformer property is delimiterChar.

#1652 [vividus-plugin-csv] Add ability to configure CSV delimiter globally

New property (a char used for value separation, must not be a line break character) configures the default value for all CSV operations in the plugin:

csv.delimiter-char=,

#1707, #1743 [vividus-plugin-applitools] [vividus-plugin-visual] Add ability to check that images not equal

The property defining the required difference baseline vs checkpoint to consider them inequal:

web.visual.required-diff-percentage=70

#1634 [vividus-plugin-azure-storage-account] Log deletion operation info

The name of the deleted blob and its container is logged upon successful deletion operation.

#1648 [vividus-plugin-azure-storage-account] Enable usage of blob service SAS URLs

It's allowed to use blob service SAS URL, in this case the authentication configuration is not required

#1657 (Closes #1654) [vividus-plugin-azure-storage-account] Add ability to upload binary blobs

Example of usage (pay attention to loadBinaryResource expression):

When I upload blob with name `folder/image.jpg` and data `#{loadBinaryResource(/data/image.jpg)}` to container `vividus` of storage account `testaccount`

#1670 (Closes #1625) [vividus-plugin-azure-storage-account] Add ability to retrieve blob properties

New steps retrieves the blob properties (all user-defined metadata, standard HTTP properties, and system properties for the blob) and saves them as JSON to a variable:

When I retrieve properties of blob with name `raw/test.json` from container `vividus` of storage account `testaccount` and save them to scenario variable `blob-properties`

#1741 [plugin-azure-storage-queue] Improve usability (Incubating)

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

  • Added new authentication mechanisms
  • Unified property naming
  • Added new step to clear queue
  • Changed step retrieving messages to save only message body
  • Changed step sending message to save output result as JSON

#1697 (Closes #1655) [docs] Add user guide on how to execute SQL against CSV resources

Deprecated

#1760 (Closes #1759) [vividus] Deprecate old capitalize/uncapitalize expressions to avoid ambiguity

Deprecated expression Replacement
capitalize capitalizeFirstWord
uncapitalize uncapitalizeFirstWord

Fixed

#1651 (Fixes #1564) [vividus] Fix handling of pending sub-steps

Now pending sub-steps are reported in a clear way.

#1668 (Fixes #1615) [vividus] Fix unexpected NPE breaking story reporting

The root cause of the issue is JBEHAVE-1486, now comments, ignored and pending steps which was not executed are reported properly.

#1724 [vividus] Restore logging of info assertion messages to allure report

The regression issue caused by #1611 was fixed. (Relates #1593)

#1679, #1694 [vividus-plugin-rest-api] Fix highlighting of HTTP messages in the report

The case of Content-Type header name is ignored during determination of the HTTP message MIME-type. Also Content-Type header has precedence over determination of the MIME-type from the body.

#1684 (Fixes #1682) [vividus-plugin-web-app] Align versions of all netty dependencies

Incompatible transitive netty dependencies caused runtime exceptions at proxy usage

#1695 [vividus-plugin-db] Fix source JDBC URL in queries statistic

Make sure correct source JDBC URL present in queries statistic attachment. The affected steps:

Then `$data` matching rows using `$keys` from `$dbKey` is equal to data from:$table
When I wait for '$duration' duration retrying $retryTimes times while data from `$sqlQuery` executed against `$dbKey` is equal to data from:$table

#1699 [vividus-plugin-db] Fix comparison of rows with duplicate keys

Now rows with duplicate keys are collected into lists and compared one by one.

#1725 [vividus-plugin-visual] Do not override global acceptable diff percentage

Previously the visual testing options from the step overrode the global options set via properties.

#1729, #1730, #1731 (Fixes #1563, #975) [vividus-agent-reportportal] Fix integration with ReportPortal 5.x

Now the execution results (including logs and attachments) are successfully published to ReportPortal 5.x

0.3.6 - 2021-05-10

10 May 20:55
release-0.3.6
26ce758
Compare
Choose a tag to compare

Added

#1586 (Relates #1545) [vividus] Add support for Vividus expressions in templates

The Vividus expressions can be used within templates:

${execVividusExpression('expression name', args)}

It's also allowed to use the nested expressions:

${execVividusExpression('expression name', arg1, execVividusExpression('expression name', args))}

#1585 [vividus-plugin-accessibility] Introduce accessibility testing capabilities (Incubating)

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

Then I test accessibility:$options

$options - the accessibility validation options where:

  • standard - the accessibility stanadard to verify against, one of WCAG2A, WCAG2AA, WCAG2AAA, Section 508
  • level - the violation level used to check, one of
    • ERROR - only errors will be validated
    • WARNING - error and warning will be validated
    • NOTICE - all the levels will be validated
  • locators - the comma-separeted locators of elements to verify
  • elementsToIgnore - the comma-separeted locators of elements to ignore
  • violationsToIgnore - the violations codes which should be ignored
  • violationsToCheck - the violations codes which should be checked

Fixed

#1595 [vividus] Do not count comments as pending steps in execution statistics

#1611 (Fixes #1593) [vividus] Do not log debug assertion messages to Allure report

#1608 (Fixes #1594) Ensure the attachments are published when fail-fast is enabled

Now the attachments are published by vividus-plugin-visual and vividus-plugin-accessibility plugins, when fail-fast option is enabled.

#1596 (Relates #1545) [vividus] Make resolving of variables in templates optional

Set the template-processor.resolve-bdd-variables property to true (it's false by default) value to be able to use global, next batches, scenario and story variables in templates.

#1584 [vividus-plugin-kafka] Fix handling of deprecated Kafka properties

Promoted features

Promoted features are features that were incubating in previous versions of Vividus but are now supported and subject to backwards compatibility.

Amazon Kinesis plugin

Amazon Kinesis plugin vividus-plugin-aws-kinesis is promoted to stable.

0.3.5 - 2021-04-22

22 Apr 21:24
release-0.3.5
bbd79c7
Compare
Choose a tag to compare

Added

#1582 [vividus-plugin-datetime] Enable comparison of dates without time part

Now step Then the date '$date1' is $comparisonRule the date '$date2' is able to compare dates without time part, e.g.:

Then the date '2021-04-19' is less than the date '2021-04-20'

#1581 (Closes #1580) [vividus-plugin-kafka] Enable usage of multiple Kafka instances

Now it's allowed to configure any number of Kafka producers and consumers (previously only single producer and single consumer were allowed)

Deprecated

#1581 [vividus-plugin-kafka] Deprecate steps and properties for single producer and single consumer

Deprecated steps:

When I send data `$data` to Kafka topic `$topic`
When I start consuming messages from Kafka topics `$topics`
When I wait with `$timeout` timeout until count of consumed Kafka messages is $comparisonRule `$expectedCount`
When I stop consuming messages from Kafka
When I $queueOperation consumed Kafka messages to $scopes variable `$variableName`

The generic (without producer and consumer keys) properties with kafka.producer. and kafka.consumer. prefixes are deprecated.

0.3.4 - 2021-04-14

18 Apr 11:45
release-0.3.4
77ee217
Compare
Choose a tag to compare

Added

#1533, #1561 (Closes #1460) [vividus-plugin-azure-storage-account] Introduce plugin for Azure Storage Account (Incubating)

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

When I download blob with name `$blobName` from container `$containerName` of storage account `$storageAccountKey` and save its content to $scopes variable `$variableName`
When I download blob with name `$blobName` from container `$containerName` of storage account `$storageAccountKey` to temporary file with name `$baseFileName` and save path to $scopes variable `$variableName`
When I upload blob with name `$blobName` and data `$data` to container `$containerName` of storage account `$storageAccountKey`
When I delete blob with name `$blobName` from container `$containerName` of storage account `$storageAccountKey`
When I find all blobs with name which $comparisonRule `$blobNameToMatch` in container `$containerName` of storage account `$storageAccountKey` and save result to $scopes variable `$variableName`

#1550 (Relates #1545) [vividus] Resolve Vividus variables in Freemarker templates

Now it's allowed to use global, next batches, scenario and story variables in Freemarker templates by referring them using the variables reference notation. Note that the parameters passed to the step executing templating take precedence over the variables.

#1529 [vividus-plugin-web-app] Add proxy step mocking by HTTP method

Syntax:

When I mock HTTP $httpMethods responses with request URL which $comparisonRule `$url` using response code `$responseCode`, content `$payload` and headers:$headers

#1549 [vividus-plugin-rest-api] Add step to save a number of elements by JSON path from the JSON

Syntax:

When I save number of elements from `$json` found by JSON path `$jsonPath` to $scopes variable `$variableName`

#1543 [vividus-plugin-mobile-app] Enable keys pressing for Apple TV platform

Now the steps pressing keys are applicable for Apple TV platform.

#1549 (Closes #1547) [vividus-plugin-kafka] Allow to peek messages from the queue

New queue operation PEEK is added:

When I $queueOperation consumed Kafka messages to $scopes variable `$variableName`

Changed

#1562 [plugin-websocket] Increase default websocket connect timeout to 1 minute

The longer connect timeout allows to make tests more stable.

Fixed

#1548 (Fixes #1513) [allure-adaptor] Fix reporting of scenarios with same title

Previously the scenarios having the same title were run successfully, but only the last one was shown in the report (others were moved to retries). Now the behavior is fixed and all scenarios are reported properly.

#1532 [vividus-plugin-mobile-app] Detect screen orientation only for mobiles

Apple TV and Andorid TV don't have screen orientation, so the detection is applied for mobile devices only.

#1536 [vividus-plugin-mobile-app] Do to consider tvOS as subset of iOS

tvOS is not considered as a subset of iOS (despite the fact tvOS is built on top of iOS) for the easier differentiation of the platforms.

Promoted features

Promoted features are features that were incubating in previous versions of Vividus but are now supported and subject to backwards compatibility.

Amazon DynamoDB plugin

Amazon DynamoDB plugin vividus-plugin-aws-dynamodb is promoted to stable.

0.3.3 - 2021-03-31

12 Apr 13:59
release-0.3.3
20880e8
Compare
Choose a tag to compare

Added

#1499 (Closes #1476 ) [vividus-plugin-json] Add step to patch JSON (Incubating)

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

When I patch JSON `$sourceJson` using `$jsonPatch` and save result to $scopes variable `$variableName`

#1497 [vividus-plugin-azure-functions] Introduce plugin for Azure Functions (Incubating)

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

When I trigger function `$functionName` from function app `$functionAppName` in resource group `$resourceGroup` with payload:$payload and save response into $scopes variable `$variableNames`

#1510 [vividus-plugin-azure-event-grid] Introduce plugin for Azure Event Grid (Incubating)

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

When I send event to `$topicName` topic with payload:$payload

#1510 [vividus-plugin-azure-storage-queue] Introduce plugin for Azure Storage Queue (Incubating)

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

When I peek up to `$count` messages from queue `$queueName` and save result to $scopes variable `$variableName`
When I send message `$message` to queue `$queueName` and save result to $scopes variable `$variableName`

#1522 [vividus-plugin-azure-cosmos-db] Introduce plugin for Azure Cosmos DB (Incubating)

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

When I read item with `$id` id and `$partition` partition from CosmosDB container `$containerKey` and save result to $scopes variable `$variableName`
When I execute `$query` query against CosmosDB container `$containerKey` and save result to $scopes variable `$variableName`
When I upsert `$data` into CosmosDB container `$containerKey`
When I insert `$data` into CosmosDB container `$containerKey`
When I delete `$data` from CosmosDB container `$containerKey`

#1528 [vividus-plugin-azure-data-factory] Introduce plugin for Azure Data Factory (Incubating)

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

When I run pipeline `$pipelineName` in DataFactory `$factoryName` from resource group `$resourceGroupName` with wait timeout `$waitTimeout`

#1485 (Closes #1421) [vividus] Add ability to print failures statistics after test execution

New property:

statistics.print-failures=false

If the property is set to true, table of failures including story, scenario, step and error message is printed, for example:

image

#1493 (Closes #1474) [vividus] Add wait step to be used for debug purposes only

New step:

When I wait `$period` for debug

The step waits for $period and always fails on purpose

#1509 [vividus-plugin-mobile-app] Add support for tvOS platform

Apple tvOS is now supported.

#1495 [vividus-plugin-mobile-app] Add support for ID locator

By.id(my-mobile-element-id)

#1507, #1526 [vividus-plugin-mobile-app] Add steps to press keys

New steps:

When I press $key key
When I press keys:$keys

The step presses iOS or Android key.

#1478 (Closes #1457) [vividus plugin-visual] Allow to configure visual diff failure threshold

New property:

web.visual.acceptable-diff-percentage=0

#1524 (Closes #1370) [vividus-plugin-aws-dynamodb] Implement cross-account access via roles

Cross-account access is achieved by switching roles. Use the following property to specify the Amazon Resource Name (ARN) of the role to assume:

aws.dynamodb.role-arn=

The property is empty by default: no role is assumed.

Fixed

#1512 (Fixes #1477) Fix generation of JSON results for scenarios with comments and pending steps

#1498 [vividus-plugin-rest-api] Skip JSON sub-steps if no element is found and rule matches

Now the step executing sub-steps for each found JSON element passes if the comparison rule matches and the elements number is 0.

#1486 (Closes #1454) Polish JavaDocs for comparison rule parameter

Promoted features

Promoted features are features that were incubating in previous versions of Vividus but are now supported and subject to backwards compatibility.

AWS Lambda plugin

AWS Lambda plugin vividus-plugin-aws-lambda is promoted to stable.

0.3.2 - 2020-03-09

11 Mar 11:48
release-0.3.2
1f4a65b
Compare
Choose a tag to compare

Added

#1434 (Closes #1402) [vividus-plugin-websocket] Add plugin to work with WebSockets (Incubating)

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

When I connect to `$webSocketConnectionKey` websocket
When I send text message `$message` over `$webSocketConnectionKey` websocket
When I wait with `$timeout` timeout until count of text messages received over `$webSocketConnectionKey` websocket is $comparisonRule `$expectedCount`
When I drain text messages received over `$webSocketConnectionKey` websocket to $scopes variable `$variableName`
When I disconnect from `$webSocketConnectionKey` websocket

#1470 (Relates #1421) [vividus] Log execution statistics

The execution statistics is logged alongside with metadata at the end of the test execution:

test-execution-statistics

#1455 (Closes #1420) [vividus] Add ability to specify multiple endpoints for report links

The default properties are kept and supported, e.g.:

system.allure.link.issue.pattern=https://vividus.dev/issues/{}
system.allure.link.requirement.pattern=https://vividus.dev/requirements/{}
system.allure.link.tms.pattern=https://vividus.dev/test-cases/{}

The dynamic configuration of additional endpoints is added, e.g.:

system.allure.link.issue.external.pattern=https://anywhere.dev/issues/{}

where external is suffix that should be used in meta:

Meta:
    @issueId.external EXT-1

Deprecated

[vividus-plugin-web-app] Deprecate excessive link steps

Deprecated step Replacement
When I hover a mouse over a link with the URL '$URL' When I hover mouse over element located `By.linkUrl(<URL>)`
When I hover a mouse over a link with the text '$text' When I hover mouse over element located `By.linkText(<text>)`
When I click on a link with the CSS selector '$cssSelector' When I click on element located `By.cssSelector(<cssSelector>)`
When I click on a link with the URL '$URL' When I click on element located `By.linkUrl(<URL>)`
When I click on a link with the text '$text' When I click on element located `By.linkText(<text>)`
When I click on a link with the URL containing '$URLpart' When I click on element located `By.linkUrlPart(<URLpart>)`
When I click on a link with the URL containing '$URLpart' and the text '$text' When I click on element located `By.linkText(<text>)->filter.linkUrlPart(<URLpart>)`
When I click on a link with the text '$text' and URL '$URL' When I click on element located `By.linkText(<text>)->filter.linkUrl(<URL>)`
When I click on an image with the tooltip '$tooltipImage' When I click on element located `By.xpath(.//a[./img[@alt='<tooltipImage>' or @title='<tooltipImage>']])`
Then a link by $locator exists Then number of elements found by `<locator>` is equal to `1`
Then a link with the text '$text' exists Then number of elements found by `By.linkText(<text>)` is equal to `1`
Then a link with the text '$text' and URL '$URL' exists Then number of elements found by `By.linkText(<text>)->filter.linkUrl(<URL>)` is equal to `1`
Then a link with the text '$text' and tooltip '$tooltip' exists Then number of elements found by `By.linkText(<text>)->filter.tooltip(<tooltip>)` is equal to `1`
Then a link with the text '$text' and URL containing '$URLpart' exists Then number of elements found by `By.linkText(<text>)->filter.linkUrlPart(<URLpart>)` is equal to `1`
Then a link with the text '$text' and URL '$URL' and tooltip '$tooltip' exists Then number of elements found by `By.linkText(<URL>)->filter.tooltip(<tooltip>).linkUrl(<URL>)` is equal to `1`
Then a link with the URL '$URL' and tooltip '$tooltip' exists Then number of elements found by `By.linkUrl(<URL>)->filter.tooltip(<tooltip>)` is equal to `1`
Then a link with the tooltip '$tooltip' exists Then number of elements found by `By.xpath(.//a[@title='<tooltip>'])` is equal to `1`
Then a [$state] link with the URL '$URL' exists Then number of elements found by `By.linkUrl(<URL>)->filter.state(<state>)` is equal to `1`
Then a [$state] link with the URL '$URL' and tooltip '$tooltip' exists Then number of elements found by `By.linkUrl(<URL>)->filter.state(<state>).tooltip(<tooltip>)` is equal to `1`
Then a [$state] link with the text '$text' exists Then number of elements found by `By.linkText(<text>)->filter.state(<state>)` is equal to `1`
Then a [$state] link with the text '$text' and URL '$URL' exists Then number of elements found by `By.linkText(<text>)->filter.state(<state>).linkUrl(<URL>)` is equal to `1`
Then a [$state] link with the text '$text' and tooltip '$tooltip' exists Then number of elements found by `By.linkText(<text>)->filter.state(<state>).tooltip(<tooltip>)` is equal to `1`
Then a [$state] link with text '$text' and URL containing '$URLpart' exists Then number of elements found by `By.linkText(<text>)->filter.state(<state>).linkUrlPart(<URLpart>)` is equal to `1`
Then a [$state] link with the text '$text' and URL '$URL' and tooltip '$tooltip' exists Then number of elements found by `By.linkText(<text>)->filter.state(<state>).linkUrl(<URL>).tooltip(<tooltip>)` is equal to `1`
Then a [$state] link with the tooltip '$tooltip' exists Then number of elements found by `By.xpath(.//a[@title='<tooltip>'])->filter.state(<state>)` is equal to `1`
Then a link with the URL '$URL' does not exist Then number of elements found by `By.linkUrl(<URL>)` is equal to `0`
Then a link with the URL '$URL' and tooltip '$tooltip' does not exist Then number of elements found by `By.linkUrl(<URL>)->filter.tooltip(<tooltip>)` is equal to `0`
Then a link with the text '$text' does not exist Then number of elements found by `By.linkText(<text>)` is equal to `0`
Then a link with the text '$text' and URL '$URL' does not exist Then number of elements found by `By.linkText(<text>)->filter.linkUrl(<URL>)` is equal to `0`
Then a link with the text '$text' and URL '$URL' and tooltip '$tooltip' does not exist Then number of elements found by `By.xpath(//a[text()='<text>' and @href='<URL>' and @title='<tooltip>'])` is equal to `0`
Then a link tag with href '$href' exists Then number of invisible elements `By.xpath(.//link[@href='<href>']):a` is equal to `1`

Fixed

#1461 (Fixes #1459) [vividus] Fix running of Lifecycle steps with sub-steps

Now Lifecycle steps with sub-steps are run successfully, e.g.:

Lif...
Read more

0.3.1 - 2021-02-23

24 Feb 07:34
release-0.3.1
0e75169
Compare
Choose a tag to compare

Added

#1451, #1452 (Closes #1422) Introduce Docker bundler (Incubating)

"Incubating" means that the functionality is currently a work-in-progress and may change in the future releases.
Docker image has been built and pushed to Docker Hub: https://hub.docker.com/r/vividus/vividus/tags.
Docker image enables easier extension of CI/CD pipelines with Vividus-based tests, the image appliance is not limited to CI/CD and it can be used to run tests locally or anywhere else, however it could be inconvenient.

Here is a short example how to run the tests with Docker:

  1. Assuming there is a test project (e.g. https://github.com/vividus-framework/vividus-starter)
  2. cd vividus-starter
  3. mkdir results - this folder is going to be used to store test logs and reports, it's not required to create a new folder, any existing folder at any location can be used as well
  4. docker run --rm --mount source="$(pwd)/src/main/resources",target=/vividus/resources,type=bind --mount source="$(pwd)/results",target=/vividus/output,type=bind vividus/vividus:0.3.1
  5. Find the test execution artifacts in results folder

NOTE: please, bear in mind Docker image includes only java runtime and doesn't contain any browsers, so if you want to run web UI tests, it's recommended to use Selenium Grid.

#1413 (Closes #1369) [vividus] Unify naming of fail-fast properties

Unified properties with their default values:

bdd.batch.fail-fast=false
bdd.batch-<batch-number>.fail-fast=false
bdd.story.fail-fast=false
bdd.scenario.fail-fast=false

#1397 (Closes #1388) [vividus] Expand lists with single element at comparison against table

The step

Then `$variable` is equal to table ignoring extra columns:$table

allows to pass $table parameter as variable containing map with single-element lists

#1412 [vividus] Allow to use spaces in rounding modes names

Example:

Then `#{round(1.5, 0, half even)}` is equal to `2`

Note the rounding mode name is written with space (previously, only snake-case was allowed: half_even)

#1405 [vividus-plugin-rest-api] Add step to validate HTTP resources

Syntax:

Then HTTP resources are valid:$resources

#1403 [vividus-plugin-db] Add ability to use variables in DB steps

Now the steps:

- When I wait for '$duration' duration retrying $retryTimes times while data from `$sqlQuery` executed against `$dbKey` is equal to data from:$table
- Then `$data` matching rows using `$keys` from `$dbKey` is equal to data from:$table

allow to pass $table parameters as variables

#1377 (Closes #1376) [vividus-xray-exporter] Add ability to link test cases to test set

New property is introduced xray-exporter.test-set-key, it defines Test Set key to which the exported test cases should be added

#1389, #1386 (Closes #1390) [vividus-xray-exporter] Reflect tests statuses in XRay Test Execution

#1429 [vividus-xray-exporter] Export test execution timings to XRay

Changed

#1432 [vividus] Print metadata in more readable way

metadata-log

#1431 [vividus] Print full path to report index.html file

report-path

Deprecated

#1413 (Closes #1369) [vividus] Deprecate old fail-fast properties

New property Replaced property Requires inversion of value
bdd.batch.fail-fast bdd.ignore-failure-in-batches yes
bdd.batch-<batch-number>.fail-fast bdd.batch-<batch-number>.ignore-failure yes
bdd.story.fail-fast bdd.configuration.reset-state-before-scenario yes
bdd.scenario.fail-fast soft-assert.fail-fast no

Removed

#1435 [vividus-extension-selenium] Remove confusing saving of 'null' to variable

The log messages like Saving a value 'null' into the scenario variable 'my-var' confused users, since the variable was not initialized actually. To avoid confusion the message is not logged anymore.

#1449 [vividus-plugin-saucelabs] Determine SauceLabs REST URL by DataCenter

The property saucelabs.rest-url is not required anymore and removed (if it's used in test projects, it will be ignored). Now SauceLabs REST URL is determined by SauceLabs Data Center (the corresponding property is saucelabs.data-center)

Fixed

#1419 (Closes #805) [vividus] Fix resolution of ExamplesTable rows in sub-steps

#1428 (Fixes #1362) Do not expand content of composite steps in XRay

Only top-level composite steps (excluding all composed steps) are imported to XRay

#1438 [vividus-extension-selenium] Restore the ability to define proxy-properties at root level: /src/main/resources/properties

#1447 Restore the ability to use custom password for properties encryption

0.3.0 - 2021-01-22

22 Jan 10:04
release-0.3.0
0cb0202
Compare
Choose a tag to compare

Added

#1284 Add ability to use several Vividus suites

New property:

configuration.suites

The suites are separated by comma ,. The suites are loaded one by one starting from the last one in the sequence, in other words, the values of the properties defined in the first suite will take precedence over the values of the same properties defined in all subsequent suites.
Example:

configuration.suites=suite1,suite2

The suite suite2 is loaded first, then the suite suite1 is loaded and overrides the values of the conflicting properties from suite1. All properties are merged into a single collection.

#1351 [vividus] Add Vividus expression: toBase64Gzip

The expression compress the input string to GZip and encodes the compressed bytes to Base64 format:
#{toBase64Gzip(vividus)} -> H4sIAAAAAAAAACvLLMtMKS0GANIHCdkHAAAA

#1352 [vividus] Support both lower camel case and lower hyphen case for dynamic variables names

Now it's allowed to refer dynamic variables in any convenient case, e.g. ${response-code} and ${responseCode} will return the same result.

#1361 (Closes #994) [vividus-plugin-web-app] Publish source code on failure

The source code of the search context is published as report attachment in case of failure.
The feature is enabled by default and can be turned off via property: ui.publish-source-on-failure=false

#1335, #1348 [vividus-plugin-mobile-app] Add dynamic variable for clipboard text

Syntax:

${clipboard-text}

#1277 [vividus-plugin-saucelabs] Publish SauceLabs session URL to report

sl-url

#1286 [vividus-plugin-saucelabs], [vividus-plugin-browserstack] Automatically turn off test cloud profile for web applications if selenium grid is disabled

If user specifies Vividus test cloud profile (browserstack/web or saucelabs/web) and sets selenium.grid.enabled=false in the properties at the same time, it's considered that test cloud is not used and it's turned off automatically (test cloud specific steps are not available(marked as pending), the tests are run locally)

#1292 (Closes #1179 ) [vividus-plugin-lambdatest] Introduce LambdaTest plugin

New profile: lambdatest/web

#1329 (Closes #679) [vividus-plugin-browserstack], [vividus-plugin-lambdatest] [vividus-plugin-saucelabs] Update cloud test status according to the Vividus test result

The results of the Vividus tests are reflected in the corresponding:

  • BrowserStack sessions
  • LambdaTest builds
  • SauceLabs tests/jobs

#1333 (Closes #1028) [vividus-excel-plugin] Add step creating temporary Excel file

Syntax

When I create temporary excel file with content:$content and put path to $scopes variable `$variableName`

#1350 (Closes #1313, #1315) [vividus-plugin-aws-s3] Add ability to collect S3 objects keys

Step syntax:

When I collect objects keys filtered by:$filters in S3 bucket `$bucketName` and save result to $scopes variable `$variableName`

Changed

#1281 [vividus-plugin-web-app] Bump MacOS to version 10.15 and Safari to the latest version

The default version of MacOS was bumped to 10.15 (Catalina) in web/desktop/safari profile. The explicit declaration of Safari version was removed, the missing version is equal to the latest one for most of test clouds

#1279, #1309 (Fixes #945 ) [vividus-plugin-web-app] Bump iOS to 14.0 and Appium to 1.19.1 for web profiles

The version of Appium was bumped to 1.19.1 in the following profiles:

  • web/tablet
  • web/phone

The version of iOS was bumped to 14.0 in the following profiles:

  • web/tablet/ipad
  • web/phone/iphone

#751 (Closes #645) [vividus-plugin-web-app] Manage cookies via WebDriver API instead of JS

WebDriver had cookie management issues in previous versions, so Vividus used plain JS to manipulate cookies. Now it looks like all issues are fixed, so cookie management is switched back to WebDriver API.

#1273 (Closes #1032) [vividus-plugin-web-app], [vividus-plugin-mobile-app] Do not force element visibility in step saving an attribute value

Previously the step saving an attribute value:

When I save `$attributeName` attribute value of element located `$locator` to $scopes variable `$variableName`

always changed the visibility of the searched elements to ALL (meaning both visible and invisible). This peculiarity didn't allow to specify the desired visibility in the element locator. Now the problem is fixed, users can specify own visibility (bear in mind the default value of visibility in the locator is visible)

#1247 [vividus-plugin-web-app] Convert non-generic steps changing search context to the internal composite steps

During the conversion the custom assertion messages where removed thus known issues relying on the old assertion patterns must be revised.

  • Step: When I change context to a [$state] element with the name '$name'
    Old assertion message: An element with the name '<name>'

  • Step: When I change context to an element with the attribute '$attributeType'='$attributeValue'
    Old assertion message: An element with the attribute '<attributeType>'='<attributeValue>'

  • Step: When I change context to a [$state] element with the attribute '$attributeType'='$attributeValue'
    Old assertion messages:

    • An element with the attribute '<attributeType>'='<attributeValue>'
    • The found element is <state>

New assertion message: Element to set context

Deprecated

#1284 Deprecate configuration property for single suite declaration

Deprecated property:

configuration.suite

Replacement:

configuration.suites

#1247 [vividus-plugin-web-app] Deprecate non-generic steps changing search context

Deprecated steps:

When I change context to a [$state] element with the name '$name'
When I change context to an element with the attribute '$attributeType'='$attributeValue'
When I change context to a [$state] element with the attribute '$attributeType'='$attributeValue'

Replacement:

When I change context to element located `$locator`

#1280, vividus-framework/vividus-starter#61 Deprecate environment variable BUILD_SYSTEM_ROOT -> VIVIDUS_BUILD_SYSTEM_HOME

The users having old gradlew and gradlew.bat scripts in their repositories are not affected.
The developers of Vividus and new projects created via vividus-starter will start receiving warning message in case of deprecated environment variable usage:

WARNING: BUILD_SYSTEM_ROOT environment variable is deprecated, use VIVIDUS_BUILD_SYSTEM_HOME instead

Removed

#1278 (Closes #1051) [vividus] Remove default configuration for batch-1

The default configuration for batch-1:

 bdd.story-loader.batch-1.resource-location=story 
 bdd.story-loader.batch-1.resource-include-patterns=**/*.story 
 bdd.story-loader.batch-1.resource-exclude-patterns= 
 bdd.batch-1.threads=1 

was removed. Now users must always configure the batches in their test projects.
Reasons:

  • the test projects may have different structures which are not always matched to the default configuration
  • no ability to run non-first batch easily: users must override the first batch with exclude-all option to run the next batches

#1300 [vividus] Remove deprecated property: configuration.profile

New property:

configuration.profiles

The profiles are separated by comma ,. The profiles are loaded one by one starting from the last one in the sequence, in other words, the values of the properties defined in the first profile will take precedence over the values of the same properties defined in all next profiles.
Example:

configuration.profiles=browserstack/web,web/desktop/chrome

The profile web/desktop/chrome is loaded first, then the profile browserstack/web is loaded and overrides the values of the conflicting properties from web/desktop/chrome. All properties are merged into a single collection.

#1302 [vividus-allure-adaptor] Remove support of deprecated @testTier meta

Meta @testTier deprecated in 0.2.3 is removed in favor of new meta @severity to keep consistency in the reporting. The acceptable range of values is left unchanged: 1..5.

#1353 [vividus] Remove deprecated expression: #{encodeUrl(..)}

#{encodeUrl(..)} expression (deprecated in 0.2.7) is removed, use the set of #{encodeUri<Part>(..)} expressions instead.
${encodeUri<Part>(..)} is a family of expressions that encode specific URI components (e.g. path, query) by percent encoding illegal characters, which includes non-US-ASCII characters, and also characters that are otherwise illegal within the given URI component type, as defined in RFC 3986:

  • #{encodeUriUserInfo($userInfo)}
  • #{encodeUriHost($host)}
  • #{encodeUriPath($path)}
  • #{encodeUriPathSegment($segment)}
  • #{encodeUriQuery($query)}
  • #{encodeUriQueryParameter($queryParameter)}
  • #{encodeUriFragment($fragment)}

#1269 (Closes #1077) [vividus-plugin-web-app] Remove Android 6 and 7 profiles

Android 6 & 7 were released a quite ago and are not supported with security fixes now. So all Android 6 & 7 profiles are removed:

  • web/phone/android/v6_0
  • web/phone/android/v6_0/browser
  • web/phone/android/v6_0/browser/landscape
  • web/phone/android/v6_0/browser/portrait
  • web/phone/android/v7_0
  • web/phone/android/v7_0/chrome
  • web/phone/android/v7_0/chrome/landscape
  • web/phone/android/v7_0/chrome/portrait

No version-ba...

Read more

0.2.14 - 2020-12-24

24 Dec 14:06
release-0.2.14
78826cd
Compare
Choose a tag to compare

Added

#1268 (Closes #1235) [vividus] Add generic while-like step with iteration delays

Syntax:

When I execute steps with delay `$delay` at most $max times while variable variable `$variableName` is $comparisonRule `$expectedValue`:$stepsToExecute

#1266 (Closes #1236) [vividus-plugin-web-app] Add step to stop page loading

Syntax:

When I stop page loading

Changed

#1266 Switch to a new window/tab automatically while opening new page

Now step

When I open URL `$URL` in new window

switches to new window automatically (previously it was required to use steps like When I switch to a new window)

Fixed

#1266 (Fixes #1154) [vividus-plugin-web-app] Favor page load timeout while opening a page in new tab

#1267 [vividus-plugin-mobile-app] Adjust vertical element position after swiping to it

#1270 [vividus-plugin-browserstack] Make retrieval of BrowserStack session URL fail-safe

0.2.13 - 2020-12-21

21 Dec 15:42
release-0.2.13
161ca1e
Compare
Choose a tag to compare

Added

#1251 (Closes #1204) Add plugin for Amazon Kinesis (incubating)

"Incubating" means that the plugin is currently a work-in-progress and may change in the future releases.
New steps:

When I put record `$data` with partition key `$partitionKey` to Kinesis stream `$streamName`
When I start consuming records from Kinesis stream `$streamName`
When I drain consumed Kinesis records to $scopes variable `$variableName`

#1219 [vividus-plugin-datetime] Support timezone in toEpochSecond expression

Now the timezone is properly handled by toEpochSecond expression, e.g.:
#{toEpochSecond(2020-12-11T18:43:05+05:30)} -> 1607692385

#1244 [vividus-extension-selenium] Add case-insensitive sorting order options for step checking sorting

The full list of the supported options:

  • ascending
  • descending
  • case-insensitive ascending
  • case-insensitive descending

#1238 [vividus-plugin-mobile-app] Improve element visibility check for iOS native apps

The value of the attribute visible is taken into account: if true, element is considered visible

#1148 [vividus-plugin-browserstack] Add step to save network log to JSON context

Syntax:

When I save BrowserStack network logs to JSON context

#1216, #1249, #1263, #1265 [vividus-plugin-browserstack] Publish BrowserStack session link to Allure report

bs-url

#1240 (Closes #1210) [vividus-plugin-aws-s3] Add step to set S3 object canned ACL

Syntax:

When I set ACL `$cannedAcl` for object with key `$objectKey` from S3 bucket `$bucketName`

Fixed

#1254 (Fixes #1252) [vividus] Fix variables resolution for the values with preceding }

#1237 (Fixes #1192) [vividus-plugin-web-app] Do not enable acceptInsecureCerts capability for Safari and IE

Safari and IE do not support acceptInsecureCerts=true capability, now it's considered when the capability is automatically applied if the proxy is used.

#1245 [vividus-plugin-web-app] Favor W3C browserVersion over JSON Wire version

The capability name is fixed for Edge, IE and Safari

#1264 (Fixes #1248) [vividus-plugin-web-app] Allow duplicate URL query and form data parameters

HTTP specification doesn't forbid usage of duplicate names in URL query and form data.