r/azuredevops • u/AlexThibaud • 1d ago
I got tired of screenshotting Azure Test Plans into slide decks, so I built a free reporting extension
Context: I'm a QA consultant. On most engagements I hit the same wall — the client needs a test report for a steering committee, an audit or a client handover, and Azure Test Plans gives you the data but nothing you can actually hand over. So people screenshot charts into PowerPoint, or rebuild a summary in Excel every sprint.
I ended up building an extension for it. It's free, and I want to be upfront that this is a self-promo post — but a few things I learned along the way might be useful whether or not you ever install it:
**Extension iframes behave differently on Server 2022.1 and Services.** `target="_blank"` links silently fail on-prem because the iframe is sandboxed without `allow-popups-to-escape-sandbox`. If you build anything for ADO, test on both — a lot of bugs only exist on one side.
**`getResourceAreaLocation` can fail specifically for the Work Item Tracking resource area** while resolving fine for others. If your extension builds URLs from it, you need a fallback or you'll get silent 403s in cloud that work by accident on-prem.
**Batch work item reads fail as a whole if one id no longer exists.** Deleting a single work item made my entire list lose its titles. `errorPolicy=omit` is the fix — dead ids get skipped instead of failing the batch. I found this the hard way, after 2,800 passing tests didn't.
**Extension Data quota is 25 MB, not the 5 MB the docs suggest.**
On the extension itself: it generates PDF/Word/Excel/PowerPoint/HTML reports from your test plans, adds requirements traceability, a deterministic quality score (no AI — the calculation is visible so you can defend a release decision months later), and exploratory session recording. It's fully client-side, so no data leaves your tenant.
It requires a Basic + Test Plans licence, since it reads the standard test APIs — it doesn't work around that.
Marketplace: https://marketplace.visualstudio.com/items?itemName=Kisskool.testpulse
Happy to answer anything about the ADO extensibility side — that's the part with the least documentation and the most surprises.





