Release History

VersionDateDescription
1.5 2007-12-02
1.4 2007-05-15
1.3 2007-01-20
1.2 2006-11-19
1.1 2006-06-11
1.0 2006-04-17
0.16 2006-03-05
0.15 2005-12-29
0.14 2005-10-17
0.13 2005-09-06
0.12 2005-08-31
0.11 2005-07-27
0.10 2005-06-18
0.9 2005-05-21
0.8 2005-04-15
0.7 2005-03-06
0.6 2004-12-25

Get the RSS feed of the last changes

Release 1.5 - 2007-12-02

TypeChangesBy
fix Added 'MouseEvent.MOUSE_CLICKED' to the list of dispatched events for simulating a mouse click on a component. ppratmarty
fix Applied the retry strategy when selecting a tab in GroupTab. It avoids accessing to a component in the selected tab whereas it is not shown yet - for instance popup-menu. sroussea
fix Updated Empty implementation for WindowPeer for JDK 1.5.0_11 sroussea

Release 1.4 - 2007-05-15

TypeChangesBy
add Added Table.contentEquals(String[ ] , Object[ ] [ ] ) and Table.rowEquals(int, Object[ ] ) and to check only a set of columns in a table. This is useful for making tests less dependent on the whole contents of a given table, or the order of the columns. rmedina
add Added ComboBox.contains(String) and ComboBox.contains(String[ ] ) to check only part of a ComboBox content. rmedina
add Added ListBox.contains(String) and ListBox.contains(String[ ] ) to check only part of a ListBox content. rmedina
fix Handle cell selection when using Table.contentEquals(String[ ] ). Fixes 62. sroussea
fix Enhanced 'pressKey' management on TextBox components (caret is better handled). scrego
add Added Table.getContentAt(row,column,converter) and ModelTableCellValueConverter to be used in cases where a direct access to the underlying model is handy. rmedina

Release 1.3 - 2007-01-20

TypeChangesBy
fix Made the UISpecToolkit initialization work with Maven 2 (the Surefire plugin was preventing UISpec from setting UISpecToolkit as the Swing toolkit singleton) scrego
add Added the MainClassAdapter class to ease the implementation of functional tests. rmedina
fix Made our Toolkit implementation return dummy Graphics2D objects instead of just Graphics objects, to prevent ClassCastExceptions in components where paint() is overriden and expects to be provided a Graphics2D. rmedina

Release 1.2 - 2006-11-19

TypeChangesBy
fix TextBox.clickOnHyperLink() service reattempts to find the hyperlink when the page has not yet been loaded. pratmarty
fix TextBox.clickOnHyperLink() service attempts to fix malformed URL by prepending 'file:' to href. UISpecAssert.checkAssertion() waits for AWT pending events before proceeding. pratmarty
fix Manage HTML attributes in a-href for TextBox.clickOnHyperlink(String anchor). Fixes 60. sroussea
add Done some clean-up in Mouse class especially to offer methods to Swing components (not only UIComponents). scrego
fix TextBox.textEquals() with empty string is now properly working. ppratmarty
fix The multi-selection methods in ListBox and Table now set the "value is adjusting" flag on the selection model during the selection, so that the corresponding listeners can wait for the whole selection to be finished. rmedina

Release 1.1 - 2006-06-11

TypeChangesBy
add Added support for JSlider components. Fixes 1. ppratmarty
add Provided support for JSpinner components with DateSpinner, ListSpinner and NumberSpinner. Fixes 3. sroussea
add Provided support for JPasswordField components. Fixes 2. rmedina
add Provided a means for customizing the ComboBox renderer analysis. Fixes 9. scrego
add Improved the reporting of unexpected failures in UISpecAssert, by throwing a RuntimeException chained with the initial Exception. rmedina
add Provided better failure report for Table.Header.contentEquals(String[ ] ). Changed Table.hasNoHeader() to Table.hasHeader(). sroussea
add Added Panel.containsLabel. rmedina

Release 1.0 - 2006-04-17

TypeChangesBy
remove Removed all deprecated methods. rmedina
add Added Panel.containsXXX() methods, to be used with the UISpecTestCase/UISpecAssert assertXxx and waitUntil methods. ppratmarty
add Added Javadoc comments in many places. rmedina
update PopupMenuInterceptor.run() now waits for the popup to be shown, up to a time limit set by UISpec4J.setWindowInterceptionTimeLimit(). rmedina
fix Made Table.getContentAt() use the table's TableCellValueConverter. rmedina
fix Made UISpecTestCase/UISpecAssert.waitUntilEnabled(message, assertion, timeout) use the supplied message when an exception other than AssertionFailedError is thrown by the Assertion object. rmedina
fix Bugfix: UISpec4J.setAssertionTimeLimit had no effect. rmedina
update Renamed UISpec4J.setWaitTimeLimit into setWindowInterceptionTimeLimit. rmedina

Release 0.16 - 2006-03-05

TypeChangesBy
update Changed all "assertXxx" methods into "xxx" methods that return Assertion objects to be used with UISpecAssert.assertTrue(). Please refer to the Using assertionspage for further details on the new assertions mechanism. The main motivation behind this evolution is that the UISpecAssert.assertTrue() method now performs automatic retries when the first assertion check fails, so that the tests are less dependent on slight delays in multithreaded applications. Please note that the compatibility with previous versions of the API is maintained temporarily - the "assertXxx" methods have been deprecated, they will be removed in the next release. rmedina, ppratmarty, scrego
add Made 'Table.toString()' dump the content of the table. ppratmarty
add Added ProgressBar.isCompleted() to check the completion of the progress bar. ppratmarty,sroussea
add Added in FileChooseHandler.select(String[ ] fileNames) to select files using their names and FileChooserHandler.cancelSelection() to choose the Cancel button. sroussea
fix Set the 'awt.toolkit' property with a default one when it is not set (best-effort) depending on Operating Systems. Try first to set the property with the default Windows one 'sun.awt.windows.WToolkit', then with the defaul t SUN one 'sun.awt.motif.MToolkit'. If none works, a AWTError will be thrown. ppratmarty,sroussea
update Moved the default timeout value from WindowInterceptor to UISpec4J - this is now a global parameter used in both the assertion and window interception mechanisms. As a consequence, the WindowInterceptor.setWaitWindowTimeLimit/getWaitTimeLimit methods are not available anymore. rmedina
update Changed the default timeout value to 10s (was 30s) rmedina
add Added a new Desktop component for managing Multiple-Document Interface (MDI) desktops implemented as JDesktopPane/JInternalFrame components. rmedina
add Added WindowInterceptor.getModelDialog() to intercept a modal dialog by running a trigger and returning the displayed window. This is for specific usages only, modal dialogs should rather be intercepted using WindowInterceptor.init(Trigger). ppratmarty,sroussea
fix Made ListBox work with any ListCellRenderer implementation - it is now independent from the DefaultListCellRenderer class. rmedina

Release 0.15 - 2005-12-29

TypeChangesBy
add Introduced UISpec4J.init() as a main entry point for initializing the library. This method replaces UISpecToolkit.setUp(), and is now responsible for both initializing the toolkit and setting up our own look & feel classes. rmedina
fix Removed the retrieval of a MSWindows-specific toolkit in UISpecToolkit that raised problems in other Operating Systems. Please note that the 'awt.toolkit' property must not be used anymore for setting up the UISpecToolkit (only UISpec4J.init() is su pported now). scrego
add Introduced the ComponentMatcher interface and added a number of methods in Panel to let users specify their own component searching policies ppratmarty
add Provided predefined component matchers in the ComponentMatchers utility class: name-based matchers (identity/substring/regexp on inner/displayed name), and collection matchers (intersection, union and negation) ppratmarty
update Renamed Panel.getComponent() into getUIComponent() ppratmarty
add Improved the message displayed when Panel.getXxx() throws ComponentNotFoundException - the message now displays a list of available names rmedina
remove Removed the "swingClass" argument in the ExtensionGenerator.main() command line parameters rmedina
add Made major evolutions in WindowInterceptor to improve the support of modal dialogs, and in particular sequences of modal dialogs. Please check the WindowInterceptor Javadoc and the "Intercepting windows" reference documentation for further details on the new signatures. rmedina
update Moved all interception-related classes into an "org.uispec4j.interception" package. rmedina
update Transformed FileChooserInterceptor into FileChooserHandler, to fit into the new WindowInterceptor approach. rmedina
remove Removed MenuItem.clickAndIntercept - the interception is now managed only with WindowInterceptor rmedina
add Removed the MessageBoxInterceptor class, which was too dependent on the prod uction code using the JOptionPane class. This class is replaced with a more generic WindowHandler implementation, named BasicHandler - please refer to the Javadoc for further details. rmedina
add Added Table.Header.triggerClick()/triggerRightClick() rmedina
add Added TextBox.triggerClickOnHyperlink() Fixes 37. rmedina
add Added a Trigger.DO_NOTHING constant, representing a "no op" trigger rmedina
add Added Window.getTitle() rmedina
fix Fixed problem with ColorUtils: "white" and "black" are not considered similar to "gray" anymore, by relying more upon the brightness when computing the HSB distance. ppratmarty
fix Display the contents of the menu when MenuItem.getSubMenu() fails rmedina
update Updated the reference documentation and the javadoc rmedina
add Added Clover code coverage report. rmedina

Release 0.14 - 2005-10-17

TypeChangesBy
fix Improved the interception of windows in a multi-threaded environment. scrego, rmedina

Release 0.13 - 2005-09-06

TypeChangesBy
fix Fixed an infinite loop error in Window.getSubDescription() rmedina

Release 0.12 - 2005-08-31

TypeChangesBy
add Added UIspecTestCase.setAdapter() and deprecated UISpecTestCase(UISpecAdapter adapter) Fixes 41. sroussea,ppratmarty,rmedina
add Modified the Clipboard class to make its methods static (got rid of getInstance()) and added a putText() method which allows the MIME type to be defined rmedina
remove Removed the Clipboard.contentEquals() method (to be reintroduced later with a proper handling of MIME types) rmedina
fix Fixed a cyclic initialization error that occured in certain situations when the extension mechanism was used scrego, rmedina
add Added TextBox.assertTextContains(String[ ] ) for checking that a number of items are displayed in a given order scrego, rmedina
add Improved the interception of windows in a multi-threaded environment. scrego, rmedina
fix Made UISpec4J work with JDK 5.0. Please note however that the official platform remains JDK 1.4.2 rmedina

Release 0.11 - 2005-07-27

TypeChangesBy
add Modified documentation about extension generator mechanism scrego, sroussea
add Added AbstractButton.waitUntilEnabled() rmedina
add The window description is now displayed when an "Unexpected window shown" exception is raised by the interception mechanism rmedina
add Added MenuItem.clickAndIntercept to avoid the imbrication of WindowInterceptor and PopupMenuInterceptor (see Javadoc) rmedina
add Added Tree.triggerClick(), triggerRightClick() and triggerRightClickInSelection() rmedina
add Added Panel.findComponents() and Panel.findComponent() methods. Fixes 28. ppratmarty, rmedina, scrego
fix Fixed deadlock that occured when an handler tried to close a dialog during an interception (the triggers in WindowInterceptor are now run from the Swing thread). sroussea, rmedina
add The interception mechanism now catches lightweight popup menus. rmedina
add Calling MenuItem.click() when the item is a list (a JPopupMenu) raises an exception displaying the subitems that can be selected. rmedina
add Made the interception mechanism work with JDK 5.0. Please note however that the official platform remains JDK 1.4.2. rmedina

Release 0.10 - 2005-06-18

TypeChangesBy
fix Panel.getPanel() does not raise ambiguity errors when other Container objects are present in the panel - only JPanel, JInternalFrame, etc. are searched for. sroussea, rmedina
add Added Panel.getInputTextBox() and Panel.getInputTextBox(String name) to avoid ambiguity exceptions when searching for a text field placed near a simple label. Fixes 30. rmedina
fix Fixed Window.assertVisible(). sroussea, rmedina
add Added MessageBoxInterceptor.setInput for input dialogs. scrego, rmedina
fix Fixed exceptions thrown during the execution of tests when working with a frame that was intercepted after having been packed and shown. Fixes 34. rmedina
fix Fixed the color matching algorithm (using HSB color space). Now "FFC8C8" is accepted as "red". Fixes 24. gonnot

Release 0.9 - 2005-05-21

TypeChangesBy
add Added TextBox.insertText(text, position) scrego, rmedina
add Added Table.Header.getColumnNames() and Table.Header.findColumnIndex(String columnName) Fixes 29. scrego
fix Made the search strategy process all components in a container instead of stopping at a given level as soon as a result is found Fixes 27. ppratmarty
add Added Table.assertColumnEquals(int columnIndex, Object[ ] expectedColumn) to test the contents of a given table column. Fixes 25. scrego
update Use the customisation mechanism for the list box selection sroussea
add Implemented a list box analysis customisation mechanism, available with ListBox.setCellValueConverter Fixes 10. sroussea
add Updated the TYPE_NAME fields of ListBox and TextBox to reflect the class names ppratmarty,rmedina

Release 0.8 - 2005-04-15

TypeChangesBy
add Added missing getters in Panel for CheckBox, ToggleButton, RadioButton, etc. Fixes 26. rmedina
add Added table content in error message when Table.assertEmpty fails Fixes 19. sroussea
add Implemented a tree analysis customisation mechanism, available with Tree.setCellValueConverter Fixes 8. rmedina
add Added TabGroup.getSelectedTab() that returns a Panel allowing to find components easily in the selected tab. Fails if the component managed by the selected tab is not a JPanel Fixes 11. sroussea,scrego
add Add ed some XDoc pages to the documentation: Contact, Contributing and Coding Rules Fixes 18. rmedina
remove Removed the TODO page from our XDoc documentation, since we now use a better issue tracking tool. rmedina
add Added ComboBox.setText(String) for editable ComboBoxes Fixes 6. ppratmarty

Release 0.7 - 2005-03-06

TypeChangesBy
add Added two XDoc pages to the Reference section: Properties & Troubleshooting rmedina
add Added ProgressBar.assertDisplayedValueEquals() srousseau,rmedina
update Renamed RadioButton.assertSelected() into assertSelectionEquals() ppratmarty,rmedina
update Renamed CheckBox.assertSelected() into assertSelectionEquals() ppratmarty,rmedina
add Added ComboBox.assertEmpty(String displayedValue) ppratmarty,rmedina
update Renamed TabGroup.clickOnTab() into selectTab() rmedina
update Added links to documentation pages in the Javadoc rmedina
fix Panel.getTextBox: detect ambiguity between JLabel and JTextComponent ppratmarty
add API Panel.getxxx: 'throws AmbiguityException' displayed on method signatures ppratmarty
add Added ComboBox.assertEditable(boolean) ppratmarty
add Added ProgressBar.waitForCompletion(int timeout) and ProgressBar.assertIndeterminate(boolean) rmedina
update ProgressBar now checks the current val ue as a percentage of the available range, with a user-defined precision rmedina
add ListBox.select(String) uses [Identity, Substring, Regexp ] strategy to identify the item, and throws an Ambiguity exception when more than one Component were found ppratmarty
fix WindowInterceptor now waits a little before declaring that no window was shown - this is useful in cases where the window is shown from another thread rmedina,scrego,ppratmarty
add Renamed ComboBox.assertSelected(String) to ComboBox.assertSelectionEquals(String) for symetry with ListBox ppratmarty
add ComboBox.select(String) uses the strategy [Identity, Substring, Regexp ] for finding an item ppratmarty
fix Table: Support for moved columns ppratmarty
add Table.setCellValueConverter for a specific column ppratmarty
add Table extension mechanism: one can provide a custom TableCellValueConverter by default ppratmarty

Release 0.6 - 2004-12-25

TypeChangesBy
add (this change log started just after release 0.7) all