This paper presents a specification-driven approach to test automation for GUI-based JAVA programs as an alternative to the use of capture/replay. The NetBeans Jemmy library provides the basic technology. We introduce a GUI-event test specification language from which an automated test engine is generated. The test engine uses the library and incorporates the generation of GUI events, the capture of event responses, and an oracle to verify successful completion of events. The engine, once generated, can be used to test multiple versions of the application. The approach defined in this paper provides a language front-end to the Jemmy library to eliminate the programming usually needed to use this Java API. Results from applying the specification-driven approach to automate the grading of student programs indicate the feasibility of this approach. The specification-driven approach is equally useful for testing during development and regression testing. The primary benefit is that testers can focus on test case design rather than building test harnesses. This approach supports <i>N-version testing</i>, where each version of the application is intended to satisfy the same specification, and where each version is tested in an identical manner.