Guardar resultados de escaneo localmente
Cuando guardas los resultados de escaneo localmente, puedes usar el resultado JSON para integrar métricas de accesibilidad en diferentes herramientas de informes. También puedes crear un informe HTML para compartir por correo electrónico o chat, para notificar a tu equipo sobre el estado de accesibilidad de tu ejecución de prueba.
Guardar resultados localmente es solo compatible dentro de las pruebas automatizadas.
Guardar y compartir resultados
Crea un directorio 'reports' en tu directorio de inicio donde guardarás los resultados JSON. Consulta los ejemplos a continuación.
Ruby
require 'json'
require 'fileutils'
#
# Set up driver, capabilities and axeStartSession here before scanning
#
# Start Scan Here
scanResult = @driver.execute_script 'mobile: axeScan'
# Convert result to JSON string
json_result = JSON.pretty_generate(scanResult)
# Create timestamp for filename
timestamp = Time.now.strftime('%Y-%m-%dT%H-%M-%S')
filename = "axe-scan-result-#{timestamp}.json"
# Create reports directory
reports_dir = File.join(Dir.home, 'reports', 'axeScans')
FileUtils.mkdir_p(reports_dir)
# Save to file
filepath = File.join(reports_dir, filename)
File.write(filepath, json_result)
puts "Axe scan result saved to: #{filepath}"JavaScript
const fs = require('fs');
const path = require('path');
//
//Set up driver, capabilities and axeStartSession here before scanning
//
// Start axeScan
const scanResult = await driver.execute('mobile: axeScan')
// Convert result to JSON string
const jsonResult = JSON.stringify(scanResult, null, 2);
// Create timestamp for filename
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
const filename = `axe-scan-result-${timestamp}.json`;
// Create reports directory
const reportsDir = path.join(require('os').homedir(), 'reports', 'axeScans');
fs.mkdirSync(reportsDir, { recursive: true });
// Save to file
const filepath = path.join(reportsDir, filename);
fs.writeFileSync(filepath, jsonResult, 'utf8');
console.log(`Axe scan result saved to: ${filepath}`);Python
import json
from datetime import datetime
from pathlib import Path
#
# Set up driver, capabilities and axeStartSession here before scanning
#
# Start axeScan
scan_result = driver.execute_script('mobile: axeScan')
# Convert result to JSON string
json_result = json.dumps(scan_result, indent=2)
# Create timestamp for filename
timestamp = datetime.now().strftime('%Y-%m-%dT%H-%M-%S')
filename = f"axe-scan-result-{timestamp}.json"
# Create reports directory
reports_dir = Path.home() / 'reports' / 'axeScans'
reports_dir.mkdir(parents=True, exist_ok=True)
# Save to file
filepath = reports_dir / filename
filepath.write_text(json_result, encoding='utf-8')
print(f"Axe scan result saved to: {filepath}")Java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;
//
// Set up driver, capabilities and axeStartSession here before scanning
//
// Start axeScan
Object scanResult = driver.executeScript("mobile: axeScan");
// Convert result to JSON string
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonResult = gson.toJson(scanResult);
// Create timestamp for filename
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH-mm-ss");
String timestamp = LocalDateTime.now().format(formatter);
String filename = "axe-scan-result-" + timestamp + ".json";
// Create reports directory
Path reportsDir = Paths.get(System.getProperty("user.home"), "reports", "axeScans");
Files.createDirectories(reportsDir);
// Save to file
Path filepath = reportsDir.resolve(filename);
Files.write(filepath, jsonResult.getBytes());
System.out.println("Axe scan result saved to: " + filepath.toString());Kotlin
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import java.nio.file.Files
import java.nio.file.Paths
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
//
// Set up driver, capabilities and axeStartSession here before scanning
//
// Start axeScan
val scanResult = driver.executeScript("mobile: axeScan")
// Convert result to JSON string
val gson = GsonBuilder().setPrettyPrinting().create()
val jsonResult = gson.toJson(scanResult)
// Create timestamp for filename
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH-mm-ss")
val timestamp = LocalDateTime.now().format(formatter)
val filename = "axe-scan-result-$timestamp.json"
// Create reports directory
val reportsDir = Paths.get(System.getProperty("user.home"), "reports", "axeScans")
Files.createDirectories(reportsDir)
// Save to file
val filepath = reportsDir.resolve(filename)
Files.write(filepath, jsonResult.toByteArray())
println("Axe scan result saved to: $filepath")C#
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
//
// Set up driver, capabilities and axeStartSession here before scanning
//
// Start axeScan
var scanResult = _driver.ExecuteScript("mobile: axeScan");
// Convert result to JSON string
string jsonResult = JsonConvert.SerializeObject(scanResult, Formatting.Indented);
// Create timestamp for filename
string timestamp = DateTime.Now.ToString("yyyy-MM-ddTHH-mm-ss");
string filename = $"axe-scan-result-{timestamp}.json";
// Create reports directory
string reportsDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"reports", "axeScans");
Directory.CreateDirectory(reportsDir);
// Save to file
string filepath = Path.Combine(reportsDir, filename);
File.WriteAllText(filepath, jsonResult);
Console.WriteLine($"Axe scan result saved to: {filepath}");Generar un informe HTML y resumen
Genere un informe HTML para escaneos específicos usando mobile: axeGenerateHtmlReportAndSummary. Agregar este comando de ejecución produce un informe HTML agregado y un resumen único de todos los escaneos recopilados desde el inicio de la sesión, y el controlador lo extrae del dispositivo a un directorio local - axeHtmlReportPath. El directorio predeterminado es build/AxeDevToolsMobileResults para Android o ~/AxeDevToolsMobileResults/<UUID> para iOS, pero puede definir una ruta de salida personalizada (por ejemplo, ./reports/accessibility) si lo desea. El nombre de archivo del informe predeterminado es AxeAccessibilityReport, pero esto también es mutable. Consulte el tercer bloque en el siguiente fragmento de JavaScript:
// 1. Authenticate once for the session
await driver.executeScript('mobile: axeStartSession', [{
apiKey: 'DEQUE_APIKEY',
axeAccountURL: 'https://axe.deque.com',
}]);
// 2. Run targeted scans across the screens you care about
await driver.executeScript('mobile: axeScan', [{ scanName: 'Login screen' }]);
// ...navigate...
await driver.executeScript('mobile: axeScan', [{ scanName: 'Checkout screen' }]);
// 3. Generate a single aggregated HTML report + summary for the session
const result = await driver.executeScript('mobile: axeGenerateHtmlReportAndSummary', [{
axeHtmlReportPath: './reports/accessibility', // optional (local dir)
scanName: 'My Session Report', // optional
}]);
// result.localDirectory -> local directory the report was saved into
// result.reportFiles -> generated report file path(s) on the devicePara ver la implementación de axeGenerateHtmlReportAndSummary en otros lenguajes de programación, puede consultar ejemplos completos de automatización tanto para UIAutomator2 como para XCUITest.
