public class LoginPage {
private static final String URL_LOGIN = "http://localhost:8080/login";
private WebDriver browser;
public LoginPage() {
System.setProperty("webdriver.chrome.driver", "drivers/chromedriver");
this.browser = new ChromeDriver();
this.browser.navigate().to(URL_LOGIN);
}
public void preencherFormularioDeLogin(String username, String password) {
browser.findElement(By.id("username")).sendKeys(username);
browser.findElement(By.id("password")).sendKeys(password);
}
public LeiloesPage efetuarLogin() {
browser.findElement(By.id("login-form")).submit();
return new LeiloesPage(browser);
//passando o proprio navegador browser em uso
}
public String getNomeUsuarioLogado() {
try {
return browser.findElement(By.id("usuario-logado")).getText();
} catch (NoSuchElementException e) {
return null;
}
}
public boolean isPaginaAtual() {
return browser.getCurrentUrl().contains(URL_LOGIN);
}
public boolean isMensagemDeLoginInvalidoVisivel() {
return browser.getPageSource().contains("Usuário e senha inválidos");
}
public void fechar() {
this.browser.quit();
}
}
public class LeiloesTest {
private LeiloesPage paginaDeLeiloes;
@AfterEach
public void afterEach() {
this.paginaDeLeiloes.fechar();
}
@Test
public void deveriaCadastrarLeilao() {
LoginPage paginaDeLogin = new LoginPage();
paginaDeLogin.preencherFormularioDeLogin("fulano", "pass");
this.paginaDeLeiloes = paginaDeLogin.efetuarLogin();
CadastroLeilaoPage paginaDeCadastro = paginaDeLeiloes.carregarFormulario();
String hoje = LocalDate.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
String nome = "Leilao do dia " + hoje;
String valor = "500.00";
this.paginaDeLeiloes = paginaDeCadastro.cadastrarLeilao(nome, valor, hoje);
Assert.assertTrue(paginaDeLeiloes.isLeilaoCadastrado(nome, valor, hoje));
}
}
public class LeiloesPage {
private static final String URL_CADASTRO_LEILAO = "http://localhost:8080/login/new";
private WebDriver browser;
public LeiloesPage(WebDriver browser) {
this.browser = browser;
}
public boolean isPaginaAtual() {
return browser.getCurrentUrl().contains(URL_CADASTRO_LEILAO);
}
public void fechar() {
this.browser.quit();
}
public CadastroLeilaoPage carregarFormulario() {
this.browser.navigate().to(URL_CADASTRO_LEILAO);
return new CadastroLeilaoPage(browser);
}
public boolean isLeilaoCadastrado(String nome, String valor, String data) {
WebElement linhaDaTabela = this.browser.findElement(By.cssSelector("#tabela-leiloes tbody tr:last-child"));
WebElement colunaNome = linhaDaTabela.findElement(By.cssSelector("td:nth-child(1)"));
WebElement colunaDataAbertura = linhaDaTabela.findElement(By.cssSelector("td:nth-child(2)"));
WebElement colunaValorInicial = linhaDaTabela.findElement(By.cssSelector("td:nth-child(3)"));
return colunaNome.getText().equals(nome)
&& colunaDataAbertura.getText().equals(data)
&& colunaValorInicial.getText().equals(valor);
}
}
public class CadastroLeilaoPage {
private WebDriver browser;
public CadastroLeilaoPage(WebDriver browser) {
this.browser = browser;
}
private void fechar() {
this.browser.quit();
}
public LeiloesPage cadastrarLeilao(String nome, String valorInicial, String dataAbertura) {
this.browser.findElement(By.id("nome")).sendKeys(nome);
this.browser.findElement(By.id("valorInicial")).sendKeys(valorInicial);
this.browser.findElement(By.id("dataAbertura")).sendKeys(dataAbertura);
this.browser.findElement(By.id("button-submit")).submit();
return new LeiloesPage(browser);
}
}