Aller au contenu

Automatisation avec Cypress

Référence du test dans Squash TM

Info

Dans cette version de Squash AUTOM il n'est pas possible de sélectionner un test spécifique dans un fichier .spec.js qui en contiendrait plusieurs : tous les tests du fichier sont donc exécutés ensemble.
Le résultat de chaque exécution du cas de test Squash TM est calculé en prenant en compte les résultats individuels de chaque test inclus dans le fichier lié :

  • Si au moins un test est en statut Error (dans le cas d'un problème technique), l'exécution sera en statut Blocked.
  • Si au moins un test a échoué fonctionnellement et qu'aucun test n'est en statut Error, l'exécution sera en statut Failed.
  • Si tous les tests ont réussi, l'exécution sera en statut Success.

Pour lier un cas de test Squash TM à un test automatisé Cypress, le champ Référence du test automatisé du bloc Automatisation du cas de test doit avoir la forme suivante :

[dépôt]/[projet]#[fichier_test]
ou
[dépôt]#[fichier_test]

avec :

  • [dépôt] : Nom du dépôt Git.

  • [projet] : Chemin vers le projet Cypress, c'est-à-dire vers le dossier où se trouvent le fichier cypress.json/cypress.config.js et le dossier cypress.
    Ce paramètre est optionnel : si le projet Cypress se trouve à la racine du dépôt Git, il est absent.

  • [fichier_test] : Chemin (relatif au chemin précédent) et nom du fichier de test Cypress à partir de la racine du dépôt (avec son extension .spec.js).

Exemple 1 : mon_dépôt/projets/second_projet#cypress/integration/actions.spec.js (le projet Cypress se trouve dans un sous-dossier)

Exemple 2 : mon_dépôt#cypress/integration/actions.spec.js (le projet Cypress est à la racine du dépôt)

Ancienne syntaxe

Les anciennes versions de Squash Orchestrator utilisaient la syntaxe suivante :

[dépôt]/[fichier_test]

avec :

  • [dépôt] : Nom du dépôt Git.
  • [fichier_test] : Chemin et nom du fichier de test Cypress à partir de la racine du dépôt (avec son extension .spec.js).

Exemple : mon_dépôt/cypress/integration/actions.spec.js

Cette syntaxe est dépréciée et ne devrait plus être utilisée. Elle est cependant encore supportée.
Cette syntaxe ne supportait pas les tests Cypress situés ailleurs qu'à la racine du dépôt de source.

Nature des paramètres Squash TM exploitables

Les paramètres Squash TM exploitables vont différer suivant si vous utilisez les composants Squash AUTOM Community ou Squash AUTOM Premium.

Voici le tableau des paramètres exploitables (ces paramètres sont transmis en tant que paramètres de test, voir ci-dessous, Squash TM ne génère pas de paramètres globaux) :

Nature Clé Community Premium
Nom du jeu de données DSNAME
Paramètre d'un jeu de données DS_[nom]
Référence du cas de test TC_REFERENCE
UUID interne du cas de test TC_UUID
Champ personnalisé du cas de test TC_CUF_[code]
Champ personnalisé de l'itération IT_CUF_[code]
Champ personnalisé de la campagne CPG_CUF_[code]
Champ personnalisé de la suite de tests TS_CUF_[code]

Légende :

  • [code] : valeur renseignée dans le champ “Code” d’un champ personnalisé
  • [nom] : nom du paramètre tel que renseigné dans Squash TM

Comme indiqué, Squash TM ajoute un préfixe au code du champ personnalisé transmis. Assurez-vous de le prendre en compte.

Voir la documentation de Squash TM pour plus d'information sur les champs personnalisés.

Utilisation de paramètres

Il est possible lors de l’exécution d’un test Cypress d’exploiter des paramètres au sein de celui-ci. Un paramètre peut être un paramètre de test ou un paramètre global. Squash TM ne transmet que des paramètres de test. Des paramètres de test et des paramètres globaux peuvent être utilisés dans Squash DEVOPS avec l'action cypress/params.

Les paramètres sont disponibles sous la forme de variables d'environnement CYPRESS_VAR et peuvent être récupérés grâce à la syntaxe Cypress.env('VAR') (voir la documentation de Cypress). Si le même nom est utilisé pour un paramètre global et un paramètre de test, c'est ce dernier qui est pris en compte.

Exemple

Ci-dessous un exemple d'un fichier de test Cypress et l’automatisation du cas de test Squash TM associé :

Exemple Cypress

Exemple Cypress

Génération des rapports Allure avec l'action cypress/cypress

Dans le cas de l'utilisation de l'action cypress/cypress‡ dans un PEaC, si vous voulez que les résultats du test Cypress soient pris en compte dans le rapport Allure généré pour le PEaC, vous devez :

1) configurer (dans le fichier de configuration cypress.yaml du provider cypress) un hook pour remonter les rapports JUnit :

apiVersion: opentestfactory.org/v1alpha1
kind: ServiceConfig
current-context: allinone
contexts:
- context:
    port: 7789
    host: 127.0.0.1
    ssl_context: disabled
    trusted_authorities:
    - /etc/squashtf/squashtf.pub
    logfile: cypress.log
    enable_insecure_login: true
    eventbus:
        endpoint: http://127.0.0.1:38368
        token: reuse
  name: allinone
hooks:
- name: capture JUnit reports
  events:
  - categoryPrefix: cypress
    category: cypress
  after:
  - uses: actions/get-files
    with:
      pattern: test-output-*.xml

2) indiquer dans le PEaC de générer un rapport JUnit par test avec les valeurs suivantes pour reporter et reporter-options :

{
  "apiVersion": "opentestfactory.org/v1alpha1",
  "kind": "Workflow",
  "metadata": {
    "name": "Cypress"
  },
  "jobs": {
    "execute": {
      "runs-on": "cypress",
      "steps": [
        {
          "uses": "actions/checkout@v2",
          "with": {
            "repository": "https://github.com/my-repo"
          }
        },
        {
          "uses": "cypress/cypress@v1",
          "with": {
            "reporter": "junit",
            "reporter-options": "mochaFile=test-output-[hash].xml,toConsole=true",
            "headless": "true"
          },
          "working-directory": "cypressDocCheck"
        }
      ]
    }
  }
}

‡ Ceci n'est pas nécessaire pour les tests Cypress lancés depuis Squash TM ou via la récupération d'un plan d'exécution Squash TM depuis un PEaC.

Versions supportées

Squash AUTOM et Squash DEVOPS ont été validés avec Cypress 8.5.0. Toute version récente devrait fonctionner.