Cette semaine, j’ai plongé dans les tests automatisés avec Rapporteur.Étant donné que la construction d’une succursale échoue beaucoup ces derniers temps avec des délais d’attente et d’autres problèmes, je vais essayer d’en savoir plus et de résoudre ce problème.

Qu’est-ce que le test automatisé.

Les tests automatisés facilitent la vie une fois qu’ils sont correctement configurés et utiles 🙂 Les tests automatisés utilisent des logiciels / outils pour tester rapidement le code. Vous configurez des cas de test et ceux-ci sont exécutés via l’outillage. Aucune interaction humaine à tester n’est requise après avoir écrit ces cas. Il peut comparer, exécuter une entrée de données à travers les tests.

Les tests les plus courants et leurs différences.

Les deux méthodes de test les plus courantes que j’ai rencontrées jusqu’à présent sont les tests Unit et les tests E2E.

Tests unitaires

Les tests unitaires se concentrent sur les tests d’unités individuelles.Pensez à cela comme une fonction ou une petite partie du code.Vous vous moquez des (faux) services, du réseau et d’autres ressources et faites tous les tests isolés.
Dans Angular Karma et Jasmine framework sont principalement utilisés pourles tests unitaires d’écriture.

E2E testing

Avec e2e testing, vous pouvez passer par l’interface graphique comme le fait un utilisateur.Cliquez sur les boutons, les pages, les menus, CRUD. (pas en production)
L’utilisation la plus courante pour les tests E2E avec Angular est le pilote web Sélénium avec rapporteur.
Donc, pour tester votre code, il est utile d’utiliser des tests unitaires.Si vous souhaitez tester l’utilisation fonctionnelle de votre site, vous devriez essayer E2E.

Pourquoi tester?

Le but est de rencontrer des problèmes rapidement.Pour les tests E2E: Vous ne voulez pas non plus tester en cliquant sur les écrans pour voir le bouton ifa fonctionne toujours ou une page se charge par vous-même.Ce serait beaucoup de travail et ce n’est pas cohérent si cela était fait par différents développeurs.

Configuration du rapporteur.

Comment installer le rapporteur.

Pour installer protractor, vous exécutez ce qui suit à partir de la ligne de commande :
Vous installez protractor en exécutant :

npm install -g protractor

Ensuite, vous installez webdriver manager for selenium.

webdriver-manager update

webdriver-manager start

Créez un test.

Vous avez d’abord besoin de deux fichiers pour créer un test, un fichier de spécifications et un fichier de configuration.
Dans le fichier de configuration, vous configurez l’emplacement des fichiers de spécifications. Il contient également le navigateur que vous souhaitez utiliser pour tester, par défaut est Chrome.L’adresse du serveur sélénium est incluse pour communiquer.Et aussi le cadre est défini, c’est Jasmine.Ensuite, cela ressemble à ceci:

 // conf.jsexports.config = { framework: 'jasmine', seleniumAddress: 'http://localhost:4444/wd/hub', specs: }

Pour construire un test, vous devez déterminer un cas. Vous construisez le cas dans le fichier de spécifications. D’abord, vous déterminez ce que le test doit do.In dans ce cas, vous vérifiez si votre page de destination affiche le message de bienvenue.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message', () => { expect(page.containsElement('#welcome')).toBeTruthy() expect(page.getElementText('#welcome')).toEqual('Welcome') })})

Vous décrivez d’abord la page ou l’élément que vous souhaitez tester, dans cet exemple c’est la page de destination. Describe est le nom de la syntaxe testsuite et Jasmine.Il contient le flux de bout en bout. Dans ce sont des cas de test « it ».
Ensuite, vous déterminez ce qu’il faut faire. « Il » est une fonction globale de Jasmine. Vous pouvez avoir plusieurs cas de test « it » dans le flux.(describe)
Dans ce cas, vous vérifiez si la page de destination a reçu le message de bienvenue affiché et est donc disponible comme prévu. (true, toBeThruthy) Vous vérifiez également si le texte est le même que le texte de la page de destination (toEqual(‘yourText’)

Async Await.

JavaScript est asynchrone, vous ne savez pas quel script va s’exécuter en premier. Les flux de rapporteur sont synchrones, vos étapes sont dans un ordre d’exécution spécifique. Cliquez sur ceci, puis sur ce bouton.
Les flux de rapporteur sont écrits avec une promesse. Le rapporteur peut gérer la promesse en attendant qu’elle soit terminée.

La syntaxe de async await ressemble beaucoup à la syntaxe TypeScript.
La fonction asynchrone peut être encapsulée avec ‘async’ et ‘await’.
Await est utilisé avant la ligne que nous voulons attendre.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message',async () => { expect(await page.containsElement('#welcome')).toBeTruthy() expect(await page.getElementText('#welcome')).toEqual('Welcome') })})

Quel était le principal problème avec mes versions?

Mes tests ont beaucoup échoué avec des délais d’attente. J’ai utilisé async await et j’ai encore eu quelques problèmes. Comme vous pouvez le voir, la syntaxe est presque la même avec TypeScript async /await.

J’ai trouvé ceci sur le protractortest.org site.

N’oubliez pas de désactiver control_flow, vous ne pouvez pas utiliser un mélange d’async/await et le flux de contrôle: async/await rend le flux de contrôle peu fiable (voir problème github). Donc, si vous asynchronisez / attendez n’importe où dans une spécification, vous devez utiliser le SELENIUM_PROMISE_MANAGER: false

J’ai ajouté ceci à la configuration et débogué les erreurs restantes.
Je construis un temps d’attente / sommeil entre certains tests et cela fonctionne bien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.