cmux/cmuxUITests/SidebarResizeUITests.swift

65 lines
2.6 KiB
Swift

import XCTest
final class SidebarResizeUITests: XCTestCase {
override func setUp() {
super.setUp()
continueAfterFailure = false
}
func testSidebarResizerTracksCursor() {
let app = XCUIApplication()
app.launch()
let elements = app.descendants(matching: .any)
let resizer = elements["SidebarResizer"]
XCTAssertTrue(resizer.waitForExistence(timeout: 5.0))
let initialX = resizer.frame.minX
let start = resizer.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5))
let end = start.withOffset(CGVector(dx: 80, dy: 0))
start.press(forDuration: 0.1, thenDragTo: end)
let afterX = resizer.frame.minX
let rightDelta = afterX - initialX
XCTAssertGreaterThanOrEqual(rightDelta, 40, "Expected drag-right to move resizer meaningfully")
XCTAssertLessThanOrEqual(rightDelta, 82, "Resizer moved farther than requested drag-right offset")
let startBack = resizer.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5))
let endBack = startBack.withOffset(CGVector(dx: -120, dy: 0))
startBack.press(forDuration: 0.1, thenDragTo: endBack)
let afterBackX = resizer.frame.minX
let leftDelta = afterBackX - afterX
// Sidebar width is clamped in-product; a large left drag may hit the minimum width.
XCTAssertLessThanOrEqual(leftDelta, -40, "Expected drag-left to move resizer left")
XCTAssertGreaterThanOrEqual(leftDelta, -122, "Resizer moved farther than requested drag-left offset")
}
func testSidebarResizerHasMaximumWidthCap() {
let app = XCUIApplication()
app.launch()
let window = app.windows.firstMatch
XCTAssertTrue(window.waitForExistence(timeout: 5.0))
let elements = app.descendants(matching: .any)
let resizer = elements["SidebarResizer"]
XCTAssertTrue(resizer.waitForExistence(timeout: 5.0))
let start = resizer.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5))
let farRight = start.withOffset(CGVector(dx: 5000, dy: 0))
start.press(forDuration: 0.1, thenDragTo: farRight)
let windowFrame = window.frame
let remainingWidth = max(0, windowFrame.maxX - resizer.frame.maxX)
let minimumExpectedRemaining = windowFrame.width * 0.45
XCTAssertGreaterThanOrEqual(
remainingWidth,
minimumExpectedRemaining,
"Expected sidebar max-width clamp to leave substantial terminal width. " +
"remaining=\(remainingWidth), window=\(windowFrame.width)"
)
}
}