Foire aux questions

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

Pourquoi l'application a-t-elle besoin d'autorisations supplémentaires ?

Lors de la configuration de l'application pour la première fois, vous serez invité à accorder à axe DevTools Mobile Analyzer l'autorisation d'afficher des superpositions et d'accéder aux paramètres d'accessibilité. La superposition de dessin 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 dans l'application que vous essayez d'analyser.

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. Ces configurations de construction ne sont disponibles que via Deque's Artifactory.

Veuillez noter que ce build est un sous-ensemble de fonctionnalités d'axeDevTools Mobile pour Android. Pour utiliser l'ensemble des fonctionnalités, y compris l'envoi des résultats vers le tableau de bord, veuillez utiliser nos SDK standard ou nos pilotes Appium. Reportez-vous au guide de démarrage.

Configuration

Lors de votre 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.

important

Liste de contrôle 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 fichier build.gradle de l'application, ajoutez :

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

et

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

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 effectuez une conversion à partir de la version authentifiée.

Indépendant de la 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()   
    }
}

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 bien effectué les opérations suivantes :

  • Veuillez fournir une clé API Axe DevTools Mobile valide lors de l'initialisation de la bibliothèque Axe dans vos tests. Visitez Paramètres du compte Axe pour trouver vos clés API ou Générez une nouvelle clé API Axe DevTools Mobile.
  • Fournir un identifiant de projet valide ainsi que la clé API lors du démarrage d'une session de test. Un identifiant 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 identifiant de projet est automatiquement généré.
  • Appelez la fonction uploadToDashboard après chaque analyse dans votre test pour envoyer les résultats à Developer Hub.
  • Voir un exemple complet. Consultez la classe de test d'exemple Android et comparez-la avec votre implémentation.
tip

Vous recherchez votre identifiant de projet ? Vous pouvez y accéder depuis la page principale des projets dans axe Developer Hub.

  • Accédez aux « Paramètres » de votre projet et sélectionnez « Configurer le projet ».
  • Dans la section 'Détails du projet', vous pouvez trouver et copier l’identifiant du projet.
  • Assurez-vous d'avoir fourni cet identifiant du projet à la méthode startSession.

iOS

Qu'est-ce qu'un identifiant de bundle ?

Un identifiant de bundle est un identifiant unique au sein de l'écosystème d'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 du bundle pour se connecter et interroger les informations d'accessibilité des vues de l'application testée.

tip

Besoin de tester une application de l'App Store ? Nous pouvons récupérer l'identifiant du bundle pour vous. Recherchez la liste de votre application dans l'App Store à partir d'un navigateur Web et utilisez-la pour trouver l'ID de bundle de votre application.

À quoi l'application Runner installée a-t-elle accès ?

Seule l'application avec laquelle vous avez spécifié de communiquer, en ajoutant l'identifiant de bundle dans les étapes de configuration, est concernée. Apple est vraiment très doué en matière de sécurité et utilise un environnement sandbox pour chaque application que vous avez installée sur votre appareil, quelle que soit la manière dont cette application a été installée (Testflight, Xcode ou App Store). L'application d'analyse utilise la fonctionnalité de test d'interface utilisateur intégrée à l'écosystème Xcode/Apple. Il s'agit d'une communication en circuit fermé permettant de communiquer avec une application via l'identifiant de bundle que vous avez spécifié dans le fichier d'installation.

Erreurs courantes et solutions

Si vous obtenez une erreur / un échec de test pendant le test, cette section mettra en évidence les messages d'erreur courants et comment les résoudre. Sélectionnez l'icône « x » rouge en forme de losange et Xcode ouvrira le panneau « Issue Navigator » sur la gauche pour mettre en évidence le message d'erreur spécifique.

  • Cannot request screenshot data because it does not exist : Il s'agit du message d'erreur que vous êtes susceptible d'obtenir lors de la première exécution. Exécutez à nouveau le test pour voir si le problème est résolu. Si cette erreur apparaît une deuxième fois, assurez-vous que vous disposez du bon identifiant de bundle 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 d'installation et qu'elle est valide pour axe DevTools Mobile en visitant Paramètres du compte axe.

Puis-je préparer 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. Ces configurations de construction ne sont disponibles que via Deque's Artifactory.

Veuillez noter que ce build est un sous-ensemble de fonctionnalités dans axeDevToolsXCUI. Pour utiliser l'ensemble complet des fonctionnalités, y compris l'envoi des résultats vers le tableau de bord, veuillez utiliser notre framework axeDevToolsXCUI. Reportez-vous au guide d'installation.

Configuration

  1. Importez le framework dans n’importe quel fichier utilisé pour les tests d’accessibilité.
import axeDevToolsXCUI_noauth
  1. Créez un objet dans votre classe de test pour conserver l'instance axe DevTools :
var axeDevTools: AxeDevTools?
  1. Initialisez le framework dans les méthodes setUp ou setUpWithError .
axeDevTools = AxeDevTools.startSession()
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 d'interface utilisateur

Pour commencer les tests, transmettez n'importe quel XCUIElement élément au framework pour exécuter des tests d'accessibilité sur lui 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.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
    }
}

Et ensuite ?

Nous vous fournissons les données et les outils pour créer un workflow CI/CD qui aide votre équipe. Voici quelques suggestions sur ce qu'il faut faire avec cet objet de résultat :

  1. Interrompez la compilation si des échecs ont été détectés. Si vous avez un écran qui a déjà été débarrassé des problèmes d'accessibilité, vous souhaiterez peut-être vous assurer qu'aucun nouveau problème n'apparaît dans le cycle de développement en affirmant que le nombre est de 0 et en faisant échouer la vérification de l'état de la pull request si ce n'est pas le cas.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)
  1. Enregistrer les résultats localement pour créer un rapport ciblé des problèmes détectés dans la branche. Découvrez la création d'un rapport avec notre Reporter CLI pour les pipelines CICD. Cela peut être très utile pour les branches de candidats à la publication ou bêta afin de sensibiliser les clients utilisant des technologies d'assistance aux obstacles potentiels auxquels ils peuvent être confrontés.

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 bien effectué les opérations suivantes :

  • Fournissez une clé API Axe DevTools Mobile valide 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 Axe DevTools Mobile.
  • Fournir un identifiant de projet valide ainsi que la clé API lors du démarrage d'une session de test. Un identifiant 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 automatiquement généré.
  • Appelez la fonction postResult après chaque analyse de votre test pour envoyer les résultats au Developer Hub.
  • Voir un exemple complet. Consultez l’exemple de classe de test iOS et comparez-la à votre propre implémentation.
tip

Vous recherchez votre identifiant de projet ? Vous pouvez y accéder depuis la page principale des projets dans axe Developer Hub.

  • Accédez aux « Paramètres » de votre projet et sélectionnez « Configurer le projet ».
  • Dans la section 'Détails du projet', vous pouvez trouver et copier l’identifiant du projet.
  • Assurez-vous d'avoir fourni cet identifiant du projet à la méthode startSession.

Appium

Puis-je préparer des tests automatisés sans authentification ?

Vous pouvez exécuter 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 cloud ou lorsque vous devez lancer des analyses sans effectuer de requêtes réseau vers le service axe DevTools Mobile.

Installation

Vous pouvez installer les pilotes hors ligne d'Appium à l'aide d'un package npm privé depuis l'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

Vous pouvez également le télécharger directement depuis Agora et l'installer localement. Consultez notre documentation sur Configuration pour le 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 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 des raisons 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 facultatives suivantes sont disponibles :

  • ignoreRules (par défaut : []).
  • ignoreExperimental (par défaut : false).

Vous trouverez ci-dessous des exemples complets d’analyses hors ligne avec nos pilotes Appium, utilisant le framework 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);
    });
});

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 bien effectué les opérations suivantes :

tip

Vous recherchez votre identifiant de projet ? Vous pouvez y accéder depuis la page principale des projets dans axe Developer Hub.

  • Accédez aux « Paramètres » de votre projet et sélectionnez « Configurer le projet ».
  • Dans la section 'Détails du projet', vous pouvez trouver et copier l’identifiant du projet.
  • Assurez-vous d'avoir fourni cet ID de projet à la méthode axeStartSession.