The "Localhost" Bias can make your app feel fast. You need to talk directly to the browser engine to test this properly. Emulate a "Bad 3G" connection using theThe "Localhost" Bias can make your app feel fast. You need to talk directly to the browser engine to test this properly. Emulate a "Bad 3G" connection using the

The "Spinner of Death": Why Localhost Latency is Lying to You

The "Localhost" Bias

We've all been there.

\ On your machine, the API responds in 5ms. The UI updates instantly. You click "Submit," the modal closes, and you move on to the next ticket. Status: Done. ✅

\ But on a user's 4G connection in a subway tunnel, that same API call takes 2 seconds.

\ Because you tested on localhost (Gigabit Fiber), you missed critical race conditions:

  • 🖱️ The Double-Click Bug: The user clicks "Submit" twice because "nothing happened," charging their credit card twice.
  • 🔄 The Infinite Spinner: The loader gets stuck forever because a packet was dropped.
  • 🏎️ Race Conditions: Data arrives out of order, overwriting the user's input.

\ Your app feels fast because you are cheating. 0ms latency is a lie.

\ The Wrong Solutiontime.sleep() \n I often see tests that look like this: \n

# ❌ Don't do this page.click("#submit") time.sleep(2) # Simulating "network lag" expect(page.locator(".success")).to_be_visible()

Why this failssleep() just pauses the test execution script. The browser engine itself is still blazing fast. It doesn't simulate network queues, slow handshakes, or constrained bandwidth. You aren't testing the network; you're just making your test suite slower.

The Right Solution: Network Throttling (CDP)

To test this properly in automation, you need to talk directly to the browser engine. You need to tell Chrome: "Pretend you are on a terrible 50kb/s connection."

\ We can do this using the Chrome DevTools Protocol (CDP) within Playwright. This forces the browser to handle packet delays and loading states exactly as a real user would experience.

\ The Code (Python + Playwright)

Here is how to inject a "Bad 3G" connection into your test: \n

from playwright.sync_api import Page, expect def test_slow_network_handling(page: Page): # 1. Connect to Chrome DevTools Protocol (CDP) # This gives us low-level access to the browser client = page.context.new_cdp_session(page) # 2. 🧨 CHAOS: Emulate "Bad 3G" # Latency: 2000ms (2 seconds) # Throughput: 50kb/s (Very slow) client.send("Network.emulateNetworkConditions", { "offline": False, "latency": 2000, "downloadThroughput": 50 * 1024, "uploadThroughput": 50 * 1024 }) page.goto("https://myapp.com/search") # 3. Trigger the slow action page.fill("#search-box", "Playwright") page.click("#search-btn") # 4. Resilience Assertion # Check 1: Does the UI prevent double submission? expect(page.locator("#search-btn")).to_be_disabled() # Check 2: Does the user get immediate feedback? expect(page.locator(".loading-spinner")).to_be_visible()

Why this matters: This test proves your UI provides feedback. If a user clicks a button and waits 2 seconds with no visual feedback, they will assume the app is broken.

But wait, what about Mobile Apps?📱 \ The script above is perfect for automated CI pipelines running Chrome. But CDP has a major limitation:It doesn't work on a physical iPhone or Android device**.

\ If you are a Mobile Developer or manual QA, you can't "attach Playwright" to the phone in your hand to simulate a subway tunnel.

\ The Manual Alternative (System-Level Proxy)

To test latency on a real device without writing code, you need a System-Level Proxy that sits between your phone and the internet.

\ You can use desktop tools like Charles Proxy (if you enjoy configuring Java apps and firewalls), or you can use a cloud-based tool like Chaos Proxy (which I'm building).

\ It allows you to simulate "Subway Mode" (2s latency) on any device—iPhone, Android, or Laptop—just by connecting to a Wi-Fi proxy.

\ The Workflow:

  1. Create a "Chaos Rule" (e.g., Latency = 2000ms).
  2. Connect your phone to the proxy via QR code.

3. Watch your app struggle (and then fix it).

Summary

  1. Stop trusting Localhost. It hides your worst bugs.
  2. Automated: Use Playwright + CDP to inject latency in your E2E tests.
  3. Manual/Mobile: Use a Chaos Proxy to test resilience on physical devices.

Happy Testing! 🧪

If you found this useful, check out my previous post: Stop Testing Success. Kill the Database.

\

Market Opportunity
WHY Logo
WHY Price(WHY)
$0,00000001619
$0,00000001619$0,00000001619
%0,00
USD
WHY (WHY) Live Price Chart
Disclaimer: The articles reposted on this site are sourced from public platforms and are provided for informational purposes only. They do not necessarily reflect the views of MEXC. All rights remain with the original authors. If you believe any content infringes on third-party rights, please contact [email protected] for removal. MEXC makes no guarantees regarding the accuracy, completeness, or timeliness of the content and is not responsible for any actions taken based on the information provided. The content does not constitute financial, legal, or other professional advice, nor should it be considered a recommendation or endorsement by MEXC.

You May Also Like

Botanix launches stBTC to deliver Bitcoin-native yield

Botanix launches stBTC to deliver Bitcoin-native yield

The post Botanix launches stBTC to deliver Bitcoin-native yield appeared on BitcoinEthereumNews.com. Botanix Labs has launched stBTC, a liquid staking token designed to turn Bitcoin into a yield-bearing asset by redistributing network gas fees directly to users. The protocol will begin yield accrual later this week, with its Genesis Vault scheduled to open on Sept. 25, capped at 50 BTC. The initiative marks one of the first attempts to generate Bitcoin-native yield without relying on inflationary token models or centralized custodians. stBTC works by allowing users to deposit Bitcoin into Botanix’s permissionless smart contract, receiving stBTC tokens that represent their share of the staking vault. As transactions occur, 50% of Botanix network gas fees, paid in BTC, flow back to stBTC holders. Over time, the value of stBTC increases relative to BTC, enabling users to redeem their original deposit plus yield. Botanix estimates early returns could reach 20–50% annually before stabilizing around 6–8%, a level similar to Ethereum staking but fully denominated in Bitcoin. Botanix says that security audits have been completed by Spearbit and Sigma Prime, and the protocol is built on the EIP-4626 vault standard, which also underpins Ethereum-based staking products. The company’s Spiderchain architecture, operated by 16 independent entities including Galaxy, Alchemy, and Fireblocks, secures the network. If adoption grows, Botanix argues the system could make Bitcoin a productive, composable asset for decentralized finance, while reinforcing network consensus. This is a developing story. This article was generated with the assistance of AI and reviewed by editor Jeffrey Albus before publication. Get the news in your inbox. Explore Blockworks newsletters: Source: https://blockworks.co/news/botanix-launches-stbtc
Share
BitcoinEthereumNews2025/09/18 02:37
Bitcoin ETFs Surge with 20,685 BTC Inflows, Marking Strongest Week

Bitcoin ETFs Surge with 20,685 BTC Inflows, Marking Strongest Week

TLDR Bitcoin ETFs recorded their strongest weekly inflows since July, reaching 20,685 BTC. U.S. Bitcoin ETFs contributed nearly 97% of the total inflows last week. The surge in Bitcoin ETF inflows pushed holdings to a new high of 1.32 million BTC. Fidelity’s FBTC product accounted for 36% of the total inflows, marking an 18-month high. [...] The post Bitcoin ETFs Surge with 20,685 BTC Inflows, Marking Strongest Week appeared first on CoinCentral.
Share
Coincentral2025/09/18 02:30
Nvidia acquired Groq's assets for $20 billion, but officially stated that it did not acquire the entire company.

Nvidia acquired Groq's assets for $20 billion, but officially stated that it did not acquire the entire company.

PANews reported on December 25th that, according to CNBC, Nvidia has agreed to acquire all assets of AI chip startup Groq (excluding its GroqCloud business) for
Share
PANews2025/12/25 08:25