Projeto de estudo de automação de testes Web E2E com Selenium WebDriver, Java e JUnit 5, construído de forma incremental — dos fundamentos de Java e asserções até cenários de login automatizados e o padrão Page Object Model (POM).
Appium: o suporte a testes mobile está planejado (veja o Roadmap) e ainda não faz parte do código atual.
- Tecnologias
- Estrutura do projeto
- Cenários automatizados
- Pré-requisitos
- Como executar
- Relatórios
- Boas práticas aplicadas
- Roadmap
- Autor
| Ferramenta | Versão | Uso |
|---|---|---|
| Java (JDK) | 17+ | Linguagem |
| Maven | 3.9+ | Build e gerenciamento de dependências |
| Selenium WebDriver | 4.25.0 | Automação do navegador |
| JUnit Jupiter | 5.10.0 | Framework de testes e asserções |
| Google Chrome | Última estável | Navegador alvo (driver gerenciado pelo Selenium Manager) |
src/test/java
├── base/
│ └── BaseTest.java # Setup/teardown do WebDriver (@BeforeEach/@AfterEach)
├── pages/
│ └── LoginPage.java # Page Object da tela de login (locators, ações e esperas)
├── tests/
│ ├── LoginTest.java # Login com credenciais válidas
│ └── LoginInvalidoTest.java # Login com credenciais inválidas
└── exercicios/ # Exercícios de fundamentos (Java + JUnit + Selenium)
├── Chrome.java # Primeira abertura do navegador
├── Exemplo.java # Asserção básica (assertEquals)
├── Validacao.java # Condicional if/else
├── ValidacaoIdade.java # Asserção com assertTrue
├── Revisao.java # Loop + asserções condicionais
├── LoopExemplo.java # Estrutura de repetição (for)
└── ValidacaoPage.java # Validação de texto/título
tests/— suíte principal de testes E2E.pages/— camada Page Object, isolando locators e ações da lógica de teste.exercicios/— histórico de aprendizado; não fazem parte da suíte principal.
Aplicação alvo: The Internet – Herokuapp (site público para prática de automação).
| ID | Cenário | Dados | Resultado esperado | Classe |
|---|---|---|---|---|
| CT-01 | Login com credenciais válidas | tomsmith / SuperSecretPassword! |
Mensagem "You logged into a secure area!" | tests.LoginTest |
| CT-02 | Login com credenciais inválidas | usuario_errado / senha_errada |
Mensagem "Your username is invalid!" | tests.LoginInvalidoTest |
As credenciais acima são públicas e fornecidas pelo próprio site de prática.
- JDK 17+ —
java -version - Maven 3.9+ —
mvn -v - Google Chrome instalado
Não é necessário baixar o ChromeDriver: a partir do Selenium 4.6, o Selenium Manager resolve o driver automaticamente.
# Clonar o repositório
git clone https://github.com/Nicolas-nsr/Automacao_Selenium-Appium-Java.git
cd Automacao_Selenium-Appium-Java
# Executar todos os testes
mvn clean test
# Executar apenas uma classe
mvn test -Dtest=LoginTest
# Executar em modo headless (sem abrir janela)
mvn test -Dheadless=true
# Executar apenas a suíte principal (pacote tests)
mvn test -Dtest="tests.*Test"Pela IDE (Eclipse/IntelliJ): importe como projeto Maven, clique com o botão direito na classe de teste e escolha Run As → JUnit Test.
Após mvn test, os resultados do Maven Surefire ficam em:
target/surefire-reports/
Para gerar um relatório HTML:
mvn surefire-report:report
# saída: target/site/surefire-report.html- Page Object Model — locators e ações da tela de login centralizados em
LoginPage. - Classe base de testes —
BaseTestcria e encerra o driver, garantindoquit()mesmo em falha. - Esperas explícitas (
WebDriverWait) em vez de buscas diretas. - Execução headless configurável via
-Dheadless=true. - Asserções explícitas com JUnit 5 validando a mensagem de retorno da aplicação.
- Cenários positivos e negativos para o mesmo fluxo.
- Refatorar
LoginTesteLoginInvalidoTestpara usarem aLoginPage - Mover setup/teardown do driver para
@BeforeEach/@AfterEach(garantequit()mesmo em falha) - Substituir buscas diretas por esperas explícitas (
WebDriverWait) - Adicionar
junit-jupiter-engineemaven-surefire-pluginexplicitamente nopom.xml - Execução headless
- Parametrização de navegador (Chrome/Firefox/Edge)
- Testes data-driven com
@ParameterizedTest - Relatórios com Allure e captura de screenshot em falhas
- Pipeline de CI com GitHub Actions
- Testes mobile com Appium
- Adicionar
.gitignore(removertarget/,.settings/,.project,.classpathdo versionamento)
Nicolas Seabra da Rosa — QA Analyst