Four Drawers, One Agent
CLAUDE.md is not memory, a vector search is not a decision, and OpenViking is not a nicer RAG. Here is which drawer holds what.
Thoughts on QA engineering, test automation, and building quality software — 40 posts and counting.
CLAUDE.md is not memory, a vector search is not a decision, and OpenViking is not a nicer RAG. Here is which drawer holds what.
A portfolio chatbot needed to answer questions outside its own knowledge base without shipping a search API key to every visitor. Scoping that feature surfaces a real architectural lesson about...
No cloud bill, no vendor lock-in, no rate limits, just Nginx, PM2, and a local LLM running 24/7 on a computer the size of a deck of cards. Here's the...
Frontend renamed a button and your suite went red at 2am? Self-healing locators find it by what it does, not what it's called.
Playwright's codegen --ai writes tests from plain English. I still review everything — but I type about 80% less than I used to.
Selenium BiDi vs Playwright CDP for drag-drop and network sniffing. Protocol nerd stuff, explained at a whiteboard — not from a spec PDF.
Playwright + MCP + multiple AI agents on one test run. The beginner guide — because one agent driving the browser felt a bit lonely.
A compact, one-page XPath 1.0 ↔ CSS 2/3/4 translation reference for SDETs migrating Selenium suites to Playwright engine selectors. Text match, structural nth, ancestor reverse, attribute predicates, boolean combinations, sibling...
The SDET-flavored XPath pocket reference for Selenium, Playwright, and Cypress engineers. Locator priority pyramid, the 13 axes, the 10 functions you'll actually use, predicate recipes, multi-language code samples, framework gotchas,...
Built for SDETs who automate with Selenium, Playwright, and Cypress. Mental models, the 13 axes, the 10 functions, 7 locator recipes, the 5 mistakes to avoid, multi-framework API mapping, **complex...
A beginner-friendly, slightly unhinged tour of cucumberBDDParallel — parallel BDD, web-pattern examples, MCP exploration, Docker one-liner, and enough structure to steal for your own app.
Everything a beginner needs to start browser automation with Selenium in 2026 — from zero-code setup to running an AI agent that controls your browser for you.
How I evolved from GitHub Copilot autocomplete to building multi-agent AI systems that generate, execute, and self-heal test suites autonomously.
What I learned leading QA automation for healthcare services — from compliance requirements to building reliable test suites for critical systems.
How to structure your test automation pipelines for fast feedback, reliable deployments, and meaningful quality gates.
BDD frameworks fail when they become documentation graveyards. Here's how to build ones that developers and QA engineers actually use.
A practical comparison of Playwright and Selenium for modern test automation — covering speed, reliability, multi-browser support, and developer experience.
I've used this analogy in interviews and it usually lands. Picture you're testing whether a restaurant can deliver a meal correctly:
A practical roadmap for QA engineers looking to level up from manual testing to automation leadership — based on my 20+ years in the field.
How functional testers contribute to application security across every phase of the SDLC — from requirements to operations.
Secrets in code have burned every SDET eventually. Java, C#, whatever — here's how I manage them without cosplaying as DevSecOps.
GraphQL: ask for exactly what you need, skip the rest. Key concepts, best practices, and the mistakes I made so you don't have to.
I stopped hand-writing resolvers. Hasura generates a GraphQL API from your database in minutes. Here's when you reach for it vs. Apollo or building from scratch.
I picked up GraphQL because REST kept making me fetch 47 fields when I needed 3. A tester's guide to modernizing — hype-free edition.
Movie DB, SQL backend, REST actor API — one GraphQL layer on top. How I wired Hasura + Hot Chocolate without losing the plot.
When to use Microsoft Graph (REST) vs GraphQL — and why the choice matters more than you think.
Your regression suite shouldn't wait for QA sign-off. Run it in dev — catch the 'works on my machine' lie before it ships.
Security testing isn't a checkbox at the end — it's a habit. A step-by-step walkthrough for SDETs who'd rather find vulns before prod does.
Playwright found the text but Assert.AreEqual failed anyway? HTML encoding. Here's how I decode it in .NET 8 without losing my sanity.
BDD, ATDD, and TDD all sound like alphabet soup until your team has to pick one. Here's the honest diff — no buzzword bingo, I promise.
Building a reusable Playwright framework in .NET 8.0 with dependency injection, so you're not copy-pasting test code across projects.
Testing isn't one phase in the SDLC — it's the thread running through all of them. A map of what to test, when, and why it matters.
Mocks get you moving fast. Contracts keep you honest when the real service finally shows up. Here's when to use which — and when you need both.
The testing pyramid isn't magic — but it stopped me from writing 400 E2E tests that all broke on one CSS change. Here's how I actually use it.
I've rebuilt Selenium C# frameworks more times than I'd like to admit. Here's the xUnit + SpecFlow + DI setup that actually survives production.
How to implement CRUD operations in Cosmos DB without building yourself into a corner — architecture patterns that actually survive beyond the POC.
When your test clicks a button, you can't just assume the API response landed. Here's how to actually wait for it—and get the data into your assertions.
Eight methods to handle drag-and-drop in Selenium C# when OpenQA.Selenium.Interactions fails — JavaScript fallback, offsets, waits, and more.
How to set up Playwright, drive cross-browser testing, make API calls, validate against a SQL Server database, and capture traces and videos on failure.
A beginner-friendly guide to Selenium locator strategies — ID, class, CSS, XPath — and how to avoid NoSuchElementException.
No posts match that search.
Ask about anything on this blog