From 3e623cba2ffb3fab9d89cc96cb787d8c002914f1 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Thu, 17 Sep 2026 19:18:41 +0200 Subject: [PATCH] Speak title, channel, and duration as the video row VoiceOver label The row's accessibilityLabel was the debug string video.row., so VoiceOver read a raw YouTube ID for every row. Build the label from the DeArrow-aware display title, author name, and duration instead; the accessibilityIdentifier stays unchanged for UI tests. --- Yattee/Views/Components/VideoRowView.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Yattee/Views/Components/VideoRowView.swift b/Yattee/Views/Components/VideoRowView.swift index b8ce767a..bf2a839a 100644 --- a/Yattee/Views/Components/VideoRowView.swift +++ b/Yattee/Views/Components/VideoRowView.swift @@ -70,6 +70,15 @@ struct VideoRowView: View { } #endif + private var accessibilityLabelText: String { + var parts = [video.displayTitle(using: appEnvironment?.deArrowBrandingProvider), video.author.name] + let duration = video.formattedDuration + if !duration.isEmpty { + parts.append(duration) + } + return parts.joined(separator: ", ") + } + var body: some View { HStack(alignment: .top, spacing: 12) { // Index number (for playlists) @@ -94,7 +103,7 @@ struct VideoRowView: View { } .contentShape(Rectangle()) .accessibilityIdentifier("video.row.\(video.id.videoID)") - .accessibilityLabel("video.row.\(video.id.videoID)") + .accessibilityLabel(accessibilityLabelText) } @ViewBuilder