diff --git a/Example-Swift/FSCalendarSwiftExampleUITests/FSCalendarSwiftExampleUITests.swift b/Example-Swift/FSCalendarSwiftExampleUITests/FSCalendarSwiftExampleUITests.swift index e0eea49..a1046b7 100644 --- a/Example-Swift/FSCalendarSwiftExampleUITests/FSCalendarSwiftExampleUITests.swift +++ b/Example-Swift/FSCalendarSwiftExampleUITests/FSCalendarSwiftExampleUITests.swift @@ -9,33 +9,24 @@ import XCTest class FSCalendarSwiftExampleUITests: XCTestCase { - + + // MARK: - Setup / Tear Down + override func setUp() { super.setUp() - - // Put setup code here. This method is called before the invocation of each test method in the class. - - // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false - // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. XCUIApplication().launch() - - // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. } override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. super.tearDown() } - - func testExample() { - self.doTestDIY() - self.doTestScope() - self.doTestDelegateAppearance() - self.doTestInterfaceBuilder() - } - - func doTestDIY() { + + + // MARK: - Tests + + func testDIY() { let application = XCUIApplication() application.tables.element(boundBy: 0).staticTexts["DIY"].tap() let calendar: XCUIElement = application.otherElements["calendar"] @@ -53,7 +44,7 @@ class FSCalendarSwiftExampleUITests: XCTestCase { application.buttons.element(boundBy: 0).tap() } - func doTestDelegateAppearance() { + func testDelegateAppearance() { let application = XCUIApplication() application.tables.element(boundBy: 0).staticTexts["Delegate Appearance"].tap() @@ -88,7 +79,7 @@ class FSCalendarSwiftExampleUITests: XCTestCase { application.buttons.element(boundBy: 0).tap() } - func doTestScope() { + func testScope() { let application = XCUIApplication() application.tables.element(boundBy: 0).staticTexts["FSCalendarScope"].tap() let tableView: XCUIElement = application.tables.element(boundBy: 0) @@ -114,8 +105,7 @@ class FSCalendarSwiftExampleUITests: XCTestCase { application.buttons.element(boundBy: 0).tap() } - func doTestInterfaceBuilder() { - + func testInterfaceBuilder() { let application = XCUIApplication() application.tables.element(boundBy: 0).staticTexts["Interface Builder"].tap() let calendar = application.otherElements["calendar"] @@ -177,22 +167,29 @@ class FSCalendarSwiftExampleUITests: XCTestCase { Thread.sleep(forTimeInterval: 0.5) configButton.tap() - application.tables.element(boundBy: 0).swipeUp() - application.tables.staticTexts["Monday"].tap() + let table = application.tables.element(boundBy: 0) + let monday = application.tables.staticTexts["Monday"] + swipeUpUntilElementIsVisible(table: table, element: monday) + monday.tap() + calendar.swipeUp() calendar.swipeDown() Thread.sleep(forTimeInterval: 0.5) configButton.tap() - application.tables.element(boundBy: 0).swipeUp() - application.tables.staticTexts["Tuesday"].tap() + let tuesday = application.tables.staticTexts["Tuesday"] + swipeUpUntilElementIsVisible(table: table, element: tuesday) + tuesday.tap() + calendar.swipeUp() calendar.swipeDown() Thread.sleep(forTimeInterval: 0.5) configButton.tap() - application.tables.element(boundBy: 0).swipeUp() - application.tables.staticTexts["Sunday"].tap() + let sunday = application.tables.staticTexts["Sunday"] + swipeUpUntilElementIsVisible(table: table, element: sunday) + sunday.tap() + calendar.swipeUp() calendar.swipeDown() Thread.sleep(forTimeInterval: 1.5) @@ -209,6 +206,18 @@ class FSCalendarSwiftExampleUITests: XCTestCase { // Exit Thread.sleep(forTimeInterval: 1.0) application.buttons.element(boundBy: 0).tap() - } + + + // MARK: - Helper Methods + + private let maxSwipes = 5 + + private func swipeUpUntilElementIsVisible(table: XCUIElement, element: XCUIElement) { + var swipes = 0 + while !element.exists && swipes < maxSwipes { + table.swipeUp() + swipes += 1 + } + } }