Releases: giulong/spectrum
Release list
Version 1.30.x
Technical release - Upgrade to Jackson 3
This is mainly an internal refactor, migrating from Jackson 2 to Jackson 3. Details can be found in Jackson 3 Migration Guide.
What's Changed
- build(deps): bump io.appium:java-client from 10.1.0 to 10.1.1 by @dependabot[bot] in #573
- build(deps): bump org.apache.maven:maven-model from 3.9.14 to 3.9.15 by @dependabot[bot] in #572
- build(deps): bump com.puppycrawl.tools:checkstyle from 13.4.0 to 13.4.1 by @dependabot[bot] in #574
- build(deps): bump org.projectlombok:lombok from 1.18.44 to 1.18.46 by @dependabot[bot] in #575
- build(deps): bump com.slack.api:slack-api-client from 1.48.0 to 1.48.1 by @dependabot[bot] in #576
- build(deps): bump dependency.jackson.version from 3.1.2 to 3.1.3 by @dependabot[bot] in #577
- build(deps): bump com.puppycrawl.tools:checkstyle from 13.4.1 to 13.4.2 by @dependabot[bot] in #578
- Release/v1.30.0 by @giulong in #579
Full Changelog: v1.29.7...v1.30.0
Version 1.29.x
Supporting ElementLocatorFactory in page initialising
Since the introduction of the auto-wait capability, an instance of AjaxElementLocatorFactory was used internally. Thanks to @pratiktiwari13 who implemented feature #154, it's now possible to override it with the DefaultElementLocatorFactory with:
drivers:
locatorFactory:
default: { }It's also possible to override the default timeout of the AjaxElementLocatorFactory like this:
drivers:
locatorFactory:
ajax:
timeout: 30What's Changed
- build(deps): bump com.puppycrawl.tools:checkstyle from 12.3.0 to 13.0.0 by @dependabot[bot] in #515
- build(deps): bump junit.version from 6.0.1 to 6.0.2 by @dependabot[bot] in #519
- build(deps): bump org.sonatype.central:central-publishing-maven-plugin from 0.9.0 to 0.10.0 by @dependabot[bot] in #518
- build(deps): bump ch.qos.logback:logback-classic from 1.5.23 to 1.5.24 by @dependabot[bot] in #517
- Release/v1.28.1 by @giulong in #520
- build(deps): bump ch.qos.logback:logback-classic from 1.5.24 to 1.5.25 by @dependabot[bot] in #524
- build(deps): bump jackson.version from 2.20.1 to 2.21.0 by @dependabot[bot] in #523
- Feature/154 elementlocator by @pratiktiwari13 in #521
- build(deps): bump com.diffplug.spotless:spotless-maven-plugin from 3.1.0 to 3.2.0 by @dependabot[bot] in #526
- build(deps): bump ch.qos.logback:logback-classic from 1.5.25 to 1.5.26 by @dependabot[bot] in #525
- Release/v1.29.0 by @giulong in #527
New Contributors
- @pratiktiwari13 made their first contribution in #521
Full Changelog: v1.28.0...v1.29.0
Version 1.28.x
Visual Regression Testing
Introducing Visual Regression Testing capability: Spectrum will compare visual snapshots of the AUT to identify regressions. This is done in a two-steps process:
- During the first run, Spectrum takes screenshots that act as snapshot references.
- During the subsequent runs, Spectrum takes screenshots in the same moments, and compare them to the snapshots.
If one or more screenshots don’t match with their snapshot counterpart, a VisualRegressionException is thrown. You can configure the html report to show a diff like the one below to highlight the regression (assuming the first checkbox shouldn't be checked).
Check the full docs here.
Version 1.27.x
External Interpolation
Beside the regular in-place interpolation, it's now possible to inject values from environment variables and system properties.
For instance, to inject env vars, you need to add this node to your base configuration.yaml:
config:
interpolators:
environment:
delimiter: _
transformCase: upperWith this, all the configuration keys are searched via their json path, with keys delimited by _ and uppercase. For example, instead of hardcoding this key in the yaml:
drivers:
waits:
downloadTimeout: 5with the above configuration you can directly provide its value with the SPECTRUM_DRIVERS_WAITS_DOWNLOADTIMEOUT env var.
Check the dedicated section in the docs for all the available interpolators and their keys.
What's Changed
- build(deps): bump selenium.version from 4.38.0 to 4.39.0 by @dependabot[bot] in #502
- Feature/external interpolation by @giulong in #503
- Release/v1.27.0 by @giulong in #504
Full Changelog: v1.26.4...v1.27.0
Version 1.26.x
Upgrade to JUnit 6
According to the JUnit 6 release notes, no significant breaking changes were introduced. As stated in the migration guide:
Migrating from JUnit 5.x.y to 6.0.0 should be much easier than migrating from 4.x to 5.x. Only APIs that have been deprecated for over two years have been removed. All other APIs continue to be supported, making version 6.0.0 a drop-in replacement in most cases.
Version 1.25.x
Html Reports always inlined
Before v1.25.0, the Extent html report relied on external resources such as images and videos taken during the execution. Optionally, it was possible to configure Spectrum to produce a copy with those resources inlined.
Starting with v1.25.0, the Extent html report is always inlined. Contextually, these two configuration keys were dropped:
extent.inlineextent.inlineReportFolder
If you had them in your configuration*.yaml files, just delete them.
Version 1.23.x
Execution Video synced with Test Steps
The execution video in the html report is now synced with test steps: when you play it, the step currently displayed in the video is highlighted. You can also click on the steps and the video is sought to the corresponding point, as you can see in the video below:
frame-synced-with-video.mov
Check the video docs for all the details.
Version 1.22.x
Auto-Waiting
Spectrum now auto-waits before interacting with web elements, in order to reduce the tests' flakiness.
It's enabled by default and auto-waits up to 30 seconds:
drivers:
waits:
auto:
enabled: true # Change this if you want to disable it
timeout: 30 # Change this if you want to tweak the timeout.Check the Auto-waiting docs section for all the details.
Version 1.21.x
Datafaker
As requested in feature #313, an instance of datafaker is now available in all tests and pages. You can use it to generate fake data like this:
@Test
void test() {
String name = faker.name().fullName(); // Miss Samanta Schmidt
String number = faker.numerify("##");
String anotherNumber = faker.expression("#{numerify '##'}");
...
}Check all the details on how to configure it in the docs.
Version 1.20.x
Highlight WebElements
It's now possible to highlight the web elements your test interacts with. This might be helpful to visually debug the execution. You just need to configure this:
application:
highlight: { }and a 3px red border will be applied to web elements targeted by the test, as the username input field in this screenshot:
The highlight is fully customisable. Check the docs for all the details.