Abbot Release Changes
Release 0.11.0 (040107)
Features
- When recording drag, drop, popup, or click actions on JList, JTable,
JTree, and JTabbedPane, you get component-specific locations (value, row,
cell, etc).
- Reset locking keys (caps lock, num lock, etc) prior to running any tests.
- Support popup, select, click, drag, and drop on component substructure
(row, cell, value, etc) by using an abstract, component-specific location.
- Perform JTable, JList, and JTree actions by value in addition to
indexed location.
- Provide component-oriented keyboard methods on abbot.tester.Robot.
- Add support for java.awt.PopupMenu.
- Add support for java.awt.CheckBoxMenuItem
- Provide component lookup from an arbitrary root component.
- Component lookup/addition time reduced by up to 80%.
- Record drag/drop on 1.4 VMs. Pre-1.4 VMs do not provide sufficient
information to record drag/drop actions completely.
Bug Fixes
- Remove spin locks in ComponentTestFixture that might interfere with test
startup.
- Properly record double click when the component disappears as a result of
the click.
- Fix key modifier mask generation in AWT mode.
- Clarify exceptions thrown on failed JInternalFrame actions.
- Properly save more than 2 levels of nested scripts.
- Prevent editor status window from being too wide.
- Fix several keystroke-generation bugs in AWT mode.
- Fix several mouse event bugs in AWT mode.
Release 0.10.1 (031010)
Features
- Speed up hierarchy export significantly.
- Don't record extraneous shortcut modifier keystrokes.
Bug Fixes
- Avoid InvalidScriptException when loading Assert steps which use
ComponentReferences for custom GUI classes.
- ComponentTestFixture reports exceptions thrown on the event dispatch
thread as errors.
- Fix NPE when exporting component hierarchy.
- Fix NPE when comparing Assert values against null.
- Don't let AUT get hidden when recording starts (w32).
- Don't show status dialog if there is no obscured text.
- Don't record window movement/resize until the window is actually showing.
- Properly play back w32 drive selection in JFileChooser.
- Avoid excessive CPU usage by the component hierarchy browser.
- Make actionFocus work with Applets.
- Avoid disappearing applet nodes in hierarchy browser.
- Ensure drop ends on w32.
- Fix AWT-mode submenu selection.
- Optimize some component lookups that proved to be slow.
- Fix Color<-->String comparisons (sometimes resulted in NPE).
Release 0.10.0 (030828)
Features
- Allow running of selected steps of a script.
- Better resolution and tracking of applets (mtrumpler).
- Cache component lookup to improve recording and playback performance
(mtrumpler).
- Simplify component reference usage.
- Allow regexp pattern matching in component reference attributes.
- Add support for AWT FileDialog (avenet).
- Allow reference to system properties (ala ant, e.g. ${user.dir}).
- Preserve System.out/err across test runs.
- Provide export of entire GUI hierarchy from Costello.
Bug Fixes
- Fix drag actions to work more reliably.
- Always insert Terminate steps last in Costello.
- Allow launch step to appear anywhere in a script.
- Fix some slowness in recording (mostly due to ComponentReference creation).
- Don't record both an action and a keystroke on Enter and other similar
keystrokes which produce both an action and text input.
- Properly track a Dialog with the same name as its parent.
- Add missing attributes (vmargs) to schema.
- Use a single WindowTracker to avoid sporadic lookup failures.
- Be smarter when recording the value for a combo box selection.
- Properly handle invalid accelerators from property files.
- Properly capture ESC key when recording.
- Show confirmations on script delete/clear.
Release 0.9.1 (030711)
Features
- Add support for internal frames.
- Add new component references with alt+shift+F1.
- Capture setting of caret position in text fields.
- Preserve System property settings across test code invocations.
- Add XML validation on script load (ckoelle).
- XML schema/DTD included in docs (ckoelle).
- Preserve order of ComponentReferences in script XML (javajosh).
Bug fixes
- Ensure windows are ready for input before sending events, since isShowing
and WINDOW_OPENED/COMPONENT_SHOWN aren't sufficient indicators (this
previously sometimes required an explicit delay after waiting for a window to
show).
- Don't auto-encode commas in array argument lists.
- Don't accept directories as "new script" (OSX).
- Properly update default step descriptions when steps are edited.
- Do better error handling on editor startup (esp. invalid script errors).
- Generate accurate modifiers in AWT mode, work around 1.4.1
java.awt.Rectangle bug.
- Ensure proper class loader is used with threaded launch.
- Update to newer xerces implementation.
Release 0.9.0 (030527)
Features
- Greatly improved step editing support in the script table, including
drag/drop, multiple selections, and grouping.
- Support saving component property values for later use as ${property}
(sebastian).
- Provide detailed descriptions of action arguments when inserting actions
(extracted from javadoc).
- Provide file:line information of the source XML script on failures.
- German translations added (ckoelle).
- Record/playback frame maximize/normalize (ckoelle).
- Started a tutorial for the script editor which is actually a test script
which uses annotations.
- Record/playback for AWT Choice component.
- Expose some system timeouts as properties.
- Auto-fill the argument list with the currently selected component when
manually inserting an action or assertion.
- Store the least-derived class possible for assertions and actions.
- Add component-specific popup actions (ghmorgan).
Bug Fixes
- Automatically escape commas in individual arguments which contain commas.
- Fix many JComboBox recording bugs.
- Don't terminate AUT on script name changes.
- Fix property list filtering in editor.
- Keyboard cut in script table now works.
- Image capture fixed (mostly).
- Report first XML parse error instead of last when loading scripts
(mtrumpler).
- Enable menu selections when a parent menu is already opened.
- Fix some synchronization bugs with multiple simultaneous event dispatch
threads.
- HierarchyEvents are no longer used in recording, which should avoid NPEs
on pre 1.4 VMs.
- Catch null-parented dialogs (from applets) (mtrumpler).
- Fix some bugs in tutorial #2.
- Remove ambiguity in Call/Assert step classes when resolving methods and
target classes.
Release 0.8.4 (030402)
Features
- Annotations to facilitate playing back a program as a user tutorial.
- Track JInternalFrames (pickens).
- Stop recording if the editor window is activated.
- Added a stress-test example.
- Add step editors for raw AWTEvents.
- Record window closings triggered by the window manager (i.e. click in
close box).
- Extend component selection for image capture (pickens).
- Timeouts are set to the actual time elapsed during recording (pickens).
Bug Fixes
- Don't record tooltip displays (pickens).
- Properly cache recorders for inner classes.
- Fix start/stop recording bugs.
- Fix dropped key events during recording (pickens).
- Fix recording/editor bug which would sometimes reorder incoming events,
causing inconsistent recordings and sometimes a stack overflow.
- Fix bug which only allowed void-returning methods in a Call invocation.
Release 0.8.3 (030115)
Features
- Added a JUnit fixture (derived from TestCase) to facilitate component unit
tests.
- Use separate event queues for applications under test.
- Improved support for multiple clicks.
- Improved feedback for text entry on editors.
- Preserve Costello layout across invocations.
- Add method selection popups in editors for Call, Assert, Action, and
Launch.
- Include extra properties in the component browser property list (such as
getMenuLabels for JPopupMenu components).
- Major rework of class reloading to more closely mimic the default
AppClassLoader.
- Return values for default ScriptTestSuite execution now match that of the
junit test runners, so failures and errors will be caught by Ant.
Bug Fixes
- Fix playback of JTextComponent recordings (jcapitao).
- Track context in Component Browser reference list.
- Various nested script bugs.
- Use OSX quit and about hooks.
- Avoid w32 drive a: bug with file choosers in standalone tests.
Release 0.8.2 (021201)
Features
- JTextComponent support for miscellaneous selections, cut, copy, paste, etc.
- ActionMap support. Robot will generate the appropriate keystrokes to
invoke a particular action on a component, e.g. select-all on a text component
would be ctrl-a on w32 systems, or command-a on a Mac.
- Image capture/comparison. Comparisons can be inserted manually or while
recording events by pressing F3.
- Added arbitrary method invocation step ("call") (bchristen). New step
types can be added by simply dropping in an appropriately named class.
- Add non-modal window for displaying long errors and stack traces.
- Visibly disable editor UI while recording the GUI under test. This
provides better feedback about the state of the recording.
- Provide more ComponentReference ctors to facilitate hand-generated
references.
Bug Fixes
- Fix some failing Assert step method lookups.
- Fix recording of BACK_SPACE and other special keys.
- Adding a boolean property check where the value was "false" would save a
check for "true" instead.
- Avoid disposing the JUnit Swing TestRunner (or any other test running
environment) when running a test script.
- Classes derived from ScriptTestCase were not used when generating a suite
with ScriptTestSuite (ScriptTestCase instances were created instead).
- Fixed several potential deadlocks.
Release 0.8.1 (021103)
Features
- Provide "breakpoint" capability to run up until a selected step, to
facilitate getting a GUI into a desired state before editing or recording.
- Capture InputMethod events (required for Chinese, Japanese, and other
extended characters sets, as well as special character input on Macintosh).
Many thanks to Sarif Koichi and Matt Pekar for helping to get this working.
- JListTester provides property-like access to list configuration
(bchristen).
- Japanese (sarif), Russian (iryna.z), Polish (pawel korbut), Italian
(antonio-petrelli) locales added.
- Auto-detect some w32 Java/Robot bugs (ptardif).
- Provide option for capturing mouse motion when recording events.
- Consolidate key recordings into a single text string if possible.
- Added a FAQ.
- Support VM args passed to a forked script.
- Allow recording to be started and stopped using F2. This facilitates
starting a recording while modal dialogs are showing.
- Allow component selection in the GUI under test using F1. Neither of
these facilities will interfere with their handling by the code under test.
- Refactored event recorder such that it doesn't dependon the rest of the
framework.
- Provide a ComponentReference ctor for use in hand-generated code.
Bug Fixes
- Fixed several capture bugs (0.8.1.1).
- Fix a bunch of Windows XP failures.
- Avoid a large class of application startup deadlocks caused by the
application assuming the event thread has not yet started (which isn't the
case when launching from the editor or within a suite of GUI tests).
- Cleaned up boot class loading; explicitly check for classes in the boot
path rather than depending on a package list to exclude from reloads.
- Fix capture of some extraneous key modifiers.
- Don't abort applications which call JFrame.setDefaultCloseOperation.
- Ensure all frames are found when running applets.
- Fix null package on some loaded classes.
- Steps now move in and out of sequences properly.
- Component Reference generation works with nested dialogs.
Release 0.8.0 (021007)
Features
- Updated to work properly under Java 1.4.
- Support for forked scripts. It is now possible to run a script in a
separate VM while tracking its progress. Full exception/failure backtrace
information is preserved and the script step execution is visible in the
editor. This provides a solution for those cases where the reloading class
loader is not sufficient to clean up after the code under test.
- Support for image capture (arbitrary and component contents) and single
pixel sampling.
- Improved XML handling to preserve locale-specific character encodings.
Using JDOM is a lot easier than xerces.
- Improved editing of existing script steps. Custom GUI editors are
provided instead of requiring raw XML editing.
- Support for AWT menus (actions and recording).
- Confirm script save before editor exit.
- Support persistent script comments.
- Provide a Web Start launch.
Bug Fixes
- Require complete method names for Action/Assert steps.
- Repaint issues fixed under 1.4.
- No more spewage when application under test exits from event dispatch.
- Fixed popup menu recording bug for w32.
- Scripts should work properly under ANT (fixed a classpath recursion bug
when scanning ANT's embedded classpath).
- Menus can now be properly used under OSX with useScreenMenuBar=true.
Release 0.7.3 (020913)
Features
- Launch steps can be threaded, e.g. if your main method doesn't return in a
timely fashion, or directly invokes something like Dialog.show that requires
input.
- Initial i18n support (please contribute your own locale!)
- Initial JTree support.
- Include source in base file release.
Bug Fixes
- Fix step insertion bugs when the code under test is not yet launched.
- Fix editor self-test to work properly with dynamic class reloading. With
reload support, the editor no longer needs to maintain context information.
- More robust dynamic class loader (set delegate=false in Launch).
- Recording now works on a threaded launch.
- Fix applet sample html page.
Release 0.7.2 (020830)
- Include docs in base file release.
- Reduce robot auto-delay times to speed up test playback; most significant
effect can be seen in text playback. All tests, recordings, and actions are
significantly more robust.
- Fix rather annoying bug which caused recording to fail when closing a
dialog.
- Ensure recording failures don't drive the editor batty, and provide the
failure information in bug report format.
Release 0.7.1 (020826)
- Added support for providing bug reporting information in exceptions,
especially for failed recordings.
- Robot after-event delay may now be set as a property,
abbot.robot.auto_delay.
- Dynamic class loader now uses the Class-Path from the manifest (if
available) when loading jar files.
- Added Frame/Dialog move/resize/iconify support (and tests).
- Added JTabbedPane support (and tests).
- Added class paths to jar files to facilitate launching (no longer need to
set a long class path explicitly).
- Fix resource loading from custom class paths (SwingSet2 now loads properly)
- Default to non-reloading class loader. Fixed several issues when
reloading is enabled.
- Add JComboBox recorder, cleaned up JComboBoxTester (and tests).
Known bugs
Several recorder tests are known to fail on linux and w32. Some are
timing-related and some are not.
Release 0.7 (020726)
- Use a more robust component search mechanism using weighted propeties;
store more attributes in auto-generated component references, but still work
well with minimal hand-entered ones.
- Launch application automatically when recording, if not already launched.
- Allow classpath to be specified directly in the Launch step.
- Use reloading class loader for launching classes.
- Added support for applets under Sun's applet viewer, and an applet example
(kelvinr).
Release 0.6.2 (020627)
- Added support for auto-formatting of dialogs and tooltips (TextFormat).
- Fixed annoying drive A: bug on w32.
- Added more recorder and tester tests, including a full test suite.
- Improve launching of the GUI under test.
- Many w32 event capture/playback bugfixes, especially popups and key
capture.
- Split editor code into model/view (onthemark,kgirard)
- Added a filter for Component properties (jeffg).
- Added scrolling action for JComponent (kgirard).
- Changed menu structure for consistency (kgirard).
- Added icons, accelerator keys, and mnemonics for most menu items (kgirard).
Release 0.6.1 (020528)
- Fix script paths for examples to fit new directory structure.
- Fixed semantic recorder. Now correctly captures window
show/hide/activate, click, key, menu, popup, drag, and drop.
- Completed recorder tests. These have been run on OSX, w32, and linux x86.
Release 0.6 (020522)
- Support relative script paths for embedded scripts.
- Added better support for capturing semantic events (SemanticRecorder).
- Directly handle Drag & Drop semantic events (not done yet).
- Better heuristics and debugging for component reference lookup.
- Added tests for ComponentTester and ComponentRecorder classes.
- Revised package hierarchy, since only a few classes have anything to do
with JUnit.
Release 0.5 (020416)
- Added JComboBox actions (still need recorder support).
- Added methods for documentation of ComponentTester actions (menus,
arguments, icons, etc.).
Release 0.4
- Allow top-level script to continue even if sub-sequences fail.
- Allow movement of individual script steps.
- Failures are now colorized to explicitly highlight failed steps.
- Event Stream recorder can parse more semantic events and eliminates
unneeded events.
- Added a cursor to the script editor table.
Release 0.3 (2002/04/07)
- Drag events are now captured in the Event Stream recorder.
- ESC now cancels any recording in progress.
- Added launch/terminate step for scripts so that scripts may be run
independently of junit test cases/suites. It's also a lot easier to start
from scratch now, no testsuite or testcase required.
Release 0.2 (2002/04/03)
- Allow regexp matches in string comparisons.
- Component references are now specific to the current script context.
- Added component hierarchy browser.
- A new simple GUI component test suite example (FontChooser).
- System.exit handling prevents an application under test from killing the
editor.
Release 0.1 (2002/03/22)
Release for preliminary interface feedback.