Fix A11y tests (#5104)

* replace NavigationStack with ElementNavigationStack to allow the content to be rendered without a NavigationStack in a11y tests

* fix a11y tests

* update xcodeproject

* swiftformat fix

* use iOS 26.1 for CI

* use a wrapper to solve the issue for a11y tests

* ElementNavigationStack only uses the trick in DEBUG mode, and added a swiftlint rule to prevent the usage of NavigationStack
This commit is contained in:
Mauro
2026-02-13 16:45:58 +01:00
committed by GitHub
parent b11438e38d
commit 0e40cc7008
83 changed files with 254 additions and 180 deletions
@@ -0,0 +1,33 @@
//
// Copyright 2026 Element Creations Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import SwiftUI
struct ElementNavigationStack<Content: View>: View {
@ViewBuilder let content: Content
var body: some View {
#if DEBUG
if ProcessInfo.isRunningAccessibilityTests {
// Wrap in VStack to safely apply .id() since applying .id() directly to NavigationStack crashes on iOS 26
VStack(spacing: 0) {
NavigationStack {
content
}
}
} else {
NavigationStack {
content
}
}
#else
NavigationStack {
content
}
#endif
}
}
@@ -33,6 +33,7 @@ struct EditRoomAddressListRow: View {
.font(.compound.bodyLG)
.foregroundStyle(.compound.textPrimary)
.padding(.horizontal, 8)
.accessibilityLabel(L10n.a11yAddress)
.accessibilityHint(L10n.a11yEditRoomAddressHint(fullAddress))
Text(":\(serverName)")
.font(.compound.bodyLG)
@@ -55,7 +55,7 @@ struct JoinCallButton: View {
struct JoinCallButton_Previews: PreviewProvider {
static var previews: some View {
NavigationStack {
ElementNavigationStack {
Color.clear
.toolbar {
ToolbarItem(placement: .confirmationAction) {
@@ -71,7 +71,7 @@ struct ToolbarButton: View {
struct ToolbarButton_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
NavigationStack {
ElementNavigationStack {
Color.clear
.toolbar {
ToolbarItem(placement: .confirmationAction) {