Cucumber est un outil permettant de réaliser des tests automatisés en se basant sur des spécifications compréhensibles par les parties prenantes (Business, Développeurs, QA). Il utilise le langage **Gherkin** pour écrire des scénarios lisibles.
1. Créez un projet Maven.
mvn archetype:generate -DgroupId=com.example -DartifactId=cucumber-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
2. Ajoutez les dépendances dans le fichier pom.xml
:
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.11.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>7.11.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.11.0</version>
</dependency>
</dependencies>
3. Structurez votre projet :
src/main/java
- Code métier et classes POM.src/test/java
- Tests et Step Definitions.src/test/resources
- Fichiers .feature
écrits en Gherkin.Créez un fichier login.feature
:
Feature: Connexion à l'application
Scenario: Connexion réussie avec des identifiants valides
Given L'utilisateur est sur la page de connexion
When L'utilisateur saisit "admin" et "password123"
And L'utilisateur clique sur le bouton de connexion
Then Un message "Connexion réussie" s'affiche
Créez un fichier LoginSteps.java
:
import io.cucumber.java.en.*;
public class LoginSteps {
@Given("L'utilisateur est sur la page de connexion")
public void ouvrirPageConnexion() {
System.out.println("Naviguer vers la page de connexion");
}
@When("L'utilisateur saisit {string} et {string}")
public void saisirIdentifiants(String username, String password) {
System.out.println("Saisir le nom d'utilisateur : " + username);
System.out.println("Saisir le mot de passe : " + password);
}
@And("L'utilisateur clique sur le bouton de connexion")
public void cliquerConnexion() {
System.out.println("Cliquer sur le bouton de connexion");
}
@Then("Un message {string} s'affiche")
public void verifierMessage(String message) {
System.out.println("Vérifier le message : " + message);
}
}
Créez un fichier TestRunner.java
:
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources",
glue = "com.example.steps",
plugin = {"pretty", "html:target/cucumber-reports"}
)
public class TestRunner {
}
LoginPage.java
) :
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
public class LoginPage {
WebDriver driver;
@FindBy(id = "username")
WebElement usernameField;
@FindBy(id = "password")
WebElement passwordField;
@FindBy(id = "loginButton")
WebElement loginButton;
public LoginPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void enterUsername(String username) {
usernameField.sendKeys(username);
}
public void enterPassword(String password) {
passwordField.sendKeys(password);
}
public void clickLogin() {
loginButton.click();
}
}
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class LoginSteps {
WebDriver driver = new ChromeDriver();
LoginPage loginPage = new LoginPage(driver);
@Given("L'utilisateur est sur la page de connexion")
public void ouvrirPageConnexion() {
driver.get("https://example.com/login");
}
@When("L'utilisateur saisit {string} et {string}")
public void saisirIdentifiants(String username, String password) {
loginPage.enterUsername(username);
loginPage.enterPassword(password);
}
@And("L'utilisateur clique sur le bouton de connexion")
public void cliquerConnexion() {
loginPage.clickLogin();
}
@Then("Un message {string} s'affiche")
public void verifierMessage(String message) {
// Ajouter des assertions pour vérifier le message.
}
}