All notable changes to this project will be documented in this file.
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.
Table of Contents
- Table of Contents
- [1.3.3] (2017-05-30)
- [1.3.2] (2017-05-15)
- [1.3.1] (2017-05-13)
- [1.3.0] (2017-05-02)
- [1.2.3] (2017-04-19)
- [1.2.2] (2017-04-10)
- [1.2.1] (2017-04-03)
- [1.2.0] (2017-03-28)
- [1.1.1] (2017-03-15)
- [1.1.0] (2017-03-08)
- [1.0.0] Ham - The First One (2017-02-09)
- [0.12.0] (2017-01-30)
- [0.10.2] (2017-01-26)
- [0.10.1] (2017-01-05)
- [0.10.0] (2016-12-22)
- [0.9.0] (2016-11-17)
- Changed table headers to allow gathering of its column headers. Since additional components are found in screens with tables, they need to be accepted manually.
- Add font, background color, foreground color and enabled-status as additional criteria per component, which may lead to additional changes when running tests. However, simply accepting the changes after update should suffice.
ExecutionHook, which is more general and powerful (see New Features).
JComboBoxhas now children components which will result in additional components. Thus they need to be accepted manually.
- Fixed that, in some cases, tab-clicks were not recorded.
- Fixed recording of text modification after right click.
- Fixed that when editing a table cell the wrong component is retrieved. This should have no effect on the current action sequences.
- Fixed that the
Accept allcheckbox did not work correctly if differences was accepted from an other difference.
- Fixed color conversion with transparent colors with
alpha = 0or just blue values;
- Fixed that removing values from or adding values to a
JComboBoxresults in the wrong item being selected (was solely based on row index).
- Drag'n'Drop is now supported if executed inside the program. Drag'n'Drop from/to the outside (i.e. operating system or other programs) is not yet supported.
- Fully supported: Text components (e.g. JTextField) if the drop action modifies the
- Partially supported: JList, JTable and JTree. While the Drag'n'Drop should be recorded, there may be problems while replaying:
- The drop action might not be replayed properly. A current not working example is dragging onto a table cell that is being edited. Since the insertion between two characters of the dragged text is tied to the cursor location of the text field, the Drag'n'Drop will always insert the text at the end. This is because the Drag'n'Drop action does not update the component dropped on.
- The initial drag action is not replayed. This non critical if the object is copied.
- If one of the above is causing problems, the component in question needs a custom implementation. In this case please contact support.
- Fully supported: Text components (e.g. JTextField) if the drop action modifies the
- Components are now analyzed whether they do custom painting and, if so, the screenshots of the images is compared. Two comparison implementations are available via the
FuzzyImageDifferenceCalculator. To enable this comparison for 3rd party libraries, please use the property
de.retest.swing.paintingComponents.packagesto define packages of which painting components should the screenshot be taken off.
- Added ability to convert suites to execsuites via ant.
- Clicking on unknown components is now supported. Please note that this feature should only be used rarely since it is quite unstable to changes. If you need a component to be supported in a more stable way (because you need it often), please contact the support.
- Added a loading feature to Tests and Suites so that they can be edited directly.
- Inserted and skipped actions are now represented in the test report and shown in the GUI. However, they cannot yet be 'approved' to be permanently added to the test.
- Instead of a
TargetNotFoundHandler, we now have a more powerful
ExecutionHook, which can insert or skip arbitrary actions (not just in case of a
TargetNotFoundException). The property
de.retest.maxInsertedActions(default 5) is used to limit the number of inserted actions, in case the user config results in an endless loop.
- Removed tree selection listeners. Clicking on a tree is now only one action.
- Now using TreeTable in the GUI for creating tests, suites, converting action sequences and in the review module to visualize the structure and relation of action sequences, tests and suites.
- Add count of number of rows of tables, trees and lists if not all children are tracked in detail (i.e. if their number exceeds
- Show error message if a report cannot be loaded into ReView.
- Improved the file path to be relative to the ReTest-Workspace. This is for example used in the JFileChooser.
- The selectable values in a
JComboBoxare now analyzed properly as children. Thus removing values should now be recognized.
- Fixed an arguable bug, where a
NullPointerExceptionwas thrown, if the implementation of the
nullfor a call to
getCellEditor(int row, int column)- which according to specification it shouldn't...
- Fixed a bug, where the
de.retest.maxChildComponentsparameter was influencing the number of table rows that were counted.
- Fixed replay of rightclick for tables where the renderer / editor is not a simple component, but contains children.
- Two minor bugfixes for rare cases.
- Changed trees to allow for complex layouts. This requires all actions with trees to be recorded and converted again.
- Fixed recording of clicks on
- Fixed clicks on
JTreebeing recorded twice.
- Fixed clicks on
JCheckBoxin tables being recorded twice.
- Fixed recording of double clicks on
- It now is possible to ignore individual attributes of individual components.
- Surili now also tries to insert values from the Big List of Naughty Strings.
- Right click on tables, trees, table headers, labels and text fields can be recorded and replayed.
- Added a new option that removes the signature of all
.jarwhen ReTest launches. This is because if the application has signed
.jarits launch will take longer. To use this feature it must be toggled with
de.retest.checkAndRemoveJarSignature=true. However this causes a short delay when ReTest is started. It is recommended that this option should only be used if necessary.
- Add property to ignore threads while waiting for stabilization.
- Improved user feedback when ReTest could not find a component on a dialog (
- Increased default for
de.retest.maxChildComponentsto 1,500 child components to tackle medium-sized lists, tables, and trees.
- Better logging during update process when there're missing file permissions.
- Fixed a bug where in some special cases modal dialogs where not recognized.
- Ignore Java2D Queue Flusher active waiting thread.
- Fixed obfuscation preferences where an
- Update demo license.
DefaultUncaughtExceptionHandlerno longer keeps ReTest from terminating the SUT properly.
IllegalArgumentException: Only directories are allowed!that occurred when Surili opened a
NullPointerExceptionfor tables without table headers.
- A dialog will be shown when saving or loading files fails.
- Added menu hover to improve self explanatory of clickable content.
- Added support button for direct access to ReTest's service desk.
- HSQLDB is now supported by the
- Added property
de.retest.instrumentation.shouldInstrumentto allow to completely skip instrumentation, along with a warning if used. This is intended only for debugging purposes.
- Support invisible
java.awt.Components and provide a stub for easy extension.
- Show English descriptions for screens.
- In special situations where the
java.util.loggingframework is used, the SUT could only be started once.
deas the language in the default config, possibly making it necessary to set it, if so preferred.
- Differences on the file system are now completely ignored. As a result, actions via
JFileChoosermust be rerecorded.
- Properly mark screenshots of differences for nested windows.
- Inactive windows due to modal dialogs are now correctly ignored by the monkey.
- Fixed automatic invocation of (general and specific) suite hooks for action sequences within ReCapture.
IOExceptionthrown when proxy settings were used for local addresses.
IllegalStateExceptionif a replay result was opened where an additional window was shown in the SUT.
- Fixed a bug which shadowed child differences in a few situations. Hence, former hidden differences may be visible now.
- Various minor bug fixes.
- Now all changes of an action can be accepted at once via an "Accept all" checkbox in the table header.
- Now the (always up-to-date) documentation in the web is linked in the HTML descriptions.
- Partly English translation of the GUI (without the HTML description).
- The screen to edit actions is polished.
- Black- and whitelisting is now on the same page of the monkey wizard, making it harder to confuse them or create invalid configurations.
- Errors and warnings now occur within the startup shell, which makes it a lot easier to detect issues like invalid licenses.
- Randomly missing
Popup$HeavyWeightWindows no longer cause differences.
[1.0.0] Ham - The First One (2017-02-09)
- It is not possible anymore to apply the same changes twice to an executable suite.
- Fixed encoding, various typos, and formatting issues of the HTML description in the GUI.
- Fixed regression with ignored proxy settings.
- After applying changes to executable suites and/or ignored components, a popup shows which files are affected and reminds to commit them.
- Adding the possibility to have the monkey test UI components exclusively (whitelisting).
- Adding a screen to view the currently ignored components.
- After generating tests with Surili, the best suite is now exported as an executable suite.
- The color markings of selected components is now different for ignoring (grey), blacklisting (red) and whitelisting (green).
- In ReView, there is now a table on the level of the action that shows all differences of that action and allows to accept them right there.
- Showing report summary when initially opening a
replay.resultfile, summarizing execution time, number of suites, tests, actions, number of differences and errors and such.
- Behavior in regard to
ignored.componentsis now consistent with updating execution suites - changes to ignored components are only applied when someone presses
- Update the inline documentation on the right side.
- Add extended online documentation at https://retest.de/docs/de/.
- Several improvements in demo application.
- Changed application packaging, the complete code is now in one fat JAR. Paths to classpath and javaagent in startup scripts or build.xml must be adjusted regarding to this change.
- A lot of bug fixes in Surili module.
- Added a demo application as show case.
- Fixed automatic invocation of specific suite hooks within ReCapture.
- Fixed two different
OutOfMemoryErrorleaks, triggered if one opens too many GUI screenshot popups.
IndexOutOfBoundsExceptionif same changes were applied to same execsuite multiple times.
- Corrected displaying of error in details view (was stuffed into one line).
- Proxy settings changed, please take a look in
- For lists, tables, and trees, at most 500 child components are being recorded in order to improve overall performance and file sizes. This value can be adjusted via the property
- Fixed race condition between clean up task and (external) report creator.
IllegalStateException"No state AND no stateDifference is illegal!" in ReView.
- Huge components no longer cause differences per se.
- Fixed several corner cases regarding path differences, e.g. sometimes the wrong table cell was clicked.
- RePlay no longer allows starting multiple SUTs by accident.
- Closing a window is now recorded again.
- Fix for OSGI applications, where the bundle
de.retest.equinox.hookswas not found.
- Fixed a bug, where the folder
latestwas not cleared from XML files.
- Stabilized and secured outgoing connections, especially with proxy setups.
- Better error messages for configuration errors.
- The license file must be moved to retest workspace with name
retest.license, or specified with system property
- The classes referenced in Ant
build.xmlhave changed, please inherit from new
build.xmlin the release.
- The sut-javaagent is now placed directly in install directory with fix name
- The equinox-hooks-fragment is now placed directly in install directory with fix name
- Removed old update folders.
- Added support for combo chooser again.
- Surili now excludes submenus if the corresponding menu or menubar is excluded as well.
- Fixed bug where table cells where wrongly associated to one another.
- Fixed bug where
JFileChooserwas not recorded and replayed correctly.
- A lot of bugfixes for Surili Ant task.
- Write a live test anything protocol (TAP) after each test execution. This can be displayed within the build server.
- Made Screenshots resizable in report.
- Let Surili optionally start at the end of an ExecSuite instead of anywhere.
- Limit number of test reports via
de.retest.cleanUp.maxFolders(default 10) and/or
- Added support for editable combo box.
- Test reports are created when Surili is executed.
- Simplifyed path serialization to reduce file size.
- Made screenshots clickable in report.
- Added summary of changes in actions details view within ReView.
- Added support for disabled Tabs.