Skip to content

Commit 8daa4e2

Browse files
authored
feat: add accessibility identifiers to wire drive - WPB-23902 (#4444)
1 parent 6bdd344 commit 8daa4e2

File tree

12 files changed

+153
-21
lines changed

12 files changed

+153
-21
lines changed

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/Create/CreateFileView.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import SwiftUI
2020
import WireDesign
21+
import WireLocators
2122
import WireReusableUIComponents
2223

2324
private typealias Strings = L10n.Localizable.Conversation.WireCells
@@ -94,7 +95,7 @@ private extension CreateFileView {
9495
Text(L10n.Localizable.General.cancel)
9596
}
9697
)
97-
.accessibilityIdentifier("cancelButton")
98+
.accessibilityIdentifier(Locators.WireDrive.CreateFilePage.cancelButton)
9899
}
99100

100101
@ViewBuilder var createButton: some View {
@@ -110,7 +111,7 @@ private extension CreateFileView {
110111
}
111112
)
112113
.disabled(viewModel.isCreateDisabled)
113-
.accessibilityIdentifier("createButton")
114+
.accessibilityIdentifier(Locators.WireDrive.CreateFilePage.createButton)
114115
}
115116
}
116117
}

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/Edit/EditFileView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import SwiftUI
2020
import WebKit
21+
import WireLocators
2122

2223
// MARK: - EditFileView
2324

@@ -79,7 +80,7 @@ struct EditFileView<ViewModel>: View where ViewModel: EditFileViewModelProtocol
7980
.frame(width: 44, height: 44, alignment: .trailing)
8081
}
8182
)
82-
.accessibilityIdentifier("close")
83+
.accessibilityIdentifier(Locators.WireDrive.EditFilePage.close)
8384
}
8485
}
8586

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/FilesContentView.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package import SwiftUI
2020
import WireDesign
21+
import WireLocators
2122

2223
private typealias Strings = L10n.Localizable.Conversation.WireCells
2324
private typealias Accessibility = L10n.Accessibility.Conversation.WireCells
@@ -148,6 +149,7 @@ private extension FilesContentView {
148149
itemRow(index: index)
149150
.onAppear { loadMoreIfNeededTask(index: index) }
150151
.onTapGesture { Task { await viewModel.openItem(item: item) } }
152+
.accessibilityIdentifier(Locators.WireDrive.FilesContentPage.fileItem(index))
151153
}
152154
}
153155

@@ -178,7 +180,7 @@ private extension FilesContentView {
178180
}
179181

180182
var loadMoreRow: some View {
181-
LoadMoreView(isLoading: viewModel.isLoading, onLoadMore: loadMore)
183+
LoadMoreView(isLoading: viewModel.isLoading, onLoadMore: loadMoreTask)
182184
}
183185
}
184186

@@ -188,6 +190,7 @@ private extension FilesContentView {
188190

189191
var confirmButton: some View {
190192
Button(L10n.Localizable.General.confirm, action: {})
193+
.accessibilityIdentifier(Locators.WireDrive.FilesContentPage.confirm)
191194
}
192195
}
193196

@@ -203,7 +206,7 @@ private extension FilesContentView {
203206
Task { await viewModel.loadMoreIfNeeded(index: index) }
204207
}
205208

206-
func loadMore() {
209+
func loadMoreTask() {
207210
let lastRowIndex = viewModel.state.items.count - 1
208211
Task { await viewModel.loadMoreIfNeeded(index: lastRowIndex) }
209212
}
@@ -234,6 +237,7 @@ private extension FilesContentView {
234237
placement: .navigationBarDrawer(displayMode: .always),
235238
prompt: Strings.Files.Search.title
236239
)
240+
.accessibilityIdentifier(Locators.WireDrive.FilesContentPage.search)
237241
}
238242
}
239243

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/FilesInfoView.swift

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import SwiftUI
2020
import WireDesign
21+
import WireLocators
2122

2223
private typealias Strings = L10n.Localizable.Conversation.WireCells
2324
private typealias Accessibility = L10n.Accessibility.Conversation.WireCells
@@ -110,23 +111,26 @@ struct FilesInfoView: View {
110111
}
111112

112113
var accessibilityIdentifiers: (title: String, message: String) {
114+
typealias Identifiers = Locators.WireDrive.FilesInfoPage
115+
113116
switch self {
114117
case .preparingFiles:
115-
("preparing-files-title", "preparing-files-message")
118+
return (Identifiers.preparingFilesTitle.rawValue, Identifiers.preparingFilesMessage.rawValue)
116119
case let .noFilesFound(scope, isSearch):
117120
if isSearch {
118-
(
119-
"no-files-search-title",
120-
"no-files-search-message"
121+
return (
122+
Identifiers.noFilesSearchTitle.rawValue,
123+
Identifiers.noFilesSearchMessage.rawValue
121124
)
122125
} else {
123-
(
124-
"no-files-title",
125-
scope == .allConversations ? "no-files-all-conversations-message" : "no-files-message"
126+
return (
127+
Identifiers.noFilesTitle.rawValue,
128+
scope == .allConversations ? Identifiers.noFilesAllConversationsMessage.rawValue : Identifiers
129+
.noFilesMessage.rawValue
126130
)
127131
}
128132
case .error:
129-
("error-title", "error-message")
133+
return (Identifiers.errorTitle.rawValue, Identifiers.errorMessage.rawValue)
130134
}
131135
}
132136
}
@@ -206,9 +210,8 @@ struct FilesInfoView: View {
206210
)
207211
}
208212
.accessibilityLabel(Strings.Files.Error.retry)
209-
.accessibilityIdentifier("filesBrowser.retryButton")
213+
.accessibilityIdentifier(Locators.WireDrive.FilesInfoPage.retryButton)
210214
}
211-
212215
}
213216

214217
#Preview("no files found - single conversation") {
@@ -239,7 +242,7 @@ struct LoadMoreView: View {
239242
} else {
240243
Button(Strings.Files.LoadMore.title, action: onLoadMore)
241244
.accessibilityLabel(Accessibility.Files.LoadMore.title)
242-
.accessibilityIdentifier("load-more")
245+
.accessibilityIdentifier(Locators.WireDrive.FilesInfoPage.loadMore.rawValue)
243246
.buttonStyle(.borderless)
244247
.font(for: .body3)
245248
.foregroundStyle(ColorTheme.Buttons.Secondary.onEnabled.color)

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/FilesView.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import QuickLook
2121
package import SwiftUI
2222
import WireDesign
2323
import WireFoundation
24+
import WireLocators
2425
import WireMessagingDomain
2526
import WireReusableUIComponents
2627

@@ -114,7 +115,7 @@ private extension FilesView {
114115
}
115116
)
116117
.accessibilityLabel(Accessibility.Files.close)
117-
.accessibilityIdentifier("close")
118+
.accessibilityIdentifier(Locators.WireDrive.FilesPage.close.rawValue)
118119
.tint(ColorTheme.Base.primary(accentColor).color)
119120
}
120121

@@ -130,6 +131,7 @@ private extension FilesView {
130131
.tint(SemanticColors.Icon.foregroundDefaultBlack.color)
131132
}
132133
}
134+
.accessibilityIdentifier(Locators.WireDrive.FilesPage.createFolder.rawValue)
133135

134136
Menu {
135137
ForEach(viewModel.templates, id: \.self) { template in
@@ -153,6 +155,7 @@ private extension FilesView {
153155
.tint(SemanticColors.Icon.foregroundDefaultBlack.color)
154156
}
155157
}
158+
.accessibilityIdentifier(Locators.WireDrive.FilesPage.createFile.rawValue)
156159

157160
Button {
158161
onOpenRecycleBin()
@@ -164,6 +167,7 @@ private extension FilesView {
164167
.tint(SemanticColors.Icon.foregroundDefaultBlack.color)
165168
}
166169
}
170+
.accessibilityIdentifier(Locators.WireDrive.FilesPage.recycleBin.rawValue)
167171
} label: {
168172
Image(systemName: "ellipsis.circle")
169173
}

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/Item/FilesItemViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ final class FilesItemViewModel: ObservableObject {
3535
private let localAssetRepository: any WireDriveLocalAssetRepositoryProtocol
3636
private var cancellables = Set<AnyCancellable>()
3737

38-
enum ItemAction {
38+
enum ItemAction: String {
3939
case open
4040
case showVersionHistory
4141
case edit

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/Item/FilesViewItemView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ struct FilesItemView: View {
273273
) -> some View {
274274
if viewModel.menuActions.contains(itemAction) {
275275
menuItem(itemAction)
276+
.accessibilityIdentifier("fileMenu.\(itemAction)")
276277
}
277278
}
278279

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/Rename/FileRenameView.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import SwiftUI
2020
import WireDesign
21+
import WireLocators
2122
import WireReusableUIComponents
2223

2324
private typealias Strings = L10n.Localizable.Conversation.WireCells
@@ -95,7 +96,7 @@ private extension FileRenameView {
9596
}
9697
)
9798
.accessibilityLabel(L10n.Accessibility.General.cancel)
98-
.accessibilityIdentifier("cancel")
99+
.accessibilityIdentifier(Locators.WireDrive.FileRenamePage.cancel)
99100
}
100101

101102
var saveButton: some View {
@@ -113,7 +114,7 @@ private extension FileRenameView {
113114
)
114115
.disabled(viewModel.isSaveDisabled)
115116
.accessibilityLabel(L10n.Accessibility.General.save)
116-
.accessibilityIdentifier("save")
117+
.accessibilityIdentifier(Locators.WireDrive.FileRenamePage.save)
117118
}
118119
}
119120
}

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/ShareLink/ShareLinkPasswordView.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import SwiftUI
2020
import WireDesign
2121
import WireFoundation
22+
import WireLocators
2223
import WireMessagingDomain
2324
import WireMessagingDomainSupport
2425

@@ -165,6 +166,7 @@ struct ShareLinkPasswordView: View {
165166
RoundedRectangle(cornerRadius: 10)
166167
.foregroundStyle(ColorTheme.Buttons.Secondary.enabled.color)
167168
}
169+
.accessibilityIdentifier(Locators.WireDrive.ShareLinkPasswordPage.togglePassword.rawValue)
168170
}
169171

170172
@ViewBuilder
@@ -279,6 +281,7 @@ struct ShareLinkPasswordView: View {
279281
}
280282
}
281283
.tint(.primaryText)
284+
.accessibilityIdentifier(Locators.WireDrive.ShareLinkPasswordPage.sharePassword.rawValue)
282285
}
283286

284287
@ViewBuilder
@@ -308,6 +311,7 @@ struct ShareLinkPasswordView: View {
308311
}
309312
}
310313
.tint(.primaryText)
314+
.accessibilityIdentifier(Locators.WireDrive.ShareLinkPasswordPage.resetPassword.rawValue)
311315
}
312316

313317
@ToolbarContentBuilder
@@ -340,6 +344,7 @@ struct ShareLinkPasswordView: View {
340344
}
341345
}
342346
.disabled(!viewModel.canSave)
347+
.accessibilityIdentifier(Locators.WireDrive.ShareLinkPasswordPage.savePassword.rawValue)
343348
}
344349
}
345350
}

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/ShareLink/ShareLinkView.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import SwiftUI
2020
import WireDesign
2121
import WireFoundation
22+
import WireLocators
2223
import WireMessagingDomain
2324
import WireMessagingDomainSupport
2425

@@ -220,6 +221,7 @@ struct ShareLinkView: View {
220221
.shadow(color: Color.black.opacity(0.05), radius: 4, x: 0, y: 2)
221222
}
222223
}
224+
.accessibilityIdentifier(Locators.WireDrive.ShareLinkPage.sharePassword.rawValue)
223225
}
224226
.padding(.horizontal)
225227
.padding(.bottom, 8)
@@ -233,6 +235,7 @@ struct ShareLinkView: View {
233235
ShareLink(item: Strings.ShareLink.sharedMessage(link.absoluteString)) {
234236
shareLinkContent()
235237
}
238+
.accessibilityIdentifier(Locators.WireDrive.ShareLinkPage.shareLink.rawValue)
236239
} else {
237240
shareLinkContent()
238241
}

0 commit comments

Comments
 (0)