If at any point you think of an experiment you'd like to try out, all of the code examples below are editable.

Every instance of Distilled you create can be passed a custom reporter function. This allows you to override Distilled's default test reporter, which controls how test results are logged and displayed.

Child tests are resolved before parent tests. This allows you to bubble properties and failures up the test chain.

As an example, you could reverse the behavior of Distilled's built-in test reporter, which displays tests as passed even if they have a child test that failed. Because reporters know at display time whether or not child tests passed, this is a purely cosmetic choice.

When child tests resolve, a number of properties are attached to them that allow you to to display information about how the test ran.

One of Distilled's selling points is that children of failed tests will be ignored and not executed. If a test is already attached before a parent fails, then that test's status will be set to "skipped".

Remember from the very first code sample above that the test passed into the reporter function is literally the same test that you ran before. This means that if you want to attach additional properties, you can.