Si vous souhaitez tester une application web de préférence, un ecommerce alors ce framework est pour vous.
Il contient plusieurs modèles et bonnes pratiques comme le Page Object Model
, le Page Factory
, le Single Responsibility
et le DRY (Do Not Repeat Yourself)
qui vous permettent d'avoir un framework assez robuste, réutilisable et maintenable.
🏷️ Fonctionnalités
🏷️ Librairies utilisées
🏷️ Prérequis avant installation
🏷️ Structure du framework
🏷️ Comment installer le framework
🏷️ Comment exécuter le framework
🏷️ Comment consulter les rapports
🏷️ Comment fonctionne le framework
🏷️ Comment maintenir le framework
🏷️ Comment déboguer le framework
✅ Java
✅ Selenium 4
✅Cucumber BDD (Features + Step Definitions)
✅ Data Driven Testing
✅ Domain Object
✅ Page Object Model
✅ Page Factory
✅ Cucumber Report
✅ Spark Extent Report
✅ Master Thought Report
✅ Screenshot
✅ Rest Assured
✅ Execution Parallèle (PicoContainer)
✅ Intégration with GitHub
1️⃣ Java
2️⃣ Maven
3️⃣ Cucumber
4️⃣ Selenium WebDriver
5️⃣ WebDriverManager
6️⃣ Cucumber Report
7️⃣ Extent Spark Report
8️⃣ Masterthought Report
🔴#JAVA 11 [Mac]
🔹Télécharger et installer Java sur votre machine (Voir lien de téléchargement⬇️).
🔹Configurer java home: export JAVA_HOME = /Library/Java/Home
🔴#Maven 3.8.6 [Mac]
🔹Installer sur Mac à partir du terminal: brew install maven
🔹Configurer les variables d'environment:
export M2_HOME=/usr/local/apache-maven/apache-maven-3.8.4
export M2 = $M2_HOME/bin
export MAVEN_OPTS = -Xms256m -Xmx512m
Liens de téléchargement :
⚓Téléchargez et Installez Maven sur Windows
⚓Téléchargez et Installez Java sur Mac ou Windows
📦MediumWebFramework
┣ 📂docs
┣ 📂src
┃ ┣ 📂test
┃ ┃ ┣ 📂java
┃ ┃ ┃ ┗ 📂bdd
┃ ┃ ┃ ┃ ┗ 📂automation
┃ ┃ ┃ ┃ ┃ ┣ 📂apis
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ApiRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CartApi.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SpecBuilder.java
┃ ┃ ┃ ┃ ┃ ┣ 📂constants
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜EndPoint.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜EnvType.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜MyConstants.java
┃ ┃ ┃ ┃ ┃ ┣ 📂context
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TestContext.java
┃ ┃ ┃ ┃ ┃ ┣ 📂customtype
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CustomDataTableType.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CustomParameterType.java
┃ ┃ ┃ ┃ ┃ ┣ 📂domainobjects
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BillingDetails.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Cookies.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Product.java
┃ ┃ ┃ ┃ ┃ ┣ 📂factory
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜DriverFactory.java
┃ ┃ ┃ ┃ ┃ ┣ 📂hooks
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜MyHooks.java
┃ ┃ ┃ ┃ ┃ ┣ 📂pages
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BasePage.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CartPage.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CheckoutPage.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PageFactoryManager.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜StorePage.java
┃ ┃ ┃ ┃ ┃ ┣ 📂runners
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FailedRunnerTest.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TestNGRunnerTest.java
┃ ┃ ┃ ┃ ┃ ┣ 📂steps
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CartStep.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CheckoutStep.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CustomerSteps.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜StepDef.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜StoreStep.java
┃ ┃ ┃ ┃ ┃ ┣ 📂utils
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ConfigLoader.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CookieUtils.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PropertyUtils.java
┃ ┃ ┣ 📂resources
┃ ┃ ┃ ┗ 📂bdd
┃ ┃ ┃ ┃ ┗ 📂automation
┃ ┃ ┃ ┃ ┃ ┣ 📂features
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📒add_to_cart.feature
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📒guest_place_an_order.feature
┃ ┃ ┣ 📑cucumber.properties
┃ ┃ ┣ 📑extent.properties
┃ ┃ ┣ 🗒️pdf-config.yaml
┃ ┃ ┣ 📑prod_config.properties
┃ ┃ ┣ 📃spark-config.xml
┃ ┃ ┣ 📑stage_config.properties
┣ 💼target
┃ ┣ 📂cucumber-reports
┃ ┃ ┣📄cucumber.html
┃ ┃ ┣🧾cucumber.json
┃ ┃ ┣📃️cucumber.xml
┣🧰test-output
┃ ┣ 📂ExtentReport
┃ ┃ ┣ 📂SparkReport
┃ ┃ ┃ ┣📄cucumber.html
┃ ┃ ┃ ┣📋cucumber.pdf
📌 Après avoir téléchargé et installé Java, Maven, maintenant installez le projet suivant ces étapes:
🔸Dans le terminal, saisissez: ➡️ git clone lien-repo-gitlab-du-framework.git
🔸Ouvrez le projet dans votre IDE, faîtes un ⚠️build et exécutez-le.
Ce framework exécute les tests en parallèle sur le navigateur
📌Fichier java: Exécute en parallèle, les tests sur ️chrome:
🔸Classe: TestNGRunnerTest.java
➡️src/test/java/bdd/automation/runners
📌[terminal] Exécute en parallèle, les tests sur ️chrome:
➡️cd chemin-du-projet/framework
🔸mvn clean test
📌[terminal] Exécuter les tests en parallèle sur différents navigateurs:
➡️cd chemin-du-projet/framework
🔸mvn clean test -Dbrowser=firefox
🔸mvn clean test -Dbrowser=edge
🔸mvn clean test -Dbrowser=chrome
📌[terminal] Exécuter en parallèle, les tests sur différents environnements:
➡️cd chemin-du-projet/framework
🔸mvn clean test -DEnv=STAGE {environnement par défaut}
🔸mvn clean test -DEnv=PROD
📌[terminal] Exécuter les tests en parallèle sur différents navigateurs et différents environnements:
➡️cd chemin-du-projet/framework
🔸mvn clean test -Denv=STAGE -Dbrowser=edge
🔸mvn clean test -Denv=STAGE -Dbrowser=chrome
🔸mvn clean test -Denv=STAGE -Dbrowser=firefox
📌[terminal] Exécuter les tests à partir des tags de Cucumber:
➡️cd chemin-du-projet/framework
🔸mvn test -Dcucumber.options="--tags @Smoke or @Regression"
↪️ Exécute en parallèle tous les tests
🔸mvn test -Dcucumber.filter.tags="@Smoke"
↪️ Exécute en parallèle tous les scenarios du feature {add_to_cart}
🔸mvn test -Dcucumber.filter.tags="@Regression"
↪️ Exécute en parallèle tous les scenarios du feature {guest_place_an_order}
- Dans le repertoire
⚠️ target :
📌Html Report
➡️ /target/cucumber/cucumber.html
📌Cucumber Report ➡️ Dans la console après exécution des tests.
📌Extent Report
➡️ test-output/ExtentReport/SparkReport/ExtentReport.html
➡️ test-output/ExtentReport/SparkReport/ExtentReport.pdf
- Ce framework vous permet d'effectuer des tests d'interface Utilisateurs (UI) sur une application web d'ecommerce AskOmDch, les scenarios exécutés ici sont les suivants:
✴️ Ajouter un produit au panier✴️ Commander un produitje veux accéder à la page web `https://askomdch.com/store Je veux ajouter un produit (Blue Shoes) au panier Puis je vois le produit ajouté dans le panier
En tant qu'un visiteur du site J'ajoute un produit au panier Je vais à la page de vérification je saisis mes données de carte bancaire Je passe la commande de mon produit Ma commande est effectuée avec succès
- Rédaction du scénario
- Dans le repertoire
⚠️ Features, ouvrir le feature file correspondant au scénario que l'on veut rajouter.
📌features
🔸add_to_cart: rajouter des scénarios pour l'ajout d'un produit au panier
🔸guest_place_an_order: rajouter des scénarios pour procéder au paiement d'un produit
- Rédiger le scénario en Gherkin, comme suit :
📌Example
🔸Scenario: Add one quantity from Store
Given I'm on the Store Page
When I add a "Blue Shoes" to the cart
Then I should see 1 "Blue Shoet" in the cart
- création des "step definition"
📌Solution 1:
Lancer un run du feature file :
🔸un squelette des étapes manquantes s'affichera dans la console, ajoutez ces fonctions au "StepDef".
📌Solution 2:
Utiliser l'assistant intelligent de l'éditeur de code :
🔸Préciser l'intitulé du fichier ou les "step definition" seront générés.
- Rédaction des fonctions objets
- Dans ce framework, nous utilisons le modèle
⚠️ Page Object et⚠️ Page Factory avec les classes suivants :
🔸 StorePage.java
➡️ /src/test/java/bdd/automation/pages/StorePage.java
🔸 CartPage.java
➡️ /src/test/java/bdd/automation/pages/CartPage.java
🔸 CheckoutPage.java
➡️ /src/test/java/bdd/automation/pages/CheckoutPage.java
🔸 BasePage.java
➡️ /src/test/java/bdd/automation/pages/BasePage.java
- Intégration des fonctions objets aux steps definitions
📌Ouvrir le repertoire "steps" et ouvrir le fichier "StepDef.java"
➡️src/test/java/bdd/automation/steps
📌Pour la maintenance de ce framework, vous pouvez modifier le navigateur et lancer les tests sur les navigateurs Firefox ou Edge.
➡️src/test/java/bdd/automation/factory/DriverFactory.java.
📌Vous pouvez aussi ajouter des scénarios et exécuter vos propres tests.
➡️src/test/resources/bdd.automation/features
Pour déboguer le framework, vous pouvez faire :
📌build project
🔸mvn clean
🔸Run ➡️ build project