WebDriver will allow you to automate Angular JS applications. The biggest issue with libraries like Angular JS is that they use AJAX in order to update things on the web page. I can write an application with Angular JS which never finishes loading. when I enter a URL in the address bar, without Angular JS, there is a concept of the page finishing to load. If there is no AJAX or Javascript on the page then once I get the onload signal, I know everything I am looking for is on the page.
With anything AJAX and a lot of Javascript web pages, after onload the Javascript can load additional items. For example, I can use javascript to determine which country you are in. If you are in say USA, I can then use AJAX to query a server, get a list of states and update the "State" web element with a list of valid states. When the page first loads, the "State" SELECT might have no OPTION elements. A few milliseconds later it will get updated with all the OPTION values for your country. If you are testing the site manually, the "State" SELECT gets populated faster than you can open it. Or as a manual tester, if you open it and it is empty, you'll close it and try again. Usually on the second attempt it will be fully populated.