Skip to content

Commit

Permalink
Merge pull request #17 from GEdO23/dev
Browse files Browse the repository at this point in the history
Testes com Cucumber e correção de bug com cadastro de Pets e Raças
  • Loading branch information
Gabriel Eringer authored Oct 4, 2024
2 parents 98f22c2 + 7870b10 commit 94d3a0c
Show file tree
Hide file tree
Showing 14 changed files with 258 additions and 19 deletions.
27 changes: 27 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,33 @@
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity6</artifactId>
</dependency>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.23.1</version>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.0-RC1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.cucumber</groupId>
<artifactId>gherkin</artifactId>
<version>29.0.0</version>
</dependency>

<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.18.1</version>
</dependency>


</dependencies>

<build>
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/templates/formulario_cadastrar_pet.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ <h1>Cadastro de Pet</h1>
</small>
</div>

<input type="hidden" name="_csrf" th:value="${_csrf.token}">

<button class="btn btn-primary mt-4" type="submit">Submit</button>

</form>
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/templates/formulario_cadastrar_raca.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ <h1>Cadastro de Raça</h1>
th:field="*{descricao}">
</div>

<input type="hidden" name="_csrf" th:value="${_csrf.token}">

<button class="btn btn-primary mt-4" type="submit">Submit</button>

</form>
Expand Down
8 changes: 4 additions & 4 deletions src/main/resources/templates/formulario_login_usuario.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

<div class="container mt-5">
<div class="row mb-3">
<h1>Cutcute Petshop</h1>
<h1 id="login-title">Cutcute Petshop</h1>
</div>

<div class="alert alert-success" role="alert" th:if="${param.logout}">
<div id="alert-logout-success" class="alert alert-success" role="alert" th:if="${param.logout}">
Logout efetuado com sucesso
</div>

Expand All @@ -25,11 +25,11 @@ <h1>Cutcute Petshop</h1>
<input class="form-control" type="password" id="password" name="password">
</div>

<div class="alert alert-danger" role="alert" th:if="${param.erro_login}">
<div id="alert-invalid-user" class="alert alert-danger" role="alert" th:if="${param.erro_login}">
Usuário ou senha inválido
</div>

<button class="btn btn-primary" type="submit">Entrar</button>
<button id="btn-signin" class="btn btn-primary" type="submit">Entrar</button>

</form>
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/templates/fragmentos.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@

<div class="ms-auto">
<form class="form-inline" th:action="@{/logout}" method="post">
<button class="btn btn-outline-light" type="submit">Sair</button>
<button id="btn-sair" class="btn btn-outline-light" type="submit">Sair</button>
</form>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<div class="jumbotron jumbotron-fluid mt-5">
<div class="container">
<h1 class="display-6">CPSB-API</h1>
<h1 id="home-title" class="display-6">CPSB-API</h1>
<p class="lead">Seja muito bem vindo ao Cutcute Petshop Spring Boot API!</p>
<hr class="my-4">
<p>Caso necessite de ajuda, entrar em contato com
Expand Down
13 changes: 0 additions & 13 deletions src/test/java/br/com/cpsb/CpsbApiApplicationTests.java

This file was deleted.

34 changes: 34 additions & 0 deletions src/test/java/features/Login.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# language: pt

@Login
Funcionalidade: Login

@LoginValido @SmokeTest
Cenário: Login com credenciais validas
Dado que estou na tela de login
Quando entro com credenciais validas
E clico no botao de submit
Entao vejo a tela Home

@LoginInvalido
Cenário: Login com username invalido
Dado que estou na tela de login
Quando entro com username invalido
E clico no botao de submit
Entao vejo a mensagem de erro

@LoginInvalido
Cenário: Login com password invalido
Dado que estou na tela de login
Quando entro com password invalido
E clico no botao de submit
Entao vejo a mensagem de erro

@SignOff
Cenário: Realizar o Sign Off
Dado que estou na tela de login
Quando entro com credenciais validas
E clico no botao de submit
Entao vejo a tela Home
Quando clico no botao Sign Off
Entao vejo a mensagem de Logout
32 changes: 32 additions & 0 deletions src/test/java/pages/BasePage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package pages;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import utils.Setup;

import java.time.Duration;

public class BasePage extends Setup {

protected WebElement waitElement(By locator) {
return new WebDriverWait(driver, Duration.ofSeconds(10))
.until(ExpectedConditions.presenceOfElementLocated(locator));
}

protected boolean isVisible(By locator) {
waitElement(locator);
return driver.findElement(locator).isDisplayed();
}

protected void fillInput(By locator, String text) {
isVisible(locator);
driver.findElement(locator).sendKeys(text);
}

protected void click(By locator) {
isVisible(locator);
driver.findElement(locator).click();
}
}
13 changes: 13 additions & 0 deletions src/test/java/pages/HomePage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package pages;

import org.openqa.selenium.By;

public class HomePage extends BasePage {

public final By title = By.id("home-title");
public final By btnSair = By.id("btn-sair");

public void isOnHomePage() {
isVisible(title);
}
}
34 changes: 34 additions & 0 deletions src/test/java/pages/LoginPage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package pages;

import org.openqa.selenium.By;

public class LoginPage extends BasePage {

public final String validUserName = "Gabriel";
public final String validUserPassword = "12345";

public final By etUserName = By.id("username");
public final By etUserPassword = By.id("password");
public final By btnSignIn = By.id("btn-signin");

public final By tvLoginError = By.id("alert-invalid-user");
public final By tvLogoutSuccess = By.id("alert-logout-success");

public void fillUserName() {
fillInput(etUserName, validUserName);
}

public void fillUserPassword() {
fillInput(etUserPassword, validUserPassword);
}

public void clickBtnSignIn() {
click(btnSignIn);
}

public void isOnLoginPage() {
driver.get("http://localhost:8080/login");
isVisible(btnSignIn);
}

}
20 changes: 20 additions & 0 deletions src/test/java/stepDefinition/Hooks.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package stepDefinition;

import io.cucumber.java.After;
import io.cucumber.java.Before;
import utils.Setup;

import static utils.Setup.driver;

public class Hooks {

@Before
public void setupDriver() {
Setup.createDriverInstance();
}

@After
public void closeDriver() {
Setup.quitDriver();
}
}
64 changes: 64 additions & 0 deletions src/test/java/stepDefinition/LoginSteps.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package stepDefinition;

import io.cucumber.java.pt.Dado;
import io.cucumber.java.pt.E;
import io.cucumber.java.pt.Entao;
import io.cucumber.java.pt.Quando;
import pages.BasePage;
import pages.HomePage;
import pages.LoginPage;

public class LoginSteps extends BasePage {

LoginPage login = new LoginPage();
HomePage home = new HomePage();

@Dado("que estou na tela de login")
public void queEstouNaTelaDeLogin() {
login.isOnLoginPage();
}

@Quando("entro com credenciais validas")
public void entroComCredenciaisValidas() {
login.fillUserName();
login.fillUserPassword();
}

@E("clico no botao de submit")
public void clicoNoBotaoDeSubmit() {
login.clickBtnSignIn();
}

@Entao("vejo a tela Home")
public void vejoATelaHome() {
home.isOnHomePage();
}

@Quando("entro com username invalido")
public void entroComUsernameInvalido() {
fillInput(login.etUserName, "invalid user");
login.fillUserPassword();
}

@Quando("entro com password invalido")
public void entroComPasswordInvalido() {
login.fillUserName();
fillInput(login.etUserPassword, "invalid password");
}

@Entao("vejo a mensagem de erro")
public void vejoAMensagemDeErro() {
isVisible(login.tvLoginError);
}

@Entao("vejo a mensagem de Logout")
public void vejoAMensagemDeLogout() {
isVisible(login.tvLogoutSuccess);
}

@Quando("clico no botao Sign Off")
public void clicoNoBotaoSignOff() {
isVisible(home.btnSair);
click(home.btnSair);
}
}
24 changes: 24 additions & 0 deletions src/test/java/utils/Setup.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package utils;

import org.openqa.selenium.PageLoadStrategy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;


public class Setup {

public static WebDriver driver;

public static WebDriver createDriverInstance() {
ChromeOptions options = new ChromeOptions();
options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
driver = new ChromeDriver(options);
driver.manage().window().maximize();
return driver;
}

public static void quitDriver() {
driver.quit();
}
}

0 comments on commit 94d3a0c

Please sign in to comment.