From time to time, our end-to-end tests fail because of a markup change made by one of our UI developers - for instance, there was an
id on an element but it got removed/replaced, or an Angular binding of an element changed, an element was moved to under a different parent etc.
The problem is that, UI developers don't really know what, we, testers use to locate elements on a page and, hence, they don't keep automated tests in mind when they are changing the markup - it is quite easy for them to break our locators which results into us debugging and changing the location strategy which is generally "expensive".
Is this a communication issue? Should we somehow establish markup change rules? What other ideas do you have to improve the process?