Adithya Aggarwal
AUTHOR

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:

AI/ML SystemsReliability at ScaleSearch Infrastructure
LinkedIn

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.

October 2026 · 11 min read

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.

October 2026 · 9 min read

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.

October 2026 · 11 min read

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.

October 2026 · 10 min read

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.

October 2026 · 10 min read

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.

October 2026 · 11 min read

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.

October 2026 · 12 min read

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.

October 2026 · 11 min read

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.

September 2026 · 11 min read

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.

September 2026 · 11 min read

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.

September 2026 · 11 min read

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.

September 2026 · 11 min read

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.

September 2026 · 11 min read

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.

September 2026 · 10 min read

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.

September 2026 · 11 min read

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.

September 2026 · 9 min read

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.

September 2026 · 9 min read

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.

September 2026 · 9 min read

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.

September 2026 · 12 min read

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.

September 2026 · 10 min read

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.

September 2026 · 10 min read

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.

August 2026 · 14 min read

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.

August 2026 · 12 min read

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.

August 2026 · 9 min read

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.

July 2026 · 11 min read

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.

July 2026 · 12 min read

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.

July 2026 · 11 min read

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.

July 2026 · 10 min read

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.

July 2026 · 9 min read

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.

July 2026 · 10 min read

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.

July 2026 · 10 min read

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.

July 2026 · 10 min read

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.

June 2026 · 10 min read

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.

June 2026 · 12 min read

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.

June 2026 · 11 min read

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.

June 2026 · 13 min read

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.

June 2026 · 12 min read

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.

June 2026 · 14 min read

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.

June 2026 · 11 min read

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.

June 2026 · 11 min read

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.

June 2026 · 10 min read

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.

June 2026 · 10 min read

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.

June 2026 · 11 min read

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.

June 2026 · 11 min read

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.

June 2026 · 9 min read

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.

June 2026 · 11 min read

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.

June 2026 · 10 min read

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.

June 2026 · 10 min read

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.

May 2026 · 14 min read

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.

May 2026 · 11 min read

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.

March 2026 · 14 min read

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.

March 2026 · 12 min read

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.

March 2026 · 16 min read

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.

February 2026 · 12 min read

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.

February 2026 · 9 min read

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.

January 2025 · 12 min read

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.

January 2025 · 13 min read