import XCTest enum TestFlows { @discardableResult static func navigateToLoginFromOnboarding(app: XCUIApplication) -> LoginScreen { let welcome = OnboardingWelcomeScreen(app: app) welcome.waitForLoad() welcome.tapAlreadyHaveAccount() let login = LoginScreen(app: app) login.waitForLoad() return login } @discardableResult static func navigateStartFreshToCreateAccount( app: XCUIApplication, residenceName: String = "UI Test Residence" ) -> OnboardingCreateAccountScreen { let welcome = OnboardingWelcomeScreen(app: app) welcome.waitForLoad() welcome.tapStartFresh() let valueProps = OnboardingValuePropsScreen(app: app) valueProps.waitForLoad() valueProps.tapContinue() let nameResidence = OnboardingNameResidenceScreen(app: app) nameResidence.waitForLoad() nameResidence.enterResidenceName(residenceName) nameResidence.tapContinue() let createAccount = OnboardingCreateAccountScreen(app: app) createAccount.waitForLoad() return createAccount } @discardableResult static func openRegisterFromLogin(app: XCUIApplication) -> RegisterScreen { let login: LoginScreen let loginRoot = app.otherElements[UITestID.Root.login] if loginRoot.exists || app.textFields[UITestID.Auth.usernameField].exists { login = LoginScreen(app: app) login.waitForLoad() } else { login = navigateToLoginFromOnboarding(app: app) } login.tapSignUp() let register = RegisterScreen(app: app) register.waitForLoad() return register } }