自動スキャン

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

既存のXCUITestがアプリに対話する際に、自動的にアクセシビリティの問題を特定します

Not for use with personal data

概要

標準のXCUITestジェスチャーにフックすることで、自動スキャンはテストスイートが操作するすべての画面をキャプチャし、スキャンします。個別のスキャン呼び出し、インポート、またはテストへの修正を追加する必要はありません。

動作の仕組み

  1. テストバンドルが開始されると、自動スキャンがロードされ、 axe_config.json インタラクションの観察を開始します
  2. サポートされている各インタラクションの後、自動スキャンは現在の画面をキャプチャします
  3. テストバンドルが終了すると、自動スキャンは結果を処理し、各画面についてJSONの結果を保存し、要約とHTMLレポートを AxeDevToolsMobileResults/に保存し、オプションで結果をDeveloper Hubにアップロードします

はじめに

  1. 作成 axe_config.json
{
  "axeAutoScanMode": true,
  "axeAppBundleId": "com.example.myapp",
  "axeMobileApiKey": "<API_KEY>",
  "axeProjectId": "<PROJECT_ID>"
}
  1. 追加 axe_config.json をXcodeのUIテストターゲットバンドルに追加します(プロジェクトナビゲーター > ファイルを追加 > UIテストターゲットをチェック)
  2. 追加 axe_config.json.gitignore
  3. テストを通常通りに実行

コード例

以下のスニペットは、Auto Scan固有のコードを含まない標準のXCUITestです:

import XCTest

class MyAppUITests: XCTestCase {
    let app = XCUIApplication()

    override func setUpWithError() throws {
        app.launch()  // triggers initial capture
    }

    func testSettings() throws {
        app.buttons["Settings"].tap()  // triggers capture
    }
}

結果の解釈

コンソール概要

テストスイートが終了すると、次のようなコンソール概要が出力されます:

----  Axe DevTools Mobile Accessibility Summary ----
Scan 1:
  Screen: HomeScreen
  Issues: 3
  Issues by rule:
    - ColorContrast: 2
    - TouchTargetSize: 1

Scan 2:
  Screen: SettingsScreen
  Issues: 0

Total Scans: 2
❌ Total Issues: 3
----------------------------------------------------

クリーンな実行では、 Axe Clean - 0 Issues Found 🎉 がコンソールに表示されます。

出力ファイル

Auto Scanは各テスト実行の終了時に異なるファイルをいくつか生成します。これにはスクリーンショット、ビュー階層データ、詳細な問題情報を含む自己完結型HTMLレポートが含まれます。すべてのファイルは AxeDevToolsResults ディレクトリに保存されます。

ファイル 形式
AxeDevToolsSummary_<epoch>.txt テキスト概要(コンソール出力と同じ)
AxeDevToolsReport_<epoch>.html 各画面ごとの問題、要素の詳細、影響レベル、ビュー階層を含むインタラクティブHTMLレポート
<bundleId-screenTitle>.json 各スキャンに対して1つの個別JSON結果

自動スキャンサポート

ルール

自動スキャンは、 ScreenOrientationSupportsDynamicType、およびすべての実験ルールを除いて、完全なAxeルールセットを実行します。詳細については、 iOSのルール概要を参照してください。

Developer Hub

自動スキャンは結果をAxe Developer Hubに自動的にアップロードします。結果をローカルにのみ保存したい場合は、 axeUploadResultsfalseに設定してください。

構成リファレンス

プロパティ

プロパティ タイプ 必須 詳細
axeAutoScanMode ブール値 必須 既定では false。 自動スキャンを有効にするには true に設定する必要があります。
axeAppBundleId 文字列 必須 テスト対象アプリのバンドルID
axeUploadResults ブール値 任意 既定では true。 ローカル結果のみを取得するには false に設定してください。
axeMobileApiKey 文字列 任意 axe.deque.com からの Axe DevTools Mobile API キー axe.deque.comaxeUploadResults=true
axeProjectId 文字列 任意 開発者ハブからの プロジェクト ID が必要です。 axeUploadResults=true
axeServerUrl 文字列 任意 オンプレ/プライベートクラウドのみのカスタムバックエンド URL
axeOfflineLicenseKey 文字列 任意 次の場合にのみ必要: オフラインモードaxeUploadResults=false
note

弊社のツールを使用していて、オフラインモードで結果を取得したい場合、 axeOfflineLicenseKeyaxeMobileApiKey の代わりに設定します。 axeProjectId

ベストプラクティス

アニメーションを無効化

アニメーションを無効にすることで、Auto Scan から最も正確で包括的な結果を得ることができます。これにより、画面がキャプチャ時に完全に描画されることを確保します。

以下の 2 つの要素が必要です:

テストのセットアップ:

override func setUpWithError() throws {
    let app = XCUIApplication()
    app.launchArguments.append("-DisableAnimations")
    app.launch()
}

アプリの起動パス(AppDelegate または @main):

if ProcessInfo.processInfo.arguments.contains("-DisableAnimations") {
    UIView.setAnimationsEnabled(false)
}

起動引数はフラグをアプリのプロセスに渡します。アプリ側のチェックがそれに作用します。どちらも単独では機能しません。

注意: UIView.setAnimationsEnabled(false) SwiftUI ネイティブのアニメーションはカバーされていません(withAnimation {})。SwiftUI アプリは追加の処理が必要な場合があります。

トラブルシューティング

  • 結果がない? UI テストターゲットバンドルに含まれていることを確認してください。 axe_config.json ターゲットメンバーシップを確認 ターゲットメンバーシップ XCodeのファイルインスペクタで。
  • ローカルで結果が見えても、Developer Hubで見えませんか? Developer Hubへのアップロードは、結果ファイルのどれかひとつでもサイズが20MBを超えると失敗しますが、すべての結果はローカルに保存され、ローカルHTMLレポートで表示されます。
  • ログを確認してください。 コンソール内の AutoScan メッセージを探します。

次にやるべきことは?

結果は Axe Developer Hubで表示できます。 Axe DevTools MobileをあなたのCI/CDパイプラインに統合する方法について学ぶ。クラウドベースのテスティングプラットフォームを使用中ですか?アクセシビリティの問題を検出するためにAxe DevTools Mobileを使用することができます: クラウドプラットフォームと統合する

tip

テストでより詳細な制御が必要な場合は、 XCUITestによるターゲットテストを参照してください。