スキャン結果をローカルに保存
スキャン結果をローカルに保存することで、JSON結果を使用してアクセシビリティメトリクスをさまざまな報告ツールに統合できます。また、HTMLレポートを作成して、メールやチャットを通じて共有し、テスト実行のアクセシビリティの健康状態をチームに通知できます。
ローカルへの保存は自動テスト内でのみサポートされています。
結果の保存と共有
以下のコードを使用して、テスト結果を実際の物理デバイスまたはエミュレーターに.jsonファイルとして保存します。"prefix"パラメーターは、保存したいファイル名の始まりになります。
axe.scan()?.saveResultToLocalStorage("prefix")注: 結果を保存する前にスキャンの名前を変更することができます。
HTMLレポートとサマリーの生成
Axe DevTools Gradleプラグインを使用する際、各テストクラスに1回、generateHtmlReportAndSummaryの呼び出しを追加することで、端末上にレポートをローカルで生成します。このAPI呼び出しは、保存された結果ファイルをすべてフラッシュし、テストセッションの開始以降(または最後にメソッドを呼び出してから)蓄積されたすべてのスキャンを見てレポートを生成します。テストスイートが終了すると、Gradleプラグインは自動的にレポートをプロジェクトのbuild/reportsディレクトリに送信します。
結果を別のディレクトリに保存したい場合は、build.gradleファイルのプラグイン設定ブロックでそれを指定できます。
axeDevTools {
axeMobileApiKey = "AXE_API_KEY"
axeProjectId = "DEVHUB_PROJECT_ID"
axeAutoScanMode = false
axeHtmlReportPath =
"User/Desktop/reports/AxeDevToolsMobileResults"
axeAccountUrl = "https://axe.deque.com"
class SampleTest {
@Before
fun before() {
axe.startScanSession(API_KEY, PROJECT_ID, OPTIONAL_CUSTOM_URL)
}
@Test
fun test_desired_screen() {
// navigateToScreen(DESIRED_SCREEN.title)
val results = axe.scan()?.serializedResult?.axeRuleResults
// assertForRule(results, "FocusableText", 12, 8, 1)
}
companion object {
val axe: AxeDevTools = AxeDevTools()
@JvmStatic
@AfterClass
fun afterClass() {
axe.generateHtmlReportAndSummary("optional_name")
}
}
}これらのレポートには、スクリーンショットとルール違反のみが含まれます。ビュー階層、合格または未完了とマークされたルール、およびルール違反の詳細を含む詳細なレポートには、下記のセクションを参照してAxe DevTools Reporter CLIの利用方法を学んでください。
詳細な報告書用の結果の利用
スキャン結果を報告に活用するために、JSONファイルをプロジェクトのビルドフォルダに移動します。その後、Axe DevTools Reporter CLIを利用して一連のスキャンからHTMLレポートを作成できます。また、結果ファイルにプログラム的にアクセスして、内部の報告ツールとアクセシビリティメトリックを統合することも可能です。
次のスクリプトをアプリのbuild.gradleファイルのandroid{...}ブロックの下に追加し、別のGradleタスク内に含まれていないことを確認します。packageName変数にアプリのパッケージ名を追加してください。
以下のスクリプトは、エミュレータまたはデバイスで結果をローカルに保存して生成されたレポートをコピーし、ビルドフォルダのレポートディレクトリに移動します。
def reportsDirectory = "$buildDir/reports/androidTests/connected/axe"
def packageName = "your.app.package.name.here"
def createAndroidFolderDirectoryTask = task('createAndroidFolderDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'mkdir', '-p', '/storage/emulated/0/Android/data/' + packageName + '/files/AxeTestCases'
}
def clearAndroidDirectoryTask = task('clearAndroidDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'rm', '-r', '/storage/emulated/0/Android/data/' + packageName + '/files/AxeTestCases'
}
def fetchAndroidFolderAxeReportsTask = task('fetchAndroidFolderAxeReportsTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'pull', '/storage/emulated/0/Android/data/' + packageName + '/files/AxeTestCases', reportsDirectory
dependsOn {
createAndroidFolderDirectoryTask
}
finalizedBy {
clearAndroidDirectoryTask
}
doFirst {
new File(reportsDirectory).mkdirs()
}
}
def createDirectoryTask = task('createDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'mkdir', '-p', '/storage/emulated/0/Documents/AxeTestCases'
}
def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases'
finalizedBy {
fetchAndroidFolderAxeReportsTask
}
}
def fetchAxeReportsTask = task('fetchAxeReportsTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'pull', '/storage/emulated/0/Documents/AxeTestCases', reportsDirectory
dependsOn {
createDirectoryTask
}
finalizedBy {
clearDirectoryTask
}
doFirst {
new File(reportsDirectory).mkdirs()
}
}
tasks.configureEach { task ->
if (task.name == 'connectedDebugAndroidTest') {
task.finalizedBy {
fetchAxeReportsTask
}
}
}クラウドテストプラットフォームでのサポート
結果をローカルに保存することは、クラウドテストプラットフォームでは期待通りに動作しません。クラウドテストプラットフォームのサポートが必要な場合は、helpdesk@deque.comまたはsupport.deque.comにリクエストを送信してください。
