This ticket is a part of the bounty program. Fair remuneration will be awarded for the time and efforts spent on the implementation of this project. See details below.
The task is to implement an automated screenshot generator for the Android application. The generator shall produce UI screenshots of an Android app while performing a pre-defined set of operations and test scenarios under specific system settings. Generated screenshots will be used in Google Play and other stores to demonstrate the functionality of the app.
The implemented screenshot generator will be executed on a Mac or Linux laptop on a periodic basis to actualize app screenshots in Google Play and other stores for all supported locales/countries.
The implementation shall support automated generation of screenshots for all combinations of defined test cases, devices, and locales.
The implementation shall provide a declarative way of defining the list of test cases in a configuration file or in a separate code file. Each test case shall be defined by UI operations with parameters, system theme, and screen orientation.
Plan a $type
(pedestrian, car, cycling) route from $start_lat
, $start_lon
to $end_lat
, $end_lon
. Set the viewport to $lat
, $lon
with $zoom
. Make a screenshot.
Start the $type
(pedestrian, car, cycling) navigation from $start_lat
, $start_lon
to $end_lat
, $end_lon
. Set the current location to $lat, $lon with $zoom. Make a screenshot.
Add bookmarks from the list of $lat, $lon coordinates. Set the viewport to $lat
, $lon
and zoom $zoom
. Click on the bookmark #$n from the list to open the place information page. Make a screenshot.
Add a set of bookmarks (saved placed) to the map using the list of
Start the search for $query in $lat, $lon viewport with $zoom. Make a screenshot.
For each test case, the option to select either a light or dark theme must be available.
For each test case, the option to select portrait or landscape mode must be available.
The implementation shall generate screenshots for all the locales supported by the app.
The implementation shall use Android emulators to generator screenshots. The implementation should provide an automation (e.g., a script) to create and launch Android emulators with pre-defined settings, like model, screen size, disk size and others. The following 3 form-factors must be supported:
Additional processing of screenshots, like rotating, adding frames, drawing graphics, putting texts is out of the scope of this project.
Automatic uploading of screenshots to Google Play and other stores is out of the scope of this project.
The implementation must generate screenshots in JPEG format with the best resolution/dimensions supported by Google Play. Files must be saved into the following directory structure:
android
βββ en-US # locale
βΒ Β βββ graphics
βΒ Β βββ large-tablet-screenshots # device
βΒ Β βΒ Β βββ 1.jpg # test case 1
βΒ Β βΒ Β βββ 2.jpg # test case 2
βΒ Β βΒ Β βββ 3.jpg # test case 3
βΒ Β βΒ Β βββ 4.jpg
βΒ Β βΒ Β βββ 5.jpg
βΒ Β βΒ Β βββ 6.jpg
βΒ Β βΒ Β βββ 7.jpg
βΒ Β βΒ Β βββ 8.jpg
βΒ Β βββ phone-screenshots # device
βΒ Β βΒ Β βββ 1.jpg
βΒ Β βΒ Β βββ 2.jpg
βΒ Β βΒ Β βββ 3.jpg
βΒ Β βΒ Β βββ 4.jpg
βΒ Β βββ tablet-screenshots # device
βΒ Β βββ 1.jpg
βΒ Β βββ 2.jpg
βΒ Β βββ 3.jpg
βΒ Β βββ 4.jpg
βΒ Β βββ 5.jpg
βΒ Β βββ 6.jpg
βΒ Β βββ 7.jpg
βΒ Β βββ 8.jpg
The screenshot generation process shall be fully automated to work without requiring human interaction while execution. The generation process should work smoothly from start to finish without requiring any manual steps in the middle of the process.
The implementation must be scalable enough to produce at least 100 screenshots per hour on a typical laptop.
The implementation must fully support Ubuntu 22.04 and the latest actual version of macOS.
The implementation must provide all the required instructions and scripts needed for the initial setup and launch of the generator, such as installation of system packages, installation of Android SDK/NDK, Android Studio setup, initial configuration of emulators, etc. The cumulative manual effort to run the generator must not surpass 10 minutes.
The declarative configuration of test cases must have comments and examples. All configuration options must have descriptions.
The proposed way is to use Espresso for automating UI test cases and tools.fastlane:screengrab
for generating screenshots. If such a design chosen, the entire implementation may be integrated into the main Gradle configuration of Android app.
The alternative way is to automate all things externally by using Android platform tools and app's API for automating UI operations.
Proposals will be accepted in the next two weeks. We would like to see this project fully delivered before the end of March.
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too