UIAutomator2ドライバーを使用した自動スキャン
概要
自動スキャンは、テストが実行される際にAndoridアプリのアクセシビリティ問題を継続的にモニターします。1画面ずつスキャンするのではなく、UIの変更ごとにアクセシビリティのスナップショットをキャプチャし、最後に一括して処理します。
テストでより詳細な制御が必要な場合は、Appiumを使ったターゲットテストを参照してください。
動作の仕組み
- テストの開始時に開始自動スキャンを行います
- 対話をアプリと共に—画面の変更はすべて自動的にキャプチャされます
- 終了自動スキャン—結果が処理され、ローカルマシンに取得されます
結果はプロジェクトディレクトリ内のbuild/AxeDevToolsMobileResults/に保存されます。
始めるにあたって
いつも通りAppiumサーバーを起動します:
appiumテストの設定
Appiumの自動化スクリプトから、Axe DevTools Mobileに必要な機能を追加します。
| 名前 | 型 | 説明 |
|---|---|---|
| automationName | String |
アクセシビリティスキャン用にAxe DevTools Mobileを埋め込んだドライバーを利用するために'AxeUiAutomator2'に設定します。 |
| appPackage | String |
テスト中のアプリケーションのパッケージ名。appPackageはUiAutomator2ドライバーの一部であるため、既に設定されているかもしれません。 |
自動スキャンの開始
テストスイートを開始する前に、axeStartAutoScanSessionAPIを呼び出して自動スキャンを開始してください。
beforeAll(async () => { // Start auto scan
await driver.executeScript('mobile: axeStartAutoScanSession', [{
axeMobileApiKey: 'your-api-key',
axeProjectId: 'your-devhub-project-id',
axeAccountURL: 'https://axe.deque.com',
axeHtmlReportPath: './reports/accessibility' // optional (local dir; default 'build/AxeDevToolsMobileResults')
...
}]);
})自動スキャンの終了
テストスイートが終了する直前に、axeStopAutoScanSessionAPIを呼び出して自動スキャンを停止し、結果を集計してアップロードします。
// Stop - the report is pulled to axeHtmlReportPath on the local machine
const result = await driver.executeScript('mobile: axeStopAutoScanSession');
// result.localDirectory -> local directory the report was saved into上記のコードスニペットは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 | はい | カスタムバックエンドURL(例: axe.company.com)、オンプレミス/プライベートクラウド専用 |
axeAccountURL |
string | はい | カスタムバックエンドURL(例: axe.company.com)、オンプレミス/プライベートクラウド専用 |
axeHtmlReportPath |
string | いいえ | HTMLレポートとサマリーのためのユーザー設定可能な出力ディレクトリ。デフォルトはbuild/AxeDevToolsMobileResults |
***いずれか**クラウド資格情報を(axeMobileApiKey + axeProjectId + axeAccountURL)**もしくは** an 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を使用したクラウドプラットフォームでの自動テストを参照してください。
