SwiftKickMobile/SwiftMessages
Ver no GitHubSwiftUI Accessibility for UI Testing
Open
#568 aberto em 11 de dez. de 2024
help wanted
Métricas do repositório
- Stars
- (7.449 stars)
- Métricas de merge de PR
- (Nenhuma PRs mesclada em 30d)
Description
I'm attempting to set accessibility for a SwiftUI view that is presented within a hosting view controller that SwiftMessages presents. I attempted conforming to AccessibleMessage and setting the UIHostingController to the accessibleElement property. This did not seem to work as the Appium inspector that we're using still does not see the buttons within the SwiftUI View. Any tips on getting accessibillity to work with SwiftUI?
SwiftUI container UIView
class PopUpContainerView<T: View>: UIView, AccessibleMessage {
// Accessibility for E2E testing
var accessibilityMessage: String?
var accessibilityElement: NSObject?
var additonalAccessibilityElements: [NSObject]?
let uiContainerView: UIHostingController<T>
init(content: T, cornerRadius: CGFloat = 15, padding: CGFloat = 24) {
uiContainerView = UIHostingController(rootView: content)
super.init(frame: .zero)
addSubview(uiContainerView.view)
uiContainerView.view.layer.cornerRadius = cornerRadius
uiContainerView.view.pinSuperview(horizontalPadding: padding)
accessibilityElement = uiContainerView
}
@available(*, unavailable)
required init(coder _: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
which is presented like this:
let view = PopUpContainerView(
content: MySwiftUIView(onExit: {
SwiftMessages.hide()
}, onProceed: {
SwiftMessages.hide()
// do something
}),
cornerRadius: 12
)
var config = SwiftMessages.Config()
config.duration = .forever
config.presentationStyle = .center
config.dimMode = .gray(interactive: true)
SwiftMessages.show(config: config, view: view)