Questions fréquentes
Android
Analyseur Mobile
Pourquoi l'application nécessite-t-elle des permissions supplémentaires ?
Lors de la configuration de l'application pour la première fois, il vous sera demandé de donner à Axe DevTools Mobile Analyzer l'autorisation de superposer le dessin et d'accéder aux paramètres d'accessibilité. La superposition permet au bouton d'action flottant de vous suivre quelle que soit l'application ouverte sur votre appareil. Les paramètres d'accessibilité permettent à l'application d'analyse d'accéder aux informations de vue de l'application que vous tentez d'analyser.
Tests automatisés
Puis-je configurer des tests automatisés sans authentification ?
Nous proposons des builds 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 tel, ces configurations de build ne sont disponibles que via l'Artifactory de Deque.
Veuillez noter que ce build est un sous-ensemble des fonctionnalités d'Axe DevTools Mobile pour Android. Pour utiliser l'ensemble complet des fonctionnalités, y compris l'envoi des résultats au tableau de bord, veuillez utiliser nos SDK ou pilotes Appium standards. Référez-vous à la guide de démarrage.
Setup
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 de démarrage :
- Nécessite : Android API 26 ou supérieur
- Connectez-vous à Artifactory pour intégrer le framework.
Configuration pour les tests
Dans le applicationfichier, ajoutez : build.gradle fichier, ajoutez :
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Assurez-vous qu'il y a l'autorisation 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 l'utilisation 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 le Developer Hub ?
Si vous ne voyez pas vos résultats dans le Developer Hub, vérifiez que vous avez fait ce qui suit :
- Provide a valid Axe DevTools Mobile API key lors de l'initialisation de la bibliothèque Axe dans vos tests. Rendez-vous sur Paramètres de compte Axe pour trouver vos clés API ou Générez une nouvelle clé API Axe DevTools Mobile.
- Provide a valid Project ID ainsi que la clé API lors du démarrage d'une session de test. Un ID de projet n'est pas nécessaire pour démarrer une session de test, mais il is 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.
- Call the
uploadToDashboardfunction après chaque scan dans votre test pour envoyer les résultats à Developer Hub. - See a full example. Référez-vous à la classe de test Android par défaut et comparez-la 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
startScanSessionméthode.
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 > Settings (ou Preferences sur les versions plus anciennes)
- Sélectionnez l'onglet Accounts Sélectionnez l'onglet
- Sélectionnez votre Apple ID
- Cliquez sur Manage Certificates
- 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 Apple Development pour créer un nouveau certificat
- Fermez l'application Mobile Analyzer
- Lancez à nouveau l'application. Référez-vous à 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 sur developer.apple.com
- Naviguez vers Certificates, Identifiers & Profiles
- 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: Window > Organizer > Projects onglet
- Sélectionnez votre projet et cliquez sur Delete à côté de Derived Data
- 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
- Ouvrir Finder (macOS Catalina ou plus récent) ou iTunes (versions plus anciennes)
- 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: Window > Devices and Simulators, sélectionnez votre appareil et copiez l'identifiant
- Ajoutez l'appareil à votre compte Developer :
- Allez sur developer.apple.com et connectez-vous
- Accédez à Certificates, Identifiers & Profiles
- Sélectionnez Devices dans la barre latérale
- Cliquez sur le plus (+) pour enregistrer un nouvel appareil
- Entrez un nom pour votre appareil et collez l'UDID
- Cliquez sur Continue puis Register
- Relancer le Mobile Analyzer :
- Fermez l'application Mobile Analyzer
- Relancez l'application. Référez-vous à 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 dans l'écosystème d'Apple pour l'identification des applications. Deux applications ne peuvent pas avoir le même identifiant. Cela inclut une version bêta ou d'autres variantes d'une application. Axe DevTools Mobile utilise l'identifiant du bundle pour se connecter et interroger les informations d'accessibilité des vues de l'application en cours de test.
Besoin de tester une application de l'App Store ? Nous pouvons récupérer l'identifiant du bundle pour vous. Recherchez la fiche de l'App Store de votre application 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 ?
Seule l'application que vous avez spécifiée avec laquelle communiquer, en ajoutant l'identifiant de bundle dans les étapes de configuration. Apple est vraiment excellent 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é UI Test intégrée à l'écosystème Xcode/Apple. Il s'agit d'une communication en boîte fermée pour interagir avec une application via 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: C'est le message d'erreur que vous êtes susceptible de recevoir lors de la première exécution. Relancez le test pour voir s'il se résout. Si cette erreur apparaît une seconde fois, assurez-vous que vous avez le bon identifiant de bundle en place et que l'application à tester est ouverte sur le simulateur/dispositif 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 compilations hors ligne de nos SDKs et pilotes Appium pour votre pipeline d'automatisation qui ne nécessitent aucune requête réseau vers le service Axe DevTools Mobile. Ainsi, ces configurations de compilation sont uniquement disponibles via l'Artifactory de Deque.
Veuillez noter que cette version est un sous-ensemble des capacités de 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. Référez-vous à 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 de 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 un XCUIElement au framework pour effectuer des tests d'accessibilité sur 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 cible 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 très utile pour les branches candidates à la version ou bêta afin de sensibiliser aux obstacles potentiels pour les clients utilisant des technologies d'assistance.
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 :
- Provide a valid Axe DevTools Mobile API key lorsque vous initialisez le cadre Axe dans vos tests. Visitez Paramètres de compte Axe pour trouver vos clés API ou Générez une nouvelle clé API Axe DevTools Mobile.
- Provide a valid Project ID avec la clé API lorsque vous commencez une session de test. Un ID de projet n'est pas requis pour commencer une session de test, mais il est is requis pour envoyer les résultats au Developer Hub. Lorsque vous Créez un projet pour vos résultats, un ID de projet est automatiquement généré.
- Call the
postResultfunction après chaque analyse dans votre test pour envoyer les résultats au Developer Hub. - See a full example. Référez-vous à Classe de test exemple iOS et comparez-le 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
startScanSessionméthode.
Appium
Tests automatisés
Puis-je configurer des tests automatisés sans authentification ?
Vous pouvez exécuter une analyse avec nos pilotes Appium hors ligne, en utilisant une clé de licence fournie par Deque. Cela peut être utile lors de l'utilisation de fournisseurs cloud ou lorsqu'il est nécessaire d'exécuter des analyses sans effectuer de requêtes réseau au service Axe DevTools Mobile.
Installation
Vous pouvez installer les pilotes Appium hors ligne 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-offlineTéléchargement Direct
Sinon, vous pouvez le télécharger directement depuis Agora et l'installer localement. Référez-vous à 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 sur support.deque.com.
La clé de licence sera sous format chaîne de caractères 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 exécuter 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 :
- Provide a valid Axe DevTools Mobile API key lors de l'initialisation de la bibliothèque Axe dans vos tests. Visitez Paramètres de compte Axe pour trouver vos clés API ou Générez une nouvelle clé API Axe DevTools Mobile.
- Provide a valid Project ID avec la clé API lorsque vous commencez une session de test. Un identifiant de projet n'est pas requis pour commencer une session de test, mais il est is requis pour envoyer les résultats au Developer Hub. Lorsque vous Créez un projet pour vos résultats, un identifiant de projet est automatiquement généré.
- Call the
uploadToDashboardfunction après chaque analyse dans votre test pour envoyer les résultats à Developer Hub. - See des exemples complets d'automatisation de Axe DevTools Mobile pour Appium et le comparer 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.
