Testing as a user with component harnesses
The Angular CDK's API for authoring and using component testing harnesses is a fresh approach with the test-as-a-user philosophy in mind. Each component or related set of components can have a component harness for tests. A component harness is a testing API for interacting with those components that can be used in unit, integration, and end-to-end tests.
Component testing harnesses internally rely only on a single selector for the component they wrap. Library authors can publish component harnesses for their Angular components. In this way, their consumers' tests, which depend on the library's components, will not have dependencies on the DOM structure except for that one selector, which the library authors are able to change if needed.
This is exactly what the Angular Components team do for Angular CDK and Angular Material. They release and maintain component harnesses for all their Angular components.