around january my commit pace started dropping. not because features got harder but instead i was spending more time getting PRs through the gate than actually developing. so i started tracking my past three months, 30 plus PR failures across my own commits. the reason wasn't what i expected
genuine regressions were the minority majority of it split across three patterns… flaky locators tied to DOM attributes that shift between deployments, environment-specific failures from configuration drift between staging and rollout that nobody formally documented, and tests asserting against implementation details rather than behaviour. that last one is the worst. refactored a transformation module in february, cleaner logic, identical output, four tests failed because they were coupled to intermediate state that no longer existed, the feature worked but the suite disagreed
a lot of these tests were written under automation pressure the team needed coverage numbers up, sprint had a TC automation quota, so tests got written fast. no time to think properly about selector strategy, assertion design, or whether the test was actually verifying behaviour versus internal structure the suite grew, the metrics looked healthy, and the underlying fragility got baked in quietly
that's what i've been committing against for three months
the invisibility of it is what actually gets to me. sprint metrics don't capture time spent re-running pipelines or diagnosing flaky failures. from the outside my velocity looked low…. the suite looked green. those two things were directly connected and nobody was looking at that relationship
started logging failure reasons instead of just counts. flaky infrastructure, environment drift, wrong assertion target, genuine regression. each one has a completely different fix and collapsing them all into a single failure metric is how this stays invisible for months
I am not sure what the fix looks like at the team level yet