All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
But we group the changes as follows:
- Breaking Changes when a change requires manual activity at update.
- Bug Fixes when we fix broken functionality.
- New Features for added functionality.
- Improvements for other changed parts.
[TOC]
- Update Selenium version to > 4.0, this cause that you need also to update your Selenium version.
- AutocheckingRecheckDriver now only calls
Recheck#cap()
if browser is closed.
- Update dependencies to fix bugs and security issues.
- Since 01.12.2020 this project is owned and developed by UBS Hainer GmbH.
- Fix unchecked
ClassCastExceptions
when using theActions
-API with theAutocheckingDriver
. - Fix a bug with which, if the element is checked in isolation, some attributes can escape the scope and not be checked.
- AutocheckingRecheckDriver
driver.switchTo().activeElement().*
wasn't performing automatic checks.
- Calling
driver.switchTo().window( name )
will now perform a check when using aAutocheckingRecheckDriver
. - Add Option to delay autochecking with AutocheckingRecheckDriver
- AutocheckingRecheckDriver now allows manual checks:
driver.check( final String action )
- Upgrade to recheck version 1.12.0
- Always override the system metadata (i.e. on "architecture"), so that we do not end up with mixed info.
- Since
retestId
is now created deterministically, we can reference it before we even have a Golden Master. So if you know what theretestId
will gona be (e.g. your element has a specific text, HTML ID or you have your ownRetestIdProvider
), you can already use it in the test.
- Add
covered=false
as default attribute to reduce noise. - Add
border-image-outset=0
as default
- Rename self-introduced property
tab-index
totabindex
, which is W3C standard. - Add self-introduced property
covered
. - Add
autofocus
as attribute (needs special handling).
RecheckWebOptionsBuilder
now overrides all parent methods to return an instance ofRecheckWebOptionsBuilder
. Before that, using methods from the parent would effectively shadow methods fromRecheckWebOptionsBuilder
.
- Introduce a
skipCheck()
method onRecheckDriver
,AutocheckingRecheckDriver
, andUnbreakableDriver
, which is an alias forgetWrappedDriver()
, making it possible signal a clearer intent when writing tests.
- Keep the order of the HTML elements preserved in the underlying result (internal change), which makes a couple things easier.
- Change how covered elements are detected in order to handle rounded buttons
- Upgrade to recheck version 1.10.2
- Upgrade to recheck version 1.10.1
- Fix method
RecheckWebOptionsBuilder#checkNamingStrategy( AutocheckingCheckNamingStrategy )
was changed toprotected
. It is nowpublic
again.
- Add
shoot(WebDriver, WebElement)
in interfaceScreenshotProvider
to create screenshots forWebElement
. - Change constructor visibility of
RecheckWebOptions
andRecheckWebOptions$Builder
frompublic
toprotected
. Please use the corresponding builder accordingly.
- Fix that
NoScreenshot
orRecheckWebOptions#disableScreenshots()
is not applied to web elements. - Fix that
de.retest.recheck.web.screenshot.provider
fromrecheck.ignore
is ignored whenRecheckWebOptions
are used. - Fix that passing an element into
RecheckWebImpl
from anUnbreakableDriver
throws an error. - Fix that
viewportOnly
points toViewportOnlyMinimalScreenshot
and adapt the default accordingly (viewportOnlyMinimal
). - Fix that
ActionbasedCheckNamingStrategy
could potentially throw an error.
- Implement #389
- All CSS selectors using attribute syntax are supported.
- The pseudo class selectors: checked, disabled, and read-only are supported.
- Fix that cascading frames inside of frames are not analyzed. Now depth doesn't matter...
- Provide additional metadata: current URL
- Save the warnings identified by the
UnbreakableDriver
to the report to allow for healing of the test code.
- An exception is now thrown if explicit
Recheck#check
is called with an implicitRecheckDriver
. This kind of mixing is not expected and therefore now prevented as it produced unexpected behavior due to both checks trying to find and create a Golden Master. - Improve the breaking messages from a
UnbreakableDriver
to include more information like the line number. - Add short cuts for screenshot enabling/disabling via the
RecheckWebOptions
.
- (Re)Established IE11 compatibility.
- As recheck gathers metadata, recheck-web will provide additional metadata:
- Browser name and version.
- Driver width and height.
- Operating system and version if specified in the driver.
AutocheckingRecheckDriver
and thus theRecheckDriver
now implement theRecheckLifecycle
, meaning that they can be used with the JUnit extensions.- Big screenshots create a lot of overhead in storing, transferring and processing. Since we need screenshots only for the user, we reduce that overhead by specifying a max width in pixel, to which the screenshot is resized.
- The default of how screenshots are created has changed from full page to viewport only. These two options are now available to set globally via properties and per test individually via
RecheckWebOptions
.
- Screenshot creation can now be configured via the
RecheckOptions
or globally viade.retest.recheck.web.screenshot.provider
.
- Fix
StackOverflowError
if aWrapsElement
(e.g.@FindBy
) is checked that throws an exception. - Fix
NullPointerException
if the checkedWebElement
is not visible.
- Option to skip checks with
AutocheckingRecheckDriver
.
private AutocheckingRecheckDriver driver;
@Test
public void loginTest() throws Exception {
driver.findElement( By.id( "username" ) ).skipCheck().sendKeys( "myuser" );
driver.findElement( By.id( "password" ) ).skipCheck().sendKeys( "1234" );
driver.findElement( By.id( "login-from" ) ).submit();
}
- Fix #355 when an exception is thrown in JavaScript if the element has no parent.
- Check now also individual
WebElement
s, making recheck a "Jest for Java". - Handle iFrames without id correctly.
- Autocheck also on actions on
Navigate
. - Raise no exception of screenshot creation fails.
- Extend the
RecheckOptions
correctly withRecheckWebOptions
.
Changes not tracked before...