Skip to content

Commit 8739f1e

Browse files
committed
fix(ios): wait for screenshot checksum propagation
1 parent d42b864 commit 8739f1e

1 file changed

Lines changed: 32 additions & 9 deletions

File tree

apps/ios/fastlane/Fastfile

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -925,17 +925,40 @@ end
925925

926926
def verify_app_store_screenshot_set!(app_screenshot_set:, screenshots:, locale:, display_type:)
927927
expected = app_store_screenshot_expected_rows(screenshots)
928-
actual = app_store_screenshot_actual_rows(app_screenshot_set)
929-
actual_identity = actual.map { |row| { checksum: row[:checksum], file_name: row[:file_name] } }
930-
incomplete = actual.reject { |row| row[:state] == "COMPLETE" }
928+
timeout_seconds = app_store_screenshot_processing_timeout_seconds
929+
deadline = Time.now + timeout_seconds
930+
actual = []
931931

932-
return if actual_identity == expected && incomplete.empty?
932+
loop do
933+
app_screenshot_set = Spaceship::ConnectAPI::AppScreenshotSet.get(app_screenshot_set_id: app_screenshot_set.id)
934+
actual = app_store_screenshot_actual_rows(app_screenshot_set)
935+
actual_identity = actual.map { |row| { checksum: row[:checksum], file_name: row[:file_name] } }
936+
incomplete = actual.reject { |row| row[:state] == "COMPLETE" }
933937

934-
UI.user_error!(
935-
"App Store Connect screenshot verification failed for #{locale} #{display_type}. " \
936-
"Expected: #{format_app_store_screenshot_rows(expected)}. " \
937-
"Actual: #{format_app_store_screenshot_rows(actual)}."
938-
)
938+
return if actual_identity == expected && incomplete.empty?
939+
940+
if actual.length > expected.length
941+
UI.user_error!(
942+
"App Store Connect screenshot verification failed for #{locale} #{display_type}. " \
943+
"Expected: #{format_app_store_screenshot_rows(expected)}. " \
944+
"Actual: #{format_app_store_screenshot_rows(actual)}."
945+
)
946+
end
947+
948+
if Time.now >= deadline
949+
UI.user_error!(
950+
"Timed out after #{timeout_seconds}s waiting for App Store Connect screenshot verification for #{locale} #{display_type}. " \
951+
"Expected: #{format_app_store_screenshot_rows(expected)}. " \
952+
"Actual: #{format_app_store_screenshot_rows(actual)}."
953+
)
954+
end
955+
956+
UI.verbose(
957+
"Waiting for App Store Connect screenshot verification for #{locale} #{display_type}: " \
958+
"#{format_app_store_screenshot_rows(actual)}."
959+
)
960+
sleep(APP_STORE_SCREENSHOT_PROCESSING_POLL_SECONDS)
961+
end
939962
end
940963

941964
def replace_app_store_screenshot_set!(localization:, display_type:, screenshots:)

0 commit comments

Comments
 (0)