Assertions

Assertion is the most important part of any test. Everything you do, all the setup you prepare and actions you carry out exist only so you could write those assertions—your expectations toward the tested system.
And sometimes those expectations can get quite complex! There's so much your code can do. It can bring domain-specific requirements, transition between states asynchronously, or even have multiple criteria to reflect a single expectation.
Throughout this block, you will learn how to get the most out of your assertions. How to create custom matchers and quality testers. How to make tests fail with more context and information, helping you debug them faster. And also how to reflect expectations toward eventual values and states (and I don't mean vi.waitFor(); there's a much better way).
Let's go!