Free tool
Azure Pipelines test results checker
Why don't my tests show up in the Tests tab? Paste the Publish Test Results step and the file your runner wrote, and find out before the next run.
Everything stays in your browser: nothing is uploaded.
What it checks, and why
The step is skipped on the run you care about. A step with no condition runs only when everything before it succeeded. When tests fail, the publish step doesn't run, so the run with the failures has nothing in its Tests tab. condition: succeededOrFailed() fixes it.
The default pattern doesn't match your file. testResultsFiles defaults to **/TEST-*.xml, which is Maven Surefire's naming. Playwright, pytest and Jest write junit.xml or results.xml, which that pattern doesn't match. Because failTaskOnMissingResultsFile also defaults to false, the step goes green having published nothing.
Failing tests leave the pipeline green. failTaskOnFailedTests defaults to false, so the task succeeds with failures in the file.
The format doesn't match the file. The task reads JUnit, NUnit, VSTest (TRX), xUnit 2 and CTest, and parses the file as whichever you name. This page reads the file's root element and says which one it really is.
Every finding links to the behaviour it rests on: the task reference, conditions, and file matching patterns.
How it was checked
The reader was built against real files, not samples: JUnit XML written by Playwright's reporter (12 passing tests), by pytest (2 failing), and by Maven Surefire (3 tests, 1 failure, 1 skipped, and the single <testsuite> root Surefire writes). Its counts are checked against what each runner reported. Patterns are matched with minimatch, the library the file matching documentation names.
Limits. NUnit, xUnit, VSTest and CTest files are recognised by their root element but not counted: only the JUnit family is parsed. Inputs that use pipeline variables can't be resolved here, and are reported as unknown. Templates you don't paste are invisible to this page. Nothing here talks to Azure DevOps: it reads your files in the browser and compares them with the documented behaviour.
Once the results publish
A green pipeline with failing tests is one way to be misled by a result; there are others. For reading a test result that isn't what it seems, see Why did this test pass? For deciding whether a change in failures is real, see the flaky test calculator.
For the whole path — a Playwright run, the JUnit file it writes, the four defaults that swallow it, and why publishing results never creates a test case — see Azure DevOps for testers.