65 lines
2.6 KiB
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)"
|
|
)
|
|
}
|
|
}
|