Simple Html page to view all the screenshots.
Do not delete the whole screenshots folder, but just delete per language when the screenshots are generated. Generate the data.js file regarding the existing screenshots, to be able to add languages. Also the language will be sorted alphabetically (English still first). And the screenshot will be sorted alphabetically. Update the script to generate screenshot for specific language on demand.
This commit is contained in:
committed by
Benoit Marty
parent
e6f5912150
commit
537074bee3
@@ -2,16 +2,33 @@
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
# Read all arguments and return a list of them, this are the languages list.
|
||||
def readArguments():
|
||||
# Return sys.argv without the first argument
|
||||
return sys.argv[1:]
|
||||
|
||||
def generateAllScreenshots(languages):
|
||||
# If languages is empty, generate all screenshots
|
||||
if len(languages) == 0:
|
||||
print("Generating all screenshots...")
|
||||
os.system("./gradlew recordPaparazziDebug -PallLanguages")
|
||||
else:
|
||||
tFile = "tests/uitests/src/test/kotlin/ui/T.kt"
|
||||
print("Generating screenshots for languages: %s" % languages)
|
||||
# Patch file T.kt, replace `@TestParameter(value = ["de"]) localeStr: String,` with `@TestParameter(value = ["de", "fr"]) localeStr: String,`
|
||||
with open(tFile, "r") as file:
|
||||
data = file.read()
|
||||
languagesList = ", ".join([f"\"{lang}\"" for lang in languages])
|
||||
data = data.replace("@TestParameter(value = [\"de\"]) localeStr: String,", "@TestParameter(value = [%s]) localeStr: String," % languagesList)
|
||||
with open(tFile, "w") as file:
|
||||
file.write(data)
|
||||
os.system("./gradlew recordPaparazziDebug -PallLanguagesNoEnglish")
|
||||
# Git reset the change on file T.kt
|
||||
os.system("git checkout HEAD -- %s" % tFile)
|
||||
|
||||
|
||||
def deleteExistingScreenshots():
|
||||
print("Deleting existing screenshots...")
|
||||
os.system("rm -rf screenshots")
|
||||
|
||||
|
||||
def generateAllScreenshots():
|
||||
print("Generating all screenshots...")
|
||||
os.system("./gradlew recordPaparazziDebug -PallLanguages")
|
||||
|
||||
|
||||
def detectLanguages():
|
||||
@@ -61,6 +78,8 @@ def deleteDuplicatedScreenshots(lang):
|
||||
def moveScreenshots(lang):
|
||||
__doc__ = "Move screenshots to the folder per language"
|
||||
targetFolder = "screenshots/" + lang
|
||||
print("Deleting existing screenshots for %s..." % lang)
|
||||
os.system("rm -rf %s" % targetFolder)
|
||||
print("Moving screenshots for %s to %s..." % (lang, targetFolder))
|
||||
files = os.listdir("tests/uitests/src/test/snapshots/images/")
|
||||
# Filter files by language
|
||||
@@ -72,13 +91,53 @@ def moveScreenshots(lang):
|
||||
os.rename(fullFile, targetFolder + "/" + file)
|
||||
|
||||
|
||||
def detectRecordedLanguages():
|
||||
# List all the subfolders of the screenshots folder which contains 2 letters, sorted alphabetically
|
||||
return sorted([f for f in os.listdir("screenshots") if len(f) == 2])
|
||||
|
||||
def generateJavascriptFile():
|
||||
__doc__ = "Generate a javascript file to load the screenshots"
|
||||
print("Generating javascript file...")
|
||||
languages = detectRecordedLanguages()
|
||||
# First item is the list of languages, adding "en" at the beginning
|
||||
data = [["en"] + languages]
|
||||
# If any translated screenshot exists, keep the file
|
||||
files = sorted(
|
||||
os.listdir("tests/uitests/src/test/snapshots/images/"),
|
||||
key=lambda file: file[file.find("_", 6):],
|
||||
)
|
||||
for file in files:
|
||||
fullFile = "./tests/uitests/src/test/snapshots/images/" + file
|
||||
dataForFile = [fullFile]
|
||||
hasAnyTranslatedFile = False
|
||||
for l in languages:
|
||||
translatedFile = "./screenshots/" + l + "/" + file[:3] + "T" + file[4:-7] + l + file[-5:]
|
||||
if os.path.exists(translatedFile):
|
||||
hasAnyTranslatedFile = True
|
||||
dataForFile.append(translatedFile)
|
||||
else:
|
||||
dataForFile.append("")
|
||||
if hasAnyTranslatedFile:
|
||||
data.append(dataForFile)
|
||||
|
||||
with open("screenshots/html/data.js", "w") as f:
|
||||
f.write("// Generated file, do not edit\n")
|
||||
f.write("export const screenshots = [\n")
|
||||
for line in data:
|
||||
f.write("[\n")
|
||||
for item in line:
|
||||
f.write("\"" + item + "\",\n")
|
||||
f.write("],\n")
|
||||
f.write("];\n")
|
||||
|
||||
|
||||
def main():
|
||||
deleteExistingScreenshots()
|
||||
generateAllScreenshots()
|
||||
generateAllScreenshots(readArguments())
|
||||
lang = detectLanguages()
|
||||
for l in lang:
|
||||
deleteDuplicatedScreenshots(l)
|
||||
moveScreenshots(l)
|
||||
generateJavascriptFile()
|
||||
|
||||
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user