UIAutomator2ドライバーを使用した自動スキャン
概要
自動スキャンは、テストが実行される際にAndoridアプリのアクセシビリティ問題を継続的にモニターします。1画面ずつスキャンするのではなく、UIの変更ごとにアクセシビリティのスナップショットをキャプチャし、最後に一括して処理します。
テストでより詳細な制御が必要な場合は、 Appiumを使ったターゲットテストをご覧ください。
動作の仕組み
- 開始 テストの初めに自動スキャンを開始
- 対話 アプリとの対話 — すべての画面変更が自動的にキャプチャされます
- 終了 自動スキャンの終了 — 結果が処理され、ローカルマシンに取得されます
結果はプロジェクトディレクトリ内の build/AxeDevToolsMobileResults/ に保存されます。
始めるにあたって
いつも通りAppiumサーバーを起動します:
appiumテストの設定
Appiumの自動化スクリプトから、Axe DevTools Mobileに必要な機能を追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| automationName | String |
アクセシビリティスキャン用にAxe DevTools Mobileを埋め込んだドライバーを利用するために'AxeUiAutomator2'に設定します。 |
| appPackage | String |
テスト対象のアプリケーションのパッケージ名です。 appPackage はUiAutomator2ドライバーの一部であり、すでに設定されている可能性があります。 |
自動スキャンの開始
テストスイートを始める前に、 axeStartAutoScanSession APIを呼び出して自動スキャンを開始します:
beforeAll(async () => { // Start auto scan
await driver.executeScript('mobile: axeStartAutoScanSession',
[{ axeMobileApiKey: 'your-api-key',
axeProjectId: 'your-devhub-project-id'
...
}]);
})自動スキャンの終了
テストスイートが終了する直前に、 axeStopAutoScanSession APIを呼び出して自動スキャンを停止し、結果を集約してアップロードします。
await driver.executeScript('mobile: axeStopAutoScanSession', []);上記のコードスニペットはJavaScriptを使用しています。 UIAutomator2を使った自動スキャンコード例 をご覧いただくと、複数のプログラミング言語でのより完全な例があります。
結果の解釈
コンソール要約
テストスイートが完了したら、Appiumサーバーが動作しているコンソールウィンドウで要約を確認できます。
---- Axe DevTools Mobile Accessibility Summary ----
Scan 1:
Screen: Home Page
Issues: 6
Issues by rule:
- TouchSizeWcag: 3
- LabelAtFront: 1
- LabelInName: 1
- FocusableText: 1
Scan 35:
Screen: Wikipedia Alpha
Issues: 5
Issues by rule:
- LabelAtFront: 1
- LabelInName: 1
- TouchTargetSpacing: 1
- TouchSizeWcag: 1
- ColorContrast: 1
Total Scans: 35
❌ Total Issues: 123
---------------------------------------------------出力ファイル
自動スキャンセッションが終了すると、HTMLレポートが生成され、 build/AxeDevToolsMobileResults/に保存されます。このレポートには、セッション中にキャプチャされた各画面のアクセシビリティ違反、合格、および推奨事項が含まれています。
自動スキャンサポート
ルール
自動スキャンは、 ScreenOrientation 以外のすべての実験的なルール(例: NestedActiveControl、 NestedElementName、 InaccessibleAction)を除く、完全なAxeルールセットを実行します。詳細については、 Androidのルール概要。
開発者ハブ
自動スキャンは、結果を自動的にAxe Developer Hubにアップロードします。結果をローカルにのみ保存したい場合は、 axeUploadResults を falseに設定してください。
オフラインモード
クラウドクレデンシャルがない場合は、ドライバーのオフライン版をオフラインライセンスキーで使用してください。 @axe-devtools/axe-appium3-uiautomator2-driver-offline をインストールし、セッションを開始する際に axeOfflineLicenseKey を渡します。
設定リファレンス
プロパティ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
axeUploadResults |
boolean | いいえ | 結果を開発者ハブにアップロード |
axeMobileApiKey |
string | はい* | Axe DevTools Mobile APIキー |
axeProjectId |
string | いいえ | 結果を整理するためのプロジェクトID |
axeOfflineLicenseKey |
string | はい* | オフラインモード用ライセンスキー(クラウドクレデンシャルの代わり) |
axeServerUrl |
string | いいえ | カスタムAxeサーバーURL(オンプレミスまたはプライベートクラウド用) |
*提供してください **いずれか** クラウドクレデンシャル(axeMobileApiKey + axeProjectId + オプションで axeServerUrl)または **もしくは** を axeOfflineLicenseKey。
アニメーションを無効にする
自動スキャンから最も正確で包括的な結果を得るためにアニメーションを無効にします。これにより、画面がキャプチャされるときに完全にレンダリングされることが保証されます。アニメーションを無効にしない場合、以下のようなことがあるかもしれません:
- 削除されるべきだと信じている重複したスキャン
- 一時的な状態を示すスキャンのスクリーンショット
- 期待しているよりもはるかに低い画面キャプチャ率
以下をに追加してください capabilities:
capabilities: {
// ...existing capabilities
'appium:disableWindowAnimation': true, // disables window animations
}トラブルシューティング
スキャンがDeveloper Hubに表示されない場合は、何が問題になっているかのヒントを探すためにログを確認するか、このチェックリストを行ってください。
- API/ライセンスキーとプロジェクトIDのために正しい変数を使用していることを確認してください
- 出力ファイルのサイズを確認してください。出力のいずれかの結果ファイルが20MBを超えるとDeveloper Hubへのアップロードは失敗しますが、すべての結果はそれでもローカルに保存され、ローカルHTMLレポートに表示されます。
次は何をしますか?
結果を確認するには、 Axe Developer Hubをご覧ください。学ぶには、 CI/CDパイプラインにAxe DevTools Mobileを統合する方法。クラウドベースのテストプラットフォームをご利用ですか?それでもAxe DevTools Mobileを使用してアクセシビリティの問題を探すことができます。「 Appiumを使用したクラウドプラットフォームでの自動テスト」をご覧ください。
