- 新增 BookmarkTests/PageNavigationTests/TableOfContentsTests 等阅读器功能测试 - 扩展 AccessibilityIdentifiers 支持更多 UI 元素定位 - XCUIApplication+Launch: 增加启动参数支持(reset state、自定义书籍) - ReaderAnnotationTests: 完善标注测试覆盖 - ViewController: 支持 --demo-reset-state 参数清理持久化状态 - 新增凡人修仙传测试样本 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
80 lines
2.9 KiB
Swift
80 lines
2.9 KiB
Swift
import XCTest
|
|
|
|
final class SettingsExtendedTests: XCTestCase {
|
|
private let app = XCUIApplication()
|
|
|
|
override func setUpWithError() throws {
|
|
continueAfterFailure = false
|
|
}
|
|
|
|
private func openSettings() {
|
|
app.launchAndOpenSampleBook()
|
|
app.waitForReader()
|
|
app.showReaderChromeIfNeeded()
|
|
|
|
XCTAssertTrue(app.buttons[IDs.readerSettings].waitForExistence(timeout: 5))
|
|
app.buttons[IDs.readerSettings].tap()
|
|
XCTAssertTrue(app.scrollViews[IDs.settingsScroll].waitForExistence(timeout: 5))
|
|
}
|
|
|
|
func testBrightnessSliderExists() {
|
|
openSettings()
|
|
let slider = app.sliders[IDs.settingsBrightness]
|
|
XCTAssertTrue(slider.waitForExistence(timeout: 3), "亮度滑块未出现")
|
|
}
|
|
|
|
func testLineHeightControl() {
|
|
openSettings()
|
|
let lineHeight = app.segmentedControls[IDs.settingsLineHeight]
|
|
XCTAssertTrue(lineHeight.waitForExistence(timeout: 3), "行距控件未出现")
|
|
|
|
lineHeight.buttons["紧凑"].tap()
|
|
lineHeight.buttons["标准"].tap()
|
|
lineHeight.buttons["宽松"].tap()
|
|
|
|
app.buttons[IDs.settingsDone].tap()
|
|
XCTAssertTrue(app.buttons[IDs.readerBack].waitForExistence(timeout: 5))
|
|
}
|
|
|
|
func testColumnCountControl() {
|
|
openSettings()
|
|
let columns = app.segmentedControls[IDs.settingsColumns]
|
|
XCTAssertTrue(columns.waitForExistence(timeout: 3), "分栏控件未出现")
|
|
|
|
columns.buttons["单栏"].tap()
|
|
columns.buttons["双栏"].tap()
|
|
|
|
app.buttons[IDs.settingsDone].tap()
|
|
XCTAssertTrue(app.buttons[IDs.readerBack].waitForExistence(timeout: 5))
|
|
}
|
|
|
|
func testDisplayTypeFromSettings() {
|
|
openSettings()
|
|
let displayType = app.segmentedControls[IDs.settingsDisplayType]
|
|
XCTAssertTrue(displayType.waitForExistence(timeout: 3), "翻页方式控件未出现")
|
|
|
|
displayType.buttons["横滑"].tap()
|
|
app.buttons[IDs.settingsDone].tap()
|
|
app.waitForReaderState(containing: "display=horizontalScroll", timeout: 5)
|
|
}
|
|
|
|
func testAllThemeButtonsExist() {
|
|
openSettings()
|
|
for index in 0...5 {
|
|
let themeButton = app.buttons[IDs.settingsTheme(index)]
|
|
XCTAssertTrue(themeButton.waitForExistence(timeout: 3), "主题按钮 \(index) 未出现")
|
|
}
|
|
}
|
|
|
|
func testScrollSettingsToReachAllControls() {
|
|
openSettings()
|
|
let scroll = app.scrollViews[IDs.settingsScroll]
|
|
XCTAssertTrue(scroll.waitForExistence(timeout: 3))
|
|
|
|
XCTAssertTrue(app.sliders[IDs.settingsBrightness].waitForExistence(timeout: 3))
|
|
XCTAssertTrue(app.segmentedControls[IDs.settingsLineHeight].waitForExistence(timeout: 3))
|
|
XCTAssertTrue(app.segmentedControls[IDs.settingsColumns].waitForExistence(timeout: 3))
|
|
XCTAssertTrue(app.segmentedControls[IDs.settingsDisplayType].waitForExistence(timeout: 3))
|
|
}
|
|
}
|