Adithya Aggarwal
Co-founder & CTO
Eight years building search and delivery systems at Amazon. The kind of scale where flaky tests block billion-dollar releases. Now CTO at Pie, building AI agents that adapt when your UI changes.
Writes about:
Articles by Adithya
How to Test App Upgrades and Data Migration on iOS and Android
A fresh install never meets the data your users already have. Test the iOS and Android upgrade path, where migrations break, on every release candidate.
How to Test Error Handling End-to-End: Force the Failure
Error handling is the part a green suite never runs. Force a 500 in an end-to-end test, then assert the user sees what went wrong and the app recovers.
How to Test Infinite Scroll and Lazy Loading End-to-End
Infinite scroll and lazy loading tests flake because the list loads late and recycles its own rows. Wait on signals and assert invariants, not element counts.
How to Test Pagination End-to-End (UI and API): Assert Invariants, Not Page Numbers
Pagination tests flake because they assert which rows sit on page two, and that moves with every insert. Assert four invariants instead, with UI and API code.
How to Test Feature Flags End-to-End Without Flaky Tests
Feature flag tests flake because the test does not own the flag state. Pin the flag per test, cover the states that ship, and skip the combinatorial matrix.
How to Test Multi-Step Forms and Wizards End-to-End (Without Flaky Tests)
Multi-step form tests break at the seams between steps. Test carried state, per-step validation, and step transitions without flaky waits.
How to Test OAuth and SSO Login Flows End-to-End in CI
Mocks and saved sessions skip the Google or Okta handoff, where logins break in production. Test the real flow in CI and know what to do when it is blocked.
How to Test Search Functionality End-to-End (Without Flaky Tests)
Search tests flake because they pin themselves to the one thing search is built to change, the result list. Assert invariants, seed the index, and wait on results.
Cypress vs Selenium vs Playwright: Which to Pick in 2026, and the Bill All Three Share
Cypress, Selenium, and Playwright compared on architecture, speed, flakiness, and languages, plus the selector bill all three share now that AI writes the tests.
Real Device vs Emulator vs Simulator: Which Should You Use for Mobile Testing in 2026?
Simulators and emulators each fake half of a phone, so a green suite can still ship hardware bugs. We cover what each one reproduces, misses, and costs.
How to Test AI Features: Reliable Tests for Non-Deterministic Output
An LLM feature never returns the same string twice. Here are the assertion patterns that make it testable in CI, and the judge problem nobody warns you about.
How to Test Push Notifications on iOS and Android
Push testing carries one piece of folklore, that you need a real device. Two platform changes made it false. Here is what actually runs on a simulator and in CI.
How to Test Real-Time and WebSocket Features End-to-End (Without Flaky Tests)
Real-time tests flake because teams treat a pushed message like a request they can wait out. Here's the architecture that makes WebSocket flows deterministic in CI.
How to Test Time-Dependent and Timezone Features End-to-End (Without Flaky Tests)
Time-dependent tests flake because they read the clock instead of controlling it. How to fake time, cover the DST and timezone cases, and keep the suite green.
How to Test Webhooks End-to-End (Without Flaky Tests)
Most webhook guides prove the callback arrived. They never prove it did its job. Here is the architecture that tests the outcome, deterministically, in CI.
How to Set Up Test Accounts and Rate Limits for Automated Testing
Set up a test identity per role, size the login budget a run needs, and raise the limit for that identity only, so automated tests stop locking themselves out.
How to Prepare Test Data and Feature Flags for PR Testing
Correct code fails a PR test when the preview has no data or the flag never reached the test identity. Seed a profile, turn on the flag, gate the run, tag Pie.
How to Build a Preview Environment for PR Testing
Set up a preview environment that holds the whole change and proves it is ready, so the first PR test reaches the feature. Scope, deploy, manifest, verify.
XCUITest vs Appium in 2026: Pick the Layer, Not the Engine
On iOS, Appium does not replace XCUITest. It drives it through WebDriverAgent, so the real choice is about layers, speed, and the locators neither one removes.
WebdriverIO vs Selenium in 2026: One Protocol, Two Packages
Choosing between WebdriverIO and Selenium feels like picking an engine. Both drive the browser over the same W3C protocol, so the real call is packaging.
Detox vs Maestro in 2026: Gray-Box Depth or Black-Box Reach?
Detox compiles into your app and Maestro drives it from outside. How that one split changes flakiness, setup, and the identifier upkeep neither one removes.
Best Playwright Alternatives in 2026, Sorted by What Breaks a Test
Swapping Playwright for another framework moves your maintenance bill without lowering it. Seven alternatives compared on what makes each one break.
Sauce Labs vs BrowserStack: Which Should You Choose in 2026?
Sauce Labs vs BrowserStack compared on device coverage, frameworks, debugging, and pricing at scale, plus the AI features each vendor shipped in 2025-26.
Best Appium Alternatives in 2026: The Maintenance Trap Most of Them Miss
Compare the best Appium alternatives in 2026 by setup, platform reach, and test maintenance, so you can match the right tool to your team's real bottleneck.
How to Test Two-Factor Authentication (2FA) and OTP Flows End-to-End Without Flaky Tests
A one-time passcode is built to defeat automation. Here is how we test 2FA and OTP flows end-to-end reliably. Stop reading the code off the screen and fetch it at its source.
How to Test App Permissions on iOS and Android (Camera, Location, Notifications)
An iOS permission prompt appears exactly once, and that single rule is why most teams never automate permission testing. Here is how to make it reliable in CI.
Best Integration Testing Software in 2026 (Tested by Boundary)
Most integration suites mock the exact boundary that breaks. Compare the best integration testing software of 2026 by the boundary each tool exercises.
What Is Monkey Testing? How It Works, Types, and How to Automate It in 2026
Monkey testing fires random taps at an app to surface crashes scripted tests miss. See how it works and how AI agents turn blind randomness into judgment.
Cypress vs Selenium: How to Pick Without Second-Guessing
Cypress runs inside the browser. Selenium drives it from outside. That one split decides language support, browser coverage, and a class of flakiness. Here's how to pick in 2026, and the cost both share.
How to Test Email Verification and Password Reset Flows End-to-End (Without Flaky Tests)
Email verification and password reset tests flake on the inbox, not the clicks. Here's the architecture that makes them deterministic in CI.
Puppeteer vs Playwright: How to Pick Without Regret
Puppeteer is a lean Chrome automation library. Playwright is a full cross-browser test framework. Here's how to pick the right one in 2026, and the trade-off both share.
Playwright vs Selenium: Why the Faster Framework Loses to Maintenance
Playwright is faster and less flaky; Selenium has the ecosystem. But both break on selector maintenance, the cost your framework choice barely touches.
What Is Test Observability? How It Works and Why CI Needs It
A failed test tells you something broke, not why. Test observability is the layer that explains failures, separates flaky from real, and points to the cause.
What Is AI Testing? How It Works, Types, and Tools in 2026
What AI testing is, how it works, the five main types, and how the 2026 tools compare on the maintenance work they take off your team.
What Is Mutation Testing? How It Works, Tools, and Why It Reveals Weak Tests in 2026
Mutation testing measures whether your tests would actually catch a bug by deliberately introducing faults and checking if a test fails. Here's how it works, the tools to use, and why it exposes the weak tests that high coverage hides.
Appium vs Detox: Which Mobile E2E Framework Should You Choose in 2026?
Appium vs Detox compared on architecture, platform support, flakiness, and setup, plus the locator maintenance tax both frameworks still leave you paying.
Espresso vs XCUITest: Which Native Mobile Testing Framework Should You Choose in 2026?
Espresso vs XCUITest, compared on architecture, speed, reliability, language, and CI. A practical 2026 breakdown of Android's and iOS's native UI test frameworks, and why shipping one app means maintaining two suites.
Appium vs Selenium: Which Should You Choose in 2026?
Appium and Selenium automate different platforms. Selenium owns web browsers; Appium owns mobile apps. This guide explains their shared WebDriver heritage, where each one fits, and the selector-maintenance tax neither removes.
What Is White Box Testing? Techniques, Types, and How It Compares
White box testing catches dead branches and logic errors by testing every path in source code. Covers techniques, coverage metrics, and comparisons to black box testing.
What Is Contract Testing? How It Works, Tools, and Where It Fits in 2026
Contract testing catches breaking API changes before services meet in a shared environment. Covers consumer-driven contracts, Pact, PactFlow, and when E2E testing takes over.
What Is Data-Driven Testing? How It Works, Frameworks, and Where It Breaks
One script, many inputs. How data-driven testing works, which frameworks support it, and where the data-table model hits its maintenance ceiling.
What Is Shift-Right Testing? How It Works and Pairs with Shift-Left
Catch what staging misses. Five shift-right testing techniques, how they pair with shift-left, and what each one is built to catch.
What Is Component Testing? Tools, Trade-offs, and Best Practices
Component testing verifies a single UI component in isolation, rendered in a real browser, the way a user interacts with it. Here's how it works, the tools to use, and where it fits between unit and end-to-end testing.
What Is Unit Testing? How It Works, Types, and Where It Fits in 2026
Unit testing verifies the smallest pieces of your code, single functions or methods, in isolation, so you catch logic bugs in milliseconds. Here's how it works, the frameworks to use, and where unit tests stop and end-to-end testing has to take over.
The Pre-Deployment Checklist: 10 Things to Verify Before You Ship
A 10-minute pre-deployment checklist for developers. 10 things to verify between merge and promote, plus what to hand off when time runs out.
What Is Smoke Testing? How It Works, When to Run It, and How to Automate It in 2026
Smoke testing is a small set of checks that confirm a build's most critical functions work before deeper testing begins. Here's how it works, how it differs from sanity and regression testing, and how to automate it in CI/CD.
What Is Visual Regression Testing? How It Works and How to Catch UI Bugs in 2026
Visual regression testing catches UI bugs that functional tests miss — broken layouts, clipped text, misaligned elements. Learn how the baseline-and-diff loop works, the four tool categories, and why pixel-diffing creates false positives.
Playwright vs Cypress: Which E2E Framework Should You Choose in 2026?
Playwright vs Cypress, compared on architecture, browser support, flakiness, and speed. A practical 2026 breakdown of which E2E framework fits your stack, and where both still leave you maintaining selectors.
How to Build a Regression Test Suite (Step-by-Step)
A 9-step playbook for building a regression test suite that actually runs. Includes real auth flow and checkout flow test cases, code examples, and how autonomous discovery cuts first-suite time to 30 minutes.
Autonomous Test Discovery: How It Actually Works
AI agents now explore apps on their own to find untested flows. Here's how autonomous test discovery works, where it wins, and what it still can't do.
Mobile App Testing Challenges: What's Really Breaking Your Tests
Here are ten challenges that break traditional test suites, and how autonomous testing can help you solve them.
Mobile Testing Automation: Why Your Tests Fail More Than They Should
Mobile test automation fails significantly more than web automation. Learn why vision-based testing eliminates selector maintenance and how to fix your mobile testing strategy.
Top 5 Mobile Testing Frameworks in 2026: Which One Fits Your Stack?
Appium, Detox, XCUITest, Espresso, and Maestro each solve a different problem and break in different ways. Here's how to pick the right one for your stack, plus where autonomous testing fits in the AI era.
Generative AI for QA: What It Does, Where It Falls Short, and Tools to Try
How generative AI is reshaping QA roles. Learn what to evaluate in GenAI testing tools, how to augment your workflow, and which platforms are delivering real results.
Testing AI-Generated Code: Why More Code Means More Bugs
AI coding tools made you faster at writing code. But 10x more code means 10x more bugs for your QA team to catch. Here's how to validate AI-assisted development.
What Is Autonomous Testing? How It Works and Why It Matters in 2026
Autonomous testing uses AI to create, run, and repair its own tests. How it differs from automation, and why AI-written code makes it necessary now.
iOS vs Android Testing: Why You Need Both (And How to Share 90% of the Work)
Face ID and back gestures need platform-specific tests. Almost nothing else does. Where iOS and Android testing actually differs in 2026, and how to share the rest.