listless

A simple list app for Apple platforms
Log | Files | Refs | README | LICENSE

commit 55ee1373530f1bdcb08649d139d37e17fed37e7a
parent 3260eac5182505530cdfebba420c572da70c6071
Author: Michael Camilleri <[email protected]>
Date:   Sat, 14 Mar 2026 18:37:38 +0900

Use stable identifiers for accessibility identifiers on macOS

Diffstat:
MListlessMac/Views/TaskRowView.swift | 2+-
MTests/UI/ListlessMacUITests.swift | 14+++++++-------
2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/ListlessMac/Views/TaskRowView.swift b/ListlessMac/Views/TaskRowView.swift @@ -99,7 +99,7 @@ struct TaskRowView: View { .focused($focusedField, equals: .task(taskID)) .frame(maxWidth: .infinity, alignment: .leading) .accessibilityIdentifier( - isCurrentlyEditing ? "task-textfield" : "task-text-\(task.title)") + isCurrentlyEditing ? "task-textfield" : "task-text-\(taskID.uuidString)") } .padding(.top, 4) .padding(.vertical, 8) diff --git a/Tests/UI/ListlessMacUITests.swift b/Tests/UI/ListlessMacUITests.swift @@ -27,9 +27,10 @@ final class ListlessMacUITests: XCTestCase { } /// Returns the text field for a committed task with the given title. - /// Committed tasks expose as TextField with identifier "task-text-\(title)". func taskText(_ title: String) -> XCUIElement { - app.textFields["task-text-\(title)"] + app.textFields.matching( + NSPredicate(format: "identifier BEGINSWITH 'task-text-' AND value == %@", title) + ).firstMatch } /// Creates a task by typing into the draft field and pressing Return. @@ -187,9 +188,8 @@ final class ListlessMacUITests: XCTestCase { navigateToTask(at: 1) app.typeKey(.upArrow, modifierFlags: .command) - // Use firstMatch to avoid ambiguity if draft row duplicates an identifier - let bravo = app.textFields.matching(identifier: "task-text-Bravo").firstMatch - let alpha = app.textFields.matching(identifier: "task-text-Alpha").firstMatch + let bravo = taskText("Bravo") + let alpha = taskText("Alpha") XCTAssertTrue(bravo.waitForExistence(timeout: 2)) XCTAssertTrue(alpha.exists) XCTAssertLessThan( @@ -204,8 +204,8 @@ final class ListlessMacUITests: XCTestCase { navigateToTask(at: 0) app.typeKey(.downArrow, modifierFlags: .command) - let alpha = app.textFields.matching(identifier: "task-text-Alpha").firstMatch - let bravo = app.textFields.matching(identifier: "task-text-Bravo").firstMatch + let alpha = taskText("Alpha") + let bravo = taskText("Bravo") XCTAssertTrue(alpha.waitForExistence(timeout: 2)) XCTAssertTrue(bravo.exists) XCTAssertGreaterThan(