Complete accessibility identifier coverage across all 152 project files

Exhaustive file-by-file audit of every Swift file in the project (iOS app,
Watch app, Widget extension). Every interactive UI element — buttons, toggles,
pickers, links, menus, tap gestures, text editors, color pickers, photo
pickers — now has an accessibilityIdentifier for XCUITest automation.

46 files changed across Shared/, Onboarding/, Watch App/, and Widget targets.
Added ~100 new ID definitions covering settings debug controls, export/photo
views, sharing templates, customization subviews, onboarding flows, tip
modals, widget voting buttons, and watch mood buttons.
This commit is contained in:
Trey T
2026-03-26 08:34:56 -05:00
parent e7648ddd8a
commit ed8205cd88
46 changed files with 391 additions and 13 deletions

View File

@@ -76,6 +76,7 @@ struct PhotoPickerView: View {
)
}
.disabled(isProcessing)
.accessibilityIdentifier(AccessibilityID.PhotoPicker.photosPicker)
// Camera
Button {
@@ -111,6 +112,7 @@ struct PhotoPickerView: View {
)
}
.disabled(isProcessing)
.accessibilityIdentifier(AccessibilityID.PhotoPicker.cameraButton)
}
.padding(.horizontal)
@@ -130,6 +132,7 @@ struct PhotoPickerView: View {
Button("Cancel") {
dismiss()
}
.accessibilityIdentifier(AccessibilityID.PhotoPicker.cancelButton)
}
}
.onChange(of: selectedItem) { _, newItem in
@@ -278,6 +281,7 @@ struct PhotoGalleryView: View {
}
}
}
.accessibilityIdentifier(AccessibilityID.PhotoPicker.photoImage)
} else {
VStack(spacing: 16) {
Image(systemName: "photo.badge.exclamationmark")
@@ -301,6 +305,7 @@ struct PhotoGalleryView: View {
.font(.title2)
.foregroundStyle(.white.opacity(0.7))
}
.accessibilityIdentifier(AccessibilityID.PhotoPicker.closeButton)
}
ToolbarItem(placement: .primaryAction) {
@@ -310,17 +315,20 @@ struct PhotoGalleryView: View {
} label: {
Label("Share", systemImage: "square.and.arrow.up")
}
.accessibilityIdentifier(AccessibilityID.PhotoPicker.shareButton)
Button(role: .destructive) {
showDeleteConfirmation = true
} label: {
Label("Delete", systemImage: "trash")
}
.accessibilityIdentifier(AccessibilityID.PhotoPicker.deleteButton)
} label: {
Image(systemName: "ellipsis.circle.fill")
.font(.title2)
.foregroundStyle(.white.opacity(0.7))
}
.accessibilityIdentifier(AccessibilityID.PhotoPicker.menuButton)
}
}
.confirmationDialog("Delete Photo", isPresented: $showDeleteConfirmation, titleVisibility: .visible) {
@@ -328,7 +336,9 @@ struct PhotoGalleryView: View {
onDelete()
dismiss()
}
.accessibilityIdentifier(AccessibilityID.PhotoPicker.deleteConfirmButton)
Button("Cancel", role: .cancel) { }
.accessibilityIdentifier(AccessibilityID.PhotoPicker.deleteCancelButton)
} message: {
Text("Are you sure you want to delete this photo?")
}