import XCTest /// 固定布局(pre-paginated)书籍的旋转回归: /// 每次旋转会使预加载缓存签名失效并批量丢弃 WKWebView 页面, /// 历史上曾因 script message handler 保留环导致 WebView 泄漏累积, /// 多次旋转后在 CA commit 阶段 abort(CA::Render::Encoder::grow)。 final class FixedLayoutRotationTests: XCTestCase { private let app = XCUIApplication() override func setUpWithError() throws { continueAfterFailure = false XCUIDevice.shared.orientation = .portrait } override func tearDownWithError() throws { XCUIDevice.shared.orientation = .portrait } func testFixedLayoutBookSurvivesRepeatedRotation() { app.launchAndOpenSampleBook(bookTitleQuery: "熊爷爷") app.waitForReader() for _ in 0..<3 { XCUIDevice.shared.orientation = .landscapeLeft RunLoop.current.run(until: Date().addingTimeInterval(2)) XCUIDevice.shared.orientation = .portrait RunLoop.current.run(until: Date().addingTimeInterval(2)) } XCTAssertEqual(app.state, .runningForeground, "反复旋转后 app 已退出(疑似崩溃)") app.waitForReader() } }