Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
.git/
.metadata/
.recommenders/
ScreenshotsAutomation/
ScreenshotsElementByNull/
Logs/
TestsAutomation/TestsAutomation.iml
TestsAutomation/.idea

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# Eclipse
.classpath
.project
.settings/

# Intellij
.idea/
*.iml
*.iws

# Mac
.DS_Store

# Maven
log/
target/

# Inclusions
!lib/**

# Compiled Files
*.class
bin/
build/
/bin1/
java/build/**
32 changes: 14 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
# Show me the code
# Project Title
Test QA

### # DESAFIO:
## Getting Started

Utilizando o App Cálculo Preço e Prazos Correios (https://play.google.com/store/apps/details?id=br.com.correios.calculaprecoprazo), crie testes automatizado para um dos dois fluxo (Novo Cálculo ou Cálculo Internacional) este fluxo deve ir até salvar o cálculo e consultar se o cálculo foi salvo, deve conter ao menos dois casos de sucesso e três casos de execeção (ex. validação de campos).
Run the file TestQA_execution.bat

Tambem é necessario responder ao arquivo "Prova" que esta no repo.
Print in the target / screenshot folder

### # Avaliação
### Prerequisites

Você será avaliado pela usabilidade, por respeitar o design e pela arquitetura dos testes. É esperado que você consiga explicar as decisões que tomou durante o desenvolvimento através de commits.
Maven (running in environment variables)
[Configurate Maven]
https://docs.wso2.com/display/IS323/Installing+Apache+Maven+on+Windows

* Ruby (gems a gosto)
* BDD, boa organização dos steps é um diferencial (ferramenta para utilizar o gherkin a seu criterio)
* Appium (ou qualquer outra, desde que justificado seu uso)
* Page Objects é um padrão obrigatório
* Uso do git
Java

### # Observações gerais
Android

Adicione um arquivo [README.md](http://README.md) com os procedimentos para executar o projeto.
Pedimos que trabalhe sozinho e não divulgue o resultado na internet.
Appium

Faça um fork desse desse repositório em seu Github e nos envie um Pull Request com o resultado, por favor informe por qual empresa você esta se candidatando.

### # Importante: não há prazo de entrega, faça com qualidade!

# BOA SORTE!
#### Company
Everis Brasil
Binary file added Respostas_PROVA1.pdf
Binary file not shown.
5 changes: 5 additions & 0 deletions TesteQA_execution.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
%cd%
mvn install
mvn test -Dcucumber.options=" --tags @CalculoInternacional"

exit /b 0
65 changes: 65 additions & 0 deletions features/Correio_CalculoInternacional_Preco_Prazo.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#language: pt
@CalculoInternacional
Funcionalidade: Calculo Internacional de preco e prazo para entrega

@CalculoInternacionalValidoCEP
Cenario: Criacao de calculo internacional valido de preco e prazo por CEP
Dado que estou realizando o calculo de Preco e Prazo internacional
E que informo CEP Remente valido
E que informo um Pais Destinatario valido
E que informo uma cidade de destino valida
E que informo um Peso valido
Então o calculo deve ser salvo com sucesso


@CalculoInternacionalValidoCidadeEstado
Cenario: Criacao de calculo internacional valido de preco e prazo por Estado
Dado que estou realizando o calculo de Preco e Prazo internacional
E que informo um Estado Origem valido
E que informo um Cidade Origem valido
E que informo um Pais Destinatario valido
E que informo uma cidade de destino valida
E que informo um Peso valido
Então o calculo deve ser salvo com sucesso


@CalculoInternacionalCEPInvalido
Cenario: Valida calculo internacional CEP invalido
Dado que estou validando o calculo de Preco e Prazo internacional
E que informo CEP Remente invalido
Então o sistema deve apresentar mensagem de erro

@CalculoInternacionalDadosObjeto
Cenario: Criar cadastro de Calculo Internacional com Dados Objeto
Dado que estou realizando o calculo de Preco e Prazo internacional
E que informo CEP Remente valido
E que informo um Pais Destinatario valido
E que informo uma cidade de destino valida
E que informo o dado do Objeto Nao Documento
E que o tipo envelope
E que informo um Peso valido
Então o calculo deve ser salvo com sucesso

@CalculoInternacionalValidaPeso
Cenario: Criar cadastro de Calculo Internacional valida o Peso
Dado que estou realizando o calculo de Preco e Prazo internacional
E que informo CEP Remente valido
E que informo um Pais Destinatario valido
E que informo uma cidade de destino valida
E que informo o dado do Objeto Nao Documento
E que o tipo envelope
Então o sistema deve validar a falta do Peso

@CalculoInternacionalValidaPaisInvalido
Cenario: Validar selecao de pais invalido Calculo Internacional
Dado que estou realizando o calculo de Preco e Prazo internacional
E que informo CEP Remente valido
E que informo um Pais Destinatario invalido
Então o sistema deve realizar a verificacao e apresentar mensagem de erro

@CalculoInternacionalValidaDadosDestinoInvalido
Cenario: Validar dados invalidos de pais Destinatario
Dado que estou realizando o calculo de Preco e Prazo internacional
E que informo CEP Remente valido
E que informo o Destinatario invalido
Então o sistema deve realizar a verificacao e apresentar mensagem de erro informando sobre os dados invalidos
59 changes: 59 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>br.com.correios</groupId>
<artifactId>CorreiosTest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/io.appium/java-client -->
<!-- https://mvnrepository.com/artifact/io.appium/java-client -->
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>6.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13-beta-2</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
</plugins>
</build>
</project>
58 changes: 58 additions & 0 deletions src/main/java/Core/CommonsBasePage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package Core;

import io.appium.java_client.MobileElement;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.util.List;
import java.util.concurrent.TimeUnit;

import static Core.DriverFactory.getDRIVER;

public class CommonsBasePage {

public void writefield(By by, String text) {
getDRIVER().findElement(by).sendKeys(text);
}

public String getTextField(By by) {
return getDRIVER().findElement(by).getText().trim();
}

public static void clickElement(By by) {
getDRIVER().findElement(by).click();
}

public void clickMenuByText(String text) {
try {
clickElement(By.id("android:id/up"));
waitConditionElement(By.id("br.com.correios.calculaprecoprazo:id/textview_texto"), 10);
for (MobileElement botaomenu : getDRIVER().findElements(By.id("br.com.correios.calculaprecoprazo:id/textview_texto"))) {
if (text.equals(botaomenu.getText().trim())) {
botaomenu.click();
break;
}
}
} catch (Exception e) {
System.out.println(e);

}
}

public boolean existsElementText(String texto) {
List<MobileElement> elementos = getDRIVER().findElements(By.xpath("//*[@text='" + texto + "']"));
return elementos.size() > 0;
}

public void waitConditionElement(By by, int Time) {
WebDriverWait wait = new WebDriverWait(getDRIVER(), Time);
wait.until(ExpectedConditions.presenceOfElementLocated(by));
}

public void esperar(long tempo) {
getDRIVER().manage().timeouts().implicitlyWait(tempo, TimeUnit.SECONDS);

}

}
36 changes: 36 additions & 0 deletions src/main/java/Core/DriverFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package Core;

import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class DriverFactory {

private static AndroidDriver DRIVER;

public static AndroidDriver<MobileElement> getDRIVER() {
return DRIVER;
}

public static AndroidDriver createDriver() {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("deviceName", "emulator-5554");
desiredCapabilities.setCapability("automationName", "uiautomator2");
desiredCapabilities.setCapability("appPackage", "br.com.correios.calculaprecoprazo");
desiredCapabilities.setCapability("appActivity", "br.com.correios.calculaprecoprazo.activity.SplashScreenActivity");
desiredCapabilities.setCapability("noReset", true);
try {
DRIVER = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
} catch (MalformedURLException e) {
e.printStackTrace();
}
DRIVER.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
return DRIVER;
}

}
28 changes: 28 additions & 0 deletions src/main/java/Pages/DadosDoObjetoPage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package Pages;

import Core.CommonsBasePage;
import org.openqa.selenium.By;

public class DadosDoObjetoPage extends CommonsBasePage {

public void getTipoDocumentoObjeto() {
waitConditionElement(By.xpath("//android.widget.RadioButton[contains(@text,'Não documento')]"),10);
clickElement(By.xpath("//android.widget.RadioButton[contains(@text,'Não documento')]"));
}

public void getTipoEnveloper() {
clickElement(By.id("br.com.correios.calculaprecoprazo:id/rbEnvelope"));
}

public void getPeso(String Peso) {
writefield(By.id("br.com.correios.calculaprecoprazo:id/txt_peso"), Peso);
}

public void btnCalcular() {
clickElement(By.id("br.com.correios.calculaprecoprazo:id/button_calc"));
}

public String mensagemPesoInvalido() {
return getTextField(By.xpath("//android.widget.Toast[contains(@text,'Valor do peso inválido')]"));
}
}
11 changes: 11 additions & 0 deletions src/main/java/Pages/MenuCalculoInternacionalPage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package Pages;

import Core.CommonsBasePage;

public class MenuCalculoInternacionalPage extends CommonsBasePage {

public void menuCalculoInternational() {
clickMenuByText("Novo cálculo");
clickMenuByText("Cálculo Internacional");
}
}
Loading