Unit тесты (они же модульные тесты).
Фреймворки: Jest, Jasmine/Karma.
Лежат в той же папке рядом с тестируемым файлом и имеют суффикс .spec.
Тестируют один конкретный модуль, под модулем можно понимать конкретную функцию или класс, в общем они тестируют что-то одно и служат прекрасной документацией, которая всегда является актуальной. Для лучшего покрытия кода и его улучшения используется техника TDD (red, green, refactor), сначала пишем тесты, потом код, чтобы эти тесты проходили и рефакторят, затем процесс повторяется. Обычно их пишут чаще, чем e2e тесты и они дешевле, в том плане, что они меньше в плане размера кода и проще для написания.
E2E тесты.
Фреймворки: Cypress, Protractor.
Тестируют часть приложения и их взаимосвязь (тут есть много нюансов), вообщем у них больше зона охвата и они тестируют именно поведение приложения, имитируя действия пользователя. Создаются как отдельный проект.
Вообщем как-то так, имхо.