自動スキャン

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. テストバンドルが開始されると、Auto Scanはaxe_config.jsonを読み込み、インタラクションの監視を開始します
  2. サポートされている各インタラクションの後、自動スキャンは現在の画面をキャプチャします
  3. テストバンドルが終了すると、Auto Scanは結果を処理し、各画面のJSON結果と要約およびHTMLレポートをAxeDevToolsMobileResults/に保存し、オプションで結果をDeveloper Hubにアップロードします

はじめに

  1. axe_config.jsonを作成します:
{
  "axeAutoScanMode": true,
  "axeAppBundleId": "com.example.myapp",
  "axeMobileApiKey": "<API_KEY>",
  "axeProjectId": "<PROJECT_ID>",
  "axeHtmlReportPath": "~/my-custom-report-folder"
}
  1. UIテストターゲットバンドルにaxe_config.jsonを追加します(Xcode:Project Navigator > Add Files > チェックして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レポートを生成します。出力ファイルはaxe_config.jsonで定義できるユーザー構成可能な出力ディレクトリに保存されます。axeHtmlReportPathは絶対パスまたは~プレフィックスが付いたパス(例: ~/my-axe-reports)を受け入れます。未設定の場合、デフォルトの出力ディレクトリは~/AxeDevToolsMobileResultsです。

ファイル 形式
AxeDevToolsMobile_<timestamp>.html 画面ごとの問題、要素の詳細、影響レベルを含むインタラクティブなHTMLレポート
AxeDevToolsSummary_<timestamp>.txt テキスト概要(コンソール出力と同じ)
axe-test-data/<APP-ID>-<SCREEN-TITLE>.json 各スキャンに対して1つの個別JSON結果

自動スキャンサポート

ルール

Auto ScanはScreenOrientationSupportsDynamicType、およびすべての実験的なルールを除いて、Axeルールセット全体を実行します。確認する項目に関する詳細情報はiOSのルール概要で確認してください。

Developer Hub

Auto Scanは自動的に結果をAxe Developer Hubにアップロードします。結果をローカルに保存するのみの場合は、axeUploadResultsfalseに設定します。

構成リファレンス

プロパティ

プロパティ タイプ 必須 詳細
axeAutoScanMode ブール値 必須 デフォルトはfalseです。Auto Scanを有効にするには、trueに設定する必要があります。
axeAppBundleId 文字列 必須 テスト対象アプリのバンドルID
axeUploadResults ブール値 任意 デフォルトはtrueです。ローカル結果のみの場合はfalseに設定します。
axeMobileApiKey 文字列 任意 axe.deque.comから提供されるAxe DevTools Mobile APIキーが必要です。axeUploadResults=true
axeProjectId 文字列 任意 Developer HubからのプロジェクトIDが必要です。axeUploadResults=true
axeServerUrl(廃止予定) 文字列 任意 カスタムバックエンドURL(例: axe.company.com)、オンプレミス/プライベートクラウド専用
axeAccountUrl 文字列 任意 カスタムバックエンドURL(例: axe.company.com)、オンプレミス/プライベートクラウド専用
axeHtmlReportPath 文字列 任意 HTMLレポートと要約用のユーザー構成可能な出力ディレクトリ。デフォルトは~/AxeDevToolsMobileResultsです。
axeOfflineLicenseKey 文字列 任意 オフラインモード専用、axeUploadResults=falseの時に必要です
note

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

ベストプラクティス

アニメーションを無効化

アニメーションを無効にすることで、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のFile Inspectorでターゲットメンバーシップを確認します。
  • ローカルで結果が見えても、Developer Hubで見えませんか? もし結果ファイルのサイズが20MBを超えると、Developer Hubへのアップロードが失敗しますが、すべての結果はローカルに保存され、ローカルHTMLレポートで表示されます。
  • ログを確認してください。 コンソールでAutoScanメッセージを探します。

次にやるべきことは?

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

tip

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