Page objects, recommended in the Protractor docs, are a popular pattern for writing end-to-end tests for Angular but they quickly become lists of ugly, boilerplate selectors that break when you decide to change your DOM. They do an excellent job of separating view logic from test logic, but they are mangled with references to models, css, and bindings that are none of their business.
Full article