AutoTester-Android is a lightweight, zero-dependency cross-platform automation engine designed for Android developers to satisfy Google Play Console's strict 20 testers opted in for 14 continuous days closed testing requirement.
It runs natively on Windows (BetaTester.ps1) and Linux / Raspberry Pi (betatester.sh). It automatically connects to your Android test device over Wireless ADB (or USB), wakes and unlocks the phone, launches your beta apps, simulates natural human interactions (scrolling, tapping, navigating), records test metrics, and cleanly locks the device upon completionโevery single day via Windows Task Scheduler or Linux Cron.
Since November 2023, Google requires personal developer accounts to run closed tests with at least 20 testers for at least 14 days continuously before applying for production access.
Googleโs automated review algorithms flag and reject production access requests if:
- Apps are opened for only a few seconds without user activity.
- Daily active engagement is sporadic or non-existent.
- Testers do not interact with app views.
AutoTester-Android solves this by emulating genuine human engagement across your suite of test apps on a daily schedule without requiring you to manually open 20+ apps every single day.
- ๐ง Cross-Platform Native Support: Dual-engine architecture with PowerShell for Windows and native Bash for Linux/Raspberry Pi.
- ๐ถ Wireless ADB Auto-Discovery: Seamlessly connects and reconnects using mDNS TLS discovery (
adb mdns services) and previous IP/port caching. - ๐ Humanized Interaction Emulation: Rather than leaving apps idle, AutoTester-Android generates natural swipe-down, swipe-up, safe-viewport taps, and in-app back navigation to simulate realistic user engagement.
- ๐ Automated Wake & Unlock: Wakes the phone screen, dismisses the keyguard/swipe lock, optionally inputs a PIN or alphanumeric password, and turns the screen back off when testing completes.
- โฑ๏ธ Configurable Test Durations: Customize minimum and maximum dwell times (recommended: 30โ60s) to create randomized, organic testing patterns.
- ๐งน Memory & Thermal Management: Optional automatic force-stopping (
am force-stop) after each app session prevents background apps from draining battery or bogging down RAM. - ๐ Automated Daily Scheduling:
- Windows: 1-click Windows Task Scheduler installation.
- Linux: 1-click
crontabdaily scheduler installation.
- โก Supercharged App Catalog: Caches app display names locally in
config.jsonto deliver an instantaneous interactive CLI experience on both OSes. - ๐ Desktop Notifications & Audit Logs: Logs detailed timestamps, app execution outcomes, and connection health to
betatester.log, accompanied by native Windows toast or Linuxnotify-senddesktop alerts.
Follow this guide to get AutoTester-Android running in under 5 minutes:
First, clone the project:
git clone https://github.com/WickedG0d/AutoTester-Android.git
cd AutoTester-AndroidInstall necessary tools using the provided 1-click scripts:
-
On Windows (PowerShell):
powershell -ExecutionPolicy Bypass -File .\install-deps.ps1
(Checks for ADB and installs Google Platform Tools via
wingetif missing.) -
On Linux / Raspberry Pi (Ubuntu / Debian / Fedora / Arch):
chmod +x install-deps.sh betatester.sh ./install-deps.sh
(Installs
adb,jq,libnotify, andcronvia your native package manager.)
๐ For a complete list of hardware and OS requirements, see requirements.md.
- Open Settings > About Phone on your Android device.
- Tap Build Number 7 times until you see "You are now a developer!".
- Go to Settings > System > Developer Options:
- Enable USB Debugging.
- Enable Wireless Debugging (if testing wirelessly without a USB cable).
- (Optional but Recommended) Enable Stay Awake (keeps the screen available while charging).
You can connect using either USB cable or Wireless ADB:
- Ensure your PC and Android phone are connected to the same Wi-Fi network.
- On your phone, tap into Developer Options > Wireless Debugging.
- If connecting for the first time:
- Tap Pair device with pairing code.
- Note the IP address, port, and 6-digit pairing code shown on screen.
- Run in your terminal:
adb pair <ip>:<pairing-port> <pairing-code>
- Once paired, connect to the main Wireless Debugging IP & port displayed on the phone:
adb connect <ip>:<port>
Plug the USB cable between your PC and phone. When prompted on your phone screen, check Always allow from this computer and tap Allow.
Verify connection:
adb devices(You should see your device listed with status device.)
- On Windows:
powershell -ExecutionPolicy Bypass -File .\BetaTester.ps1
- On Linux / Raspberry Pi:
./betatester.sh
Once the interactive menu loads:
- Press
1to enter the Select / Manage Apps screen. - The script loads all user-installed third-party apps from your phone.
- You can:
- Type an app name to search (e.g.
MyGame). - Enter comma-separated numbers (e.g.
1, 3, 5) to select or toggle apps. - Type
ALLto select all user-installed apps. - Type
LISTto review your current selection. - Type
DONEto save your selection.
- Type an app name to search (e.g.
- Testing Duration (Option
[2]):- Default is set to 30โ60 seconds per app.
- Why? Google Play Console algorithms flag apps opened for less than 15โ20 seconds as automated spam. Realistic session times are required for genuine engagement records.
- Advanced Settings (Option
[6]):- Simulate Gestures (
ENABLED): Generates organic scrolls, safe viewport taps, and back navigation. - Auto-Wake & Unlock (
ENABLED): Wakes the phone screen automatically before testing. - Device PIN / Password: If your phone uses a numeric PIN or password, select option
[5]in this menu to enter it. AutoTester-Android will type it automatically on wake-up. - Auto-Lock on Finish (
ENABLED): Puts the phone screen back to sleep when all apps have completed.
- Simulate Gestures (
Before enabling automated runs, verify that your phone wakes up, unlocks, gestures, and closes properly:
- Press
5on the main menu (Quick Test a Single App). - Lock your phone screen manually.
- Select any app from the list.
- Observe: The phone should wake up, unlock, launch the app, perform natural scrolls/taps, return home, and turn off the screen!
To let AutoTester-Android run unattended every single day:
- Set your preferred daily testing time via Option
[3](e.g.22:00for 10:00 PM). - Select Option
[8](Install / Update Daily Scheduler):- On Windows: Automatically registers a Windows Scheduled Task (
Android Beta Test Automator) that wakes and runs daily. - On Linux: Automatically configures a daily user
crontabentry.
- On Windows: Automatically registers a Windows Scheduled Task (
- The scheduler will execute in the background headless (
-AutoRunmode), log all events tobetatester.log, and send a notification when complete.
=================================================================
AUTOTESTER-ANDROID - BETA TEST AUTOMATOR
=================================================================
Connected Device : 192.168.1.50:39841
Selected Apps : 25
Session Duration : 30-60s per app
Daily Schedule : 22:00
Simulate Gestures: YES
Random Order : YES
-----------------------------------------------------------------
[1] Select / Manage Apps
[2] Change App Testing Duration (Min/Max)
[3] Change Daily Schedule Time
[4] Run Full Test Now (All Selected Apps)
[5] Quick Test a Single App (Verify Gestures & Unlocking)
[6] Advanced Automation Settings (Gestures, PIN, Sleep, Locks)
[7] Toggle Random App Order
[8] Install / Update Daily Scheduler (Task Scheduler / Cron)
[9] View Recent Logs
[0] Exit
Both the Windows and Linux scripts read from and write to the same config.json:
{
"MinDelay": 30,
"MaxDelay": 60,
"Schedule": "22:00",
"Randomize": true,
"SimulateGestures": true,
"ForceStopAfter": true,
"AutoWakeAndUnlock": true,
"AutoLockOnFinish": true,
"DevicePin": "",
"DesktopNotifications": true,
"LastDevice": "192.168.1.50:39841",
"SelectedApps": [
"com.example.app1",
"com.example.app2"
],
"AppCache": {}
}| Key | Default | Description |
|---|---|---|
MinDelay |
30 |
Minimum test session duration per app (seconds). |
MaxDelay |
60 |
Maximum test session duration per app (seconds). |
Schedule |
"22:00" |
Daily execution time (24-hour format HH:mm). |
Randomize |
true |
Shuffles app launch order every run to prevent repetitive patterns. |
SimulateGestures |
true |
Generates natural scrolls, safe taps, and navigation events. |
ForceStopAfter |
true |
Calls am force-stop on each app after testing to prevent memory exhaustion. |
AutoWakeAndUnlock |
true |
Wakes the screen and dismisses keyguard automatically. |
AutoLockOnFinish |
true |
Puts the screen back to sleep when all apps have finished testing. |
DevicePin |
"" |
Optional lock screen PIN or alphanumeric password if your device uses a lock. |
DesktopNotifications |
true |
Displays Windows toast or Linux notify-send desktop alerts. |
SelectedApps |
[] |
List of package identifiers targeted for testing. |
- Test Continuously for at Least 14 Full Days: Do not pause or stop testing before the full 14-day window completes on Google Play Console.
- Realistic Session Length: Set
MinDelayandMaxDelayto at least 30โ90 seconds per app. Google flags instant open-and-close sequences. - Tester Opt-in Confirmation: Ensure all 20+ tester Google accounts have accepted the web/Play Store invite link and have the app installed.
- Gather Play Store Feedback: Encourage your test group to submit at least 1โ2 pieces of in-app feedback via the Play Store tester feedback box.
- Static IP / DHCP Reservation: In your Wi-Fi router settings, reserve a static IP for your Android test phone so Wireless Debugging reconnects effortlessly.
To invoke a silent test run manually from scripts or continuous integration:
Windows:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BetaTester.ps1 -AutoRunLinux:
./betatester.sh -AutoRunIn -AutoRun mode, the engine runs completely headless, executes no blocking pauses, logs all actions to betatester.log, and triggers a desktop notification upon completion.
Q: My phone's Wireless ADB port changes every time Wi-Fi reconnects. Does AutoTester-Android handle this?
Yes! AutoTester-Android features built-in mDNS discovery (adb mdns services). It actively scans your local network for your phone's ADB TLS service name and connects to the new dynamic port automatically.
Q: Can AutoTester-Android bypass fingerprint or face recognition locks?
No. Android security prevents biometric authentication via ADB. However, you can configure a numeric PIN or alphanumeric password in Option [6], which AutoTester-Android enters programmatically. Alternatively, set your lock screen to Swipe or enable Stay Awake While Charging.
Q: Why do my scheduled runs need user session on Windows?
ADB daemon communicates via named pipes and TCP sockets created in your Windows user session. The Windows Scheduled Task is configured to run when the user is logged on so ADB has full network and socket access.
Q: Where can I see what happened during the nightly test?
Check betatester.log in the project directory, or select Option [9] View Recent Logs directly inside the interactive menu.
Distributed under the MIT License. Free for personal and commercial use.