[android] Automatized app screenshot generator for app stores #7350
Labels
No labels
Accessibility
Accessibility
Address
Address
Android
Android
Android Auto
Android Auto
Android Automotive (AAOS)
Android Automotive (AAOS)
API
API
AppGallery
AppGallery
AppStore
AppStore
Battery and Performance
Battery and Performance
Blocker
Blocker
Bookmarks and Tracks
Bookmarks and Tracks
Borders
Borders
Bug
Bug
Build
Build
CarPlay
CarPlay
Classificator
Classificator
Community
Community
Core
Core
CrashReports
CrashReports
Cycling
Cycling
Desktop
Desktop
DevEx
DevEx
DevOps
DevOps
dev_sandbox
dev_sandbox
Directions
Directions
Documentation
Documentation
Downloader
Downloader
Drape
Drape
Driving
Driving
Duplicate
Duplicate
Editor
Editor
Elevation
Elevation
Enhancement
Enhancement
Epic
Epic
External Map Datasets
External Map Datasets
F-Droid
F-Droid
Fonts
Fonts
Frequently User Reported
Frequently User Reported
Fund
Fund
Generator
Generator
Good first issue
Good first issue
Google Play
Google Play
GPS
GPS
GSoC
GSoC
iCloud
iCloud
Icons
Icons
iOS
iOS
Legal
Legal
Linux Desktop
Linux Desktop
Linux packaging
Linux packaging
Linux Phone
Linux Phone
Mac OS
Mac OS
Map Data
Map Data
Metro
Metro
Navigation
Navigation
Need Feedback
Need Feedback
Night Mode
Night Mode
NLnet 2024-06-281
NLnet 2024-06-281
No Feature Parity
No Feature Parity
Opening Hours
Opening Hours
Outdoors
Outdoors
POI Info
POI Info
Privacy
Privacy
Public Transport
Public Transport
Raw Idea
Raw Idea
Refactoring
Refactoring
Regional
Regional
Regression
Regression
Releases
Releases
RoboTest
RoboTest
Route Planning
Route Planning
Routing
Routing
Ruler
Ruler
Search
Search
Security
Security
Styles
Styles
Tests
Tests
Track Recording
Track Recording
Translations
Translations
TTS
TTS
UI
UI
UX
UX
Walk Navigation
Walk Navigation
Watches
Watches
Web
Web
Wikipedia
Wikipedia
Windows
Windows
Won't fix
Won't fix
World Map
World Map
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set.
Reference: organicmaps/organicmaps-tmp#7350
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.
OBJECTIVE
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.
USE-CASES
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.
FUNCTIONAL REQUIREMENTS
CONFIGURATION
The implementation shall support automated generation of screenshots for all combinations of defined test cases, devices, and locales.
TEST CASES
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.
UI Operation: Route Planning
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.Example:

UI Operation: Route Navigation
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.Example:

UI Operations: Map Browsing
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.Example:

Add a set of bookmarks (saved placed) to the map using the list of
UI Operations: Map Search
Start the search for $query in $lat, $lon viewport with $zoom. Make a screenshot.
Example:

System Theme
For each test case, the option to select either a light or dark theme must be available.
Screen Orientation
For each test case, the option to select portrait or landscape mode must be available.
LOCALES
The implementation shall generate screenshots for all the locales supported by the app.
DEVICES
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:
PROCESSING
Additional processing of screenshots, like rotating, adding frames, drawing graphics, putting texts is out of the scope of this project.
INTEGRATIONS
Automatic uploading of screenshots to Google Play and other stores is out of the scope of this project.
OUTPUTS
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:
NON-FUNCTIONAL REQUIREMENTS
AUTOMATION
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.
PERFORMANCE
The implementation must be scalable enough to produce at least 100 screenshots per hour on a typical laptop.
PLATFORMS
The implementation must fully support Ubuntu 22.04 and the latest actual version of macOS.
DEPENDENCIES
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.
DOCUMENTATION
The declarative configuration of test cases must have comments and examples. All configuration options must have descriptions.
ARCHITECTURE
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.
THE BOUNTY PROGRAM
Proposals will be accepted in the next two weeks. We would like to see this project fully delivered before the end of March.
Upvote & Fund