
Issue #6 — “The Case of the Phantom Tap”
Issue #6 — “The Case of the Phantom Tap”

🌼 Lady Daisy Bug: A QA & Test Automation Digest with Personality
Welcome to Lady Daisy Bug — your new favorite corner of the internet where quality assurance meets charm, code, and character. Whether you’re debugging tests in the moonlight or strategizing a flawless regression suite before your first coffee, this newsletter’s for you.
I’m your host, Lady Daisy Bug — part test whisperer, part bug wrangler, and full-time believer in thoughtful testing. Each issue will blend bite-sized insights, automation tips, and a little QA storytelling to brighten your day (and your pipelines).
Let’s squash some bugs — and do it in style.
🌟 Bug of the Week: The Case of the Phantom Tap
Story:
I tapped the button. My logs confirmed the tap. The element was visible, enabled, and tappable. But the app… did nothing.
This wasn’t a one-off. It happened in the same spot, in the same test, over multiple builds. And yet… everything looked fine.
I even added logs:
print("🔍 Found button, attempting tap...")
button.click()
print("✅ Tap complete.")
And the logs came back clean every time. But the expected action — an alert — never appeared.
Symptoms:
- The element existed and was interactable.
- Tap was called — no exceptions thrown.
- App UI showed no response — no toast, no navigation, no change.
- Issue was inconsistent — happened on CI more than locally.
Root Cause:
The button was visually rendered, but it was layered under a semi-transparent overlay — like a loading spinner or modal backdrop — that intercepted touch events.
In manual testing, the overlay dismissed before I tapped. In automation, my tap was too fast — triggering while the overlay was still fading out.
The UI lied. The DOM lied. My instincts didn’t.
How I figured it out:
- Ran the test with 𝚊𝚍𝚋 𝚜𝚌𝚛𝚎𝚎𝚗𝚛𝚎𝚌𝚘𝚛𝚍 and replayed it at 0.25x speed.
- Noticed a slight shimmer — the overlay was still fading when the tap occurred.
- Dumped the layout using 𝚞𝚒𝚊𝚞𝚝𝚘𝚖𝚊𝚝𝚘𝚛 𝚍𝚞𝚖𝚙 — and sure enough, a full-screen 𝙵𝚛𝚊𝚖𝚎𝙻𝚊𝚢𝚘𝚞𝚝 with 𝚌𝚕𝚒𝚌𝚔𝚊𝚋𝚕𝚎=𝚝𝚛𝚞𝚎 was blocking the view.
Fix:
I added a check to wait for the overlay to disappear before tapping:
WebDriverWait(driver, 10).until(
EC.invisibility_of_element_located((By.ID, "overlay_loader"))
)
And just like that — the phantom vanished.
📌 Lesson: Just because .𝚌𝚕𝚒𝚌𝚔() returns cleanly doesn’t mean the tap landed. UI can be deceptive — and race conditions love attention.
🧪 Test Garden Tip: Detect and Wait for Overlays
If your UI has loading states, animations, or modals:
✅ Add checks for known overlays or spinners:
WebDriverWait(driver, 10).until(
EC.invisibility_of_element_located((By.ID, "loading_spinner"))
)
✅ Use 𝚍𝚛𝚒𝚟𝚎𝚛.𝚐𝚎𝚝_𝚜𝚌𝚛𝚎𝚎𝚗𝚜𝚑𝚘𝚝_𝚊𝚜_𝚏𝚒𝚕𝚎() to capture visual states when you’re debugging silent failures.
✅ For flaky clicks, you can tap via JS or coordinates, but always ask: “Is there something else in the way?”
💬 Lady’s Log
“In automation, timing isn’t everything. It’s the only thing.”
False positives aren’t the only tricksters. Sometimes your test thinks it tapped… Sometimes your app thinks it never got touched. And somewhere in the middle, an invisible overlay eats your click like a silent bug sandwich.
Stay patient. Stay observant. And never trust the first screenshot.
— 𝓛𝓪𝓭𝔂 𝓓𝓪𝓲𝓼𝔂 𝓑𝓾𝓰 🐞🌼
📚 Petal Picks
- 👻 “Waiting Strategies — Appium and Selenium Automation” — Lana Begunova
- 📸 Tool: Appium Screen Recording + slow motion media playback
- 🧠 “Test Flakiness in Automation” — Lana Begunova
💌 Next Issue Teaser:
“The Screenshot Diff That Lied” — The baseline was perfect. The new image was identical. So why was the test failing?
Hint: anti-aliasing, font rendering, and the sneaky chaos of pixel-perfect comparisons.