Guide Complet pour Créer un Projet Cypress Professionnel
🚀 Créer la structure de base du projet Cypress
Commencez par créer une arborescence propre pour vos tests automatisés, avec les fichiers de configuration et les tests d'exemple.
my-cypress-project/ ├── cypress/ │ ├── e2e/ │ │ └── home.cy.js │ ├── fixtures/ │ │ └── users.json │ └── support/ │ ├── commands.js │ └── e2e.js ├── cypress.config.js ├── package.json └── README.md
Exemple de test d'entrée dans cypress/e2e/home.cy.js
:
describe('Page d'accueil', () => { it('devrait charger la page principale', () => { cy.visit('/'); cy.contains('Welcome'); }); });
📋 Configurer les tests BDD avec Gherkin
Utilisez cypress-cucumber-preprocessor
pour écrire vos tests en langage naturel Gherkin :
- Installer le preprocesseur :
npm install --save-dev cypress-cucumber-preprocessor
- Créer un fichier feature dans
cypress/e2e/login.feature
- Écrire les scénarios en Gherkin :
Feature: Connexion utilisateur Scenario: Utilisateur avec identifiants valides Given Je suis sur la page de connexion When Je saisis mes identifiants valides Then Je suis redirigé vers le tableau de bord
Implémentation des steps dans cypress/support/step_definitions/loginSteps.js
:
import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps'; Given('Je suis sur la page de connexion', () => { cy.visit('/login'); }); When('Je saisis mes identifiants valides', () => { cy.get('#username').type('user1'); cy.get('#password').type('password'); cy.get('button[type=submit]').click(); }); Then('Je suis redirigé vers le tableau de bord', () => { cy.url().should('include', '/dashboard'); });
📊 Gérer les Jeux de Données (Fixtures)
Centralisez vos données de test dans des fichiers JSON réutilisables dans plusieurs tests.
// cypress/fixtures/users.json [ { "id": 1, "name": "Test User 1", "email": "user1@example.com" }, { "id": 2, "name": "Test User 2", "email": "user2@example.com" } ]
Exemple d’utilisation dans un test :
cy.fixture('users').then((users) => { cy.get('input#email').type(users[0].email); });
📝 Écrire des étapes de test (Test Steps)
Organisez vos actions répétées en commandes personnalisées pour garder vos tests clairs et maintenables.
// cypress/support/commands.js Cypress.Commands.add('login', (username, password) => { cy.get('#username').type(username); cy.get('#password').type(password); cy.get('button[type=submit]').click(); });
Puis utilisez-les dans vos tests :
describe('Login Tests', () => { it('se connecte avec succès', () => { cy.login('user1', 'password123'); cy.url().should('include', '/dashboard'); }); });
📈 Rapport de tests & Intégration CI/CD
Utilisez mochawesome
pour générer des rapports HTML élégants, et intégrez vos tests dans GitHub Actions, GitLab CI, ou Jenkins.
// package.json (extrait) "scripts": { "test": "cypress run --reporter mochawesome" } // Exemple workflow GitHub Actions: .github/workflows/test.yml name: Cypress Tests on: [push, pull_request] jobs: cypress-run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18' - run: npm ci - run: npm run test