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:
@@ -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?")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user