diff --git a/scripts/android/screenshots/BrowserComponent.png b/scripts/android/screenshots/BrowserComponent.png index eb9d269a44..5c1b540aa1 100644 Binary files a/scripts/android/screenshots/BrowserComponent.png and b/scripts/android/screenshots/BrowserComponent.png differ diff --git a/scripts/android/screenshots/MainActivity.png b/scripts/android/screenshots/MainActivity.png index 413005d1a9..cdf0dd18bb 100644 Binary files a/scripts/android/screenshots/MainActivity.png and b/scripts/android/screenshots/MainActivity.png differ diff --git a/scripts/android/tests/PostPrComment.java b/scripts/android/tests/PostPrComment.java index 53c4612370..46132ef23f 100644 --- a/scripts/android/tests/PostPrComment.java +++ b/scripts/android/tests/PostPrComment.java @@ -93,7 +93,7 @@ private static int execute(String[] args) throws Exception { Map attachmentUrls = new HashMap<>(); if (body.contains("(attachment:")) { try { - attachmentUrls = publishPreviewsToBranch(previewDir, repo, prNumber, token, !isForkPr); + attachmentUrls = publishPreviewsToBranch(previewDir, repo, prNumber, token, !isForkPr, arguments.previewSubdir); for (Map.Entry entry : attachmentUrls.entrySet()) { log("Preview available for " + entry.getKey() + ": " + entry.getValue()); } @@ -258,7 +258,7 @@ private static String nextLink(String header) { return null; } - private static Map publishPreviewsToBranch(Path previewDir, String repo, int prNumber, String token, boolean allowPush) throws IOException, InterruptedException { + private static Map publishPreviewsToBranch(Path previewDir, String repo, int prNumber, String token, boolean allowPush, String previewSubdir) throws IOException, InterruptedException { if (previewDir == null || !Files.isDirectory(previewDir)) { return Map.of(); } @@ -302,6 +302,9 @@ private static Map publishPreviewsToBranch(Path previewDir, Stri runGit(worktree, env, "checkout", "--orphan", "cn1ss-previews"); } Path dest = worktree.resolve("pr-" + prNumber); + if (previewSubdir != null && !previewSubdir.isBlank()) { + dest = dest.resolve(previewSubdir); + } deleteRecursively(dest); Files.createDirectories(dest); for (Path source : imageFiles) { @@ -320,11 +323,15 @@ private static Map publishPreviewsToBranch(Path previewDir, Stri log("Preview branch already up-to-date for PR #" + prNumber); } String rawBase = "https://raw.githubusercontent.com/" + repo + "/cn1ss-previews/pr-" + prNumber; + if (previewSubdir != null && !previewSubdir.isBlank()) { + rawBase += "/" + previewSubdir; + } + final String rawBaseUrl = rawBase; Map urls = new LinkedHashMap<>(); try (var stream = Files.list(dest)) { stream.filter(Files::isRegularFile) .sorted() - .forEach(path -> urls.put(path.getFileName().toString(), rawBase + "/" + path.getFileName())); + .forEach(path -> urls.put(path.getFileName().toString(), rawBaseUrl + "/" + path.getFileName())); } deleteRecursively(worktree); return urls; @@ -444,12 +451,14 @@ private static class Arguments { final Path previewDir; final String marker; final String logPrefix; + final String previewSubdir; - private Arguments(Path body, Path previewDir, String marker, String logPrefix) { + private Arguments(Path body, Path previewDir, String marker, String logPrefix, String previewSubdir) { this.body = body; this.previewDir = previewDir; this.marker = marker; this.logPrefix = logPrefix; + this.previewSubdir = previewSubdir; } static Arguments parse(String[] args) { @@ -457,6 +466,7 @@ static Arguments parse(String[] args) { Path previewDir = null; String marker = null; String logPrefix = null; + String previewSubdir = null; for (int i = 0; i < args.length; i++) { String arg = args[i]; switch (arg) { @@ -488,6 +498,13 @@ static Arguments parse(String[] args) { } logPrefix = args[i]; } + case "--preview-subdir" -> { + if (++i >= args.length) { + System.err.println("Missing value for --preview-subdir"); + return null; + } + previewSubdir = args[i]; + } default -> { System.err.println("Unknown argument: " + arg); return null; @@ -498,7 +515,7 @@ static Arguments parse(String[] args) { System.err.println("--body is required"); return null; } - return new Arguments(body, previewDir, marker, logPrefix); + return new Arguments(body, previewDir, marker, logPrefix, previewSubdir); } } diff --git a/scripts/ios/screenshots/BrowserComponent.png b/scripts/ios/screenshots/BrowserComponent.png index ce0c96eb2a..7e8a58a6c1 100644 Binary files a/scripts/ios/screenshots/BrowserComponent.png and b/scripts/ios/screenshots/BrowserComponent.png differ diff --git a/scripts/ios/screenshots/MainActivity.png b/scripts/ios/screenshots/MainActivity.png index 1ce9168d60..f3d0396afa 100644 Binary files a/scripts/ios/screenshots/MainActivity.png and b/scripts/ios/screenshots/MainActivity.png differ diff --git a/scripts/lib/cn1ss.sh b/scripts/lib/cn1ss.sh index 5761227865..ca68390dee 100644 --- a/scripts/lib/cn1ss.sh +++ b/scripts/lib/cn1ss.sh @@ -278,6 +278,9 @@ cn1ss_post_pr_comment() { if [ -n "${CN1SS_COMMENT_LOG_PREFIX:-}" ]; then extra_args+=(--log-prefix "${CN1SS_COMMENT_LOG_PREFIX}") fi + if [ -n "${CN1SS_PREVIEW_SUBDIR:-}" ]; then + extra_args+=(--preview-subdir "${CN1SS_PREVIEW_SUBDIR}") + fi GITHUB_TOKEN="$comment_token" cn1ss_java_run "$CN1SS_POST_COMMENT_CLASS" \ --body "$body_file" \ --preview-dir "$preview_dir" \ diff --git a/scripts/run-android-instrumentation-tests.sh b/scripts/run-android-instrumentation-tests.sh index 5662460457..bac4b3a7bc 100755 --- a/scripts/run-android-instrumentation-tests.sh +++ b/scripts/run-android-instrumentation-tests.sh @@ -303,6 +303,7 @@ ra_log "STAGE:COMMENT_POST -> Submitting PR feedback" comment_rc=0 export CN1SS_COMMENT_MARKER="" export CN1SS_COMMENT_LOG_PREFIX="[run-android-device-tests]" +export CN1SS_PREVIEW_SUBDIR="android" if ! cn1ss_post_pr_comment "$COMMENT_FILE" "$SCREENSHOT_PREVIEW_DIR"; then comment_rc=$? fi diff --git a/scripts/run-ios-ui-tests.sh b/scripts/run-ios-ui-tests.sh index a81767c547..d49dae0a17 100755 --- a/scripts/run-ios-ui-tests.sh +++ b/scripts/run-ios-ui-tests.sh @@ -672,6 +672,7 @@ ri_log "STAGE:COMMENT_POST -> Submitting PR feedback" comment_rc=0 export CN1SS_COMMENT_MARKER="" export CN1SS_COMMENT_LOG_PREFIX="[run-ios-device-tests]" +export CN1SS_PREVIEW_SUBDIR="ios" if ! cn1ss_post_pr_comment "$COMMENT_FILE" "$SCREENSHOT_PREVIEW_DIR"; then comment_rc=$? fi