The build is green.
It has been green all week.
That is the part
you should have found suspicious.
Somebody renamed a directory
in a tidy-up commit
nine days ago.
The runner matches files by pattern.
The pattern no longer matches.
Two hundred tests
stopped being collected.
Nothing failed,
because nothing ran.
A test suite reports failures.
It does not report absence.
Zero of two hundred passing
and zero of zero passing
produce the same colour,
the same tick,
and the same sentence in the channel.
You have been shipping on faith
and calling it evidence.
The ways this happens are boring
and there are many of them.
A tag filter that excluded a group
for one afternoon in April.
A skip annotation added to unblock a release,
with a ticket number beside it
and no ticket.
A guard around the import
so the suite still starts
when a dependency is missing.
A pipeline step marked continue-on-error
by someone who needed to merge.
A test class with no assertions,
because the assertion moved
during a refactor
and was never put back.
Each of those was reasonable
on the day.
None of them announce themselves again.
The coverage report will not rescue you.
It measures the code that ran
against the code that ran,
and a suite of nothing
covers nothing perfectly.
So go and find the number.
Not the colour.
The count of tests executed,
printed in the log,
compared against yesterday's count.
Make the pipeline fail
when that number drops.
It is ten lines
and it is the only guard
that catches every version of this.
Then do the cruder check.
Break something on purpose.
Invert a condition,
return the wrong value,
delete a line that matters.
Run it.
If the suite still passes,
you have learned something
worth a week of work.
A test you have never seen fail
has told you nothing so far.
Green means somebody asked a question
and got the answer they wanted.
It does not mean anybody asked.
– Serguey Asael Shinder
Top comments (0)