Axe DevTools Mobile 2024年6月6日リリースノート
2024年6月6日
コンポーネントバージョン
- axeDevToolsMobile Appium Plugin v2.1.1 更新方法: Appiumプラグイン
修正点
Appium
- タグ機能を修正し、タグを付けたスキャンをモバイルダッシュボードで表示する際のエラーを防止しました。
既知の問題
以下の問題が発生している場合は、helpdesk@deque.comまたはsupport.deque.comにご連絡ください。解決した際や、リストにない回避策が判明した場合にお知らせいたします。
- Axe DevTools Mobileは、ネイティブiOS、ネイティブAndroid、およびReact Nativeアプリケーションで自動テストを実行します。技術スタックに対するアクセシビリティテストソリューションについては、Dequeの担当者にお問い合わせください。
- WebビューやレンダリングされたPDFからもいくつかの結果を得ることができますが、Webのアクセシビリティテストを最も包括的に行うには、Axe DevTools for WebまたはAxe Monitorを使用することを強くお勧めします。
iOS向けAxe DevTools Mobile
Analyzerプロジェクトにおける2.8.1のエラー & バンドルIDによるテスト
バンドル識別子によるアプリケーションのテスト機能はバージョン2.8.1で壊れており、「テスト構成を介して指定されたターゲットアプリケーションパスなし: …」というエラーが発生しました。エラーを解決するために、2.8.2または最新バージョンに更新してください。 iOSアナライザープロジェクト内で最新バージョンに更新してください。
オフスクリーンのビューがiOS 17でテストされたSwiftUIアプリで結果を表示する可能性
バージョン 2.8.0(リリースノートを表示)では、オフスクリーンや他のビューによって隠されているビューを含め、表示されていないビューに関する結果は報告されなくなりました。しかし、iOS 17でテストされているSwiftUIアプリでは、一部の結果がまだ表示されています。 (#1383)
iOS 15 ProシミュレーターでDynamic Typeルールが機能しない
iPhone 15 Proシミュレーターに影響を及ぼす問題があり、Dynamic Typeサポートルールの実行を妨げています。Dynamic Typeサポートルールにオプトインしている場合、iPhone 15 Proシミュレーターを使用してテストすることはできません。Appleにバグ報告済みです。
ネストされたコントロールに対するルール
我々のルールの改善を検討している際、XCTestでネストされたコントロールがアクセシビリティツリーに返されないことが判明しました。Appleにバグ報告済みです。 (#1110)
偽陽性: スクロールビュー内のActiveControlName
以下の偽陽性に対する修正に積極的に取り組んでおり、修正がリリースされるとこのリストを更新します。
In Scroll View
バナービヘイビング要素内のテキストについて問題を報告する可能性があります。これらの要素をより大きなテキストを必要とする人に提供するには、 UILargeContentViewerを使用してください。 (#622)
ActiveControlName
UIImageViewに`accessibilityIdentifier`が設定されているが、VoiceOverによってフォーカスされることがなく、内部にフォーカス可能なコントロールがネストされている場合、ActiveControlNameがUIImageViewに対して偽陽性を報告する可能性があります。`accessibilityIdentifier`を削除することで問題が解決します。Appleにバグ報告済みです。 (#1226)
偽陰性: iOS 13からiOS 14.8.1までのImage View Name、フォーカス可能なテキスト
以下の偽陰性に対する修正に積極的に取り組んでおり、修正がリリースされるとこのリストを更新します。
Image View Name
UIImageViewに`accessibilityIdentifier`が設定されているが、VoiceOverによってフォーカスされることがない場合、ImageViewNameがUIImageViewに対して偽陰性を報告する可能性があります。`accessibilityIdentifier`を削除することで問題が解決します。Appleにバグ報告済みです。 (#1226)
Focusable Text
非アクセシビリティ要素としてマークされた要素は、Appleフレームワークのバグにより不適切な結果を報告する可能性があります。
Android向けAxe DevTools Mobile
Proguard使用時のクラッシュ
デバッグまたはテストビルドでProguardを使用している場合、手順に従って Proguard設定でDequeを無視します。
`minifiedEnabled`がtrueに設定されているときのクラッシュ
ビルドを最小化すると、Axe DevToolsライブラリへのログイン時にアダプタが見つからないというエラーログと共にクラッシュが発生することがあります。Axe DevToolsが実装されているデバッグビルドでは、最小化を無効にしてください。(#729)
r8が有効なビルドでエラーが発生
r8が有効なビルドでは、axeDevToolsライブラリを最小化しようとする可能性があり、次のようなエラーが発生します:
Caused by: java.lang.NullPointerException: throw with null exception at g.b.b.a$a.a(Unknown Source:1) at g.b.b.a$a.a(Unknown Source:0) at g.b.b.a.a(AccessToken.java:190)To resolve this error add the following line to your ProGuard file to keep axeDevTools classes:
keep class com.deque.** { *; }
次のようなエラーメッセージ:
Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)
または: No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?
`1` ノードが正確に見つかると期待されたが `(isRoot)` 条件を満たすノードが `2` つ見つかったというエラーや、`No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?` といったエラーが発生した場合、次を参照してください: Compose setTestTag API。
Axe DevTools Mobile ダッシュボード
スクリーンショットが見つかりません
スキャン詳細ページにスクリーンショットが表示されない場合、アプリがスクリーンショットの撮影を妨げている可能性があります。しばしば、これは本番アプリケーションでセキュリティ上の理由から行われます。Axe DevTools Mobileダッシュボードで完全な機能を利用するために、テストビルドではこの要件を削除することを検討してください。
一部のAndroidスキャン名がフォーマットされていません
画面タイトルにデフォルト設定されている一部のAndroidスキャン名は、バンドル識別子を含む完全なクラス名として表示されます。今後のリリースでは、画面タイトルがより読みやすい名前にフォーマットされるように修正される予定です。対処方法として、ダッシュボードまたはフレームワークからスキャン名を設定できます。(#1643)
Appium向けAxe DevTools Mobile
偽陽性: アクティブビュー名
Appiumプラットフォームを介して利用可能な情報の制限により、 labeledBy プロパティを使用してボタン要素にラベルを提供する場合に、アクティブビュー名の偽陽性が特定されています。ソリューションを模索中で、今後のリリースでの修正を期待しています。
React Native & .NET MAUI: ラベル名に含む & 前にラベル
Appiumプラットフォームを介して利用可能な情報の制限により、React Nativeで構築されたアプリではラベル名に含むと前にラベルのルールが実行できないことが確認されています。ソリューションを模索中で、今後のリリースでの修正を期待しています。
React Native: ビューヒエラルキーが過去の画面を表示
Appiumページソースプロパティの更新には、スキャン間で追加の時間が必要な場合があります。このような場合、ダッシュボードのインスペクト機能を使用すると、以前の画面のビューヒエラルキーが表示されます。修正するには、ページソースAPIを呼び出す前に短いタイムアウトを追加して、アクセシビリティスキャンを促します。 例:
await driver.pause(1000);
const result = await driver.getPageSource();
