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.waitForSettingsPanel()) } func testBrightnessSliderExists() { openSettings() let slider = app.sliders[IDs.settingsBrightness] XCTAssertTrue(slider.waitForExistence(timeout: 3), "亮度滑块未出现") } func testLineHeightControl() { openSettings() for title in ["紧凑", "标准", "宽松"] { XCTAssertTrue( app.selectSettingsPillOption(pillIdentifier: IDs.settingsLineHeight, optionTitle: title), "行距应可切换到\(title)" ) } app.buttons[IDs.settingsDone].tap() XCTAssertTrue(app.buttons[IDs.readerBack].waitForExistence(timeout: 5)) } func testDisplayTypeFromSettings() { openSettings() XCTAssertTrue( app.selectSettingsPillOption(pillIdentifier: IDs.settingsDisplayType, optionTitle: "横滑"), "翻页方式应可切换到横滑" ) app.buttons[IDs.settingsDone].tap() app.waitForDemoReaderState(timeout: 5, description: "display=horizontalScroll") { $0.display == "horizontalScroll" } } func testAllThemeButtonsExist() { openSettings() for index in 0...5 { let themeButton = app.buttons[IDs.settingsTheme(index)] XCTAssertTrue(themeButton.waitForExistence(timeout: 3), "主题按钮 \(index) 未出现") } } /// 面板是固定高度布局,所有控件一屏内可达,不需要滚动 func testAllSettingsControlsReachableWithoutScrolling() { openSettings() XCTAssertTrue(app.sliders[IDs.settingsFontSize].waitForExistence(timeout: 3)) XCTAssertTrue(app.sliders[IDs.settingsBrightness].waitForExistence(timeout: 3)) XCTAssertTrue(app.buttons[IDs.settingsLineHeight].waitForExistence(timeout: 3)) XCTAssertTrue(app.buttons[IDs.settingsDisplayType].waitForExistence(timeout: 3)) } }