Questions fréquentes
Android
Analyseur Mobile
Pourquoi l'application nécessite-t-elle des permissions supplémentaires ?
Lors de la première configuration de l'application, vous serez invité à donner à axe DevTools Mobile Analyzer la permission d'utiliser le dessin en superposition et les paramètres d'accessibilité. Le dessin en superposition permet au bouton d'action flottant de vous suivre quelle que soit l'application que vous avez ouverte sur votre appareil. Les paramètres d'accessibilité permettent à l'application d'analyse d'accéder aux informations d'affichage au sein de l'application que vous tentez d'analyser.
Test automatisé
Puis-je configurer des tests automatisés sans authentification ?
Nous proposons des versions hors ligne de nos SDK et pilotes Appium pour votre pipeline d'automatisation qui ne nécessitent aucune requête réseau vers le service axe DevTools Mobile. En tant que telles, ces configurations de build sont uniquement disponibles via Artifactory de Deque.
Veuillez noter que cette version est un sous-ensemble des capacités dans axeDevTools Mobile pour Android. Pour utiliser l'ensemble complet des capacités, y compris l'envoi des résultats au tableau de bord, veuillez utiliser nos SDK ou pilotes Appium standards. Consultez le guide de démarrage.
Configuration
Lors de la navigation dans la documentation, veuillez noter que toutes les fonctionnalités nécessitant une interaction avec le serveur ne sont pas disponibles dans la version hors ligne.
Liste de vérification pour bien débuter :
- Nécessite : Android API 26 ou supérieur
- Connectez-vous à Artifactory pour intégrer le framework.
Configuration pour les tests
Dans le fichierde l' build.gradle application, ajoutez :
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Assurez-vous qu'il y a une permission Internet dans le AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />Exemple de test Espresso
Notez que le axe.loginWithUsername(...) et le axe.loginWithApiKey(...) ne sont pas disponibles dans cette version de la bibliothèque et doivent être retirés du code de configuration si vous passez de la version authentifiée.
Agnostique en matière de mise en page
@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()
}
}Résultats
Pourquoi mes résultats n'apparaissent-ils pas dans Developer Hub ?
Si vous ne voyez pas vos résultats dans Developer Hub, vérifiez que vous avez effectué les actions suivantes :
- Fournissez une clé API Axe DevTools Mobile valide lors de l'initialisation de la bibliothèque Axe dans vos tests. Rendez-vous dans les paramètres du compte Axe pour trouver vos clés API ou Générez une nouvelle clé API Axe DevTools Mobile.
- Fournissez un ID de projet valide avec la clé API lors du démarrage d'une session de test. Un ID de projet n'est pas requis pour démarrer une session de test, mais il est requis pour envoyer les résultats à Developer Hub. Lorsque vous créez un projet pour vos résultats, un ID de projet est généré automatiquement.
- Appelez la
uploadToDashboardfonction après chaque analyse dans votre test pour envoyer les résultats à Developer Hub. - Voir un exemple complet. Consultez la classe de test Android par défaut et comparez-la avec votre implémentation.
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
Analyseur Mobile
Que faire si mon certificat de développement Apple est expiré ?
Si vous recevez une erreur en utilisant l'application de bureau Mobile Analyzer indiquant que votre certificat de développement Apple a expiré, suivez les étapes ci-dessous.
Solution rapide
- Ouvrez Xcode → Allez à Xcode > Paramètres (ou Préférences sur les anciennes versions)
- Sélectionnez l'onglet Comptes
- Sélectionnez votre Apple ID
- Cliquez sur Gérer les certificats
- Trouvez le certificat expiré (il aura une icône d'avertissement)
- Sélectionnez le certificat expiré et cliquez sur le bouton moins (−) pour le supprimer
- Cliquez sur le bouton plus (+) et sélectionnez Développement Apple pour créer un nouveau certificat
- Fermez l'application Mobile Analyzer
- Relancez l'application. Consultez Tester les applications iOS pour l'accessibilité si nécessaire.
Vous recevez toujours une erreur ?
Xcode met parfois en cache l'ancien certificat. Essayez ce qui suit :
- Révoquez le certificat dans votre compte Apple Developer :
- Allez à developer.apple.com
- Naviguez jusqu’à Certificats, identifiants et profils
- Trouvez le certificat expiré et révoquez-le
- Retournez à Xcode et répétez les étapes ci-dessus pour en créer un nouveau
- Effacer les données dérivées :
- Dans Xcode: Fenêtre > Organisateur > Projets onglet
- Sélectionnez votre projet et cliquez sur Supprimer à côté de Données dérivées
- Redémarrez Xcode après avoir effectué ces changements
Que dois-je faire si mon appareil n’a pas pu être enregistré automatiquement ?
Pour enregistrer manuellement un téléphone avec votre compte Apple Developer, vous devez l'ajouter comme appareil de test via le portail Apple Developer. Voici comment :
- Obtenez l'UDID (Identifiant Unique de l'Appareil) de votre appareil :
- Connectez votre iPhone à votre Mac
- Ouvrez Finder (macOS Catalina ou plus récent) ou iTunes (versions antérieures)
- Sélectionnez votre appareil et cliquez sur le numéro de série jusqu'à ce qu'il affiche l'UDID
- Cliquez avec le bouton droit et copiez l'UDID
- Alternativement, vous pouvez ouvrir Xcode: Fenêtre > Appareils et simulateurs, sélectionnez votre appareil et copiez l'identifiant
- Ajoutez l'appareil à votre compte Developer :
- Allez sur developer.apple.com et connectez-vous
- Allez dans Certificats, identifiants et profils
- Sélectionnez Appareils dans la barre latérale
- Cliquez sur le signe plus (+) pour enregistrer un nouvel appareil
- Entrez un nom pour votre appareil et collez l'UDID
- Cliquez sur Continuez puis Inscrivez-vous
- Relancer le Mobile Analyzer :
- Fermez l'application Mobile Analyzer
- Relancez l'application. Consultez Tester les applications iOS pour l'accessibilité si nécessaire.
Gardez à l'esprit que les comptes Apple Developer gratuits peuvent enregistrer jusqu'à 3 appareils, tandis que les comptes payants peuvent enregistrer jusqu'à 100 appareils par type d'appareil (100 iPhones, 100 iPads, etc.).
Tests automatisés
Qu'est-ce qu'un identifiant de bundle ?
Un identifiant de bundle est un identifiant unique au sein de l'écosystème Apple pour l'identification des applications. Aucune application ne peut avoir le même identifiant. Cela inclut une version bêta ou d'autres variantes d'une application. axe DevTools Mobile utilise l'identifiant de bundle pour se connecter et interroger les informations d'accessibilité des vues de l'application testée.
Besoin de tester une application de l'App Store ? Nous pouvons récupérer l'identifiant de bundle pour vous. Recherchez la liste de votre application dans l'App Store depuis un navigateur Web et utilisez-la pour trouver l'identifiant de bundle de votre application.
Quelles sont les permissions de l'application Runner installée ?
Seulement l'application que vous avez spécifiée pour communiquer, en ajoutant l'identifiant de bundle dans les étapes de configuration. Apple est très rigoureux en matière de sécurité et utilise un environnement sandbox pour chaque application que vous avez installée sur votre appareil, peu importe comment cette application a été installée (Testflight, Xcode ou App Store). L'application d'analyse utilise la fonctionnalité de test UI intégrée dans l'écosystème Xcode/Apple. C'est une communication en boîte fermée pour dialoguer avec une application à travers l'identifiant de bundle que vous avez spécifié dans le fichier de configuration.
Erreurs courantes et remédiation
Si vous obtenez une erreur / un test échoué lors du test, cette section mettra en avant les messages d'erreur courants et comment les résoudre. Sélectionnez l'icône en forme de diamant rouge avec un ‘x’, et Xcode ouvrira le panneau ‘Issue Navigator’ à gauche pour mettre en évidence le message d'erreur spécifique.
-
Cannot request screenshot data because it does not exist: Voici le message d'erreur que vous êtes susceptible de recevoir lors de la première exécution. Exécutez à nouveau le test pour voir si cela se résout. Si cette erreur apparaît une deuxième fois, assurez-vous que vous avez le bon identifiant de bundle en place et que l'application à tester est ouverte sur le simulateur/appareil sélectionné. -
caught error: “couldNotVerifyUser”: La connexion avec Deque a échoué. Vérifiez que votre clé API a été ajoutée au fichier de configuration et qu'elle est valide pour axe DevTools Mobile en visitant Paramètres de compte axe.
Puis-je configurer des tests automatisés sans authentification ?
Nous proposons des constructions hors ligne de nos SDK et pilotes Appium pour votre chaîne d'automatisation qui ne nécessitent aucune requête réseau vers le service axe DevTools Mobile. Ainsi, ces configurations de construction sont uniquement disponibles via l'Artifactory de Deque.
Veuillez noter que cette construction est un sous-ensemble des capacités au sein axeDevToolsXCUI. Pour utiliser l'ensemble complet des capacités, y compris l'envoi des résultats au tableau de bord, veuillez utiliser notre framework axeDevToolsXCUI. Consultez le guide de configuration.
Configuration
- Importez le framework dans n'importe quel fichier utilisé pour les tests d'accessibilité.
import axeDevToolsXCUI_noauth- Créez un objet au sein de votre classe de test pour conserver l'instance axe DevTools :
var axeDevTools: AxeDevTools?- Initialisez le framework dans les méthodes
setUpousetUpWithError.
axeDevTools = AxeDevTools.startScanSession()Exemple de configuration complète
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??
}
...
}Tests UI
Pour commencer le test, passez n'importe quel XCUIElement au framework pour exécuter des tests d'accessibilité contre celui-ci et ses enfants.
let result = try axeDevTools.run(onElement: XCUIApplication())Exemple complet
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
}
}Quelle est la suite
Nous vous fournissons les données et outils pour créer un flux de travail CI/CD qui aide votre équipe. Voici quelques suggestions pour ce que vous pouvez faire avec cet objet de résultat :
- Échouez la construction si des échecs ont été trouvés. Si vous avez un écran qui a déjà été nettoyé des problèmes d'accessibilité, vous pouvez vouloir vous assurer qu'aucun nouveau ne s'y glisse au cours du cycle de développement en vérifiant que le compte est de 0, et échouez la vérification de l'état de la demande de tirage s'il ne l'est pas.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)- Sauvegardez les résultats localement pour créer un rapport ciblé des problèmes trouvés dans la branche. Consultez la création d'un rapport avec notre CLI Reporter pour les pipelines CICD. Cela peut être vraiment utile pour les branches candidates à la release ou bêta pour sensibiliser sur les obstacles potentiels que les clients utilisant des technologies d'assistance pourraient rencontrer.
Résultats
Pourquoi mes résultats n'apparaissent-ils pas dans Developer Hub ?
Si vous ne voyez pas vos résultats dans Developer Hub, vérifiez que vous avez effectué les actions suivantes :
- Fournissez une clé API valide pour Axe DevTools Mobile lors de l'initialisation du framework Axe dans vos tests. Visitez Paramètres du compte Axe pour trouver vos clés API ou Générez une nouvelle clé API pour Axe DevTools Mobile.
- Fournissez un ID de projet valide avec la clé API lors du démarrage d'une session de test. Un ID de projet n'est pas requis pour démarrer une session de test, mais il est nécessaire pour envoyer des résultats à Developer Hub. Lorsque vous Créez un projet pour vos résultats, un ID de projet est généré automatiquement.
- Appelez la
postResultfonction après chaque analyse dans votre test pour envoyer des résultats à Developer Hub. - Voir un exemple complet. Consultez la Classe de test exemple iOS et comparez-la à votre implémentation.
Vous cherchez votre ID de projet ? Vous pouvez y accéder depuis la page principale des projets dans Axe Developer Hub.
- Allez dans 'Paramètres' pour votre projet et sélectionnez 'Configurer le projet'.
- Dans 'Détails du projet', vous pouvez trouver et copier l'ID de projet.
- Assurez-vous d'avoir fourni cet ID de projet à la
startScanSessionméthode.
Appium
Tests automatisés
Puis-je configurer des tests automatisés sans authentification ?
Vous pouvez effectuer une analyse avec nos pilotes hors ligne Appium, en utilisant une clé de licence fournie par Deque. Cela peut être utile lorsque vous travaillez avec des fournisseurs de services cloud ou lorsque vous devez effectuer des analyses sans faire de requêtes réseau au service axe DevTools Mobile.
Installation
Vous pouvez installer les pilotes hors ligne Appium en utilisant un package npm privé depuis l'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-offlineAlternativement, vous pouvez le télécharger directement depuis Agora et l'installer localement. Consultez notre documentation sur Configuration pour Cloud Privé et Sur Site pour plus de détails.
Clé de licence
Vous aurez besoin d'une clé de licence de Deque pour utiliser cette version hors ligne du pilote Appium. Veuillez envoyer une demande à helpdesk@deque.com ou à support.deque.com.
La clé de licence sera au format chaîne et ressemblera à ceci :
eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==
Il est fortement recommandé d'ajouter cette clé de licence à vos variables d'environnement pour plus de sécurité.
Analyse hors ligne
Pour effectuer une analyse, assurez-vous que votre clé de licence est incluse dans axeSettings.
const axeSettings = {
'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};
const result = await driver.execute('mobile: axeScan', axeSettings);Dans axeSettings, les propriétés optionnelles suivantes sont disponibles :
ignoreRules(par défaut :[])ignoreExperimental(par défaut :false)
Voici des exemples complets d'analyses hors ligne avec nos pilotes Appium, utilisant le cadre de test 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);
});
});Résultats
Pourquoi mes résultats n'apparaissent-ils pas dans le Developer Hub ?
Si vous ne voyez pas vos résultats dans le Developer Hub, vérifiez que vous avez fait ce qui suit :
- Assurez-vous d'avoir fourni une clé API Axe DevTools Mobile valide lors du démarrage d'une session de test et de l'initiation d'une analyse. Visitez Paramètres de compte Axe pour trouver vos clés API ou Générez une nouvelle clé API Axe DevTools Mobile.
- Assurez-vous d'avoir fourni un ID de projet valide avec la clé API lors du démarrage d'une session de test. Un ID de projet n'est pas requis pour commencer une session de test, mais il est requis pour envoyer des résultats au Developer Hub. Lorsque vous Créez un projet pour vos résultats, un ID de projet est généré automatiquement.
- Voir des exemples complets d'automatisation de Axe DevTools Mobile pour Appium et comparez avec votre implémentation.
Vous cherchez votre ID de projet ? Vous pouvez y accéder depuis la page principale des projets dans Axe Developer Hub.
- Allez dans 'Paramètres' de votre projet et sélectionnez 'Configurer le projet'.
- Dans les 'Détails du projet', vous pouvez trouver et copier l'ID de projet.
- Assurez-vous d'avoir fourni cet ID de projet à la
axeStartSessionméthode.
