import XCTest final class ReaderAnnotationExtendedTests: XCTestCase { private let app = XCUIApplication() override func setUpWithError() throws { continueAfterFailure = false } func testBottomToolbarHasAddHighlightButton() { app.launchAndOpenSampleBook() app.waitForReader() app.showReaderChromeIfNeeded() let addHighlightButton = app.buttons[IDs.readerAddHighlight] XCTAssertTrue(addHighlightButton.waitForExistence(timeout: 5), "底部工具栏标注按钮未出现") } func testBottomToolbarHasHighlightsButton() { app.launchAndOpenSampleBook() app.waitForReader() app.showReaderChromeIfNeeded() let highlightsButton = app.buttons[IDs.readerHighlights] XCTAssertTrue(highlightsButton.waitForExistence(timeout: 5), "底部工具栏高亮列表按钮未出现") } func testBottomToolbarButtonsLayout() { app.launchAndOpenSampleBook() app.waitForReader() app.showReaderChromeIfNeeded() XCTAssertTrue(app.buttons[IDs.readerToc].waitForExistence(timeout: 5), "目录按钮未出现") XCTAssertTrue(app.buttons[IDs.readerBookmarks].exists, "书签按钮未出现") XCTAssertTrue(app.buttons[IDs.readerHighlights].exists, "高亮按钮未出现") XCTAssertTrue(app.buttons[IDs.readerAddHighlight].exists, "标注按钮未出现") XCTAssertTrue(app.buttons[IDs.readerSettings].exists, "设置按钮未出现") } func testSelectionTextElementExists() throws { app.launchAndOpenSampleBook() app.waitForReader() _ = try app.requireSelectionText() } func testReaderStateReportsPageInfo() { app.launchAndOpenSampleBook() app.waitForReader() let state = app.staticTexts[IDs.demoReaderState] XCTAssertTrue(state.waitForExistence(timeout: 5)) XCTAssertTrue(state.label.contains("reader=opened"), "状态未包含 reader=opened") XCTAssertTrue(state.label.contains("page="), "状态未包含 page 信息") XCTAssertTrue(state.label.contains("display="), "状态未包含 display 信息") } func testReaderStateReportsHighlightCount() { app.launchAndOpenSampleBook() app.waitForReader() let state = app.staticTexts[IDs.demoReaderState] XCTAssertTrue(state.waitForExistence(timeout: 5)) XCTAssertTrue(state.label.contains("highlights=0"), "初始高亮数应为 0") } }