TeraEditingProtectionUITests.swift (2085B)
1 import XCTest 2 3 final class TeraEditingProtectionUITests: XCTestCase { 4 @MainActor 5 func testCancelDiscardConfirmationKeepsEditingAndExplicitDiscardAppliesOnce() { 6 let app = XCUIApplication() 7 app.launchArguments = ["-UIPreferredContentSizeCategoryName", "UICTContentSizeCategoryL"] 8 app.launchEnvironment["TERA_IOS_UI_TEST_SHELL"] = "1" 9 app.launchEnvironment["TERA_IOS_UI_TEST_EDITING_PROTECTION"] = "1" 10 app.launch() 11 let tabBar = app.tabBars.firstMatch 12 XCTAssertTrue(tabBar.waitForExistence(timeout: 5)) 13 tabBar.buttons["Add"].tap() 14 let editing = app.textFields["tera.test.editing.value"] 15 XCTAssertTrue(editing.waitForExistence(timeout: 5)) 16 app.buttons["tera.test.editing.replace"].tap() 17 let discard = app.buttons["tera.add.protection.discard"] 18 XCTAssertTrue(discard.waitForExistence(timeout: 5)) 19 discard.tap() 20 let confirmation = app.sheets.firstMatch 21 XCTAssertTrue(confirmation.waitForExistence(timeout: 5)) 22 let keep = confirmation.buttons["Keep editing"] 23 if keep.exists { 24 keep.tap() 25 } else { 26 app.otherElements["PopoverDismissRegion"].coordinate(withNormalizedOffset: CGVector(dx: 0.1, dy: 0.75)).tap() 27 } 28 XCTAssertTrue(confirmation.waitForNonExistence(timeout: 5)) 29 XCTAssertEqual(editing.value as? String, "Keep this unfinished text") 30 XCTAssertEqual(app.staticTexts["tera.test.editing.replacements"].label, "0") 31 XCTAssertTrue(discard.waitForNonExistence(timeout: 5)) 32 app.buttons["tera.test.editing.replace"].tap() 33 XCTAssertTrue(discard.waitForExistence(timeout: 5)) 34 discard.tap() 35 XCTAssertTrue(confirmation.waitForExistence(timeout: 5)) 36 confirmation.buttons["Discard and continue"].tap() 37 let count = app.staticTexts["tera.test.editing.replacements"] 38 let applied = XCTNSPredicateExpectation(predicate: NSPredicate(format: "label == '1'"), object: count) 39 XCTAssertEqual(XCTWaiter.wait(for: [applied], timeout: 5), .completed) 40 XCTAssertEqual(editing.value as? String, "Editing") 41 XCTAssertTrue(discard.waitForNonExistence(timeout: 5)) 42 } 43 }