Mobile Testing
Quick Mobile Checklist:
- Test on latest iOS + Android flagship devices
- Test offline mode and network transitions
- Verify push notifications work
- Test gesture interactions (swipe, pinch)
- Check permissions flow (camera, location, notifications)
Critical Success Factors:
- Emulators for 80% of testing, real devices for 20% critical paths
- Test on devices your users actually use (analytics)
- Device fragmentation is Android's biggest challenge
Quick Reference Card
When to Use
- Native app development (iOS/Android)
- Hybrid apps (React Native, Flutter)
- Mobile web / PWAs
- App store submission preparation
iOS vs Android Differences
| Aspect |
iOS |
Android |
| OS Versions |
2-3 supported |
10+ in use |
| Devices |
~40 models |
1000+ variants |
| Back Button |
Gesture/nav |
Hardware/software |
| Permissions |
Single prompt |
Runtime granular |
| App Store |
Strict review |
Google Play + sideload |
Device Coverage Tiers
| Tier |
Coverage |
Devices |
| Tier 1 |
60% users |
iPhone 15, Galaxy S24, iPad |
| Tier 2 |
30% users |
iPhone 14/13, Pixel 8 |
| Tier 3 |
10% users |
Older devices, other manufacturers |
Mobile-Specific Scenarios
// Offline mode testing
test('app works offline', async () => {
await driver.toggleAirplaneMode();
await driver.findElement('view-saved-items').click();
const items = await driver.findElements('saved-item');
expect(items.length).toBeGreaterThan(0);
const banner = await driver.findElement('offline-banner');
expect(banner.getText()).toContain('No internet');
await driver.toggleAirplaneMode(); // Restore
});
// Location testing
test('location-based features', async () => {
await driver.setGeoLocation({
latitude: 37.7749,
longitude: -122.4194,
altitude: 0
});
const stores = await driver.findElement('stores-list');
expect(stores.getText()).toContain('San Francisco');
});
// Permission testing (Android)
test('camera permission flow', async () => {
await driver.findElement('take-photo').click();
// Handle permission dialog
await driver.findElement(
'com.android.packageinstaller:id/permission_allow_button'
).click();
expect(await driver.findElement('camera-view')).toBeDefined();
});
Agent-Driven Mobile Testing
// Cross-platform mobile testing
await Task("Mobile Test Suite", {
platforms: ['iOS', 'Android'],
deviceTiers: [1, 2],
tests: 'regression-suite',
parallelDevices: 5,
deviceFarm: 'browserstack'
}, "qe-test-executor");
// Device farm integration
await Task("Device Farm Execution", {
service: 'browserstack',
devices: [
'iPhone 15 - iOS 17',
'Samsung Galaxy S24 - Android 14'
],
recordVideo: true,
captureNetworkLogs: true
}, "qe-test-executor");
Agent Coordination Hints
Memory Namespace
aqe/mobile-testing/
├── device-matrix/* - Device coverage strategy
├── platform-tests/* - iOS/Android specific tests
├── gesture-library/* - Reusable gesture patterns
└── performance/* - Mobile performance metrics
Fleet Coordination
const mobileFleet = await FleetManager.coordinate({
strategy: 'mobile-testing',
agents: [
'qe-test-executor', // Cross-platform execution
'qe-performance-tester', // Mobile performance
'qe-visual-tester' // Screen size validation
],
topology: 'parallel'
});
Related Skills
Remember
Test on real devices for critical flows. Emulators catch 80% of bugs but real devices are needed for actual performance, sensor behavior, and platform quirks.
With Agents: qe-test-executor orchestrates testing across device farms, manages platform differences, and tests 10+ devices in parallel.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: mobile-testing-33description: Comprehensive mobile testing for iOS and Android platforms including gestures, sensors, permissions, device fragmentation, and performance. Use when testing native apps, hybrid apps, or mobile web, ensuring quality across 1000+ device variants. Use when this capability is needed.4---56# Mobile Testing78<default_to_action>9When testing mobile applications:101. DEFINE device coverage matrix (Tier 1: 60%, Tier 2: 30%, Tier 3: 10%)112. TEST platform differences (iOS ≠ Android: back button, permissions, UI)123. VALIDATE touch gestures (tap, swipe, pinch, long-press)134. TEST mobile-specific scenarios (offline, low battery, interruptions)145. USE real devices for critical paths, emulators for fast feedback1516**Quick Mobile Checklist:**17- Test on latest iOS + Android flagship devices18- Test offline mode and network transitions19- Verify push notifications work20- Test gesture interactions (swipe, pinch)21- Check permissions flow (camera, location, notifications)2223**Critical Success Factors:**24- Emulators for 80% of testing, real devices for 20% critical paths25- Test on devices your users actually use (analytics)26- Device fragmentation is Android's biggest challenge27</default_to_action>2829## Quick Reference Card3031### When to Use32- Native app development (iOS/Android)33- Hybrid apps (React Native, Flutter)34- Mobile web / PWAs35- App store submission preparation3637### iOS vs Android Differences38| Aspect | iOS | Android |39|--------|-----|---------|40| OS Versions | 2-3 supported | 10+ in use |41| Devices | ~40 models | 1000+ variants |42| Back Button | Gesture/nav | Hardware/software |43| Permissions | Single prompt | Runtime granular |44| App Store | Strict review | Google Play + sideload |4546### Device Coverage Tiers47| Tier | Coverage | Devices |48|------|----------|---------|49| **Tier 1** | 60% users | iPhone 15, Galaxy S24, iPad |50| **Tier 2** | 30% users | iPhone 14/13, Pixel 8 |51| **Tier 3** | 10% users | Older devices, other manufacturers |5253---5455## Mobile-Specific Scenarios5657```javascript58// Offline mode testing59test('app works offline', async () => {60 await driver.toggleAirplaneMode();6162 await driver.findElement('view-saved-items').click();63 const items = await driver.findElements('saved-item');64 expect(items.length).toBeGreaterThan(0);6566 const banner = await driver.findElement('offline-banner');67 expect(banner.getText()).toContain('No internet');6869 await driver.toggleAirplaneMode(); // Restore70});7172// Location testing73test('location-based features', async () => {74 await driver.setGeoLocation({75 latitude: 37.7749,76 longitude: -122.4194,77 altitude: 078 });7980 const stores = await driver.findElement('stores-list');81 expect(stores.getText()).toContain('San Francisco');82});8384// Permission testing (Android)85test('camera permission flow', async () => {86 await driver.findElement('take-photo').click();8788 // Handle permission dialog89 await driver.findElement(90 'com.android.packageinstaller:id/permission_allow_button'91 ).click();9293 expect(await driver.findElement('camera-view')).toBeDefined();94});95```9697---9899## Agent-Driven Mobile Testing100101```typescript102// Cross-platform mobile testing103await Task("Mobile Test Suite", {104 platforms: ['iOS', 'Android'],105 deviceTiers: [1, 2],106 tests: 'regression-suite',107 parallelDevices: 5,108 deviceFarm: 'browserstack'109}, "qe-test-executor");110111// Device farm integration112await Task("Device Farm Execution", {113 service: 'browserstack',114 devices: [115 'iPhone 15 - iOS 17',116 'Samsung Galaxy S24 - Android 14'117 ],118 recordVideo: true,119 captureNetworkLogs: true120}, "qe-test-executor");121```122123---124125## Agent Coordination Hints126127### Memory Namespace128```129aqe/mobile-testing/130├── device-matrix/* - Device coverage strategy131├── platform-tests/* - iOS/Android specific tests132├── gesture-library/* - Reusable gesture patterns133└── performance/* - Mobile performance metrics134```135136### Fleet Coordination137```typescript138const mobileFleet = await FleetManager.coordinate({139 strategy: 'mobile-testing',140 agents: [141 'qe-test-executor', // Cross-platform execution142 'qe-performance-tester', // Mobile performance143 'qe-visual-tester' // Screen size validation144 ],145 topology: 'parallel'146});147```148149---150151## Related Skills152- [accessibility-testing](../accessibility-testing/) - VoiceOver, TalkBack153- [performance-testing](../performance-testing/) - Mobile performance154- [compatibility-testing](../compatibility-testing/) - Device compatibility155156---157158## Remember159160**Test on real devices for critical flows.** Emulators catch 80% of bugs but real devices are needed for actual performance, sensor behavior, and platform quirks.161162**With Agents:** `qe-test-executor` orchestrates testing across device farms, manages platform differences, and tests 10+ devices in parallel.163164---165> Converted and distributed by [TomeVault](https://tomevault.io/claim/proffesor-for-testing) — claim your Tome and manage your conversions.166<!-- tomevault:4.0:skill_md:2026-04-11 -->