Domande Frequentemente Poste

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

Perché l'app ha bisogno di autorizzazioni aggiuntive?

Quando configuri l'applicazione per la prima volta, ti verrà chiesto di concedere ad axe DevTools Mobile Analyzer l'autorizzazione per le impostazioni di sovrapposizione del disegno e di accessibilità. Disegno sovrapposto consente al pulsante di azione fluttuante di seguirti indipendentemente dall'app aperta sul tuo dispositivo. Le impostazioni di accessibilità consentono all'app dell'analizzatore di accedere alle informazioni di visualizzazione all'interno dell'applicazione che si sta tentando di analizzare.

Posso impostare test automatizzati senza autenticazione?

Offriamo build offline dei nostri SDK e driver Appium per la tua pipeline di automazione che non richiedono alcuna richiesta di rete al servizio axe DevTools Mobile. Pertanto, queste configurazioni di build sono disponibili solo tramite Deque's Artifactory.

Si prega di notare che questa build è un sottoinsieme delle funzionalità di axeDevTools Mobile per Android. Per utilizzare l'intera gamma di funzionalità, incluso l'invio dei risultati alla dashboard, La preghiamo di utilizzare i nostri SDK standard o i driver Appium. Fare riferimento alla guida introduttiva.

Configurazione

Durante la consultazione della documentazione, tenga presente che non tutte le funzionalità che richiedono l'interazione con il server sono disponibili nella build offline.

important

Lista di controllo per iniziare:

  • Richiede: Android API 26 o superiore
  • Connettiti a [Artifactory] (artifactory) per importare il framework.
Configurazione per i test

Nel file build.gradle dell'applicazione, aggiungere:

androidTestImplementation 'com.deque.android.no-auth:axe-devtools-android:8.1.0'

e

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/AL2.0' 
        exclude 'META-INF/LGPL2.1'
    }
}
Esempio di Espresso Test

Nota che axe.loginWithUsername(...) e axe.loginWithApiKey(...) non sono disponibili in questa versione della libreria e dovrebbero essere rimossi dal codice di configurazione se sta passando dalla versione autenticata.

Indipendente dal layout
@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()   
    }
}

Perché i Suoi risultati non vengono visualizzati in Developer Hub?

Se non visualizza i Suoi risultati in Developer Hub, verifichi di aver eseguito le seguenti operazioni:

  • Fornire una chiave API Axe DevTools Mobile valida quando si inizializza la libreria Axe nei test. Visita Impostazioni dell'account Axe per trovare le tue chiavi API oppure Genera una nuova chiave API axe DevTools Mobile.
  • Fornire un ID progetto valido insieme alla chiave API quando si avvia una sessione di test. Un Project ID non è richiesto per avviare una sessione di test, ma è necessario per inviare i risultati a Developer Hub. Quando Lei crea un progetto per i Suoi risultati, viene generato automaticamente un ID progetto.
  • Chiami la funzione uploadToDashboard dopo ogni scansione nel Suo test per inviare i risultati a Developer Hub.
  • Veda un esempio completo. Consulti la Classe di test di esempio per Android(android-sample-test) e la confronti con la Sua implementazione.
tip

Sta cercando l'ID del suo progetto? Lei può accedervi dalla pagina principale dei progetti in Axe Developer Hub.

  • Vada su « Impostazioni » per il suo progetto e selezioni « Configura progetto ».
  • Nei "Dettagli del progetto" può trovare e copiare l'ID del progetto.
  • Si assicuri di aver fornito l'ID del progetto al metodo startSession.

iOS

Cos'è un identificatore di bundle?

Un identificatore di bundle è un identificatore univoco all'interno dell'ecosistema Apple per l'identificazione delle applicazioni. Non è possibile che due applicazioni abbiano lo stesso identificatore. Ciò include una build beta o altre varianti di un'applicazione. axe DevTools Mobile utilizza l'identificatore del bundle per connettersi e interrogare le informazioni sull'accessibilità degli elementi dell'interfaccia utente dell'applicazione in fase di test.

tip

Hai bisogno di testare un'app dall'App Store? Possiamo recuperare per te l'identificatore del bundle. Cerca la scheda dell'App Store della tua applicazione da un browser web e usala per trovare l'ID bundle della tua app.

A cosa ha accesso l'applicazione Runner installata?

Solo l'applicazione con cui hai specificato di comunicare, aggiungendo il Bundle Identifier nei passaggi di configurazione. Apple è davvero brava in fatto di sicurezza e utilizza un ambiente di sandbox per ogni applicazione installata sul tuo dispositivo, indipendentemente da come è stata installata (Testflight, Xcode o App Store). L'applicazione di analisi utilizza la funzionalità UI Test integrata nell'ecosistema Xcode/Apple. Si tratta di una comunicazione chiusa per comunicare con un'applicazione tramite l'identificativo del bundle specificato nel file di configurazione.

Errori comuni e correzioni

Se durante il test si verifica un errore/Test non riuscito, questa sezione evidenzierà i messaggi di errore più comuni e come risolverli. Seleziona l'icona rossa a forma di diamante "x" e Xcode aprirà il pannello "Issue Navigator" sulla sinistra per evidenziare il messaggio di errore specifico.

  • Cannot request screenshot data because it does not exist: Questo è il messaggio di errore che probabilmente riceverai alla prima esecuzione. Esegui nuovamente il test per vedere se il problema si risolve. Se questo errore si verifica una seconda volta, assicurati di avere impostato l'identificativo del bundle corretto e che l'applicazione da testare sia aperta sul simulatore/dispositivo selezionato.

  • caught error: “couldNotVerifyUser”: Accesso con Deque non riuscito. Verifica che la tua chiave API sia stata aggiunta al file di installazione e che sia valida per axe DevTools Mobile visitando Impostazioni account axe.

Posso impostare test automatizzati senza autenticazione?

Offriamo build offline dei nostri SDK e driver Appium per la tua pipeline di automazione che non richiedono alcuna richiesta di rete al servizio axe DevTools Mobile. Pertanto, queste configurazioni di build sono disponibili solo tramite Deque's Artifactory.

Si prega di notare che questa build è un sottoinsieme delle funzionalità di axeDevToolsXCUI. Per utilizzare tutte le funzionalità, incluso la trasmissione dei risultati alla dashboard, utilizza il nostro framework axeDevToolsXCUI. Fare riferimento alla guida all'installazione.

Configurazione

  1. Importare il framework in qualsiasi file utilizzato per i test di accessibilità.
import axeDevToolsXCUI_noauth
  1. Crea un oggetto all'interno della tua classe di test per contenere l'istanza di axe DevTools:
var axeDevTools: AxeDevTools?
  1. Inizializzare il framework all'interno dei metodi setUp o setUpWithError .
axeDevTools = AxeDevTools.startSession()
Esempio di configurazione completa

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??
    }
    ...
}

Test dell'interfaccia utente

Per iniziare il test, passa qualsiasi elemento XCUIElement al framework per eseguire test di accessibilità su di esso e sui suoi elementi figlio.

let result = try axeDevTools.run(onElement: XCUIApplication())
Esempio completo
import XCTest
import axeDevToolsXCUI_noauth

final class XCUI_noAuthUITest: XCTestCase {
    var axeDevTools: AxeDevTools = AxeDevTools.startSession()

    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
    }
}

Cosa segue

Ti forniamo i dati e gli strumenti per creare un flusso di lavoro CI/CD utile al tuo team. Ecco alcuni suggerimenti su cosa fare con quell'oggetto risultato:

  1. Fai fallire la build se vengono rilevati degli errori. Se hai una schermata che è già stata pulita dai problemi di accessibilità, potresti voler assicurarti che non se ne insorgano di nuovi nel ciclo di sviluppo verificando che il conteggio sia 0 e, in caso contrario, facendo fallire il controllo dello stato della pull request.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)
  1. Salva i risultati localmente per creare un report mirato dei problemi riscontrati nel ramo. Scopri come creare un report con il nostro Reporter CLI per pipeline CICD. Questo può essere davvero utile per i rami beta o candidati alla release, per sensibilizzare sui potenziali ostacoli che i clienti che utilizzano tecnologie assistive potrebbero incontrare.

Perché i Suoi risultati non vengono visualizzati in Developer Hub?

Se non visualizza i Suoi risultati in Developer Hub, verifichi di aver eseguito le seguenti operazioni:

  • Si assicuri di fornire una chiave API Axe DevTools Mobile valida quando inizializza il framework Axe nei suoi test. Visita Impostazioni dell'account Axe per trovare le tue chiavi API oppure Genera una nuova chiave API axe DevTools Mobile.
  • Fornire un ID progetto valido insieme alla chiave API quando si avvia una sessione di test. Un Project ID non è richiesto per avviare una sessione di test, ma è necessario per inviare i risultati a Developer Hub. Quando Lei crea un progetto per i suoi risultati, viene generato automaticamente un ID progetto.
  • Richiami la funzione postResult dopo ogni scansione nel Suo test per inviare i risultati a Developer Hub.
  • Veda un esempio completo. Fare riferimento alla Classe di test di esempio per iOS e confronti quest'ultima con la Sua implementazione.
tip

Sta cercando l'ID del suo progetto? Lei può accedervi dalla pagina principale dei progetti in Axe Developer Hub.

  • Vada su « Impostazioni » per il suo progetto e selezioni « Configura progetto ».
  • Nei "Dettagli del progetto" può trovare e copiare l'ID del progetto.
  • Si assicuri di aver fornito l'ID del progetto al metodo startSession.

Appium

Posso impostare test automatizzati senza autenticazione?

È possibile eseguire una scansione con i nostri driver Appium offline, utilizzando una chiave di licenza fornita da Deque. Questo può essere utile quando si lavora con provider cloud o quando è necessario eseguire scansioni senza effettuare richieste di rete al servizio axe DevTools Mobile.

Installazione

È possibile installare i driver offline di Appium tramite un pacchetto npm privato da Artifactory di 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

In alternativa, può scaricarlo direttamente da Agora e installarlo localmente. Consultare la nostra documentazione su Setup for Private Cloud and On Prem per ulteriori dettagli.

Chiave di licenza

Per utilizzare questa versione offline del driver Appium, è necessaria una chiave di licenza fornita da Deque. Si prega di inviare una richiesta a helpdesk@deque.com oppure a support.deque.com.

La chiave di licenza sarà in formato stringa e avrà un aspetto simile a questo: eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==

Per motivi di sicurezza, si consiglia vivamente di aggiungere questa chiave di licenza alle variabili di ambiente.

Scansione Offline

Per eseguire una scansione, si assicuri che la Sua chiave di licenza sia inclusa in axeSettings.

const axeSettings = { 
  'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};

const result = await driver.execute('mobile: axeScan', axeSettings);

In axeSettings, sono disponibili le seguenti proprietà opzionali:

  • ignoreRules (predefinito: []).
  • ignoreExperimental (predefinito: false).

Di seguito sono riportati esempi completi di scansioni offline con i nostri driver Appium, utilizzando il framework di test Mocha in 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);
    });
});

Perché i Suoi risultati non vengono visualizzati in Developer Hub?

Se non visualizza i Suoi risultati in Developer Hub, verifichi di aver eseguito le seguenti operazioni:

Si assicuri di aver fornito un ID del progetto valido insieme alla chiave API quando avvia una sessione di test. Un Project ID non è richiesto per avviare una sessione di test, ma è necessario per inviare i risultati a Developer Hub. Quando Lei crea un progetto per i suoi risultati, viene generato automaticamente un ID progetto.

tip

Sta cercando l'ID del suo progetto? Lei può accedervi dalla pagina principale dei progetti in Axe Developer Hub.

  • Vada su « Impostazioni » per il suo progetto e selezioni « Configura progetto ».
  • Nei "Dettagli del progetto" può trovare e copiare l'ID del progetto.
  • Si assicuri di aver fornito questo ID progetto al metodo axeStartSession.