1
resposta

O navegador ainda fica aberto ao final do teste

Ao executar o teste da aula, duas janelas são abertas. Ao final, uma delas fecha, mas a outra permanece. Nas duas telas é realizado login, mas só a segunda tela, que roda todo o teste é fechado.

LeilaoCucumberRunner.java

package br.com.alura.leilao.acceptance;

import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;

@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:features", tags = "@leilao2")
public class LeilaoCucumberRunner {

}

leilaoSteps.java:

package br.com.alura.leilao.acceptance.steps;

import org.junit.Assert;

import br.com.alura.leilao.e2e.pages.Browser;
import br.com.alura.leilao.e2e.pages.LeiloesPage;
import br.com.alura.leilao.e2e.pages.LoginPage;
import br.com.alura.leilao.e2e.pages.NovoLeilaoPage;
import io.cucumber.java.pt.Dado;
import io.cucumber.java.pt.Entao;
import io.cucumber.java.pt.Quando;

public class leilaoSteps {
    
    private LoginPage loginPage;
    private Browser browser;
    private LeiloesPage leiloesPage;
    private NovoLeilaoPage novoLeilaoPage;

    @Dado("um usuario logado")
    public void um_usuario_logado() {
        browser = new Browser();
        browser.seed();
        loginPage = browser.getLoginPage();
        leiloesPage = loginPage.realizaLoginComoFulano();
    }

    @Quando("acessa a pagina de novo leilao")
    public void acessa_a_pagina_de_novo_leilao() {
        novoLeilaoPage = this.leiloesPage.visitaPaginaParaCriarUmNovoLeilao();
    }
    
    @Quando("prenche o formulario com dados validos")
    public void prenche_o_formulario_com_dados_validos() {
        this.leiloesPage = this.novoLeilaoPage.preencheForm("Tablet", "1500", "01/11/2020");
    }
    
    @Entao("volta para a pagina de leiloes")
    public void volta_para_a_pagina_de_leiloes() {
        Assert.assertTrue(this.leiloesPage.estaNaPaginaDeLeiloes());
    }
    
    @Entao("o novo leilao aparece na tabela")
    public void o_novo_leilao_aparece_na_tabela() {
        this.leiloesPage.existe("PC", "1500", "01/11/2020", "fulano");
        this.browser.clean();
    }

}

leilao.feature:

# language: pt

@leilao2
Funcionalidade: Cadastrando um leilao

    Contexto:
        Dado um usuario logado

  Cenario: Um usuario logado pode cadastrar um leilao
    Dado um usuario logado
    Quando acessa a pagina de novo leilao
    E prenche o formulario com dados validos
    Entao volta para a pagina de leiloes
    E o novo leilao aparece na tabela 
1 resposta

Oi Adonay, tudo bem?

Notei que no método um_usuario_logado(), você não fez a troca da variável browser para this.browser. O this é importante para referenciar o objeto atual da classe. Assim, com o this.browser.clean() conseguimos acessar seus atributos.

Portanto, recomendo corrigir para:

@Dado("um usuario logado")
public void um_usuario_logado() {
    this.browser = new Browser();
    browser.seed();
    loginPage = browser.getLoginPage();
    leiloesPage = loginPage.realizaLoginComoFulano();
}

Esse passo é realizado no minuto 11:10

Além disso, verifique se no método clean(), você está fechando com o código driver.close():

public void clean() {
    driver.get("http://localhost:8080/db/clean");
    driver.manage().deleteAllCookies();
    driver.close();
}

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!