Start with the application surface, not the agent framework. A browser can finish a browser task. It cannot become a native Android app merely by using a mobile viewport.
Before provisioning anything, ask whether a documented HTTP API can perform the operation. It is often easier to validate a structured response than infer success from a screen. If the task genuinely needs a UI, choose the UI that the user actually uses.
Three surfaces, three contracts
| Surface | Useful when | What you verify |
|---|---|---|
| HTTP API | The operation has a supported endpoint | Status, response schema, resulting record |
| Browser | The workflow exists on the web | Page state, navigation, saved result |
| Native Android | The workflow needs an installed APK or Android system UI | App identity, screen state, persisted result |
For example, checking a web checkout belongs in a browser. Testing an APK’s runtime permission prompt belongs on Android. A Linux command runner belongs in a code sandbox. Those are runtime decisions, not rankings of the products involved.
What Mobilebox supplies
Mobilebox supplies Android 14 arm64 sandboxes through REST and MCP. You can install an APK, read a numbered screen tree, act on elements, take a screenshot, and preserve app data by parking the phone. The API reference defines the actual surface.
An Android sandbox is not a physical handset. Do not infer camera fidelity, SIM behavior, hardware performance, Google Play certification, or production app compatibility from a successful demo. Run the exact target build and verify the features your task depends on.
When a browser is enough
If the same outcome exists in the web app, a browser may give you clearer DOM selectors, network diagnostics, and fewer mobile-specific prompts. Keep that path unless native behavior is the thing you need to exercise.
If the mobile app and website implement different features, test them separately. Passing on one surface says little about the other. “Works on mobile” is too broad an acceptance criterion; “the Android build persists this note after reopening” is a check you can run.
A cheap way to decide
Write the intended outcome in one sentence. Name the surface and the evidence that would prove it. Try the smallest representative flow before migrating a whole agent. Our sandbox comparison expands that decision across code, browser, and Android environments.