12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- //
- // NextcloudUITests.swift
- // NextcloudUITests
- //
- // Created by Milen Pivchev on 5/19/23.
- // Copyright © 2023 Marino Faggiana. All rights reserved.
- //
- import XCTest
- final class LoginUITests: BaseUIXCTestCase {
- private let baseUrl = EnvVars.testServerUrl
- private let user = EnvVars.testUser
- private let userId = EnvVars.testUser
- private let password = EnvVars.testAppPassword
- private lazy var account = "\(userId) \(baseUrl)"
- let app = XCUIApplication()
- override func setUp() {
- app.launchArguments += ["UI_TESTING"]
- }
- func test_logIn_withProperParams_shouldLogInAndGoToHomeScreen() throws {
- app.launch()
- let loginButton = app.buttons["Log in"]
- XCTAssert(loginButton.waitForExistence(timeout: timeoutSeconds))
- loginButton.tap()
- let serverAddressHttpsTextField = app.textFields["Server address https:// …"]
- serverAddressHttpsTextField.tap()
- serverAddressHttpsTextField.typeText(baseUrl)
- let button = app.windows.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .button).element(boundBy: 0)
- button.tap()
- let webViewsQuery = app.webViews.webViews.webViews
- let loginButton2 = webViewsQuery/*@START_MENU_TOKEN@*/.buttons["Log in"]/*[[".otherElements.matching(identifier: \"Nextcloud\")",".otherElements[\"main\"].buttons[\"Log in\"]",".buttons[\"Log in\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/
- XCTAssert(loginButton2.waitForExistence(timeout: timeoutSeconds))
- waitForEnabledAndHittable(object: loginButton2)
- loginButton2.tap()
- let element = webViewsQuery/*@START_MENU_TOKEN@*/.otherElements["main"]/*[[".otherElements[\"Login – Nextcloud\"].otherElements[\"main\"]",".otherElements[\"main\"]"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/.children(matching: .other).element(boundBy: 1)
- let usernameTextField = element.children(matching: .other).element(boundBy: 2).children(matching: .textField).element
- XCTAssert(usernameTextField.waitForExistence(timeout: timeoutSeconds))
- usernameTextField.tap()
- usernameTextField.typeText(user)
- let passwordTextField = element.children(matching: .other).element(boundBy: 4).children(matching: .secureTextField).element
- passwordTextField.tap()
- passwordTextField.typeText(user)
- let loginButton3 = webViewsQuery/*@START_MENU_TOKEN@*/.buttons["Log in"]/*[[".otherElements[\"Login – Nextcloud\"]",".otherElements[\"main\"].buttons[\"Log in\"]",".buttons[\"Log in\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/
- XCTAssert(loginButton3.waitForExistence(timeout: timeoutSeconds))
- loginButton3.tap()
- let grantAccessButton = webViewsQuery/*@START_MENU_TOKEN@*/.buttons["Grant access"]/*[[".otherElements.matching(identifier: \"Nextcloud\")",".otherElements[\"main\"].buttons[\"Grant access\"]",".buttons[\"Grant access\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/
- XCTAssert(grantAccessButton.waitForExistence(timeout: timeoutSeconds))
- waitForEnabledAndHittable(object: grantAccessButton)
- grantAccessButton.tap()
- // Check if we are in the home screen
- XCTAssert(app.navigationBars["Nextcloud"].waitForExistence(timeout: timeoutSeconds))
- XCTAssert(app.tabBars["Tab Bar"].waitForExistence(timeout: timeoutSeconds))
- }
- }
|