import XCTest final class PageNavigationTests: XCTestCase { private let app = XCUIApplication() override func setUpWithError() throws { continueAfterFailure = false } func testContentAreaExistsForNavigation() { app.launchAndOpenSampleBook() app.waitForReader() let content = app.otherElements[IDs.readerContent] XCTAssertTrue(content.waitForExistence(timeout: 5), "阅读内容区域未出现") } func testPagingViewExistsInScrollMode() { app.launchAndOpenSampleBook(displayType: "scroll") app.waitForReader() app.waitForReaderState(containing: "display=horizontalScroll", timeout: 5) let paging = app.collectionViews[IDs.readerPaging] XCTAssertTrue(paging.waitForExistence(timeout: 5), "分页滚动视图未出现") } func testPagingViewExistsInVerticalScrollMode() { app.launchAndOpenSampleBook(displayType: "vertical") app.waitForReader() app.waitForReaderState(containing: "display=verticalScroll", timeout: 5) let paging = app.collectionViews[IDs.readerPaging] XCTAssertTrue(paging.waitForExistence(timeout: 5), "分页滚动视图未出现") } func testSwipeInHorizontalScrollMode() { app.launchAndOpenSampleBook(displayType: "scroll") app.waitForReader() app.waitForReaderState(containing: "display=horizontalScroll", timeout: 5) let paging = app.collectionViews[IDs.readerPaging] XCTAssertTrue(paging.waitForExistence(timeout: 5)) let state = app.staticTexts[IDs.demoReaderState] let beforeLabel = state.label paging.swipeLeft() let deadline = Date().addingTimeInterval(5) while Date() < deadline { if state.exists && state.label != beforeLabel { break } RunLoop.current.run(until: Date().addingTimeInterval(0.1)) } XCTAssertNotEqual(beforeLabel, state.label, "水平滑动后页码未变化") } }