Skip to main content

Phase 1 — Mobile Device Matrix & APK Distribution

Companion to: phase1-mobile-device-test-plan.md Task: E4 — Real-device mobile testing Status: Ready for procurement + build once EAS login is unblocked


1. Device matrix​

1.1 Required devices (4)​

All four devices are required for Phase 1 sign-off. They span three Android major versions (11 / 13 / 14), three form factors (phone / phablet / tablet), and two price tiers (budget / flagship) to reflect actual KeyNova property staff device mix.

#DeviceForm factorScreenResolutionAndroidChipsetRAMWhy this device
1Samsung Galaxy A23Phone5.8"1080 × 240813Snapdragon 6804 GBBudget phone — dominant at demo property staff. Mid-range chipset, lower RAM. Tests low-end performance.
2Google Pixel 6Phone6.4"1080 × 240014Tensor8 GBStock Android, latest version. Baseline for "how should it look" screenshots. Tests modern phone.
3Samsung Galaxy S23 UltraPhablet6.8"1440 × 308814Snapdragon 8 Gen 212 GBManager / owner day-to-day phone. Large screen tests KPI card layouts at phablet widths. S-Pen not tested.
4Samsung Galaxy Tab A8Tablet10.5"1200 × 192011Unisoc T6184 GBF&B captain tablet / manager tablet. Older Android (11). Tests backward-compat and tablet portrait layout.

1.2 Android version coverage​

Android versionCovered byRationale
Android 11Tab A8Older tablets common at demo properties; Expo SDK 50 minimum is Android 6, but in practice the oldest we see is 11
Android 13Galaxy A23Current modal version at retail — most budget phones ship with 13
Android 14Pixel 6, S23 UltraLatest stable; covers notification channel changes, predictive back gesture, and partial media permissions

No device on Android 12 — 13 and 14 are behavior-similar enough that the incremental coverage isn't worth a 5th device.

1.3 iOS — out of scope for Phase 1​

Reconfirming: no iOS devices are included. Per D5, iOS builds are not configured for any of the 4 apps. Phase 2 will add:

  • Apple Developer account enrollment
  • Bundle ID + provisioning profile registration
  • eas.json iOS credentials
  • Minimum 2 iOS devices (iPhone 12 + iPad 9th gen)

1.4 Procurement​

If the QA team does not have physical devices on hand, procure from:

  • Rental: Browserstack App Live (24h passes) — acceptable fallback for Android 11 and 13
  • In-office: Confirm inventory with the dev team (Pixel 6 and one Samsung should be available)
  • Property staff loan: Ask one of the 5 demo properties to loan a staff device for 3 days (covers the "real end-user hardware" case)

Budget estimate if purchased new: Total ~₹1.3 lakh (A23 ~₹16k + Pixel 6 ~₹35k + S23 Ultra ~₹95k + Tab A8 ~₹15k, used/refurbished market prices).

1.5 Device preparation checklist​

Before testing begins, each device must be prepared:

  • Factory reset (or at minimum, cleared of prior test data)
  • Signed into a test Google account (NOT a personal account)
  • Settings → Security → Install unknown apps → Allow for the browser that will download the APK
  • Settings → Developer options → USB debugging → ON (for adb logcat capture)
  • Settings → Developer options → Stay awake while charging → ON
  • WiFi connected to hotel-equivalent network (QA lab WiFi)
  • SIM with 4G data for cellular tests (prepaid Jio/Airtel)
  • Charging cable + charger dedicated to the device
  • Screen-record enabled (built-in on Android 11+)
  • TalkBack training: tester has practiced the basic gestures before testing accessibility

2. APK distribution plan​

2.1 BLOCKED dependency — Expo account login​

Blocker carried from task D5: The hmp-mobile-apps workspace has never had eas login executed in this environment. EAS builds require interactive browser login. User input is required to unblock:

  1. Open terminal in C:/CLProjects/HMP/hmp-mobile-apps
  2. Run npx eas-cli login
  3. Log in with the KeyNova mobile team Expo account (credentials in 1Password — ask #keynova-ops)
  4. Verify with npx eas-cli whoami — should print the expo account handle

Until this step is complete, no APKs can be produced. All 4 apps are blocked on this single step.

2.2 EAS build commands (per app)​

All 4 apps have an existing eas.json with development, preview, and production profiles. Preview profile is the correct target for QA testing (internal distribution, API points to staging, buildType: apk).

Run these from each app's directory:

# HK
cd C:/CLProjects/HMP/hmp-mobile-apps/apps/housekeeping
npx eas-cli build --platform android --profile preview --non-interactive

# Manager
cd C:/CLProjects/HMP/hmp-mobile-apps/apps/manager
npx eas-cli build --platform android --profile preview --non-interactive

# F&B
cd C:/CLProjects/HMP/hmp-mobile-apps/apps/fnb
npx eas-cli build --platform android --profile preview --non-interactive

# Guest
cd C:/CLProjects/HMP/hmp-mobile-apps/apps/guest
npx eas-cli build --platform android --profile preview --non-interactive

Each build takes ~20-30 minutes on EAS cloud servers. Run all 4 in parallel (4 separate terminals) — EAS free tier allows 1 concurrent build, so budget ~2 hours serial if on free tier; ~30 min parallel if on paid plan. Verify plan with npx eas-cli whoami.

2.3 Production-profile builds (for final go/no-go test)​

For the Apr 11 re-test once prod URL is cut over:

cd C:/CLProjects/HMP/hmp-mobile-apps/apps/housekeeping
npx eas-cli build --platform android --profile production --non-interactive
# repeat for manager, fnb, guest

Before running production profile builds:

  1. Update EXPO_PUBLIC_API_URL in each app's eas.json → production.env to the final prod domain (https://api.keynova.in/api assumed)
  2. Commit the change
  3. Increment versionCode in app.json (production profile has autoIncrement: true — verify)
  4. Kick off builds

2.4 Download + distribution​

After each build completes, EAS prints a download URL:

https://expo.dev/accounts/<account>/projects/<app>/builds/<build-id>

The APK is downloadable from the "Download" button on that page, or via eas build:list --platform android --profile preview --limit 1 --json for automation.

Recommended distribution flow for QA:

  1. QA lead downloads all 4 APKs to a shared folder (e.g., OneDrive KeyNova/Phase1/Mobile-APKs/)
  2. Name the files consistently:
    • keynova-housekeeping-preview-YYYYMMDD-HHMM.apk
    • keynova-manager-preview-YYYYMMDD-HHMM.apk
    • keynova-fnb-preview-YYYYMMDD-HHMM.apk
    • keynova-guest-preview-YYYYMMDD-HHMM.apk
  3. Upload APKs to an internal file-share URL accessible from test devices (OneDrive with a public share link works)
  4. Generate a QR code for each share URL and print them on a single-page "device installer" sheet

2.5 Sideload instructions for property staff devices​

Give the following one-page instructions to the QA tester and include in the staff onboarding pack:


How to install the KeyNova apps on your Android device

  1. On your device, open Settings → Security → Install unknown apps
  2. Select your browser (Chrome) and toggle Allow from this source
  3. Open the KeyNova APK share link (from your manager or QR code)
  4. Tap the APK file for the app you need (Housekeeping / Manager / F&B / Guest)
  5. Tap Download when prompted
  6. Once downloaded, tap the file in the notification tray or Downloads folder
  7. Tap Install (Google Play Protect may warn about an "unverified app" — tap Install anyway)
  8. Once installed, tap Open
  9. Log in with the credentials your manager provided

If the install fails:

  • Make sure you have at least 200 MB free storage
  • Uninstall any previous version first (Settings → Apps → KeyNova → Uninstall)
  • Ask your manager for a fresh APK link

2.6 Updating devices after a new build​

For repeated test cycles, use ADB for faster push (requires USB cable + USB debugging):

# Connect device via USB
adb devices # verify connected

# Install (replaces existing)
adb install -r keynova-housekeeping-preview-YYYYMMDD-HHMM.apk
adb install -r keynova-manager-preview-YYYYMMDD-HHMM.apk
adb install -r keynova-fnb-preview-YYYYMMDD-HHMM.apk
adb install -r keynova-guest-preview-YYYYMMDD-HHMM.apk

For wireless ADB (Android 11+): adb connect <device-ip>:5555 after enabling wireless debugging in developer options.

2.7 APK verification before distribution​

Before handing an APK to the QA team, verify:

# Check signing (should be Expo internal signing key for preview, final keystore for production)
keytool -printcert -jarfile keynova-housekeeping-preview-YYYYMMDD-HHMM.apk

# Check version
aapt dump badging keynova-housekeeping-preview-YYYYMMDD-HHMM.apk | grep -E "(package|versionCode|versionName|application-label)"

Expected output (example):

package: name='com.keynova.housekeeping' versionCode='1' versionName='1.0.0'
application-label:'KeyNova Housekeeping'

If the application-label is anything other than "KeyNova Housekeeping" (e.g. "HMP Housekeeping"), the build used stale assets — abort and rebuild after verifying app.json.

2.8 Rollback plan​

If a critical bug is found in a preview build during testing:

  1. Tester reports via Slack #keynova-phase1-launch with repro steps, device, APK version
  2. Mobile team fixes on branch fix/phase1-<issue-id> in hmp-mobile-apps
  3. New preview APK built (same command as above, versionCode auto-increments)
  4. QA lead downloads new APK, uploads to shared folder with new timestamp in filename
  5. Testers uninstall old version (adb uninstall com.keynova.<app>) and install new version
  6. Retest only the failing scenarios + smoke test (login, one core flow, logout)

2.9 Final production build handoff (Apr 13)​

Once QA signs off on the preview APKs and prod URL is confirmed:

  1. Mobile team bumps versionName to 1.0.0-phase1 in each app.json
  2. Mobile team runs production profile build for all 4 apps (commands in section 2.3)
  3. APKs archived in hmp-infrastructure/releases/phase1-mobile/ with signed checksum
  4. Distribution URL (or Play Store internal track link) shared with the 5 demo properties' managers on Apr 13 afternoon
  5. Property staff install during Apr 13 staff briefing before the Apr 14 launch morning

3. Device assignment plan (for a 2-tester team)​

TesterDevicesDaysApps owned
Tester A (Android senior)Pixel 6 + S23 UltraApr 7-10HK (day 1-2), F&B (day 3-4)
Tester B (Android mid)Galaxy A23 + Tab A8Apr 7-10Manager (day 1-2), Guest (day 3-4)
BothPair testing across all 4 devicesApr 11-13Cross-app, re-tests, final sign-off

If only 1 tester is available, double the timeline: complete HK+Manager on Apr 7-9, F&B+Guest on Apr 10-12, cross-app + sign-off on Apr 13. The launch date does not move.


4. Reporting format​

Per device × per app, fill out:

Device: Samsung Galaxy A23 / Android 13 / Chrome 122
App: KeyNova Housekeeping v1.0.0 (versionCode 3) — preview APK
Tester: <initials>
Date: 2026-04-XX
Time: HH:MM
Network: WiFi (hotel lab) / 4G cellular

Result summary:
- Passed: X / 16 checks
- Failed: Y / 16 checks
- Skipped: Z / 16 checks

Failed checks:
HK-14: Real-time updates not received
Repro: <steps>
Expected: Task appears within 5s
Actual: Task only appears after pull-to-refresh (30s)
Screenshot: <link>
adb logcat: <link>

Notes:
<freetext>

Store per-run reports in hmp-docs/docs/testing/phase1-mobile-artifacts/<date>/ (QA lead creates folder on day 1).


5. References​

  • phase1-mobile-device-test-plan.md — main test plan with per-app checklists
  • phase1-mobile-acceptance-checklist.md — single-page sign-off checklist
  • hmp-mobile-apps/apps/*/eas.json — per-app EAS build config
  • hmp-mobile-apps/apps/*/app.json — per-app Expo config (name, icon, splash)
  • Task D5 — branding handoff and EAS login blocker