Simplifiez les flux de travail de conformité avec le nouveau test C/C++ 2024.2 et l'automatisation pilotée par l'IA | Inscrivez-vous
Aller à la section
Trucs et astuces pour tester les applications Salesforce Enterprise avec Selenium
Et si nous vous disions qu'il existe des trucs et astuces testés que vous pouvez déployer pour tester les applications Salesforce Enterprise avec Selenium ? Découvrez ces astuces et découvrez également comment Parasoft Selenic peut vous aider à automatiser les tests des applications d'entreprise Salesforce.
Aller à la section
Aller à la section
Salesforce est devenue la plateforme CRM dominante ces dernières années avec part de marché mondiale de 19.5% en 2018. C'est plus du double du SAP alternatif le plus proche et plus de trois fois celui d'Oracle. Le succès vient du ciblage du développement d'applications d'entreprise avec son propre langage de programmation orienté objet Apex et son framework Lightning Web Component.
Salesforce permet aux développeurs de définir leur logique métier et leurs éléments d'interface utilisateur de manière abstraite afin que Salesforce puisse implémenter ces éléments sur la page. Cette flexibilité se fait au détriment de Automatisation des tests d'interface utilisateur car les développeurs n'ont pas de contrôle direct sur le contenu final du navigateur. Les applications d'entreprise Salesforce sont notoirement difficiles à tester avec des frameworks d'automatisation open source tels que Selenium. Explorons quelques raisons de la difficulté de tester les applications Salesforce Enterprise et comment les contourner.
Défis du test des applications Salesforce Enterprise
Les identificateurs d'élément sont un moyen courant de localiser et d'automatiser les interactions des pages Web avec Selenium. L'annotation @FindBy dans Selenium a un simple attribut id = "quelque chose" pour localiser un élément Web par identifiant unique sur la page.
Identificateurs d'élément atypiques
Les identifiants d'éléments dans une application Salesforce semblent très étranges : par exemple, id="940:1376;a". Pire encore, les identifiants changent de manière aléatoire entre les visites de pages. Cela rend les identifiants inutiles pour l’automatisation des tests. Considérez comment un Test de sélénium devrait localiser le élément dans l’exemple suivant lorsque l’identifiant change à chaque exécution du test.
Trucs et astuces
Le l'élément n'a pas d'autres attributs de définition unique. Heureusement, Salesforce est conforme aux dernières directives d'accessibilité Web. La section 1.3.1 des WCAG sur les informations et les relations exige qu'un élément lisible par l'homme soit associé dans le en faisant correspondre l'attribut «for» de l'étiquette à l'attribut «id» de l'entrée. L'identifiant d'élément peut changer à chaque fois que la page est chargée, mais le texte de l'étiquette doit toujours être le même.
Dans cet exemple, le texte "Nom de l'entreprise" est contenu dans un attribut with pour = "940: 1376; a" qui correspond à l'identifiant sur le élément. Un test Selenium peut établir la connexion du texte de l'étiquette à l'élément d'entrée en utilisant un XPath intelligent: //input[@id=//label[normalize-space(.)='Company Name '] / @ for].
Ce XPath localise tout élément sur la page avec un attribut "id" égal à l'attribut "pour" d'un affichage "Nom de l'entreprise". La fonction XPath normalize-space (.) Élimine l'espace blanc supplémentaire du texte de cet exemple enveloppé à l' intérieur de l' élément. Cela rend le test Selenium un peu plus compliqué, mais il fait le travail.
Applications d'entreprise hébergées sur le cloud lentes
Malgré le nom «Lightning», les applications d'entreprise hébergées dans le cloud de Salesforce peuvent parfois être assez lentes. Les ingénieurs en automatisation des tests connaissent les défis associés aux applications qui peuvent être lentes à répondre. Un script de test échouera s'il essaie d'exécuter l'étape suivante avant que l'application ne soit prête.
Le codage en dur de plusieurs secondes de retard dans le test peut faire une pause plus longue que nécessaire la plupart du temps et augmenter la durée totale d'exécution des tests. Afin de retarder juste assez longtemps, l'attente doit être conditionnelle. Salesforce rend difficile l'utilisation des conditions d'attente typiques de Selenium fluent en rendant un masque de superposition de chargement sur la page.
Selenium a un support intégré pour les conditions d'attente dynamiques. Il vérifie la présence d'élément ou la cliquabilité plusieurs fois par seconde - jusqu'à un temps maximum avant l'erreur. Le problème est qu'aucune des conditions d'attente intégrées de Selenium ne gère la superposition de chargement dans Salesforce. Selenium détecte que l'élément sous le masque de chargement est bien présent et non désactivé. Il arrête d'attendre et essaie de cliquer dessus. Cela entraîne une exception car le clic est intercepté par la superposition de chargement.
Trucs et astuces
Tout espoir n'est pas perdu. Quelques lignes supplémentaires de code Selenium permettent d'attraper cette exception interceptée par un clic et de réessayer en utilisant la même boucle d'attente et le même délai d'expiration.
Mémorisation et réinitialisation des composants de l'interface utilisateur Lightning
Une autre épine dans le côté de l'automatisation des tests de l'interface utilisateur est que Salesforce se souvient des derniers composants de l'interface utilisateur Lightning ouverts et réinitialise le dernier état connu lors de la connexion. Cela signifie que la mise en page initiale disponible pour le test est sujette à modification en fonction de l'historique enregistré.
Trucs et astuces
Une façon de réduire l'effet de l'état précédent est que le test lance le navigateur incognito. Selenium facilite cette opération avec Google Chrome en passant des options dans la méthode de configuration de la classe de test.
Les autres options présentées ici désactivent l'invite du navigateur pour partager l'emplacement avec Salesforce car les tests Selenium peuvent rester bloqués sur cette invite d'autorisation pendant la lecture. L'agrandissement de la fenêtre du navigateur permet d'ajouter plus d'éléments à l'écran. Cela réduit également la nécessité pour le test de faire défiler les éléments avant de les cliquer. Si le test doit encore faire défiler jusqu'à un élément plus bas dans la page, Selenium peut exécuter cette commande JavaScript pour faire exactement cela.
Avantages des tests d'applications Salesforce Enterprise avec les tests d'interface utilisateur automatisés Selenium
Ces conseils et astuces permettent d'utiliser Selenium pour tester automatiquement l'interface utilisateur des applications d'entreprise Salesforce. L'automatisation des tests est un moyen important de détecter rapidement les régressions après la modification de la logique métier ou des composants Web dans l'application d'entreprise. Salesforce lui-même publie également des modifications plusieurs fois par an. Une suite de tests Selenium est un excellent moyen de vérifier rapidement la compatibilité avec la dernière mise à jour de Salesforce dans un bac à sable avant de passer à la production.
Améliorez les tests d'interface utilisateur automatisés Selenium avec la technologie AI
Si la mise en œuvre de ces trucs et astuces par vous-même semble vous demander trop de travail, pensez à utiliser Parasoft Sélénic pour automatiser efficacement la création de vos tests Selenium et simplifier la maintenance des tests. Avec Selenic, vous pouvez enregistrer les interactions avec les applications d'entreprise Salesforce dans votre navigateur. Créez ensuite facilement des classes de test Selenium qui exploitent toutes ces mêmes techniques.
L'enregistreur intégré de Parasoft Selenic fournit une sélection d'applications afin que vous puissiez choisir de rassembler des attributs spécifiques à Salesforce lors de l'enregistrement des actions de l'interface utilisateur. Selenic intègre ensuite ces attributs lors de la création de tests d'interface utilisateur Selenium et utilise la technologie de l'IA pour appliquer l'auto-guérison aux tests qui sont interrompus en raison de changements dans les localisateurs ou des conditions d'attente.