mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Add UI tests for mandatory PIN setup flow. (#2049)
This commit is contained in:
+1
-1
@@ -150,7 +150,7 @@ struct SecureBackupScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
}
|
}
|
||||||
.previewDisplayName("Recovery incomplete")
|
.previewDisplayName("Recovery incomplete")
|
||||||
}
|
}
|
||||||
.snapshot(delay: 0.25)
|
.snapshot(delay: 0.5)
|
||||||
}
|
}
|
||||||
|
|
||||||
static func viewModel(keyBackupState: SecureBackupKeyBackupState,
|
static func viewModel(keyBackupState: SecureBackupKeyBackupState,
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ class MockScreen: Identifiable {
|
|||||||
let appLockService = AppLockService(keychainController: KeychainControllerMock(), appSettings: ServiceLocator.shared.settings)
|
let appLockService = AppLockService(keychainController: KeychainControllerMock(), appSettings: ServiceLocator.shared.settings)
|
||||||
let coordinator = AppLockScreenCoordinator(parameters: .init(appLockService: appLockService))
|
let coordinator = AppLockScreenCoordinator(parameters: .init(appLockService: appLockService))
|
||||||
return coordinator
|
return coordinator
|
||||||
case .appLockSetupFlow, .appLockSetupFlowUnlock:
|
case .appLockSetupFlow, .appLockSetupFlowUnlock, .appLockSetupFlowMandatory:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
// The flow expects an existing root coordinator, use the placeholder as a placeholder 😅
|
// The flow expects an existing root coordinator, use the placeholder as a placeholder 😅
|
||||||
navigationStackCoordinator.setRootCoordinator(BlankFormCoordinator())
|
navigationStackCoordinator.setRootCoordinator(BlankFormCoordinator())
|
||||||
@@ -186,7 +186,8 @@ class MockScreen: Identifiable {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
context: context)
|
context: context)
|
||||||
|
|
||||||
let coordinator = AppLockSetupFlowCoordinator(presentingFlow: .settings,
|
let flow: AppLockSetupFlowCoordinator.PresentationFlow = id == .appLockSetupFlowMandatory ? .onboarding : .settings
|
||||||
|
let coordinator = AppLockSetupFlowCoordinator(presentingFlow: flow,
|
||||||
appLockService: appLockService,
|
appLockService: appLockService,
|
||||||
navigationStackCoordinator: navigationStackCoordinator)
|
navigationStackCoordinator: navigationStackCoordinator)
|
||||||
coordinator.start()
|
coordinator.start()
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ enum UITestsScreenIdentifier: String {
|
|||||||
case appLockScreen
|
case appLockScreen
|
||||||
case appLockSetupFlow
|
case appLockSetupFlow
|
||||||
case appLockSetupFlowUnlock
|
case appLockSetupFlowUnlock
|
||||||
|
case appLockSetupFlowMandatory
|
||||||
case home
|
case home
|
||||||
case settings
|
case settings
|
||||||
case bugReport
|
case bugReport
|
||||||
|
|||||||
@@ -82,6 +82,30 @@ class AppLockSetupUITests: XCTestCase {
|
|||||||
try await app.assertScreenshot(.appLockSetupFlow, step: Step.clearedStack)
|
try await app.assertScreenshot(.appLockSetupFlow, step: Step.clearedStack)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testMandatoryCreateFlow() async throws {
|
||||||
|
app = Application.launch(.appLockSetupFlowMandatory)
|
||||||
|
|
||||||
|
// Create PIN screen (non-modal and no cancellation button).
|
||||||
|
try await app.assertScreenshot(.appLockSetupFlowMandatory, step: Step.createPIN)
|
||||||
|
|
||||||
|
enterPIN()
|
||||||
|
|
||||||
|
// Confirm PIN screen (non-modal and no cancellation button).
|
||||||
|
try await app.assertScreenshot(.appLockSetupFlowMandatory, step: Step.confirmPIN)
|
||||||
|
|
||||||
|
enterPIN()
|
||||||
|
|
||||||
|
// Setup biometrics screen (non-modal).
|
||||||
|
try await app.assertScreenshot(.appLockSetupFlowMandatory, step: Step.setupBiometrics)
|
||||||
|
|
||||||
|
let allowButton = app.buttons[A11yIdentifiers.appLockSetupBiometricsScreen.allow]
|
||||||
|
XCTAssertTrue(allowButton.exists, "The biometrics screen should be shown.")
|
||||||
|
allowButton.tap()
|
||||||
|
|
||||||
|
// The stack should remain on biometrics for the presenting flow to take over navigation.
|
||||||
|
try await app.assertScreenshot(.appLockSetupFlowMandatory, step: Step.setupBiometrics)
|
||||||
|
}
|
||||||
|
|
||||||
func testUnlockFlow() async throws {
|
func testUnlockFlow() async throws {
|
||||||
app = Application.launch(.appLockSetupFlowUnlock)
|
app = Application.launch(.appLockSetupFlowUnlock)
|
||||||
|
|
||||||
|
|||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:74c1eef2dee3b8ebf4f913129cf674c17e21a6d12a20d6c2eae8d699966d8040
|
||||||
|
size 146418
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:33b9be6c12c0001b6b3c2115a268a39462f44dbb9b518fc32ee1a973166d7786
|
||||||
|
size 146102
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:8feec0af9037c406c401a57e26d03e26f4eff43e7a3f43ba34221356c1b722af
|
||||||
|
size 90720
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:2ea0c189224d0c048d385966c9a5e2d911cc9176379014adefa9b62cbad462db
|
||||||
|
size 128199
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:c65a6e90789c3bf126aebe2adf6bef05f0546da9a467f3cb04da2dad98cd52dd
|
||||||
|
size 127762
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a036f0c6082f5d267d4359b42af3d38e0119ef533cb556ef049871f5e1618629
|
||||||
|
size 91826
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:70f114ac9bd51da1095b352d1fcf9a16e018e5ac529c8d3bf2d9780bf2525109
|
||||||
|
size 164955
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:0e720812f57e7f5f29be0d33c52a8a6628a95985c52172e08a2d1f5162d0bd9c
|
||||||
|
size 164530
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:59e577b405c86f7bef34d7e244696de5a84a092d5dcff9b0c034edcfd293d55d
|
||||||
|
size 105390
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ec887b50b32e86584eabe49019c387eb506c7f619f96239ea3ace251411e03f2
|
||||||
|
size 158026
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:2501a44a9cb3457ec861016f5ab3fdcd8a8c2e9b00d2299f1ad902d366ac0b76
|
||||||
|
size 157869
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:1aab47ddc65fc91df13162586382d94beb77c7391e4481eb4593a265b4179158
|
||||||
|
size 115892
|
||||||
Reference in New Issue
Block a user