Claude Code Has 2 Primitives, Not 3 — Use Skills First
Most engineers think Claude Code has three primitives. It actually has two — skills and subagents. Here's when to use which, with token-cost benchmarks.
Read the storyI'm Halmurat T. — senior SDET writing about test automation at enterprise scale. Fifteen years debugging production systems at Fortune 500 telecom, insurance, retail, and financial services. The kind of scars you can't read about in documentation.
This blog is opinionated by design. Playwright vs Selenium isn't a tie. Page Object Model is overengineered. Your flaky test isn't flaky — it's broken. If that sounds useful, stick around.
ship/ StepScout — IntelliJ plugin for Cucumber step navigation →
Subscribe to get updates straight to your inbox.

No spam · Unsubscribe anytime
Most engineers think Claude Code has three primitives. It actually has two — skills and subagents. Here's when to use which, with token-cost benchmarks.
Read the story →Shared staging environments are the #1 source of flaky UI tests in enterprise teams. Here's the 5-pillar blueprint for building a controlled test environment.
How we built a Playwright API test data layer in Java — replacing UI setup that burned 150 minutes per run with 3 classes and a legacy API wrapping pattern.
Contract testing and API testing look similar but they catch very different bugs. Here's where contract testing fits next to unit, API, and E2E tests.
Thread-level parallelism demands ThreadLocal and full framework rewrites. Process-level parallelism doesn't. Here's the difference and when to use each.
Most Playwright teams still use CSS selectors via locator() out of habit. getByRole and getByText find elements the way users do — and survive redesigns.
Search is not available in dev mode.
Run npm run build then
npm run preview:local to test search locally.