You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
Phone
7-inch tablet
10-inch large-tablet
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:
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
Express your interest in this project by providing a free-form proposal in this thread or via hello@organicmaps.app email. Please follow the guidelines of Google Summer of Code on how to write a good proposal. A good proposal may have a delivery plan as well as rough estimations of time and efforts. Proposals with demonstrated a proof-of-concept implementation of UI automation and screenshot capturing will have higher chances of being selected.
Discuss details of your proposal with the mentor of this project (@rtsisyk) via Telegram chat, email, or video call.
Get the greenlight and start working in accordance with the agreed-upon plan.
Receive your bounty.
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
We're using Polar.sh so you can upvote and help fund this issue.
We receive the funding once the issue is completed & confirmed by you.
Thank you in advance for helping prioritize & fund our backlog.
The text was updated successfully, but these errors were encountered:
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:
![](https://private-user-images.githubusercontent.com/1799054/303822957-bce430e5-0e2f-4aeb-8a05-c7c50d5f2ffb.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgyNzM1NzcsIm5iZiI6MTcxODI3MzI3NywicGF0aCI6Ii8xNzk5MDU0LzMwMzgyMjk1Ny1iY2U0MzBlNS0wZTJmLTRhZWItOGEwNS1jN2M1MGQ1ZjJmZmIuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MTNUMTAwNzU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NGE4N2FhZjc1MTEzNjg5ODA2ZjI1ODMwMTQzMTUzOTRjNjc2MTIzZDEzM2FjNWNjOWI4NjU2NGIwOTg1MTljZCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.StjPNnoaQ15fkhBtma9C3nDGZ2aF3yIC5eulRTPsH_U)
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:
![](https://private-user-images.githubusercontent.com/1799054/303822963-c4b889e1-1d99-467e-a1e6-22ced350e444.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgyNzM1NzcsIm5iZiI6MTcxODI3MzI3NywicGF0aCI6Ii8xNzk5MDU0LzMwMzgyMjk2My1jNGI4ODllMS0xZDk5LTQ2N2UtYTFlNi0yMmNlZDM1MGU0NDQuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MTNUMTAwNzU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NWUyZWIxYzIyZmZhMGJjMjljMDMxMjkzZjdhNDQzMzI4MmJkYjE3ZGM4NWM4MGU0MzczZDIzYTllMDgwNWQ5YiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.Z_W2xyoFHL5LD7-8PPTSyKLI02D2TCrCKr_e_1mETBI)
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:
![](https://private-user-images.githubusercontent.com/1799054/303822959-a593a717-08ad-410c-b79f-28cd0a28007b.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgyNzM1NzcsIm5iZiI6MTcxODI3MzI3NywicGF0aCI6Ii8xNzk5MDU0LzMwMzgyMjk1OS1hNTkzYTcxNy0wOGFkLTQxMGMtYjc5Zi0yOGNkMGEyODAwN2IuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MTNUMTAwNzU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NDQ4MWU1MjY1NGVhYmE5ODdkODUyOGNlNzk3ZWQ4OTQwODZlN2ZhN2QwNDQ3NGJiOWY0NjQxYTI3NjliYzQxZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.mY7HplDFaW4udIAYUQ-1mTo74oxOh5ZxINofc6XmEM4)
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:
![](https://private-user-images.githubusercontent.com/1799054/303822962-3b01e078-db49-4f3e-9f2d-fa465c821fed.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgyNzM1NzcsIm5iZiI6MTcxODI3MzI3NywicGF0aCI6Ii8xNzk5MDU0LzMwMzgyMjk2Mi0zYjAxZTA3OC1kYjQ5LTRmM2UtOWYyZC1mYTQ2NWM4MjFmZWQuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MTNUMTAwNzU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MWM4NmM3ZmY0ZDFkNWZiZDY2N2IwOWFiYTc5OTRjNDJiNTVkYmQ4MzNiMTBlYWQ1OTkxNmYwMTQxNTM0YzA5NSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.AgdpcJXeOyX6C8JvhI_KMGtICmeM-19AHR9el7R49G8)
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
The text was updated successfully, but these errors were encountered: