Blog

Thoughts on test automation, quality engineering, and lessons learned from two decades in QA.

AI AI Agents Playwright

Static AI Review vs. Live Agentic Browsing: What 41 Seeded Bugs Actually Show

I built a deliberately buggy e-commerce app with a hidden 41-fault answer key, then scored two different automated exploratory-testing architectures against it: a static deterministic-scan-then-AI-review pipeline, and a live agentic browser driven by Claude through the real Playwright MCP tools. The two methods disagree on 16 of the 41 bugs - and only 4 were missed by both.

15 min read
Accessibility Playwright AI

Zero Axe Violations, Four Real Bugs: What AI Catches That Automated Accessibility Testing Misses

Rule-based accessibility scanners check that markup is well-formed, not that it's true. I built a demo site engineered to pass axe-core with zero violations on every page, then built a second Playwright suite that uses Claude to judge alt-text accuracy, DOM-vs-visual reading order, real focus behaviour, and error-message clarity - and it failed on every seeded defect, including one in the demo's own 'control' case I hadn't noticed myself.

13 min read
Oracle PL/SQL SQL Server

OIA: Building a Standalone Oracle Impact-Analysis Tool, Then Debugging It Against CorporateRAG's Own Fixture

CorporateRAG already traces SQL Server impact-analysis questions through a deliberately tricky fixture database. I built OIA — a standalone CLI tool doing the same job for Oracle, from scratch — then ported that exact fixture to PL/SQL and used CorporateRAG's own already-fixed tools as ground truth to compare against. The discrepancies caught four real bugs: a lineage parser reading the wrong AST node (twice), invisible WHERE-clause eligibility rules, a missing 'read the real source' tool, and a self-referencing Mermaid diagram.

15 min read
RAG PostgreSQL pgvector

CorporateRAG: Designing a Database to Break My Own RAG System (On Purpose)

I asked Claude to write the prompt for a realistic SQL Server reporting database, engineered with deliberate blind spots, then used it to catch CorporateRAG giving a plausible-but-wrong answer to an impact-analysis question — and had Claude diagnose the root cause, plan three rounds of fixes, implement them, and verify each one against the live system rather than just the diff.

13 min read