diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..94e959a
--- /dev/null
+++ b/.gitignore
@@ -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/**
\ No newline at end of file
diff --git a/README.md b/README.md
index 7fc0c66..311a215 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/Respostas_PROVA1.pdf b/Respostas_PROVA1.pdf
new file mode 100644
index 0000000..561b10e
Binary files /dev/null and b/Respostas_PROVA1.pdf differ
diff --git a/TesteQA_execution.bat b/TesteQA_execution.bat
new file mode 100644
index 0000000..84d0ace
--- /dev/null
+++ b/TesteQA_execution.bat
@@ -0,0 +1,5 @@
+%cd%
+mvn install
+mvn test -Dcucumber.options=" --tags @CalculoInternacional"
+
+exit /b 0
\ No newline at end of file
diff --git a/features/Correio_CalculoInternacional_Preco_Prazo.feature b/features/Correio_CalculoInternacional_Preco_Prazo.feature
new file mode 100644
index 0000000..c2d4b8f
--- /dev/null
+++ b/features/Correio_CalculoInternacional_Preco_Prazo.feature
@@ -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
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..80213a1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,59 @@
+
+
+ 4.0.0
+
+ br.com.correios
+ CorreiosTest
+ 1.0-SNAPSHOT
+
+
+
+
+ io.appium
+ java-client
+ 6.0.0
+
+
+
+ info.cukes
+ cucumber-junit
+ 1.2.5
+ test
+
+
+ info.cukes
+ cucumber-java
+ 1.2.5
+
+
+ org.apache.commons
+ commons-io
+ 1.3.2
+
+
+ junit
+ junit
+ 4.13-beta-2
+ compile
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.22.1
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/Core/CommonsBasePage.java b/src/main/java/Core/CommonsBasePage.java
new file mode 100644
index 0000000..20468eb
--- /dev/null
+++ b/src/main/java/Core/CommonsBasePage.java
@@ -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 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);
+
+ }
+
+}
diff --git a/src/main/java/Core/DriverFactory.java b/src/main/java/Core/DriverFactory.java
new file mode 100644
index 0000000..fe9acf4
--- /dev/null
+++ b/src/main/java/Core/DriverFactory.java
@@ -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 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;
+ }
+
+}
diff --git a/src/main/java/Pages/DadosDoObjetoPage.java b/src/main/java/Pages/DadosDoObjetoPage.java
new file mode 100644
index 0000000..e6876a4
--- /dev/null
+++ b/src/main/java/Pages/DadosDoObjetoPage.java
@@ -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')]"));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/Pages/MenuCalculoInternacionalPage.java b/src/main/java/Pages/MenuCalculoInternacionalPage.java
new file mode 100644
index 0000000..29b5839
--- /dev/null
+++ b/src/main/java/Pages/MenuCalculoInternacionalPage.java
@@ -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");
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/Pages/OrigemDestinoCorreioPage.java b/src/main/java/Pages/OrigemDestinoCorreioPage.java
new file mode 100644
index 0000000..222a0b2
--- /dev/null
+++ b/src/main/java/Pages/OrigemDestinoCorreioPage.java
@@ -0,0 +1,76 @@
+package Pages;
+
+import Core.CommonsBasePage;
+import org.junit.Assert;
+import org.openqa.selenium.By;
+
+public class OrigemDestinoCorreioPage extends CommonsBasePage {
+
+ public void getCEPEstadoOrigem(String cepEstadoOrigem) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/txt_cep_ori"), cepEstadoOrigem);
+ }
+
+ public void getCEPEstadoOrigemInvalido(String cepEstadoOrigemInvalido) {
+ waitConditionElement(By.id("br.com.correios.calculaprecoprazo:id/txt_cep_ori"),10);
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/txt_cep_ori"), cepEstadoOrigemInvalido);
+ }
+
+ public void btnProximoPasso() {
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/button_prox"));
+ }
+
+ public void getPaisDestinatario(String PaisDestinatario) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/edPais"), PaisDestinatario);
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/btn_busca_pais"));
+ clickElement(By.xpath("//android.widget.TextView[contains(@text,'PORTUGAL')]"));
+
+ }
+
+ public void getCidadeDestinatario(String CidadeDestinatario) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/edMuni"), CidadeDestinatario);
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/btn_busca_muni"));
+ clickElement(By.xpath("//android.widget.TextView[contains(@text,'LISBOA')]"));
+ }
+
+ public String getMensagemCEP() {
+ return getTextField(By.xpath("//android.widget.Toast[contains(@text,'CEP não encontrado.')]"));
+ }
+
+ public void getEstadoOrigem(String CidadeOrigem) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/edEstado"), CidadeOrigem);
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/btn_busca_estado"));
+ waitConditionElement(By.xpath("//android.widget.TextView[contains(@text,'São Paulo')]"),10);
+ clickElement(By.xpath("//android.widget.TextView[contains(@text,'São Paulo')]"));
+
+ }
+
+ public void getCidadeOrigem(String EstadoOrigem) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/edMuni"), EstadoOrigem);
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/btn_busca_muni"));
+ waitConditionElement(By.xpath("//android.widget.TextView[contains(@text,'São Carlos')]"),10);
+ clickElement(By.xpath("//android.widget.TextView[contains(@text,'São Carlos')]"));
+ }
+
+ public void getPaisDestinatarioInvalido(String PaisDestinatarioInvalido) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/edPais"), PaisDestinatarioInvalido);
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/btn_busca_pais"));
+ }
+
+ public void popupVazioSelectPaisDestinatario() {
+ boolean textVazio = existsElementText(" ");
+ Assert.assertEquals("XXXXX", textVazio);
+ }
+
+ public void writePaisInvalido(String PaisDestinatarioInvalido) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/edPais"), PaisDestinatarioInvalido);
+ }
+
+ public void writeCidadeDestinatarioInvalido(String CidadeDestinatarioInvalido) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/edMuni"), CidadeDestinatarioInvalido);
+ }
+
+
+ public String mensagemDadosDestinatarioInvalido() {
+ return getTextField(By.xpath("//android.widget.Toast[contains(@text,'É necessário escolher um país e uma cidade.')]"));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/Pages/ResultadoDoCalculoPage.java b/src/main/java/Pages/ResultadoDoCalculoPage.java
new file mode 100644
index 0000000..fdb6167
--- /dev/null
+++ b/src/main/java/Pages/ResultadoDoCalculoPage.java
@@ -0,0 +1,21 @@
+package Pages;
+
+import Core.CommonsBasePage;
+import org.openqa.selenium.By;
+
+public class ResultadoDoCalculoPage extends CommonsBasePage {
+
+ public void clickSalveCalculo() {
+ waitConditionElement(By.id("br.com.correios.calculaprecoprazo:id/action_salvar"),10);
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/action_salvar"));
+
+ }
+
+ public static void clickOkCalculo() {
+ clickElement(By.id("br.com.correios.calculaprecoprazo:id/bt_ok"));
+ }
+
+ public void getNomeCalculo(String nomeCalculo) {
+ writefield(By.id("br.com.correios.calculaprecoprazo:id/ed_nome_calculo"), nomeCalculo);
+ }
+}
diff --git a/src/main/resources/CalculoPrecoEPrazoCorreios.apk b/src/main/resources/CalculoPrecoEPrazoCorreios.apk
new file mode 100644
index 0000000..5c2467f
Binary files /dev/null and b/src/main/resources/CalculoPrecoEPrazoCorreios.apk differ
diff --git a/src/test/java/runner/TestRunner.java b/src/test/java/runner/TestRunner.java
new file mode 100644
index 0000000..7625d3a
--- /dev/null
+++ b/src/test/java/runner/TestRunner.java
@@ -0,0 +1,36 @@
+package runner;
+
+import cucumber.api.CucumberOptions;
+import cucumber.api.junit.Cucumber;
+import org.junit.runner.RunWith;
+
+@RunWith(Cucumber.class)
+@CucumberOptions(
+ monochrome = true,
+ features = "features"
+ , glue =
+ "stepsDefinition"
+
+ , tags =
+ //"@CalculoInternacionalValidaDadosDestinoInvalido"
+ //"@CalculoInternacionalValidaDadosDestinoInvalido"
+ //"@CalculoInternacionalValidaPaisInvalido"
+ "@CalculoInternacional"
+ // "@CalculoInternacionalValidoCEP"
+ //"@CalculoInternacionalValidoCidadeEstado"
+ //"@CalculoInternacionalCEPInvalido"
+ // "@CalculoInternacionalDadosObjeto"
+ // "@CalculoInternacionalValidaPeso"
+
+
+ , plugin = {
+ "pretty",
+ "junit:target/cucumber.xml"
+}
+
+
+)
+
+public class TestRunner {
+
+}
diff --git a/src/test/java/stepsDefinition/CorreioCalculoInternacionalStep.java b/src/test/java/stepsDefinition/CorreioCalculoInternacionalStep.java
new file mode 100644
index 0000000..7d181ee
--- /dev/null
+++ b/src/test/java/stepsDefinition/CorreioCalculoInternacionalStep.java
@@ -0,0 +1,134 @@
+package stepsDefinition;
+
+import Pages.DadosDoObjetoPage;
+import Pages.MenuCalculoInternacionalPage;
+import Pages.OrigemDestinoCorreioPage;
+import Pages.ResultadoDoCalculoPage;
+import cucumber.api.java.pt.Dado;
+import cucumber.api.java.pt.Entao;
+import org.junit.Assert;
+
+
+public class CorreioCalculoInternacionalStep {
+ private OrigemDestinoCorreioPage origemDestinoCorreioPage = new OrigemDestinoCorreioPage();
+ private MenuCalculoInternacionalPage menuCalculoInternacionalPage = new MenuCalculoInternacionalPage();
+ private DadosDoObjetoPage dadosDoObjetoPage = new DadosDoObjetoPage();
+ private ResultadoDoCalculoPage resultadoDoCalculoPage = new ResultadoDoCalculoPage();
+
+ @Dado("^que estou realizando o calculo de Preco e Prazo internacional$")
+ public void que_estou_realizando_o_calculo_de_Preco_e_Prazo_internacional() {
+ menuCalculoInternacionalPage.menuCalculoInternational();
+
+ }
+
+ @Dado("^que informo CEP Remente valido$")
+ public void que_informo_CEP_Remente_valido() {
+ origemDestinoCorreioPage.getCEPEstadoOrigem("04350000");
+ origemDestinoCorreioPage.btnProximoPasso();
+
+ }
+
+ @Dado("^que informo CEP Remente invalido$")
+ public void que_informo_CEP_Remente_invalido() {
+ origemDestinoCorreioPage.getCEPEstadoOrigemInvalido("00000000");
+ resultadoDoCalculoPage.esperar(5);
+ origemDestinoCorreioPage.btnProximoPasso();
+
+ }
+
+
+ @Dado("^que informo um Pais Destinatario valido$")
+ public void que_informo_um_Pais_Destinatario_valido() {
+ origemDestinoCorreioPage.getPaisDestinatario("PORTUGAL");
+ }
+
+ @Dado("^que informo uma cidade de destino valida$")
+ public void que_informo_uma_cidade_de_destino_valida() {
+ resultadoDoCalculoPage.esperar(10);
+ origemDestinoCorreioPage.getCidadeDestinatario("LISBOA");
+ origemDestinoCorreioPage.btnProximoPasso();
+
+ }
+
+ @Dado("^que informo um Peso valido$")
+ public void que_informo_um_Peso_valido() {
+ resultadoDoCalculoPage.esperar(5);
+ dadosDoObjetoPage.getPeso("5");
+ dadosDoObjetoPage.btnCalcular();
+ }
+
+ @Entao("^o calculo deve ser salvo com sucesso$")
+ public void o_calculo_deve_ser_salvo_com_sucesso() {
+ resultadoDoCalculoPage.esperar(5);
+ resultadoDoCalculoPage.clickSalveCalculo();
+ resultadoDoCalculoPage.esperar(20);
+ resultadoDoCalculoPage.getNomeCalculo("CALCULO AUTOMACAO");
+ resultadoDoCalculoPage.clickOkCalculo();
+// Assert.assertEquals("Cálculo salvo com sucesso.", ResultadoDoCalculoPage.getMensagemCalculoSalvo());
+ }
+
+ @Entao("^o sistema deve apresentar mensagem de erro$")
+ public void o_sistema_deve_apresentar_mensagem_de_erro() {
+ Assert.assertEquals("CEP não encontrado.", origemDestinoCorreioPage.getMensagemCEP());
+
+ }
+
+ @Dado("^que informo o dado do Objeto Nao Documento$")
+ public void que_informo_o_dado_do_Objeto_Nao_Documento() {
+ dadosDoObjetoPage.esperar(10);
+ dadosDoObjetoPage.getTipoDocumentoObjeto();
+
+ }
+
+ @Dado("^que o tipo envelope$")
+ public void que_o_tipo_envelope() {
+ dadosDoObjetoPage.getTipoEnveloper();
+ }
+
+ @Entao("^o sistema deve validar a falta do Peso$")
+ public void o_sistema_deve_validar_a_falta_do_Peso() {
+ dadosDoObjetoPage.btnCalcular();
+ resultadoDoCalculoPage.esperar(100);
+ Assert.assertEquals("Valor do peso inválido", dadosDoObjetoPage.mensagemPesoInvalido());
+ }
+
+ @Dado("^que informo um Estado Origem valido$")
+ public void que_informo_um_Estado_Origem_valido() {
+ origemDestinoCorreioPage.getEstadoOrigem("Sao Paulo");
+
+ }
+
+ @Dado("^que informo um Cidade Origem valido$")
+ public void que_informo_um_Cidade_Origem_valido() {
+ origemDestinoCorreioPage.getCidadeOrigem("Sao Carlos");
+ origemDestinoCorreioPage.btnProximoPasso();
+ }
+
+ @Dado("^que estou validando o calculo de Preco e Prazo internacional$")
+ public void que_estou_validando_o_calculo_de_Preco_e_Prazo_internacional() {
+ menuCalculoInternacionalPage.menuCalculoInternational();
+ }
+
+ @Dado("^que informo um Pais Destinatario invalido$")
+ public void que_informo_um_Pais_Destinatario_invalido() throws Throwable {
+ origemDestinoCorreioPage.getPaisDestinatarioInvalido("XXXXXX");
+ }
+
+ @Entao("^o sistema deve realizar a verificacao e apresentar mensagem de erro$")
+ public void o_sistema_deve_realizar_a_verificacao_e_apresentar_mensagem_de_erro() {
+ origemDestinoCorreioPage.popupVazioSelectPaisDestinatario();
+ }
+
+ @Dado("^que informo Dado de Destinatario invalido$")
+ public void que_informo_Dado_de_Destinatario_invalido() {
+ origemDestinoCorreioPage.writePaisInvalido("YYYYYYY");
+ origemDestinoCorreioPage.writeCidadeDestinatarioInvalido("ZZZZZZ");
+ origemDestinoCorreioPage.btnProximoPasso();
+ }
+
+ @Entao("^o sistema deve realizar a verificacao e apresentar mensagem de erro informando sobre os dados invalidos$")
+ public void o_sistema_deve_realizar_a_verificacao_e_apresentar_mensagem_de_erro_informando_sobre_os_dados_invalidos() {
+ Assert.assertEquals("É necessário escolher um país e uma cidade.", origemDestinoCorreioPage.mensagemDadosDestinatarioInvalido());
+ }
+}
+
diff --git a/src/test/java/stepsDefinition/Hooks.java b/src/test/java/stepsDefinition/Hooks.java
new file mode 100644
index 0000000..06bf070
--- /dev/null
+++ b/src/test/java/stepsDefinition/Hooks.java
@@ -0,0 +1,43 @@
+package stepsDefinition;
+
+import Core.DriverFactory;
+import cucumber.api.Scenario;
+import cucumber.api.java.After;
+import cucumber.api.java.Before;
+import org.apache.commons.io.FileUtils;
+import org.openqa.selenium.OutputType;
+import org.openqa.selenium.TakesScreenshot;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.concurrent.TimeUnit;
+
+public class Hooks extends DriverFactory {
+
+ @Before
+ public void inicializaAppium() {
+ DriverFactory.createDriver();
+ }
+
+ @After(order = 0)
+ public void turnOffDriver() {
+ getDRIVER().manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
+ getDRIVER().resetApp();
+ getDRIVER().quit();
+ }
+
+ @After(order = 1)
+ public void TakeScreenShot(Scenario scenario) {
+ getDRIVER().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
+ SimpleDateFormat formatDate = new SimpleDateFormat("dd-MM-yyyy-hh-mm-ss");
+ Calendar date = Calendar.getInstance();
+ try {
+ File imagem = ((TakesScreenshot) getDRIVER()).getScreenshotAs(OutputType.FILE);
+ FileUtils.copyFile(imagem, new File("target/screenshots/" + scenario.getName() + " " +formatDate.format(date.getTime()) + ".png"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file