Documentation

An assertion is just an IO action. Internally, the body of any test
in HTF is of type Assertion. If a test specification of a certain plugin
has a type different from Assertion, the plugin's preprocessor pass must
inject wrapper code to convert the test specification into an assertion.

Assertions may use failHTF to signal a TestResult different from
Pass. If the assertion finishes successfully, the tests passes
implicitly.

Please note: the assertion must not swallow any exceptions! Otherwise,
timeouts and other things might not work as expected.