This document discusses writing better tests for JavaScript apps. It notes that good tests are fast, comprehensive, reliable, and maintainable, enabling refactoring with increased confidence. Typical problems with testing include tests being slow to write and run, intermittently failing, or not failing at all. The document recommends unit tests and higher level unit tests to test modules and their interactions. It provides tips for different testing contexts like single-page apps and Node web services. Defensive testing patterns like dependency injection and Arrange-Act-Assert are also covered.