Preguntas Frecuentes

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

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.

important

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:

tip

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 startScanSession method.

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
  1. Abra Xcode → Vaya a Xcode > Configuración (o Preferencias en versiones anteriores)
  2. Seleccione la pestaña Cuentas
  3. Seleccione su ID de Apple
  4. Haga clic en Gestionar Certificados
  5. Encuentre el certificado caducado (tendrá un ícono de advertencia)
  6. Seleccione el certificado caducado y haga clic en el ícono de menos () para eliminarlo
  7. Haga clic en el ícono de más (+) y seleccione Desarrollo de Apple para crear un nuevo certificado
  8. Cierre la aplicación Mobile Analyzer
  9. 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:

  1. 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
  2. Borrar datos derivados:
    • En Xcode: Ventana > Organizador > Proyectos pestaña
    • Selecciona tu proyecto y haz clic en Eliminar junto a Datos Derivados
  3. 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:

  1. 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
  2. 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
  3. Reiniciar el Analizador Móvil:

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.

tip

¿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
  1. Importa el marco en cualquier archivo utilizado para pruebas de accesibilidad.
import axeDevToolsXCUI_noauth
  1. Crea un objeto dentro de tu clase de pruebas para mantener la instancia de axe DevTools:
var axeDevTools: AxeDevTools?
  1. Inicializa el marco dentro de los métodos setUp o setUpWithError .
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:

  1. 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)
  1. 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:

tip

¿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 startScanSession mé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-offline
iOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offline

Alternativamente, 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:

tip

¿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 axeStartSession método.