A given software system is a series of components that need each other to work. To test it you can either test all of it or you can treat it like a chain and test each link.
The current system I work on has a database, a Java backend, JSP views and uses AngularJS in the front-end
In order to comprehensivly test it you need a range of components. Featupent re flags can be tested by asserting that the page has certain elements present or absent. You can test for the presence of a given angular tag.
The angular components can be tested in a unit test framework in isolation.
Protractor is useful for checking that the components hang together without errors. There are so many places that JavaScript can live that only by looking for errors on the logs or ensuring that the page still has interactivity can you be sure you have s functioning page.
I spent some of last year looking for these assertiobs in React only to find them in an angular library.