FitNesse. UserGuide. FitLibraryUserGuide. SuiteFixtures.
ProgrammerSuiteFixture [add child]
Here's a programmer's view of what happens, using the example. As it happens, you can run it.

To use a suite fixture, change the TEST_RUNNER (you'll need to press Edit to see the textual form of this):

variable defined: TEST_RUNNER=fitlibrary.suiteFixture.FitLibraryServer

Now include a table in the SuiteSetUp page. Eg

ChatSuiteFixture

select or complete

FitNesse runs this first for a suite. As ChatSuiteFixture is a subclass of SuiteFixture, it automatically registers itself with FitLibraryServer as the suite fixture.

The second table above results in a call to a method in SuiteFixture, which records the keywords to be selected in the storytests.

Then for each storytest, FitLibraryServer passes control to the suite fixture. As it is a subclass of DoFixture, it runs it in flow. So it runs the storytest until it finds that it's filtered out, or when it finds a DoFixture to run the rest. Eg, with:

keywords complete,connect

chat

connect user sarah

etc

Now the first table above results in a call to keywords(), a method that's defined in SuiteFixture. If the keywords hadn't matched, the storytest would be abandoned at this point and the first table marked as ignored.

Then the second table results in a call to chat(), a method defined in ChatSuiteFixture. This creates a specific DoFixture object and returns it (having passed any shared resources to it).

Because that's a DoFixture, the suite fixture passes control to it to execute the rest of the storytest, as usual. In the eg above, it runs the connect user table and those that follow, in the usual way.

Extra comments:
Once it's clear that suite fixtures are going ahead, I'll put together a tutorial on getting started with them, as well as the steps involved in taking existing storytests and moving to this approach.

It's easy to switch over if you: