Add ctrl-k command palette regression tests

This commit is contained in:
Lawrence Chen 2026-03-30 18:38:39 -07:00
parent 2d2d8da1c7
commit 1dab226bcc
No known key found for this signature in database
3 changed files with 82 additions and 17 deletions

View file

@ -2445,6 +2445,72 @@ final class AppDelegateShortcutRoutingTests: XCTestCase {
XCTAssertEqual(observedDelta, 1)
}
func testControlKDoesNotRoutePaletteMoveSelectionWhenSearchFieldIsFocused() {
guard let appDelegate = AppDelegate.shared else {
XCTFail("Expected AppDelegate.shared")
return
}
let windowId = appDelegate.createMainWindow()
defer {
closeWindow(withId: windowId)
}
guard let window = window(withId: windowId),
let contentView = window.contentView else {
XCTFail("Expected test window")
return
}
let overlayContainer = NSView(frame: contentView.bounds)
overlayContainer.identifier = commandPaletteOverlayContainerIdentifier
overlayContainer.alphaValue = 1
overlayContainer.isHidden = false
contentView.addSubview(overlayContainer)
let fieldEditor = CommandPaletteMarkedTextFieldEditor(frame: NSRect(x: 0, y: 0, width: 200, height: 24))
fieldEditor.isFieldEditor = true
overlayContainer.addSubview(fieldEditor)
XCTAssertTrue(window.makeFirstResponder(fieldEditor))
appDelegate.setCommandPaletteVisible(false, for: window)
defer {
overlayContainer.removeFromSuperview()
fieldEditor.removeFromSuperview()
}
let moveExpectation = expectation(
description: "Ctrl+K should not be rerouted as command palette move-selection"
)
moveExpectation.isInverted = true
let moveToken = NotificationCenter.default.addObserver(
forName: .commandPaletteMoveSelection,
object: nil,
queue: nil
) { _ in
moveExpectation.fulfill()
}
defer { NotificationCenter.default.removeObserver(moveToken) }
guard let controlKEvent = makeKeyDownEvent(
key: "\u{0b}",
modifiers: [.control],
keyCode: 40,
windowNumber: window.windowNumber
) else {
XCTFail("Failed to construct Ctrl+K event")
return
}
#if DEBUG
XCTAssertFalse(appDelegate.debugHandleCustomShortcut(event: controlKEvent))
#else
XCTFail("debugHandleCustomShortcut is only available in DEBUG")
#endif
wait(for: [moveExpectation], timeout: 0.2)
}
func testEscapeDismissesCommandPaletteWhenVisibilityStateStaysStalePastInitialPendingWindow() {
guard let appDelegate = AppDelegate.shared else {
XCTFail("Expected AppDelegate.shared")

View file

@ -213,7 +213,7 @@ final class CommandPaletteKeyboardNavigationTests: XCTestCase {
)
}
func testControlLetterNavigationSupportsPrintableAndControlChars() {
func testControlLetterNavigationSupportsPrintableAndControlCharsForNPOnly() {
XCTAssertEqual(
commandPaletteSelectionDeltaForKeyboardNavigation(
flags: [.control],
@ -246,37 +246,36 @@ final class CommandPaletteKeyboardNavigationTests: XCTestCase {
),
-1
)
XCTAssertEqual(
}
func testDoesNotTreatControlJKAsPaletteNavigation() {
XCTAssertNil(
commandPaletteSelectionDeltaForKeyboardNavigation(
flags: [.control],
chars: "j",
keyCode: 38
),
1
)
)
XCTAssertEqual(
XCTAssertNil(
commandPaletteSelectionDeltaForKeyboardNavigation(
flags: [.control],
chars: "\u{0a}",
keyCode: 38
),
1
)
)
XCTAssertEqual(
XCTAssertNil(
commandPaletteSelectionDeltaForKeyboardNavigation(
flags: [.control],
chars: "k",
keyCode: 40
),
-1
)
)
XCTAssertEqual(
XCTAssertNil(
commandPaletteSelectionDeltaForKeyboardNavigation(
flags: [.control],
chars: "\u{0b}",
keyCode: 40
),
-1
)
)
}