tests are run in hierarchical order from top to bottom