import XCTest final class ReaderAnnotationTests: XCTestCase { private let app = XCUIApplication() override func setUpWithError() throws { continueAfterFailure = false } func testSelectionMenuCreatesHighlight() { app.launchAndOpenSampleBook(pageNumber: 2) app.waitForReader() app.waitForReaderPage(2) app.hideReaderChromeIfNeeded() let content = app.otherElements[IDs.readerSelectionText].firstMatch XCTAssertTrue(content.waitForExistence(timeout: 5), "阅读内容区域未出现") app.waitForReaderState(containing: "toolbar=hidden", timeout: 5) let start = content.coordinate(withNormalizedOffset: CGVector(dx: 0.2, dy: 0.5)) let end = content.coordinate(withNormalizedOffset: CGVector(dx: 0.8, dy: 0.5)) start.press(forDuration: 0.8, thenDragTo: end) app.waitForReaderState(containing: "selection=1", timeout: 5) let highlightMenuItem = app.menuItems["高亮"] let highlightButton = app.buttons[IDs.readerSelectionHighlight] if highlightMenuItem.waitForExistence(timeout: 3) { highlightMenuItem.tap() } else if highlightButton.waitForExistence(timeout: 3) { highlightButton.tap() } else { XCTFail("选中文本后未出现高亮菜单") } app.waitForReaderState(containing: "highlights=1", timeout: 8) } func testLongPressSelectionDoesNotShowToolbars() { app.launchAndOpenSampleBook(pageNumber: 2) app.waitForReader() app.waitForReaderPage(2) app.hideReaderChromeIfNeeded() let content = app.otherElements[IDs.readerSelectionText].firstMatch XCTAssertTrue(content.waitForExistence(timeout: 5), "阅读内容区域未出现") app.waitForReaderState(containing: "toolbar=hidden", timeout: 5) let start = content.coordinate(withNormalizedOffset: CGVector(dx: 0.2, dy: 0.5)) let end = content.coordinate(withNormalizedOffset: CGVector(dx: 0.8, dy: 0.5)) start.press(forDuration: 0.8, thenDragTo: end) app.waitForReaderState(containing: "selection=1", timeout: 8) app.waitForReaderState(containing: "toolbar=hidden", timeout: 3) } }