Add tests for linking a new device. (#4934)

* Replace GrantLoginWithQrCodeHandlerSDKMock with LinkNewDeviceServiceMock.

Add tests for all initial states on the QRCodeLoginScreen.

* Add tests for linking both mobile and desktop devices.

* Add UI tests for linking a new device.

* Don't show the Link Desktop Computer button when running on macOS.

This mirrors the decision to hide the Sign In With QR Code button on the start screen.
This commit is contained in:
Doug
2026-01-09 13:10:14 +00:00
committed by GitHub
parent 00dc901ce1
commit 7cb472a4f7
21 changed files with 409 additions and 93 deletions
+23 -1
View File
@@ -11,16 +11,38 @@ import XCTest
class LinkNewDeviceTests: XCTestCase {
enum Step {
static let selectDevice = 1
static let linkMobileDevice = 2
static let linkDesktopComputer = 3
static let dismissed = 99
}
func testFlow() async throws {
// Root screen
let app = Application.launch(.linkNewDevice)
try await app.assertScreenshot(step: Step.selectDevice)
// Link showing a QR code
let mobileDeviceButton = app.buttons[A11yIdentifiers.linkNewDeviceScreen.mobileDevice]
mobileDeviceButton.tap()
try await app.assertScreenshot(step: Step.linkMobileDevice)
// Pop back to the root screen
let backButton = app.buttons["Link new device"]
backButton.tap()
try await app.assertScreenshot(step: Step.selectDevice)
// Link scanning a QR code
let desktopComputerButton = app.buttons[A11yIdentifiers.linkNewDeviceScreen.desktopComputer]
desktopComputerButton.tap()
try await app.assertScreenshot(step: Step.linkDesktopComputer)
// Pop back to the root screen
backButton.tap()
try await app.assertScreenshot(step: Step.selectDevice)
// Dismiss the flow
let cancelButton = app.buttons[A11yIdentifiers.linkNewDeviceScreen.cancel]
cancelButton.tap()
try await app.assertScreenshot(step: Step.dismissed)
}
}
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d01d3cb0985b5720c032a0e157bbe7e453f4b7cba00d050f7731e8a821814be0
size 190548
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4f35198629723417903f1709bffd656ec968ce9ec135be1f52df5e7fa41352d5
size 173283
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d64aface8fd46495e451a982c47f477f9381a1e669778f027582bc968537d4ce
size 164767
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c1fc3df2dca28137e09abdb4a411168fb1c68cfab92bcaf40951351ec9812722
size 136852