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 testDisplayTypeFromSettings() { openSettings() let displayType = app.segmentedControls[IDs.settingsDisplayType] XCTAssertTrue(displayType.waitForExistence(timeout: 3), "翻页方式控件未出现") displayType.buttons["横滑"].tap() 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 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.settingsDisplayType].waitForExistence(timeout: 3)) } }