// // ComposeTests.swift // TuskerUITests // // Created by Shadowfacts on 9/12/20. // Copyright © 2020 Shadowfacts. All rights reserved. // import XCTest import Pachyderm class ComposeTests: TuskerUITests { override func setUp() { super.setUp() // router.allRoutes() app.launchEnvironment["UI_TESTING_LOGIN"] = "true" app.launch() app.tabBars.buttons["Compose"].tap() } func testCurrentAccount() { XCTAssertTrue(app.images["Admin Account avatar"].exists, "avatar image exists") XCTAssertTrue(app.staticTexts["Admin Account"].exists, "display name label exists") XCTAssertTrue(app.staticTexts["@admin"].exists, "acct label exists") } func testBodyPlaceholder() { XCTAssertTrue(app.staticTexts["What's on your mind?"].exists, "placeholder exists") app.textViews.firstMatch.typeText("Blah") XCTAssertFalse(app.staticTexts["What's on your mind?"].exists, "placeholder does not exist") } func testCharacterCounter() { XCTAssertTrue(app.staticTexts["500 characters remaining"].exists, "initial character count is 500") let textView = app.textViews.firstMatch let fragments = [ "Hello", "World", "@admin", "@admin@example.com", "https://foo.example.com/?bar=baz#qux", ] var remaining = 500 for s in fragments { let length = CharacterCounter.count(text: s) // add 1 for newline remaining -= length + 1 textView.typeText(s + "\n") XCTAssertTrue(app.staticTexts["\(remaining) characters remaining"].exists, "subsequent character count is \(remaining)") } } // func testToolbarSwitching() { // // text view is automatically focused, so unfocus // app.swipeDown() // // XCTAssertEqual(app.toolbars.count, 1) // XCTAssertEqual(app.toolbars.buttons.count, 3) // XCTAssertTrue(app.toolbars.buttons["CW"].exists) // XCTAssertTrue(app.toolbars.buttons["Visibility: Public"].exists) // XCTAssertTrue(app.toolbars.buttons["Drafts"].exists) // // } func testContentWarning() { let toolbar = app.toolbars.firstMatch XCTAssertTrue(toolbar.waitForExistence(timeout: 0.1)) XCTAssertEqual(app.toolbars.count, 1, "there is only 1 toolbar") let cwButton = toolbar.buttons["CW"] XCTAssertTrue(cwButton.exists, "the CW button exists") cwButton.tap() let cwField = app.textFields.firstMatch XCTAssertEqual(cwField.placeholderValue, "Write your warning here") XCTAssertTrue(app.staticTexts["500 characters remaining"].exists) cwField.tap() // on iOS 14, the first type text is typed into a SwiftUI TextField by a test has the 1st character is inexplicably dropped >.< let str = "fooo" cwField.typeText(str) XCTAssertTrue(app.staticTexts["497 characters remaining"].exists) // CharacterCounter is not used => '@' is counted cwField.typeText(" @bar") XCTAssertTrue(app.staticTexts["492 characters remaining"].exists) } }