Bienvenue dans ce workshop dédié à Cypress! Nous espérons qu'il vous plaira!
N'hésitez pas à :
npm supérieur à 5.2.0 (car la commande npx, c'est cool)git clone https://github.com/rbung/CypressWorkshop.git
cd CypressWorkshop
npm install
npm start
npx cypress open

00-hello.spec.js
Vous ĂȘtes maintenant prĂȘt! đȘ
Dans ce test, nous allons tester les principales fonctionnalités proposées par le site. L'objectif est de balayer l'ensemble des pages et de vérifier qu'elles sont correctement affichées. Nous allons aussi valider que les comportements de base fonctionnent correctement. A l'issue de cet exercice, vous serez familier avec les commandes de bases de Cypress: cy.visit, cy.get, cy.title, should, click, etc.
01-critical-flow.spec.jscypress/integration/01-critical-flow.spec.jsDans ce test, nous allons tester la fonctionnalité d'authentification de maniÚre exhaustive.
02-login.spec.jscypress/integration/02-login.spec.js, complĂ©ter the TODOs.visit. Pour y remĂ©dier, pensez que vous ĂȘtes dans un environnement Mocha : vous avez donc Ă votre disposition les hooksC'est juste du JavaScript đ)Dans la premiĂšre partie du test (celle concernant la partie non authentifiĂ©), on peut constater que les assertions sont trĂšs fines. Lorsqu'on lance le test, celui-ci Ă©choue: l'article n'existe pas cĂŽtĂ© serveur (il a pu ĂȘtre modifiĂ©/supprimĂ©).
Pour s'afficher, la page article lance 2 requĂȘtes vers le serveur : une pour rĂ©cupĂ©rer les informations relatives Ă l'article et une autre pour rĂ©cupĂ©rer les commentaires liĂ©s Ă cet article.
Nous allons utiliser les commandes cy.server et cy.route pour contrÎler les appels réseaux qui nous intéressent!
Une fois le premier test passé. Nous allons utilisé la commande cy.route en mode "pro" dans les autres tests pour simuler des erreurs (404, 500) ou avoir des temps de réponses différents et ainsi pouvoir facilement voir comment réagit notre site sur des cas limites.
03-article.spec.jscypress/integration/03-article.spec.js, complĂ©ter les TODOs de la premiĂšre sĂ©rie de tests (context('In an anonymous context', ...)Dans la deuxiĂšme partie du test, nous devons ĂȘtre authentifiĂ©. La fonctionnalitĂ© de login est importante dans notre site. Elle peut ĂȘtre aussi utilisĂ©e pour afficher la page de settings par exemple. Pour mutualiser du code Ă travers les diffĂ©rents tests, nous allons dĂ©velopper une custom command qui nous permettra de nous authentifier facilement dans nos tests.
Si reprendre le code que l'on a vu lors dans notre test de la page login peut ĂȘtre tentant, ce n'est cependant pas la mĂ©thode la plus efficace! PlutĂŽt que d'utiliser l'interface pour s'authentifier, nous allons le faire de maniĂšre programmatique! đšâđ»
Dans le fichier cypress/support/commands.js, la commande login est dĂ©jĂ dĂ©clarĂ©e pour vous. Utiliser la commande cy.request pour faire une requĂȘte POST sur le endpoint d'authentification https://docs.cypress.io/api/commands/request.html puis utiliser la rĂ©ponse pour rĂ©cupĂ©rer le token et le positionner dans le local storage pour ĂȘtre authentifiĂ© applicativement!
window.localStorage.setItem("jwt", token);
cypress/integration/03-article.spec.js, au niveau de la ligne context.skip('In an authenticated context', function() {, supprimer le mot clĂ© skip ou bien le remplacer par le mot clĂ© only (pour ne pas ĂȘtre embĂȘtĂ© par la premiĂšre suite de tests)cypress/support/commands.jscypress/integration/03-article.spec.jsVous ĂȘtes arrivĂ©s jusque lĂ dans le temps imparti, bravo! đ
Si vous avez encore du temps, nous pouvons voir les sujets suivants:
Utiliser Cypress en local avec une interface graphique, c'est bien. Utiliser nos tests dans le cadre d'une intégration continue, c'est mieux! Nous allons découvrir comment exécuter nos tests en mode headless, utiliser le dashboard service de Cypress et une intégration continue sur le cloud: CircleCI.
La commande run de Cypress permet de lancer tout nos tests en mode headless (c'est-Ă -dire, sans avoir besoin d'interface graphique).
npx cypress run
Avec l'option record, nous allons pouvoir enregistrer différentes exécutions:
Log In en haut Ă droiteRuns de l'interface, ensuite cliquer sur le bouton Set up project to recordUn projectId sera dĂ©fini et sera automatiquement ajoutĂ© Ă votre fichier de configuration Cypress cypress.json đ. Pensez Ă commitĂ© ce fichier.
Une ligne de commande cypress run sera affichĂ© avec le paramĂštre key positionnĂ©. Prenez cette ligne de commande et exĂ©cutez-la dans votre terminal: votre test est en train d'ĂȘtre enregistrĂ©!
Dans cette partie, nous allons utiliser CircleCI. Cypress peut évidemment s'interfacer avec de nombreuses solutions de CI (voir les exemples). Cependant, la tùche est plus facile avec CircleCI grùce à l'orbe Cypress !
Add projects)CYPRESS_RECORD_KEY avec la clé qui a été généré en 1Úre partieComment ça marche ?
circle.ymlDans ce test, nous allons tester un composant de maniÚre isolé. Pour notre exemple nous allons tester le composant Banner.
import React from "react";
const Banner = ({ appName, token }) => {
if (token) {
return null;
}
return (
<div className="banner">
<div className="container">
<h1 className="logo-font">{appName.toLowerCase()}</h1>
<p>A place to share your knowledge.</p>
</div>
</div>
);
};
export default Banner;
L'application étant en React, nous allons utiliser le plugin cypress-react-unit-test
cypress/integration/04-component.spec.js, compléter the TODOs.Nous espérons que vous avez apprécié ce workshop et que vous allez trÚs vite utiliser Cypress!

https://openfeedback.io/3BQH3sLpx0EfLHHC7Wng/2019-11-15/33
Remplissez le questionnaire: https://link.cypress.io/rodolphe-f
Sur Twitter