よくある質問
Android
モバイルアナライザー
なぜアプリは追加の権限が必要なのですか?
アプリケーションを初めて設定する際、axe DevTools Mobile Analyzer にオーバーレイ描画およびアクセシビリティ設定の権限を与えるよう求められます。オーバーレイ描画は、どのアプリを開いてもフォローできるフローティングアクションボタンを可能にします。アクセシビリティ設定は、スキャンしようとしているアプリケーション内で表示情報にアクセスできるようにします。
自動化テスト
認証なしで自動テストを設定できますか?
ネットワークリクエストをaxe DevTools Mobileサービスに必要としない自動化パイプラインのためのSDKおよびAppiumドライバーのオフラインビルドを提供しています。このようなビルド設定は、 DequeのArtifactoryから。
このビルドは、Android用axeDevTools Mobileの機能の一部であることに注意してください。ダッシュボードへの結果のプッシュを含む全機能を使用するには、標準のSDKまたはAppiumドライバーを使用してください。 初めての手引きから。
セットアップ
ドキュメントをナビゲートする際、サーバーとのやりとりが必要なすべての機能がオフラインビルドで利用可能ではないことに注意してください。
テストのセットアップ
アプリケーションの 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サンプルテストクラス と比較してください。
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
startScanSessionmethod.
iOS
モバイルアナライザー
Apple開発証明書が期限切れの場合、どうすればよいですか?
モバイルアナライザーデスクトップアプリを使用中にApple開発証明書が期限切れであると表示された場合、以下の手順に従ってください。
クイック修正
- Xcodeを開く → 「Xcode」 > 設定 (もしくは 環境設定 の旧バージョンの場合)
- 「 アカウント タブを開きます
- あなたの Apple ID
- をクリックします 証明書を管理
- 期限切れの証明書を見つけます(警告アイコンが表示されます)
- 期限切れの証明書を選択し、マイナスボタン(−)をクリックして削除します。
- 新しいデバイスを登録するには、プラスボタン(+)をクリックし、「 Apple Development 」を選択して新しい証明書を作成します。
- モバイルアナライザーアプリを閉じて
- 再度アプリを起動します。必要に応じて iOSアプリのアクセシビリティテスト を参照してください。
それでもエラーが発生しますか?
Xcodeが古い証明書をキャッシュすることがあります。次のことを試してください:
- Apple Developerアカウントで証明書を取り消します:
- 次に移動します developer.apple.com
- 「証明書、識別子、プロファイル」に移動します 「証明書、識別子、プロファイル」
- 期限切れの証明書を見つけて無効にしてください
- Xcode に戻り、上記の手順を繰り返して新しいものを作成します
- 派生データをクリアするには:
- で、 「Xcode」: 「ウィンドウ」 > 「オーガナイザ」 > 「プロジェクト」 タブを開きます
- プロジェクトを選択し、 「削除」 を派生データの横でクリックします 「派生データ」
- これらの変更を行った後に Xcode を再起動します
デバイスが自動的に登録されなかった場合はどうすればよいですか?
Apple 開発者アカウントで電話を手動で登録するには、Apple Developer ポータルを通じてテストデバイスとして追加する必要があります。方法は次のとおりです:
- デバイスの UDID(ユニークデバイス識別子)を取得します:
- iPhone を Mac に接続します
- 「Finder」または 「Finder」 (macOS Catalina 以降)または 「iTunes」 (以前のバージョン)を開きます
- デバイスを選択し、シリアル番号をクリックして UDID が表示されるまでクリックします
- 右クリックして UDID をコピーします
- または、Xcode を開いて 「Xcode」: 「ウィンドウ」 > 「デバイスとシミュレータ」、デバイスを選択し、識別子をコピーします
- デバイスを開発者アカウントに追加:
- 次のサイトに移動します: developer.apple.com に移動してサインインします
- 「証明書、識別子、プロファイル」に移動します 「証明書、識別子、プロファイル」
- 「デバイス」 「デバイス」 をサイドバーから選択します
- 新しいデバイスを登録するには、プラスボタン(+)をクリックします
- デバイスの名前を入力して UDID を貼り付けます
- をクリックします 続行 してから 登録
- モバイルアナライザーを再起動します:
- モバイルアナライザーアプリを閉じて
- 再度アプリを起動します。必要に応じて iOSアプリのアクセシビリティテスト を参照してください。
無料のApple Developerアカウントでは最大で3台のデバイスを登録でき、有料アカウントではデバイスの種類ごとに最大100台(100台のiPhone、100台のiPadなど)を登録できます。
自動化テスト
バンドル識別子とは何ですか?
バンドル識別子は、Appleのエコシステム内でアプリケーションを識別するための一意の識別子です。同じ識別子を持つアプリケーションは存在できません。これはベータ版や他のバリエーションのアプリケーションを含みます。axe DevTools Mobileは、テスト対象アプリケーションのビューのアクセシビリティ情報に接続して問い合わせるために、バンドル識別子を使用します。
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フレームワークを使用してください。 セットアップガイドから。
セットアップ
- アクセシビリティテストに使用する任意のファイルにフレームワークをインポートします。
import axeDevToolsXCUI_noauth- テストクラス内にaxe DevToolsインスタンスを保持するオブジェクトを作成します:
var axeDevTools: AxeDevTools?- Frameworkを初期化します
setUpまたはsetUpWithErrorメソッド内で。
axeDevTools = AxeDevTools.startScanSession()フルセットアップ例
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.startScanSession()
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ワークフローを作成する手助けをします。以下のような結果オブジェクトを利用するためのいくつかの提案があります:
- 障害が見つかった場合は、ビルドに失敗させます。すでにアクセシビリティ問題が解消された画面がある場合、新たな問題が開発ライフサイクル中に生じないように、数が0であることを確認し、そうでなければプルリクエストステータスチェックを失敗させるようにすることができます。
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)- ローカルに結果を保存 して、ブランチ内で見つかった問題のスコープレポートを作成します。 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サンプルテストクラス と比較してください。
プロジェクトIDを探していますか?Axe Developer Hubのメインプロジェクトページからアクセスできます。 Axe Developer Hubから。
- プロジェクトの「設定」に移動し、「プロジェクト設定」を選択してください。
- 「プロジェクトの詳細」でプロジェクトIDを見つけてコピーできます。
- このプロジェクトIDを
startScanSessionメソッドに提供してください。
Appium
自動化テスト
認証なしで自動テストを設定できますか?
Dequeが提供するライセンスキーを使用して、Appiumのオフラインドライバーでスキャンを実行できます。これは、クラウドプロバイダーと作業しているときや、axe DevTools Mobileサービスにネットワークリクエストをせずにスキャンを実行する必要があるときに便利です。
インストール
DequeのArtifactoryからプライベートnpmパッケージを使用して、Appiumのオフラインドライバーをインストールできます。 DequeのArtifactory:
Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offlineiOS
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に結果が表示されない場合は、次のことを確認してください:
- テストセッションの開始およびスキャンの実行時に、有効なAxe DevTools Mobile APIキーを提供したことを確認してください。 Axeアカウント設定 を訪れてAPIキーを確認するか、 新しいAxe DevTools Mobile APIキーを生成するから。
- テストセッションの開始時に、APIキーと共に有効なプロジェクトIDを提供することを確認してください。テストセッションを開始するためにプロジェクトIDは必要ありませんが、それは 必須です Developer Hubに結果を送信するために。 結果のためのプロジェクトを作成すると、プロジェクトIDが自動的に生成されます。
- 次を参照してください: Appium向けAxe DevTools Mobileの完全な自動化例 とあなたの実装と比較してください。
プロジェクトIDを探していますか?Axe Developer Hubのメインプロジェクトページからアクセスできます。 Axe Developer Hubから。
- プロジェクトの「設定」に移動し、「プロジェクト設定」を選択してください。
- 「プロジェクトの詳細」でプロジェクトIDを見つけてコピーできます。
- このプロジェクトIDを
axeStartSessionメソッドに提供してください。
