a native ios client for gitbay

client ios swift

https://gitbay.org

Commit 0ed37c3345

0ed37c3345e366b199ccbb3afda0713459914ebc

parent: a0391a91d6

Verified · cmc

cmc <hello@cleberg.net> · 2026-08-28T21:45:19Z

screenshots: dismiss the save-password sheet before capturing

Signing in types a token into a SecureField, so iOS offers to save it —
and the sheet sits over the dashboard, which is where the screenshot is
taken. Earlier runs missed it only because the simulator was already
signed in. It belongs to springboard and takes longer than five seconds
to appear.
gitbayUITests/LiveSmokeUITests.swift +21
@@ -729,6 +729,27 @@ extension LiveSmokeUITests {
729729 focusAndType(tokenField, token + "\n")
730730 XCTAssertTrue(app.staticTexts["Dashboard"].firstMatch
731731 .waitForExistence(timeout: 20), "sign-in did not land")
732 dismissSavePasswordPrompt()
733 }
734
735 /// iOS offers to save whatever went into a SecureField, and the sheet
736 /// sits over the app until answered over the dashboard, in one set
737 /// of store screenshots. It belongs to springboard, not to the app.
738 private func dismissSavePasswordPrompt() {
739 let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
740 let notNow = springboard.buttons["Not Now"].firstMatch
741 if notNow.waitForExistence(timeout: 8) {
742 notNow.tap()
743 _ = waitForDisappearance(notNow, timeout: 10)
744 return
745 }
746 let inApp = app.buttons["Not Now"].firstMatch
747 if inApp.waitForExistence(timeout: 3) {
748 inApp.tap()
749 _ = waitForDisappearance(inApp, timeout: 10)
750 return
751 }
752 // No prompt is fine: iOS only offers once per credential.
732753 }
733754
734755 /// Capture a screen, but not while it is still loading. These go to