Preguntas Frecuentes
Android
Analizador Móvil
¿Por qué la aplicación necesita permisos adicionales?
Al configurar la aplicación por primera vez, se te pedirá que otorgues al Analizador Móvil de axe DevTools permisos para superponer dibujos y configuraciones de accesibilidad. La superposición de dibujos permite que el botón de acción flotante te siga sin importar la aplicación que tengas abierta en tu dispositivo. Las configuraciones de accesibilidad permiten a la aplicación del analizador acceder a la información de visualización dentro de la aplicación que estás intentando escanear.
Pruebas Automatizadas
¿Puedo configurar pruebas automatizadas sin autenticación?
Ofrecemos compilaciones offline de nuestros SDKs y controladores de Appium para tu pipeline de automatización que no requieren peticiones de red al servicio de axe DevTools Mobile. Como tal, estas configuraciones de compilación solo están disponibles a través de el Artifactory de Deque.
Ten en cuenta que esta compilación es un subconjunto de capacidades dentro de axeDevTools Mobile para Android. Para utilizar el conjunto completo de capacidades, incluyendo enviar resultados al panel, por favor usa nuestros SDKs estándar o controladores de Appium. Consulta la guía de primeros pasos.
Configuración
Mientras navegas por la documentación, ten en cuenta que no todas las funciones que requieren interacción con el servidor están disponibles en la compilación offline.
Lista de Verificación para Comenzar:
- Requisitos: Android API 26 o superior
- Conéctate a Artifactory para incorporar el marco.
Configuración para Pruebas
En el archivode la build.gradle aplicación, añade:
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Asegúrate de que haya permiso de Internet en el AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />Ejemplo de Prueba Espresso
Nota que el axe.loginWithUsername(...) y el axe.loginWithApiKey(...) no están disponibles en esta versión de la biblioteca y deben ser eliminados del código de configuración si estás convirtiendo desde la versión autenticada.
Independiente del Diseño
@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()
}
}Resultados
¿Por qué mis resultados no aparecen en Developer Hub?
Si no ves tus resultados en Developer Hub, verifica que hayas hecho lo siguiente:
- Proporciona una clave de API válida de Axe DevTools Mobile al inicializar la biblioteca Axe en tus pruebas. Visita la Configuración de la Cuenta de Axe para encontrar tus claves de API o Genera una nueva clave de API de Axe DevTools Mobile.
- Proporciona un ID de Proyecto válido junto con la clave de API al iniciar una sesión de prueba. Un ID de Proyecto no es necesario para iniciar una sesión de prueba, pero sí es necesario para enviar resultados a Developer Hub. Cuando Creas un Proyecto para Tus Resultados, se genera automáticamente un ID de Proyecto.
- Llama a la
uploadToDashboardfunción después de cada escaneo en su prueba para enviar resultados al Developer Hub. - Vea un ejemplo completo. Consulte la Clase de Prueba de Muestra de Android y compárelo con su implementación.
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
Analizador Móvil
¿Qué hago si mi Certificado de Desarrollo de Apple está caducado?
Si obtiene un error al usar la aplicación de escritorio Mobile Analyzer que indica que su Certificado de Desarrollo de Apple ha caducado, siga los pasos a continuación.
Solución rápida
- Abra Xcode → Vaya a Xcode > Configuración (o Preferencias en versiones anteriores)
- Seleccione la pestaña Cuentas
- Seleccione su ID de Apple
- Haga clic en Gestionar Certificados
- Encuentre el certificado caducado (tendrá un ícono de advertencia)
- Seleccione el certificado caducado y haga clic en el ícono de menos (−) para eliminarlo
- Haga clic en el ícono de más (+) y seleccione Desarrollo de Apple para crear un nuevo certificado
- Cierre la aplicación Mobile Analyzer
- Inicie la aplicación nuevamente. Consulte Probar Apps iOS para Accesibilidad si es necesario.
¿Sigue recibiendo un error?
A veces, Xcode almacena en caché el certificado antiguo. Intente lo siguiente:
- Revoque el certificado en su cuenta de desarrollador de Apple:
- Vaya a developer.apple.com
- Navegue a Certificados, Identificadores y Perfiles
- Encuentra el certificado expirado y revócalo
- Regresa a Xcode y repite los pasos anteriores para crear uno nuevo
- Borrar datos derivados:
- En Xcode: Ventana > Organizador > Proyectos pestaña
- Selecciona tu proyecto y haz clic en Eliminar junto a Datos Derivados
- Reinicia Xcode después de realizar estos cambios
¿Qué hago si mi dispositivo no pudo registrarse automáticamente?
Para registrar manualmente un teléfono con tu cuenta de Apple Developer, deberás agregarlo como un dispositivo de prueba a través del portal de Apple Developer. Aquí te mostramos cómo:
- Obtén el UDID (Identificador Único de Dispositivo) de tu dispositivo:
- Conecta tu iPhone a tu Mac
- Abre Finder (macOS Catalina o posterior) o iTunes (versiones anteriores)
- Selecciona tu dispositivo y haz clic en el número de serie hasta que muestre el UDID
- Haz clic derecho y copia el UDID
- Alternativamente, puedes abrir Xcode: Ventana > Dispositivos y Simuladores, selecciona tu dispositivo y copia el identificador
- Agrega el dispositivo a tu cuenta de Desarrollador:
- Ve a developer.apple.com e inicia sesión
- Dirígete a Certificados, Identificadores y Perfiles
- Selecciona Dispositivos desde la barra lateral
- Haz clic en el signo más (+) para registrar un nuevo dispositivo
- Introduce un nombre para tu dispositivo y pega el UDID
- Haz clic en Continuar y luego Registrar
- Reiniciar el Analizador Móvil:
- Cierra la aplicación del Analizador Móvil
- Inicia la aplicación nuevamente. Consulta Prueba de aplicaciones iOS para accesibilidad si es necesario.
Ten en cuenta que las cuentas gratuitas de desarrolladores de Apple pueden registrar hasta 3 dispositivos, mientras que las cuentas de pago pueden registrar hasta 100 dispositivos por tipo de dispositivo (100 iPhones, 100 iPads, etc.).
Pruebas automatizadas
¿Qué es un identificador de paquete?
Un identificador de paquete es un identificador único dentro del ecosistema de Apple para la identificación de aplicaciones. No hay dos aplicaciones que puedan tener el mismo identificador. Esto incluye una versión beta u otras variaciones de una aplicación. axe DevTools Mobile utiliza el identificador de paquete para conectar y consultar la información de accesibilidad de las vistas de la aplicación en prueba.
¿Necesitas probar una aplicación de la App Store? Podemos obtener el identificador de paquete por ti. Busca la lista de la App Store de tu aplicación desde un navegador web y úsalA para encontrar el ID de paquete de tu aplicación.
¿A qué tiene acceso la Aplicación Runner instalada?
Solo a la aplicación que has especificado para comunicarte, a través de la adición del Identificador de Paquete en los pasos de configuración. Apple es realmente excelente en seguridad y utiliza un entorno de sandbox para cada aplicación que tengas instalada en tu dispositivo, sin importar cómo fue instalada la aplicación (Testflight, Xcode o App Store). La aplicación del analizador utiliza la funcionalidad de pruebas de interfaz de usuario incorporada en el ecosistema de Xcode/Apple. Esta es una comunicación de caja cerrada para hablar con una aplicación a través del identificador de paquete que has especificado en el archivo de configuración.
Errores comunes y remediación
Si recibes un error / Prueba fallida durante las pruebas, esta sección resaltará los mensajes de error comunes y cómo resolverlos. Selecciona el icono en forma de diamante 'x' rojo, y Xcode abrirá el panel ‘Navegador de Problemas’ a la izquierda para resaltar el mensaje de error específico.
-
Cannot request screenshot data because it does not exist: Este es el mensaje de error que probablemente recibirás en la primera ejecución. Vuelve a ejecutar la prueba para ver si se resuelve. Si este error aparece una segunda vez, asegúrate de que tienes el identificador de paquete correcto y que la aplicación que vas a probar está abierta en el simulador/dispositivo seleccionado. -
caught error: “couldNotVerifyUser”: Error al iniciar sesión con Deque. Verifica que tu clave de API se haya añadido al archivo de configuración, y sea válida para axe DevTools Mobile visitando Configuración de cuenta de axe.
¿Puedo configurar pruebas automatizadas sin autenticación?
Ofrecemos compilaciones offline de nuestros SDK y controladores Appium para tu flujo de automatización que no requieren ninguna solicitud de red al servicio axe DevTools Mobile. Como tal, estas configuraciones de compilación solo están disponibles a través de Artifactory de Deque.
Por favor, ten en cuenta que esta compilación es un subconjunto de capacidades dentro de axeDevToolsXCUI. Para utilizar el conjunto completo de capacidades, incluyendo enviar resultados al tablero, por favor utiliza nuestro marco axeDevToolsXCUI. Consulta la guía de configuración.
Configuración
- Importa el marco en cualquier archivo utilizado para pruebas de accesibilidad.
import axeDevToolsXCUI_noauth- Crea un objeto dentro de tu clase de pruebas para mantener la instancia de axe DevTools:
var axeDevTools: AxeDevTools?- Inicializa el marco dentro de los métodos
setUposetUpWithError.
axeDevTools = AxeDevTools.startScanSession()Ejemplo completo de configuración
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??
}
...
}Pruebas de UI
Para comenzar las pruebas, pasa cualquier XCUIElement al marco para ejecutar pruebas de accesibilidad contra él y sus elementos secundarios.
let result = try axeDevTools.run(onElement: XCUIApplication())Ejemplo completo
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
}
}¿Qué sigue?
Te damos los datos y herramientas para crear un flujo de trabajo CI/CD que ayude a tu equipo. Aquí tienes algunas sugerencias sobre qué hacer con ese objeto de resultado:
- Falla la compilación si se encontraron errores. Si tienes una pantalla que ya ha sido limpiada de problemas de accesibilidad, es posible que quieras asegurarte de que no aparezcan nuevos durante el ciclo de desarrollo afirmando que el conteo es 0 y fallando la verificación del estado de la solicitud de extracción si no es así.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)- Guarda los resultados localmente para crear un informe delimitado de los problemas encontrados en la rama. Revisa la creación de un informe con nuestro CLI de Reporter para pipelines CICD. Esto puede ser muy útil para ramas de candidatos a lanzamiento o beta para crear conciencia sobre los posibles obstáculos que podrían enfrentar los clientes que usan tecnología asistiva.
Resultados
¿Por qué no aparecen mis resultados en Developer Hub?
Si no ves tus resultados en Developer Hub, verifica que hayas hecho lo siguiente:
- Proporcionar una clave API válida de Axe DevTools Mobile al inicializar el marco Axe en tus pruebas. Visita Configuración de la cuenta de Axe para encontrar tus claves API o Generar una nueva clave API de Axe DevTools Mobile.
- Proporcionar un ID de Proyecto válido junto con la clave API al comenzar una sesión de pruebas. Un ID de Proyecto no es necesario para comenzar una sesión de pruebas, pero es necesario para enviar resultados a Developer Hub. Cuando Creas un Proyecto para Tus Resultados, se genera automáticamente un ID de Proyecto.
- Llama a la
postResultfunción después de cada escaneo en tu prueba para enviar resultados a Developer Hub. - Ver un ejemplo completo. Consulta la Clase de Prueba de Ejemplo de iOS y compárala con tu implementación.
¿Buscas tu ID de Proyecto? Puedes acceder a esto desde la página principal de Proyectos en Axe Developer Hub.
- Ve a 'Configuración' de tu proyecto y selecciona 'Configurar Proyecto'.
- En los 'Detalles del Proyecto' puedes encontrar y copiar el ID de Proyecto.
- Asegúrate de haber proporcionado este ID de Proyecto al
startScanSessionmétodo.
Appium
Pruebas Automatizadas
¿Puedo configurar pruebas automatizadas sin autenticación?
Puedes ejecutar un escaneo con nuestros drivers offline de Appium, utilizando una clave de licencia proporcionada por Deque. Esto puede ser útil cuando trabajas con proveedores de la nube o cuando necesitas ejecutar escaneos sin realizar solicitudes de red al servicio de axe DevTools Mobile.
Instalación
Puedes instalar los drivers offline de Appium utilizando un paquete npm privado de Artifactory de Deque:
Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offlineiOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offlineAlternativamente, puedes descargarlo directamente desde Agora e instalarlo localmente. Consulta nuestra documentación sobre Configuración para Nube Privada y Local para más detalles.
Clave de Licencia
Necesitarás una clave de licencia de Deque para utilizar esta versión offline del driver de Appium. Por favor envía una solicitud a helpdesk@deque.com o a support.deque.com.
La clave de licencia estará en formato de cadena y se verá algo así:
eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==
Se recomienda encarecidamente añadir esta clave de licencia a tus variables de entorno por seguridad.
Escaneo sin conexión
Para ejecutar un escaneo, asegúrese de que su clave de licencia esté incluida en axeSettings.
const axeSettings = {
'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};
const result = await driver.execute('mobile: axeScan', axeSettings);En axeSettings, las siguientes propiedades opcionales están disponibles:
ignoreRules(por defecto:[])ignoreExperimental(por defecto:false)
A continuación se presentan ejemplos completos de escaneos sin conexión con nuestros controladores Appium, usando el marco de pruebas Mocha en JavaScript.
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);
});
});Resultados
¿Por qué no aparecen mis resultados en Developer Hub?
Si no ve sus resultados en Developer Hub, verifique que haya hecho lo siguiente:
- Asegúrese de haber proporcionado una clave API válida de Axe DevTools Mobile al iniciar una sesión de prueba e iniciar un escaneo. Visite Configuración de cuenta de Axe para encontrar sus claves API o Generar una nueva clave API de Axe DevTools Mobile.
- Asegúrese de haber proporcionado un ID de proyecto válido junto con la clave API al iniciar una sesión de prueba. No se requiere un ID de proyecto para iniciar una sesión de prueba, pero sí es necesario para enviar resultados a Developer Hub. Cuando usted Cree un proyecto para sus resultados, se genera automáticamente un ID de proyecto.
- Vea ejemplos completos de automatización de Axe DevTools Mobile para Appium y compare con su implementación.
¿Busca su ID de proyecto? Puede acceder a este desde la página principal de Proyectos en Axe Developer Hub.
- Vaya a 'Configuración' de su proyecto y seleccione 'Configurar proyecto'.
- En los 'Detalles del proyecto' puede encontrar y copiar el ID de proyecto.
- Asegúrese de haber proporcionado este ID de proyecto al
axeStartSessionmétodo.
