よくある質問
Android
モバイルアナライザー
なぜアプリは追加の権限が必要なのですか?
アプリケーションを初めてセットアップする際に、Axe DevTools Mobile Analyzerにオーバーレイ描画とアクセシビリティ設定の許可をするよう求められます。オーバーレイ描画の許可により、どのアプリをデバイスで開いていてもフローティングアクションボタンが付いてくることができます。アクセシビリティ設定の許可により、スキャンを試みているアプリケーション内のビュー情報にアクセスすることができます。
自動化テスト
認証なしで自動テストを設定できますか?
私たちは、ネットワークリクエストを必要としない、自動化パイプライン用のSDKとAppiumドライバーのオフラインビルドを提供しています。これらのビルド構成は、⟦0⟧を通じてのみ利用可能です DequeのArtifactoryから。
このビルドは、Axe DevTools Mobile for Androidの機能のサブセットであることに注意してください。ダッシュボードへ結果を送信するなどの全機能を利用するには、標準のSDKまたはAppiumドライバーをご利用ください。⟦0⟧を参照してください 初めての手引きから。
Setup
ドキュメントをナビゲートする際、サーバーとのやりとりが必要なすべての機能がオフラインビルドで利用可能ではないことに注意してください。
テストのセットアップ
ファイルの applicationに 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に結果が表示されない場合は、次のことを確認してください:
- Provide a valid Axe DevTools Mobile API key あなたのテストでAxeライブラリを初期化するときに⟦0⟧。⟦1⟧を訪れて Axeアカウント設定 APIキーを見つけるか、 新しいAxe DevTools Mobile APIキーを生成するから。
- Provide a valid Project ID テストセッションを開始するときにAPIキーと一緒に送信します。テストセッションを開始するのにプロジェクトIDは必要ありませんが、それは is Developer Hubに結果を送信するために必要です。 結果のためのプロジェクトを作成する、プロジェクトIDが自動的に生成されます。
- Call the
uploadToDashboardfunction 、テストごとに結果をDeveloper Hubに送信します。 - See a full example。⟦0⟧を参照してください Androidサンプルテストクラス 、自分の実装と比較してください。
プロジェクトIDを探していますか?Axe Developer Hubのメインプロジェクトページからアクセスできます。 Axe Developer Hubから。
- プロジェクトの「設定」に移動し、「プロジェクト設定」を選択してください。
- 「プロジェクトの詳細」でプロジェクトIDを見つけてコピーできます。
- このプロジェクトIDを
startScanSessionメソッドに提供してください。
iOS
モバイルアナライザー
Apple開発証明書が期限切れの場合、どうすればよいですか?
モバイルアナライザーデスクトップアプリを使用中にApple開発証明書が期限切れであると表示された場合、以下の手順に従ってください。
クイック修正
- Xcodeを開き → Xcode に移動します > Settings (または Preferences 、古いバージョンで)
- タブを選択 Accounts します
- プロジェクトを選択して Apple ID
- をクリックします Manage Certificates
- 期限切れの証明書を見つけます(警告アイコンが表示されます)
- 期限切れの証明書を選択し、マイナス (−) ボタンをクリックして削除します
- プラス (+) ボタンをクリックして、 Apple Development 新しい証明書を作成します
- モバイルアナライザーアプリを閉じて
- アプリを再起動します。必要に応じて⟦0⟧を参照してください iOSアプリのアクセシビリティテスト 。必要に応じて参照する
それでもエラーが発生しますか?
Xcodeが古い証明書をキャッシュすることがあります。次のことを試してください:
- Apple Developerアカウントで証明書を取り消します:
- に移動します developer.apple.com
- に移動します Certificates, Identifiers & Profiles
- 期限切れの証明書を見つけて無効にしてください
- Xcode に戻り、上記の手順を繰り返して新しいものを作成します
- 派生データをクリアするには:
- で Xcode: Window > Organizer > Projects タブ
- プロジェクトを選択し、 Delete の横の Derived Data
- これらの変更を行った後に Xcode を再起動します
デバイスが自動的に登録されなかった場合はどうすればよいですか?
Apple 開発者アカウントで電話を手動で登録するには、Apple Developer ポータルを通じてテストデバイスとして追加する必要があります。方法は次のとおりです:
- デバイスの UDID(ユニークデバイス識別子)を取得します:
- iPhone を Mac に接続します
- 開く Finder (macOS Catalina以降)または iTunes (古いバージョンの場合)
- デバイスを選択し、シリアル番号をクリックして UDID が表示されるまでクリックします
- 右クリックして UDID をコピーします
- または、 Xcode: Window > Devices and Simulators、デバイスを選択し、識別子をコピーします
- デバイスを開発者アカウントに追加:
- に行き、 developer.apple.com にサインインします
- に移動します Certificates, Identifiers & Profiles
- サイドバーから選択します Devices サイドバーから選択します
- プラス記号 (+) ボタンをクリックして、新しいデバイスを登録します
- デバイスの名前を入力して UDID を貼り付けます
- クリックしてください Continue そして Register
- モバイルアナライザーを再起動します:
- モバイルアナライザーアプリを閉じて
- アプリを再度起動します。必要に応じて、 iOSアプリのアクセシビリティテスト を参照してください
無料のApple Developerアカウントでは最大で3台のデバイスを登録でき、有料アカウントではデバイスの種類ごとに最大100台(100台のiPhone、100台のiPadなど)を登録できます。
自動化テスト
バンドル識別子とは何ですか?
バンドル識別子とは、Appleのエコシステム内でアプリケーションを識別するための一意の識別子です。同一の識別子を持つアプリケーションは2つと存在できません。これにはベータビルドやアプリケーションの他のバリエーションも含まれます。Axe DevTools Mobileはテスト対象アプリケーションのビューのアクセシビリティ情報を接続してクエリするためにバンドル識別子を使用します。
App Storeからアプリをテストする必要がありますか?私たちはバンドル識別子を取得できます。WebブラウザからアプリケーションのApp Storeリストを検索し、それを使用してアプリのバンドルIDを見つけてくださいします。
インストールされたランナーアプリケーションがアクセスできる内容は?
指定したアプリケーションのみ、セットアップ手順でバンドルIDを追加してコミュニケーションするよう指定しています。Appleはセキュリティに非常に優れており、 サンドボックス環境 デバイスにインストールされた各アプリケーションに対し、そのアプリケーションがどのようにインストールされたか(Testflight、Xcode または App Store)に関わらず使用しています。アナライザーアプリケーションは、Xcode/Appleのエコシステムに組み込まれたUIテスト機能を利用します。これはセットアップファイルで指定したバンドルIDを通じてアプリケーションと通信するクローズドボックスです。
一般的なエラーと対処法
テスト中にエラー/テスト失敗が発生した場合、このセクションでは一般的なエラーメッセージとその解決策を示します。ひし形の赤い「×」アイコンを選択すると、Xcodeが左側の「問題ナビゲータ」パネルを開き、特定のエラーメッセージを強調表示します。
Cannot request screenshot data because it does not exist:初回実行時にこのエラーメッセージが出る可能性があります。再度テストを実行して、解決されたか確認してください。同じエラーが二度目に出た場合、正しいバンドルIDが設定されていること、テストするアプリケーションが選択したシミュレーター/デバイスで開かれていることを確認してください。caught error: “couldNotVerifyUser”:Dequeへのログインに失敗しました。APIキーがセットアップファイルに追加され、Axe DevTools Mobileに適したキーであることを確認するには、 Axeアカウント設定から。
認証なしで自動テストを設定できますか?
オフラインビルドのSDKとAppiumドライバーを提供しています。これらはAxe DevTools Mobileサービスへのネットワーク要求を必要としないため、 DequeのArtifactoryから。
このビルドはaxeDevToolsXCUIの機能のサブセットです。ダッシュボードに結果をプッシュする機能を含むフルセットの機能を使用するには、axeDevToolsXCUIフレームワークを使用してください。詳細は、 セットアップガイドから。
セットアップ
- アクセシビリティテストに使用する任意のファイルにフレームワークをインポートします。
import axeDevToolsXCUI_noauth- テストクラス内にAxe DevToolsインスタンスを保持するためのオブジェクトを作成します:
var axeDevTools: AxeDevTools?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に結果が表示されない場合は、次のことを確認してください:
- Provide a valid Axe DevTools Mobile API key Axフレームワークをテストに初期化する際。 Axeアカウント設定 APIキーを見つけるか、 新しいAxe DevTools Mobile APIキーを生成するから。
- Provide a valid Project ID テストセッション開始時にAPIキーと共に使用します。テストセッションを開始するのにプロジェクトIDは必須ではありませんが、 is 結果をDeveloper Hubに送るために必要です。 結果のためのプロジェクトを作成する、プロジェクトIDが自動的に生成されます。
- Call the
postResultfunction 各スキャン後に結果をDeveloper Hubに送信します。 - See a full example。詳細は、 iOSサンプルテストクラス あなたの実装と比較してください。
プロジェクトIDを探していますか?Axe Developer Hubのメインプロジェクトページからアクセスできます。 Axe Developer Hubから。
- プロジェクトの「設定」に移動し、「プロジェクト設定」を選択してください。
- 「プロジェクトの詳細」でプロジェクトIDを見つけてコピーできます。
- このプロジェクトIDを
startScanSessionメソッドに提供してください。
Appium
自動化テスト
認証なしで自動テストを設定できますか?
Dequeから提供されたライセンスキーを使用して、Appiumオフラインドライバでスキャンを実行できます。これは、クラウドプロバイダーとの連携時や、Axe DevTools Mobileサービスへのネットワークリクエストを作成せずにスキャンを実行する必要がある場合に便利です。
インストール
非公開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に結果が表示されない場合は、次のことを確認してください:
- Provide a valid Axe DevTools Mobile API key Axeライブラリをテストに初期化するとき。 Axeアカウント設定 APIキーを見つけるか、 新しいAxe DevTools Mobile APIキーを生成するから。
- Provide a valid Project ID テストセッション開始時にAPIキーと共に使用します。テストセッションを開始するのにプロジェクトIDは必須ではありませんが、 is 結果をDeveloper Hubに送るために必要です。 結果のためのプロジェクトを作成する、プロジェクトIDが自動的に生成されます。
- Call the
uploadToDashboardfunction テストごとに結果を Developer Hub に送信します。 - See Appium向けAxe DevTools Mobileの完全な自動化例 実装と比較します。
プロジェクトIDを探していますか?Axe Developer Hubのメインプロジェクトページからアクセスできます。 Axe Developer Hubから。
- プロジェクトの「設定」に移動し、「プロジェクト設定」を選択してください。
- 「プロジェクトの詳細」でプロジェクトIDを見つけてコピーできます。
- このプロジェクトIDを
axeStartSessionメソッドに提供してください。
