よくある質問

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
Not for use with personal data

Android

モバイルアナライザー

なぜアプリは追加の権限が必要なのですか?

アプリケーションを初めて設定する際、axe DevTools Mobile Analyzer にオーバーレイ描画およびアクセシビリティ設定の権限を与えるよう求められます。オーバーレイ描画は、どのアプリを開いてもフォローできるフローティングアクションボタンを可能にします。アクセシビリティ設定は、スキャンしようとしているアプリケーション内で表示情報にアクセスできるようにします。

自動テスト

認証なしで自動テストを設定できますか?

私たちは、axe DevTools Mobile サービスへのネットワークリクエストを必要としないオフラインビルドのSDKとAppiumドライバーを自動化パイプライン用に提供しています。これらのビルド構成は DequeのArtifactoryからのみ利用可能です。

このビルドは、Android用axeDevTools Mobileの機能の一部であることに注意してください。ダッシュボードへの結果のプッシュを含む全機能を使用するには、標準のSDKまたはAppiumドライバーを使用してください。 初めての手引きを参照してください。

セットアップ

ドキュメントをナビゲートする際、サーバーとのやりとりが必要なすべての機能がオフラインビルドで利用可能ではないことに注意してください。

important

初めてのセットアップチェックリスト:

  • 必要条件: Android API 26以上
  • フレームワークを取り込むために、 Artifactory に接続します。
テストのセットアップ

アプリケーションbuild.gradle ファイルに次を追加してください:

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/AL2.0' 
        exclude 'META-INF/LGPL2.1'
    }
}

AndroidManifest.xmlにインターネットの権限があることを確認してください。

<uses-permission android:name="android.permission.INTERNET" />
Espressoテストの例

このライブラリのバージョンでは axe.loginWithUsername(...)axe.loginWithApiKey(...) が利用できないことに注意し、認証付きバージョンからの変換であれば、セットアップコードから削除する必要があります。

レイアウト非依存
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
    @Rule    
    @JvmField    
    var rule: ActivityScenarioRule<MainActivity> = ActivityScenarioRule(MainActivity::class.java)

    companion object {
        private val axe = AxeDevTools()
        init {
            axe.setOfflineLicenseKey("deque_provided_license_key_here")
        }
        axe.setInstrumenation(InstrumentationRegistry.getInstrumentation())
    }

    @Test    
    fun exampleTest() {
        onView(withText("Example Button Name")).perform(click())
    }

    @After    
    fun runAccessibilityScan() {
        val scan = axe.scan()
        val result = scan?.getSerializedResult()

        axe.tearDown()   
    }
}

結果

なぜ結果がDeveloper Hubに表示されないのですか?

Developer Hubに結果が表示されない場合、以下のことを確認してください:

  • 有効なAxe DevTools Mobile APIキーを提供 して、テスト内でAxeライブラリを初期化するときに使用してください。 Axeアカウントの設定 を訪問してAPIキーを見つけるか、 新しいAxe DevTools Mobile APIキーを生成してください。
  • 有効なプロジェクトIDを提供 し、テストセッションを開始するときにAPIキーと共に使用してください。テストセッションを開始するためにプロジェクトIDは必要ありませんが、 必要 です。Developer Hubに結果を送信するには、 プロジェクトを作成すると、プロジェクトIDが自動的に生成されます。
  • 関数を呼び出す uploadToDashboard テスト内の各スキャン後、結果をDeveloper Hubに送信します。
  • 完全な例を参照してください。次に Androidサンプルテストクラス を参照し、自分の実装と比較してください。
tip

Looking for your Project ID? You can access this from the main Projects page in Axe Developer Hub.

  • Go to 'Settings' for your project and select 'Configure Project'.
  • In the 'Project Details' you can find and copy the Project ID.
  • Make sure you have provided this Project ID to the startSession method.

iOS

モバイルアナライザー

Apple開発証明書が期限切れの場合、どうすればよいですか?

モバイルアナライザーデスクトップアプリを使用中にApple開発証明書が期限切れであると表示された場合、以下の手順に従ってください。

クイック修正
  1. Xcodeを開く → Xcode > 設定 (もしくは 環境設定 の旧バージョンの場合)
  2. アカウント 」タブを選択します
  3. あなたの Apple ID
  4. を選択します。 証明書を管理
  5. 期限切れの証明書を見つけます(警告アイコンが表示されます)
  6. 期限切れの証明書を選択し、マイナスボタン()をクリックして削除します。
  7. プラスボタン(+)をクリックし、「 Apple Development 」を選択して新しい証明書を作成します。
  8. モバイルアナライザーアプリを閉じます。
  9. アプリを再度起動します。必要であれば iOSアプリのアクセシビリティテスト を参照してください。
それでもエラーが発生しますか?

Xcodeが古い証明書をキャッシュすることがあります。次のことを試してください:

  1. Apple Developerアカウントで証明書を取り消します:
    • 次に移動します developer.apple.com
    • 次に移動します 証明書、識別子、およびプロファイル
    • 期限切れの証明書を見つけて無効にしてください
    • Xcode に戻り、上記の手順を繰り返して新しいものを作成します
  2. 派生データをクリアするには:
    • Xcode で 「Xcode」「ウィンドウ」 > 「オーガナイザ」 > 「プロジェクト」 タブを開きます
    • プロジェクトを選択し、 「削除」 を派生データの横でクリックします 「派生データ」
  3. これらの変更を行った後に Xcode を再起動します

デバイスが自動的に登録されなかった場合はどうすればよいですか?

Apple 開発者アカウントで電話を手動で登録するには、Apple Developer ポータルを通じてテストデバイスとして追加する必要があります。方法は次のとおりです:

  1. デバイスの UDID(ユニークデバイス識別子)を取得します:
    • iPhone を Mac に接続します
    • 「Finder」または 「Finder」 (macOS Catalina 以降)または 「iTunes」 (以前のバージョン)を開きます
    • デバイスを選択し、シリアル番号をクリックして UDID が表示されるまでクリックします
    • 右クリックして UDID をコピーします
    • または、Xcode を開いて 「Xcode」「ウィンドウ」 > 「デバイスとシミュレータ」、デバイスを選択し、識別子をコピーします
  2. デバイスを開発者アカウントに追加:
    • 次のサイトに移動します: developer.apple.com に移動してサインインします
    • 「証明書、識別子、プロファイル」に移動します 「証明書、識別子、プロファイル」
    • 「デバイス」 「デバイス」 をサイドバーから選択します
    • 新しいデバイスを登録するには、プラスボタン(+)をクリックします
    • デバイスの名前を入力して UDID を貼り付けます
    • をクリックします 続行 してから 登録
  3. モバイルアナライザーを再起動します:

無料のApple Developerアカウントでは最大で3台のデバイスを登録でき、有料アカウントではデバイスの種類ごとに最大100台(100台のiPhone、100台のiPadなど)を登録できます。

自動テスト

バンドル識別子とは何ですか?

バンドル識別子は、Appleのエコシステム内でアプリケーションを識別するための一意の識別子です。同じ識別子を持つアプリケーションは存在できません。これはベータ版や他のバリエーションのアプリケーションを含みます。axe DevTools Mobileは、テスト対象アプリケーションのビューのアクセシビリティ情報に接続して問い合わせるために、バンドル識別子を使用します。

tip

App Storeからアプリをテストする必要がありますか?私たちがお客様のためにバンドル識別子を取得します。ウェブブラウザからアプリケーションのApp Storeリストを検索し、それを使用して アプリのバンドルIDを見つけてください

インストールされたランナーアプリケーションがアクセスできる内容は?

指定したアプリケーションのみが、設定ステップでバンドル識別子を追加することを通して通信できます。Appleはセキュリティに非常に優れており、 サンドボックス環境 を、Testflight、Xcode、またはApp Storeでインストールしたアプリケーションにかかわらず、デバイスにインストールされている各アプリケーションのために使用します。アナライザーアプリケーションはXcode/Appleのエコシステムに内蔵されているUIテスト機能を利用します。これは、セットアップファイルで指定したバンドル識別子を介してアプリケーションと通信するためのクローズドボックスです。

一般的なエラーと対処法

テスト中にエラー/テスト失敗が発生した場合、このセクションでは一般的なエラーメッセージとその解決策を示します。ひし形の赤い「×」アイコンを選択すると、Xcodeが左側の「問題ナビゲータ」パネルを開き、特定のエラーメッセージを強調表示します。

  • Cannot request screenshot data because it does not exist:これは最初に実行する際によくあるエラーメッセージです。テストを再実行して、解決されるか確認してください。このエラーが2回目に表示される場合、正しいバンドル識別子が設定されていること、テストするアプリケーションが選択されたシミュレーター/デバイス上で開かれていることを確認してください。

  • caught error: “couldNotVerifyUser”:Dequeへのログインに失敗しました。APIキーがセットアップファイルに追加されているか、およびaxe DevTools Mobileで有効であるかを確認するには axeアカウント設定を訪問してください。

認証なしで自動テストのセットアップは可能ですか?

ネットワークリクエストをaxe DevTools Mobileサービスに必要としない自動化パイプラインのためのSDKおよびAppiumドライバーのオフラインビルドを提供しています。このようなビルド設定は、 DequeのArtifactoryを通じてのみ利用可能です。

このビルドはaxeDevToolsXCUI内の機能のサブセットであることに注意してください。ダッシュボードに結果をプッシュする機能を含む完全な機能セットを使用するには、axeDevToolsXCUIフレームワークを使用してください。 セットアップガイドを参照してください。

セットアップ
  1. アクセシビリティテストに使用する任意のファイルにフレームワークをインポートします。
import axeDevToolsXCUI_noauth
  1. テストクラス内にaxe DevToolsインスタンスを保持するオブジェクトを作成します:
var axeDevTools: AxeDevTools?
  1. Frameworkを初期化します setUp または setUpWithError メソッド内で。
axeDevTools = AxeDevTools.startSession()
フルセットアップ例

import axeDevToolsXCUI_noauth
import XCTest

class MyUITests: XCTestCase {

    var axeDevTools: AxeDevTools?

    override func setUpWithError() throws {
        axeDevTools = AxeDevTools.loginWithLicenseKey("deque_provided_license_key_here") // does this change??
    }
    ...
}
UIテスト

テストを開始するには、任意の XCUIElement をフレームワークに渡し、それとその子を対象にアクセシビリティテストを実行します。

let result = try axeDevTools.run(onElement: XCUIApplication())
完全な例
import XCTest
import axeDevToolsXCUI_noauth

final class XCUI_noAuthUITest: XCTestCase {
    var axeDevTools: AxeDevTools = AxeDevTools.startSession()

    override func setUpWithError() throws {
        continueAfterFailure = false
    }

    func testExample() throws {
        let app = XCUIApplication()
        app.launch()

        let result = try axeDevTools.run(onElement: app)
        // Do something with the result
    }
}
次のステップ

データとツールを提供し、チームに役立つCI/CDワークフローを作成する手助けをします。以下のような結果オブジェクトを利用するためのいくつかの提案があります:

  1. 障害が見つかった場合は、ビルドに失敗させます。すでにアクセシビリティ問題が解消された画面がある場合、新たな問題が開発ライフサイクル中に生じないように、数が0であることを確認し、そうでなければプルリクエストステータスチェックを失敗させるようにすることができます。
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)
  1. ローカルに結果を保存 して、ブランチ内で見つかった問題のスコープレポートを作成します。 CICDパイプライン用Reporter CLIを使用してレポートを作成してください。これは、リリース候補やベータブランチにおいて、支援技術を使用している顧客が直面する可能性のある問題に対しての意識を高めるために非常に役立ちます。

結果

Developer Hubに結果が表示されないのはなぜですか?

もしDeveloper Hubに結果が表示されない場合、次のことを確認してください。

  • 有効なAxe DevTools Mobile APIキーを提供する あなたのテストでAxeフレームワークを初期化するときに。次のページを訪問してください Axeアカウント設定 でAPIキーを見つけるか 新しいAxe DevTools Mobile APIキーを生成する
  • 有効なプロジェクトIDを提供する APIキーとともにテストセッションを開始するときに。プロジェクトIDはテストセッションを開始するために必要ありませんが、 必要 です。結果をDeveloper Hubに送信するためには、あなたが 結果のためにプロジェクトを作成するときに、プロジェクトIDが自動的に生成されます。
  • を呼び出す postResult 関数 あなたのテストで各スキャンの後にDeveloper Hubに結果を送信するために。
  • 完全な例を参照する。実装を次の iOSサンプルテストクラス と比較してください。
tip

プロジェクトIDをお探しですか?これは Axe Developer Hubのメインプロジェクトページからアクセスできます。

  • プロジェクトの「設定」に移動して「プロジェクトの設定」を選択します。
  • 「プロジェクト詳細」でプロジェクトIDを見つけてコピーすることができます。
  • このプロジェクトIDを startSession メソッドに提供したことを確認してください。

Appium

自動化テスト

認証なしで自動テストを設定できますか?

Dequeが提供するライセンスキーを使用して、Appiumのオフラインドライバーでスキャンを実行できます。これは、クラウドプロバイダーと作業しているときや、axe DevTools Mobileサービスにネットワークリクエストをせずにスキャンを実行する必要があるときに便利です。

インストール

DequeのArtifactoryからプライベートnpmパッケージを使用して、Appiumのオフラインドライバーをインストールできます。 DequeのArtifactory

Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offline
iOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offline

代わりに、Agoraから直接ダウンロードしてローカルにインストールすることもできます。詳細については、 プライベートクラウドとオンプレミスのセットアップ に関するドキュメントを参照してください。

ライセンスキー

Dequeからのライセンスキーが必要です。このオフラインバージョンのAppiumドライバーを使用するには、 helpdesk@deque.com または support.deque.comにリクエストを送信してください。

ライセンスキーは文字列形式で、次のように見えます: eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==

このライセンスキーをセキュリティのために環境変数に追加することを強くお勧めします。

オフラインスキャン

スキャンを実行するには、ライセンスキーが次に含まれていることを確認してください axeSettings

const axeSettings = { 
  'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};

const result = await driver.execute('mobile: axeScan', axeSettings);

で、 axeSettings次のオプションプロパティを利用できます:

  • ignoreRules (デフォルト: []
  • ignoreExperimental (デフォルト: false

以下は、JavaScriptのMochaテストフレームワークを使用したAppiumドライバによるオフラインスキャンの完全な例です。

Android
const { remote } = require('webdriverio');
const assert = require('assert');

describe('AxeScan', () => {
    let driver;
    let axeSettings;

    before(async () => {
        axeSettings = {
            //  Your license key has been stored in an environment variable for security
            licenseKey: process.env.AXE_LICENSE_KEY
        };

        driver = await remote({
            hostname: 'localhost',
            port: 4723,
            capabilities: {
                platformName: 'Android',
                'appium:automationName': 'AxeUiAutomator2',
                'appium:deviceName': 'Android',
                'appium:appPackage': 'com.android.settings',
                'appium:appActivity': '.Settings',            
            },
            logLevel: 'silent'
        });
    });

    after(async () => {
        await driver.deleteSession();
    });

    it('scan settings screen', async () => {
        // run accessibility scan
        const result = await driver.execute('mobile: axeScan', axeSettings);

        // ensure no errors were encountered during the scan
        if (result.axeError) {
            assert.fail(`AxeScan failed with error: ${result.axeError}`);
        }

        const failCount = result.axeRuleResults.filter(rule => rule.status === 'FAIL').length;

        // assert that there are no accessibility violations
        assert.strictEqual(failCount, 0);
    });
});
iOS
const { remote } = require('webdriverio');
const assert = require('assert');

describe('AxeScan', () => {
    let driver;
    let axeSettings;

    before(async () => {
        axeSettings = {
            //  Your license key has been stored in an environment variable for security
            licenseKey: process.env.AXE_LICENSE_KEY
        };

        driver = await remote({
            hostname: 'localhost',
            port: 4723,
            capabilities: {
                platformName: 'iOS',
                'appium:automationName': 'AxeXCUITest',
                'appium:bundleId': 'com.apple.Maps',
                'appium:udid': '...', // xcrun simctl list | grep Booted         
            },
            logLevel: 'silent'
        });
    });

    after(async () => {
        await driver.deleteSession();
    });

    it('scan settings screen', async () => {
        // run accessibility scan
        const result = await driver.execute('mobile: axeScan', axeSettings);

        // ensure no errors were encountered during the scan
        if (result.axeError) {
            assert.fail(`AxeScan failed with error: ${result.axeError}`);
        }

        const failCount = result.axeRuleResults.filter(rule => rule.status === 'FAIL').length;

        // assert that there are no accessibility violations
        assert.strictEqual(failCount, 0);
    });
});

結果

なぜ結果がDeveloper Hubに表示されないのですか?

Developer Hubに結果が表示されない場合は、次のことを確認してください:

tip

プロジェクトIDを探していますか?Axe Developer Hubのメインプロジェクトページからアクセスできます。 Axe Developer Hubから。

  • プロジェクトの「設定」に移動し、「プロジェクト設定」を選択してください。
  • 「プロジェクトの詳細」でプロジェクトIDを見つけてコピーできます。
  • このプロジェクトIDを axeStartSession メソッドに提供してください。