Accessibility Tool is an automated Android testing tool that is integrated multiple modules to report usability and accessibility issues. The main objective is to automatically detect issues of given APKs on multiple devices with multiple device settings.
video1529264546.mp4
👨🏻💻 Following features have been provided by our tool:
- Generating screenshots and transition graphs for testing application.
- Generating accessibility reports for each screen in the application via Google Accessibility Scanner.
- Reporting bug and crash logs.
- Detecting GUI visual defects via Owleyes.
ℹ️ Please check out our wiki page for more information.
We have included the full instruction in our Wiki page.
- Clone the repo into your local machine ✅
- Set up your local configurations in
config.yml
✅ - Install all required packages
conda create --name <env> --file requirement.txt
✅ - Make sure all dependencies are met and set up the emulators ✅
- Add your APKs into the
./input
folder ✅ - Start a complete scan with
python accessibility_tool.py detect --d phone-vertical --all
✅
# help
python accessibility_tool.py --help
Usage: accessibility_tool.py [OPTIONS] COMMAND [ARGS]...
Android Accessibility Tool
Options:
--install-completion Install completion for the current shell.
--show-completion Show completion for the current shell, to copy it or
customize the installation.
--help Show this message and exit.
Commands:
config Manage config.
detect Detect Accessibility issues.
emulator Manage emulators.
replay Replay bugs.
# help
python accessibility_tool.py detect --help
# all tools with vertical phone and vertical tablet scan.
python accessibility_tool.py detect --input ./input --all
# all tools with vertical phone.
python accessibility_tool.py detect --device emulator-5554 --all
# render the frontend without re-scaning.
python accessibility_tool.py detect --device emulator-5554 --frontend
Usage: accessibility_tool.py detect [OPTIONS]
Detect Accessibility issues.
Options:
--input, --i DIRECTORY The path of files that are being detected
[default: /Users/vuminhduc796/PycharmProjects/
AccessibilityTool/input]
--device, --d TEXT Uses device to test accessibility issues
[default: phone-vertical, phone-horizontal]
--screenshot_issue, --s Uses OwlEye to generate screenshots of errors
--all, --a Uses all the tools(Xbot, UI checker, deer and
OwlEye)
--frontend, --display_result Uses all the tools(Xbot, UI checker, deer and
OwlEye)
--help Show this message and exit.
choose a tool to detect: [REQUIRED] --all, --screenshot_issue, --frontend
--input: [OPTIONAL] the directory where apps are. Default is set to ./input
.
--device: [OPTIONAL] the device to test apps, multiple devices are supported. Default is set to vertical phone and vertical tablet.
python accessibility_tool.py config --help
Usage: accessibility_tool.py config [OPTIONS] COMMAND [ARGS]...
Manage config.
Options:
--help Show this message and exit.
Commands:
auto_login Set up User credentials and apk information for auto login.
emulator Set up Android emulators for testing App Accessibility.
_config/config.yml [REQUIRED]_
You need to modify config.yml. Visit our Wiki page for more information.
aapt: /Users/username/Library/Android/sdk/build-tools/30.0.3/aapt
apk_signer: /Users/username/Library/Android/sdk/build-tools/30.0.3/apksigner sign
--ks /Users/username/.android/debug.keystore --ks-pass pass:android --key-pass
pass:android
arm64: 'true'
auto_login:
activity: .ui.authentication.mediaauth.AuthActivity
method: facebook
packageName: com.Alltrails.alltrails
dark_mode: 'false'
default_facebook:
password: 'password'
username: 'username'
emulators:
alias:
phone: emulator-5554
phone-horizontal: emulator-5558
phone-vertical: emulator-5554
tablet-horizontal: emulator-5556
tablet-vertical: emulator-5560
default:
- phone-vertical
- phone-horizontal
phone-horizontal:
name: emulator-5558
phone-vertical:
name: emulator-5554
tablet-horizontal:
name: emulator-5556
tablet-vertical:
name: emulator-5560
finished: 'false'
font_size: normal
java_home_path: /Users/username/Library/Java/JavaVirtualMachines/liberica-1.8.0_312/jre
sdk_platform_path: /Users/username/Library/Android/sdk
updated: ''
zip_align: /Users/username/Library/Android/sdk/build-tools/30.0.3/zipalign
_emulator [OPTIONAL]_
- --add, --a
- --delete, --d
python accessibility_tool.py config emulator --help
Usage: accessibility_tool.py config emulator [OPTIONS]
Set up Android emulators for testing App Accessibility.
Options:
--add, --a TEXT Format:[alias:name], adds an [alias] for the emulator
[name]
--delete, --d TEXT Format:[alias], delete an [alias]
--help Show this message and exit.
_auto-login [OPTIONAL]_
- --facebook, --a
- --pass, --p
- --delete, --d
python accessibility_tool.py config auto_login --help
Usage: accessibility_tool.py config auto_login [OPTIONS]
Set up User credentials and apk information for auto login.
Options:
--pass, --p TEXT Format:[username:password:activity:package_name], set
up [username] , [password], [activity] and
[package_name] for the apk in the config file.
--facebook, --f TEXT Format:[activity:package_name], set up [activity] and
[package_name] for the apk in the config file.
--setting TEXT Format:[username:password], set up default [username]
and [password] for loging in to the facebook.
--delete, --d Deletes auto-login configs.
--help Show this message and exit.
python accessibility_tool.py config auto-login --help
python accessibility_tool.py config auto-login --facebook MainActivity:package_name
python accessibility_tool.py config auto-login --pass 123456:123456:MainActivity:package_name
python accessibility_tool.py config auto-login --setting 123456:123456 # default username and password for facebook
#remove
python accessibility_tool.py config auto-login --delete
python accessibility_tool.py config auto-login --d
Has any feedback? Please reach out to us at vuminhduc796@gmail.com.
- Replay bugs on emulators.
- Input generation techniques.