Generate screenshots for foreign languages ("de" and "fr" for now). #2454
This commit is contained in:
84
tools/test/generateAllScreenshots.py
Executable file
84
tools/test/generateAllScreenshots.py
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
|
||||
def deleteExistingScreenshots():
|
||||
print("Deleting existing screenshots...")
|
||||
os.system("rm -rf screenshots")
|
||||
|
||||
|
||||
def generateAllScreenshots():
|
||||
print("Generating all screenshots...")
|
||||
os.system("./gradlew recordPaparazziDebug -PallLanguages")
|
||||
|
||||
|
||||
def detectLanguages():
|
||||
__doc__ = "Detect languages from screenshots, other than English"
|
||||
files = os.listdir("tests/uitests/src/test/snapshots/images/")
|
||||
languages = set(map(lambda file: file[-7:-5], files))
|
||||
languages = [lang for lang in languages if re.match("[a-z]", lang) and lang != "en"]
|
||||
print("Detected languages: %s" % languages)
|
||||
return languages
|
||||
|
||||
|
||||
def compare(file1, file2):
|
||||
__doc__ = "Compare two files, return True if different, False if identical."
|
||||
# Compare file size
|
||||
file1_stats = os.stat(file1)
|
||||
file2_stats = os.stat(file2)
|
||||
if file1_stats.st_size != file2_stats.st_size:
|
||||
return True
|
||||
# Compare file content
|
||||
with open(file1, "rb") as f1, open(file2, "rb") as f2:
|
||||
content1 = f1.read()
|
||||
content2 = f2.read()
|
||||
return content1 != content2
|
||||
|
||||
|
||||
def deleteDuplicatedScreenshots(lang):
|
||||
__doc__ = "Delete screenshots identical to the English version for a language"
|
||||
print("Deleting screenshots identical to the English version for language %s..." % lang)
|
||||
files = os.listdir("tests/uitests/src/test/snapshots/images/")
|
||||
# Filter files by language
|
||||
files = [file for file in files if file[-7:-5] == lang]
|
||||
identicalFileCounter = 0
|
||||
differentFileCounter = 0
|
||||
for file in files:
|
||||
englishFile = file[:3] + "S" + file[4:-7] + "en" + file[-5:]
|
||||
fullFile = "tests/uitests/src/test/snapshots/images/" + file
|
||||
fullEnglishFile = "tests/uitests/src/test/snapshots/images/" + englishFile
|
||||
isDifferent = compare(fullFile, fullEnglishFile)
|
||||
if isDifferent:
|
||||
differentFileCounter += 1
|
||||
else:
|
||||
identicalFileCounter += 1
|
||||
os.remove(fullFile)
|
||||
print("For language %s, keeping %d files and deleting %d files." % (lang, differentFileCounter, identicalFileCounter))
|
||||
|
||||
|
||||
def moveScreenshots(lang):
|
||||
__doc__ = "Move screenshots to the folder per language"
|
||||
targetFolder = "screenshots/" + lang
|
||||
print("Moving screenshots for %s to %s..." % (lang, targetFolder))
|
||||
files = os.listdir("tests/uitests/src/test/snapshots/images/")
|
||||
# Filter files by language
|
||||
files = [file for file in files if file[-7:-5] == lang]
|
||||
# Create the folder "./screenshots/<lang>"
|
||||
os.makedirs(targetFolder, exist_ok=True)
|
||||
for file in files:
|
||||
fullFile = "tests/uitests/src/test/snapshots/images/" + file
|
||||
os.rename(fullFile, targetFolder + "/" + file)
|
||||
|
||||
|
||||
def main():
|
||||
deleteExistingScreenshots()
|
||||
generateAllScreenshots()
|
||||
lang = detectLanguages()
|
||||
for l in lang:
|
||||
deleteDuplicatedScreenshots(l)
|
||||
moveScreenshots(l)
|
||||
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user