Setup fastlane

This is great for automatically uploading (localized) screenshots
and app metadata to Google Play.
You can even upload the signed APK releases as well.

For now, this is only useful for running the screenshot Espresso tests
and grabbing the screenshots from the device.
This commit is contained in:
Torsten Grote
2018-07-25 16:29:52 -03:00
parent d0c2c03057
commit be2d695150
5 changed files with 83 additions and 3 deletions

9
.gitignore vendored
View File

@@ -23,5 +23,12 @@ local.properties
!.idea/codeStyles !.idea/codeStyles
.gradle .gradle
build/ build/
captures
*.iml *.iml
projectFilesBackup/ projectFilesBackup/
# Fastlane Non-Google Play Screenshots
briar-android/fastlane/metadata/android/screenshots.html
briar-android/fastlane/metadata/android/*/images/phoneScreenshots/manual_*.png
briar-android/fastlane/report.xml
briar-android/fastlane/README.md

View File

@@ -0,0 +1,2 @@
json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
package_name("org.briarproject.briar.android")

View File

@@ -0,0 +1,28 @@
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:android)
platform :android do
desc "Takes screenshots for manual and Google Play"
lane :screenshots do
gradle(project_dir: "..", task: "assembleScreenshot assembleAndroidTest")
capture_android_screenshots
system './rename_screenshots.py'
end
end
# vi:syntax=ruby

View File

@@ -0,0 +1,43 @@
#!/usr/bin/env python3
# Author: Torsten Grote
# License: GPLv3 or later
import os
import re
import glob
METADATA_PATH = 'metadata/android'
GLOB = '/*/images/phoneScreenshots/*.png'
REGEX = re.compile(r'(^\w+)_\d{13}\.png$')
REGEX_IN_FILE = re.compile(r'(\w+)_\d{13}\.png', re.MULTILINE)
PATH = os.path.dirname(os.path.realpath(__file__))
def main():
for path in glob.glob("%s%s" % (os.path.join(PATH, METADATA_PATH), GLOB)):
filename = os.path.basename(path)
match = REGEX.match(filename)
if match:
directory = os.path.dirname(path)
new_filename = "%s.png" % match.group(1)
new_path = os.path.join(directory, new_filename)
os.rename(path, new_path)
print("Renaming\n %s\nto\n %s\n" % (path, new_path))
else:
print("Warning: Path did not match %s" % path)
# rename fields also in screenshot overview file
overview = os.path.join(PATH, METADATA_PATH, 'screenshots.html')
with open(overview, 'r') as f:
file_data = f.read()
file_data = REGEX_IN_FILE.sub(r'\1.png', file_data)
with open(overview, 'w') as f:
f.write(file_data)
if __name__ == "__main__":
main()

View File

@@ -56,7 +56,7 @@ public class DarkThemeTest extends ScreenshotTest {
.check(matches(isDisplayed())) .check(matches(isDisplayed()))
.perform(click()); .perform(click());
screenshot("dark_theme_settings"); screenshot("manual_dark_theme_settings");
onView(withText(R.string.pref_theme_title)) onView(withText(R.string.pref_theme_title))
.check(matches(isDisplayed())) .check(matches(isDisplayed()))
@@ -83,7 +83,7 @@ public class DarkThemeTest extends ScreenshotTest {
.check(matches(isClosed(Gravity.LEFT))) .check(matches(isClosed(Gravity.LEFT)))
.perform(DrawerActions.open()); .perform(DrawerActions.open());
screenshot("dark_theme_nav_drawer"); screenshot("manual_dark_theme_nav_drawer");
} }
} }