Caso de teste interrompido após falha de verificação.
Opened this issue · 7 comments
…
Quando clico em "Lista de Trabalhadores" referente a "789.356.369-91"
Dado que estou na tela "Remunerações Mensais"
Então aguardo "3000" milessegundos
Então será exibido na "Rubrica eSocial1000" o valor "870,97" (FAILED)
(br.gov.frameworkdemoiselle.behave.exception.BehaveException: Elemento [Rubrica eSocial1000] não encontrado na tela [Remunerações Mensais])
11:09:49,178 INFO (pool-1-thread-1) [ScreenShootingMaker]: Screenshot [https://www.esocial.teste.serpro/portalweb-automatizado-001/FolhaPagamento/Remuneracao?idContrato=7548&competencia=201510] salvo em [/home/02731087609/workspace/esocial-testes-automatizados/target/jbehave/view/screenshots/failed-scenario-a780cbef-0061-44e9-9d9e-25ad7874d1f0.png] com [328.761] bytes
Então será exibido na "Rubrica eSocial1910" o valor "1.000,00" (NOT PERFORMED)
Então será exibido na "Rubrica eSocial1920" o valor "333,33" (NOT PERFORMED)
Observem que após tentar verificar o valor "870,97" no campo "Rubrica eSocial1000" o caso de teste é interrompido, porém poderia existir a continuidade dos passos, somente um valor não foi verificado com corretude mas existem outras verificações a serem feitas.
Sei que existe uma diferença entre o assert e o verify no Webdriver o nosso framework poderia diferenciar também as duas ações.
Quando quiséssemos que os passos terminassem após uma verificação usaríamos o assert. Caso existe a necessidade da verificação de valor e não interromper os passos usamos o verify.
@Then(value="verifico {no|na} \"$elementName\" o valor \"$text\"", priority=10)
public void verifytextVisibleInElement(String elementName, String text) {
Element element = (Element) runner.getElement(currentPageName, elementName);
text = DataProviderUtil.replaceValue(text);
WebDriver driver = (WebDriver) runner.getDriver();
driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS);
String textAux = element.getText();
try{
Assert.assertEquals(text, textAux);
} catch (ComparisonFailure e) {
logger.error("Texto esperado " + text +" texto encontrado " + textAux);
}
}
@Viveiros, acredito que podemos avançar nesta questão.
Eu entendi a sua colocalção, mas na minha visão acredito que se o teste não der erro ele será "apenas" uma linha em um log, que normalmente possui milhares de linhas! Você acredita que se se "abafarmos" o erro a verificação será feita manualmente em um momento posterior?
Oi Julian,
Acredito que devemos falhar o caso de teste e continuar as outras validações. Não podemos parar de verificar outras verificações só porque uma verificação fallhou.
Fui claro?
Em conversa por telefone ficou acordado que será feito alguns testes utilizando o método Verify no lugar de Fail para que o teste sinalize que deu erro mas não aborte o caso de teste do JUnit.
@Viveiros, você conseguiu chegar a alguma conclusão? Existem outras demandas parecidas com esta e acredito que podemos juntar forças para conseguir melhorar este ponto.
Uma questão importante com relação a isso é que mesmo que alteremos o comportamento do Dbehave precisamos deixar parametrizável a utilização do comportamento antigo.
@Viveiros , algum avanço no assunto?