Реализуя функциональные тесты минуя GUI позволяют отслеживать ошибки именно в функционале приложения и API можно намного быстрее покрыть тестами. Через GUI можно реализовать набор acceptance тестов и время от времени проходиться на предмет ошибок в визуализации. Слова можно подкрепить статьёй в GTB Google Testing Blog: Just Say No to More End-to-End Tests
Do different tests instead of repeating the same tests
Хотя если публичного API нет или оно как-то реализовано невнятно, то тут могут быть сложности и надо будет писать адаптер для работы, что не совсем удобно
Но многие библиотеки могут иметь поддержку тестирования.
Scala-Play, дает возможность проверять моканное апи, живое апи, а также поддержку селениума, для самых сложных случаев. Например вот тут можно сопаставить с пирамидой.
Также sping-based фреймворки, зачастую, облегчают тестирование. Вопрос желания влазить код и из “кексика”, строить правильную пирамиду.