Releases: vividus-framework/vividus
0.3.7 - 2021-07-05
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
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 ofWCAG2A
,WCAG2AA
,WCAG2AAA
,Section 508
level
- the violation level used to check, one ofERROR
- only errors will be validatedWARNING
- error and warning will be validatedNOTICE
- all the levels will be validated
locators
- the comma-separeted locators of elements to verifyelementsToIgnore
- the comma-separeted locators of elements to ignoreviolationsToIgnore
- the violations codes which should be ignoredviolationsToCheck
- 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
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
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
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:
#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
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:
#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...
0.3.1 - 2021-02-23
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:
- Assuming there is a test project (e.g. https://github.com/vividus-framework/vividus-starter)
cd vividus-starter
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 welldocker 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
- 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
#1431 [vividus] Print full path to report index.html
file
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
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
#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...
0.2.14 - 2020-12-24
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
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
#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.