2.19. Exactly what does the /manual option mean?

The /manual option indicates to the harness that this is a manual test. This allows the harness to distinguish manual from automatic tests, which is important since the latter can be run without user interaction.

There are actually three kinds of applet manual tests: Self-contained tests, yesno tests, and done tests.

A self-contained manual test handles all user interaction itself. If the test fails, whether this is determined by the user or by the applet, then the applet must throw an exception. Self-contained tests specify applet/manual for the first @run argument.

A yesno test requests the harness to ask the user whether the test passes or fails. To do this, the harness will put up pass and fail buttons, and it's up to the user to inspect the screen and click one of the buttons. The harness will take care of shutting down the applet. The test will also fail if the applet throws an exception. Yesno tests specify applet/manual=yesno for the first @run argument.

A done test requests the harness to put up a done button. After the user has completed whatever actions are required by the test, the user clicks done and the harness shuts down the applet. The program must itself determine whether the test is to pass or fail, and throw an exception in the latter case. Done tests specify applet/manual=done for the first @run argument.

main and shell may also specify the manual option using main/manual and shell/manual respectively. These tests must be completely self-contained.