Skip to content

QA / manual test checklist for the battery-monitoring changes #35

Description

@almothafar

Purpose

A living manual-QA checklist for the battery-monitoring work. Tracks what to check, how, where, and whether it's verified — so testing is done deliberately on a real device rather than ad-hoc.

Refreshed 2026-07-15: navigation paths updated to the #112 settings structure (General / Alerts / Notification Behaviour), rows added for features shipped since filing (#108, #109, #112#114, #122#125, #139, #151), stale notes dropped (#34 icons are done). Existing verification marks preserved.

Legend: ✅ verified · ⏳ not yet verified · 🔬 needs a physical device (can't be done reliably on an emulator) · 🤖 covered by automated unit tests (CI).

How to test

  • Install the debug build: ./gradlew :app:installDebug (or adb install -r -g app/build/outputs/apk/debug/app-debug.apk), or Run from Android Studio.
  • Grant the notification permission when prompted (Android 13+).

Automated (CI) — 🤖 no manual action needed

  • 🤖 getBatteryPercentage() guards invalid scale (BatteryDOTest)
  • 🤖 Quiet-hours range logic: same-day / overnight / equal / boundaries (NotificationServiceTest)
  • 🤖 Temperature °C↔°F conversion + "45 °F ≠ 45 °C threshold" (TemperatureUtilsTest)
  • 🤖 Capacity estimate charge_counter ÷ capacity% (SystemServiceTest)
  • 🤖 Rate smoothing + current/rate gates (BatteryRateTrackerTest)
  • 🤖 Detector decision cores (FastDrainDetectorTest, SlowChargeDetectorTest)
  • 🤖 Charge-speed power/tiers (ChargeSpeedTest), receiver wiring (PowerConnectionReceiverTest, BatteryLevelReceiverTest)
  • 🤖 Health tracking (BatteryHealthTrackerTest/StateTest), slider helper (BatteryRangeSliderHelperTest)

Core behaviour — manual

# Check How / Where Status
1 App launches, shows battery % + status Open app ✅ (emulator)
2 Persistent notification shows live % · status · temp, silent + ongoing Pull notification shade ✅ (emulator)
3 Warning alert fires at warning level (new copy: "Battery getting low", #114) Let battery pass the warning % (or set warning high)
4 Critical alert fires at critical level (title now "Battery critically low", #114) Let battery pass the critical % ✅ (emulator, in-app; copy re-check ⏳)
5 Full-charge alert at 100% while charging (new copy nudges unplugging, #114) Charge to full
6 Alerts arrive while app is fully closed / swiped away Swipe app away, let level cross a threshold, wait 🔬 ⏳
7 Monitoring + persistent notification resume after reboot Reboot device, don't open app, check shade 🔬 ⏳

Temperature alert (#18)

# Check How / Where Status
8 "High Temperature Alert" toggle + threshold slider present Settings → Alerts → High Temperature ✅ (emulator, pre-#112 path)
9 Threshold shows user's unit; switching to °F shows °F range (45 °C ↔ 113 °F) Change General → Temperature Unit, revisit slider ✅ (emulator)
10 Temperature reads in chosen unit on main + details Main screen "Temperature" row ✅ (emulator: 25 °C / 77 °F)
11 Alert actually fires when battery gets hot (hysteresis, one alert per hot spell) Heavy load / charging in warm room 🔬 ⏳

Charging & rate (#108, #122, #124, #125)

# Check How / Where Status
12 Charge-connected announcement shows source · tier · ~W; style pref respected (toast / notification / none) Plug in; style under Notification Behaviour → Appearance 🔬 ⏳
13 Ongoing notification: %/h while discharging; tier + ~W while charging (#125) Shade, both directions 🔬 ⏳
14 Details table: Charge/Drain rate + Current rows appear after warm-up, hidden when unknown Home details table
15 "Time to full" row while charging, hidden when not computable (#124) Details table while charging 🔬 ⏳
16 Rate toggle works: General → Status Notification → Show rate off → plain status label Toggle + check shade

Drain & slow-charge alerts (#109, #123)

# Check How / Where Status
17 Fast-drain alert fires when drain stays above the limit for the window; reminder while locked Set a low limit, run heavy load 🔬 ⏳
18 Drain-rate colouring in the details table (amber near limit, red at/above) Details table under load
19 Slow-charge warning on sustained trickle wired charging <80% (needs a genuinely bad cable/brick) Alerts → Charging toggle; charge via bad cable 🔬 ⏳
20 No false slow-charge warning on healthy chargers⚠️ expected to false-positive on the Kirin Mate 10 Pro until #152 is fixed Normal charge sessions on both devices 🔬 ⏳

Settings (#112, #113, #151, #114)

# Check How / Where Status
21 Root menu: 3 headers with descriptive summaries + version footer; tapping footer opens the About dialog (#113) Open Settings
22 Vibrate toggle present; ON→alerts vibrate, OFF→no vibration Notification Behaviour → Sound & Vibration; trigger an alert ✅ present / ⏳ behaviour
23 Warning/critical range slider keeps warning > critical; home-screen slider (#139) stays in sync Alerts → Battery Levels + home gauge slider
24 Quiet hours suppress sound outside the window; "critical ignores quiet hours" override works Notification Behaviour → Quiet Hours
25 "Mute alerts in silent mode": ON → silent in silent/DnD; OFF (default) → sounds anyway Notification Behaviour → Sound & Vibration
26 Long settings list clears the system nav bar Scroll to the bottom of Alerts ✅ (emulator, pre-#112 layout)
27 Debug menu (long-press health %) absent in release, present in debug Battery Insights ⏳ (logic verified)
28 Arabic: new #112/#114 strings render correctly (menus, alerts, About) Switch app language to العربية, spot-check

Battery Insights

# Check How / Where Status
29 Charge cycles show the real OS value where reported (Android 14+) Battery Insights → Charge Cycles 🔬 ⏳
30 Health % + status render, consistent with basis Battery Insights ✅ (emulator, cycle-based)
31 Basis caption correct per source: "Measured from rated capacity" / "reported by Android" / "tracked since install — real wear may be higher" (#114) Insights, with/without rated capacity
32 "How it works" explains the three bases + the 20–80 tip (#114) Insights → How It Works
33 Capacity shows a value, or "Unknown" + info icon when unreliable (#94) Main screen "Capacity" row ✅ value (emulator) / ⏳ "Unknown" path

Notes

Tick boxes / update the Status column as things get verified on device.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions