Simplify LinkNewDeviceScreen preview test setup and fix preview and accessibility test reliability.

This commit is contained in:
Stefan Ceriu
2026-02-24 17:58:41 +02:00
committed by Stefan Ceriu
parent 11f9162e0a
commit 69e3f8bc9b
6 changed files with 17 additions and 38 deletions
@@ -19,9 +19,14 @@ class LinkNewDeviceScreenViewModel: LinkNewDeviceScreenViewModelType, LinkNewDev
actionsSubject.eraseToAnyPublisher()
}
init(clientProxy: ClientProxyProtocol) {
init(clientProxy: ClientProxyProtocol, initialState: LinkNewDeviceScreenViewState? = nil) {
self.clientProxy = clientProxy
if let initialState {
super.init(initialViewState: initialState)
return
}
let isQRCodeScanningSupported = !ProcessInfo.processInfo.isiOSAppOnMac
super.init(initialViewState: LinkNewDeviceScreenViewState(showLinkDesktopComputerButton: isQRCodeScanningSupported))
@@ -141,34 +141,8 @@ struct LinkNewDeviceScreen_Previews: PreviewProvider, TestablePreview {
}
static func makeViewModel(mode: LinkNewDeviceScreenViewState.Mode) -> LinkNewDeviceScreenViewModel {
let clientProxy = ClientProxyMock(.init())
clientProxy.isLoginWithQRCodeSupportedClosure = {
switch mode {
case .loading:
try? await Task.sleep(for: .seconds(20))
return false
case .error(.notSupported):
return false
case .readyToLink, .error:
return true
}
}
let linkMobileProgressSubject = CurrentValueSubject<LinkNewDeviceService.LinkMobileProgress, QRCodeLoginError>(.starting)
clientProxy.linkNewDeviceServiceReturnValue = LinkNewDeviceServiceMock(.init(linkMobileProgressPublisher: linkMobileProgressSubject.asCurrentValuePublisher()))
let viewModel = LinkNewDeviceScreenViewModel(clientProxy: clientProxy)
Task {
try? await Task.sleep(for: .milliseconds(100))
if case .readyToLink(isGeneratingCode: true) = mode {
viewModel.context.send(viewAction: .linkMobileDevice)
} else if case .error = mode {
viewModel.context.send(viewAction: .linkMobileDevice)
linkMobileProgressSubject.send(completion: .failure(.unknown))
}
}
return viewModel
LinkNewDeviceScreenViewModel(clientProxy: ClientProxyMock(.init()),
initialState: .init(mode: mode,
showLinkDesktopComputerButton: true))
}
}
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:865ad5f990f5afef41e924c286aebb8c99d9629577f4d75b237aa9972aa4a167
size 96939
oid sha256:bd46a891e0688e239d97d83fb2b4baecc148d263b8e242a190435803e87a8246
size 93795
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9619af1b33240507268b5b8ff1934e025758aaf23ad8b6d5a42a5e3baaed20d0
size 106049
oid sha256:2a4de98d1a8011bf49f47a1d361ebb67ea80d0311d8d202f3ff72b19b2bd0542
size 106647
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d59e49988fd995a3af8ec3ed54a951a6f7e6675d135cc8c0ffba780f64535365
size 53470
oid sha256:99c2ade9e1c6580b8898e71e1399cdc2692049e0ec8637c706ff0bee62c14639
size 53340
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:84dcb8268c7f3f878ffd5d32beb9991a6e7212894e799b1df509a0e4a314516c
size 66759
oid sha256:6c3677cfc9cb46a3adc07d65ba53db8353f2922c38fd051e35fafa8c3e8adc28
size 70486