Domande Frequentemente Poste
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.
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
uploadToDashboarddopo 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.
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.
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
- Importare il framework in qualsiasi file utilizzato per i test di accessibilità.
import axeDevToolsXCUI_noauth- Crea un oggetto all'interno della tua classe di test per contenere l'istanza di axe DevTools:
var axeDevTools: AxeDevTools?- Inizializzare il framework all'interno dei metodi
setUposetUpWithError.
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:
- 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)- 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
postResultdopo 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.
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-offlineiOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offlineIn 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 una chiave API Axe DevTools Mobile valida quando inizia una sessione di test e avvia una scansione. Visita Impostazioni dell'account Axe per trovare le tue chiavi API oppure Genera una nuova chiave API axe DevTools Mobile.
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.
- Vedi esempi completi di automazione di Axe DevTools Mobile per Appium e li confronti con la Sua implementazione.
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.
