From d893bdda5ca7e9611cb678a950383997eced6dd1 Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli <137268502+Gabriiii99@users.noreply.github.com> Date: Tue, 21 May 2024 15:20:16 +0200 Subject: [PATCH] Pn-10375-10376-10377-10378-10379-10380-10381 (#172) * Test 10375, 10376 check payment box mittente * Test 10377, 10378, 10379 check payment box and modelloF24 mittente * Test 10380, 10381 check multidestinatario and payments --- .../mittente/PiattaformaNotifichePage.java | 74 +++++++++++-------- .../DettaglioNotificaMittenteSection.java | 57 +++++++++++++- .../mittente/NotificaMittentePagoPATest.java | 25 ++++++- .../RicercaNotificheMittentePagoPATest.java | 16 ++++ ...CheckDettaglioNorificaConPagamento.feature | 44 +++++++++++ 5 files changed, 185 insertions(+), 31 deletions(-) create mode 100644 src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/CheckDettaglioNorificaConPagamento.feature diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/PiattaformaNotifichePage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/PiattaformaNotifichePage.java index 062fa079a..8ebb0630f 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/PiattaformaNotifichePage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/PiattaformaNotifichePage.java @@ -25,6 +25,7 @@ public class PiattaformaNotifichePage extends BasePage { @FindBy(id = "recipientId") WebElement cfTextField; + @FindBy(id = "filter-button") WebElement filtraButton; @@ -43,7 +44,6 @@ public class PiattaformaNotifichePage extends BasePage { @FindBy(id = "status") WebElement statoNotificaField; - @FindBy(id = "side-item-API Key") WebElement apiKeyButton; @@ -128,12 +128,12 @@ public void insertCodiceFiscale(String codiceFiscale) { public void selectFiltraButton() { try { - getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(this.filtraButton)); - this.filtraButton.click(); + getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(filtraButton)); + filtraButton.click(); logger.info("Bottone filtra cliccato correttamente"); } catch (TimeoutException e) { - logger.error("Bottone filtra non cliccabile con errore " + e.getMessage()); - Assert.fail("Bottone filtra non cliccabile con errore " + e.getMessage()); + logger.error("Bottone filtra non cliccabile con errore: " + e.getMessage()); + Assert.fail("Bottone filtra non cliccabile con errore: " + e.getMessage()); } } @@ -186,9 +186,9 @@ public boolean verificaEsistenzaEPassaggioPagina() { public void inserimentoCodiceIUN(String codiceIUN) { try { - getWebDriverWait(10).until(ExpectedConditions.visibilityOf(this.codiceIUNTextField)); - this.codiceIUNTextField.click(); - this.codiceIUNTextField.sendKeys(codiceIUN); + getWebDriverWait(10).until(ExpectedConditions.visibilityOf(codiceIUNTextField)); + codiceIUNTextField.click(); + codiceIUNTextField.sendKeys(codiceIUN); logger.info("Codice IUN inserito"); } catch (TimeoutException e) { logger.error("Codice IUN non inserito con errore " + e.getMessage()); @@ -887,73 +887,89 @@ public void verificaDestinatariNonRaggiungibili(Map destinatari) } } - public void verificaNotificheNonDisponibili(){ + public void verificaNotificheNonDisponibili() { By noResultField = By.xpath("//div[@data-testid='emptyState']"); getWebDriverWait(5).withMessage("Ci sono risultati disponibili per il filtro di ricerca").until(ExpectedConditions.visibilityOfElementLocated(noResultField)); } + public void clickNotificaRicercata() { + logger.info("Si clicca la notifica ricercata"); + try { + TimeUnit.SECONDS.sleep(2); + By notitifcaRicercata = By.id("notificationsTable.body.row"); + getWebDriverWait(10).withMessage("La notifica ricercata non è visibile").until(ExpectedConditions.visibilityOfElementLocated(notitifcaRicercata)); + element(notitifcaRicercata).click(); + } catch (TimeoutException e) { + logger.error("Non si riesce a cliccare la notifica ricercata con errore: " + e.getMessage()); + Assert.fail("Non si riesce a cliccare la notifica ricercata con errore: " + e.getMessage()); + } catch (InterruptedException e) { + logger.error("Attesa per rendere cliccabile la notifica interrota con errore: " + e.getMessage()); + Assert.fail("Attesa per rendere cliccabile la notifica interrota con errore: " + e.getMessage()); + } + } + public void checkMessaggioErroreConCodice(int code) { switch (code) { case 19 -> { - if (erroreMessaggio.getText().contains("inserito troppe volte un nome")){ + if (erroreMessaggio.getText().contains("inserito troppe volte un nome")) { logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ + } else { logger.error("Non si visualizza il messaggio di errore"); Assert.fail("Non si visualizza il messaggio di errore"); } } case 20 -> { - if (erroreMessaggio.getText().contains("richiesto un login con un secondo fattore di autenticazione")){ - logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ - logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); - } + if (erroreMessaggio.getText().contains("richiesto un login con un secondo fattore di autenticazione")) { + logger.info("Si visualizza correttamente il messaggio di errore"); + } else { + logger.error("Non si visualizza il messaggio di errore"); + Assert.fail("Non si visualizza il messaggio di errore"); + } } case 21 -> { - if (erroreMessaggio.getText().contains("passato troppo tempo da quando hai iniziato")){ + if (erroreMessaggio.getText().contains("passato troppo tempo da quando hai iniziato")) { logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ + } else { logger.error("Non si visualizza il messaggio di errore"); Assert.fail("Non si visualizza il messaggio di errore"); } } case 22 -> { - if (erroreMessaggio.getText().contains("devi acconsentire all’invio di alcuni dati")){ + if (erroreMessaggio.getText().contains("devi acconsentire all’invio di alcuni dati")) { logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ + } else { logger.error("Non si visualizza il messaggio di errore"); Assert.fail("Non si visualizza il messaggio di errore"); } } case 23 -> { - if (erroreMessaggio.getText().contains("tua identità SPID risulta sospesa o revocata")){ + if (erroreMessaggio.getText().contains("tua identità SPID risulta sospesa o revocata")) { logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ + } else { logger.error("Non si visualizza il messaggio di errore"); Assert.fail("Non si visualizza il messaggio di errore"); } } case 25 -> { - if (erroreMessaggio.getText().contains("annullato l’operazione di login")){ + if (erroreMessaggio.getText().contains("annullato l’operazione di login")) { logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ + } else { logger.error("Non si visualizza il messaggio di errore"); Assert.fail("Non si visualizza il messaggio di errore"); } } case 30 -> { - if (erroreMessaggio.getText().contains("tipologia di identità SPID che hai usato")){ + if (erroreMessaggio.getText().contains("tipologia di identità SPID che hai usato")) { logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ + } else { logger.error("Non si visualizza il messaggio di errore"); Assert.fail("Non si visualizza il messaggio di errore"); } } case 1001 -> { - if (erroreMessaggio.getText().contains("non hai l’età minima richiesta per usare")){ + if (erroreMessaggio.getText().contains("non hai l’età minima richiesta per usare")) { logger.info("Si visualizza correttamente il messaggio di errore"); - }else{ + } else { logger.error("Non si visualizza il messaggio di errore"); Assert.fail("Non si visualizza il messaggio di errore"); } diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java index 76b76e933..f1e96ba1e 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java @@ -33,6 +33,12 @@ public class DettaglioNotificaMittenteSection extends BasePage { @FindBy(xpath = "//button[contains(@data-testid,'breadcrumb-indietro-button')]") WebElement indietroButton; + @FindBy(xpath = "//div[@data-testid='paymentInfoBox']") + WebElement containerPaymentBox; + + @FindBy(id = "recipients-select") + WebElement selectMultiDestinatario; + private int numeriStatiNotifica; public DettaglioNotificaMittenteSection(WebDriver driver) { @@ -274,7 +280,7 @@ public void checkInvioADomicilioDiPiattaforma(String domicilioDiPiattaforma) { } - public void checkDoppioFallimentoInvioViaPEC(int numeroFallimenti){ + public void checkDoppioFallimentoInvioViaPEC(int numeroFallimenti) { try { By invioPECFallitoBy = By.xpath("//span[text()='Invio via PEC fallito']"); List invioPECFallitoList = driver.findElements(invioPECFallitoBy); @@ -319,4 +325,53 @@ public void checkTentatoInvioADomicilioSpeciale(String domicilioSpeciale) { Assert.fail("L'invio della notifica al domicilio speciale indicato non viene effettuato con errore: " + e.getMessage()); } } + + public void checkAvvisoPagoPa() { + try { + By boxPagamento = By.xpath("//div[@data-testid='payment-item']"); + js().executeScript("arguments[0].scrollIntoView(true)", containerPaymentBox); + getWebDriverWait(10).withMessage("Non si visualizza il contenitore dei pagamenti").until(ExpectedConditions.visibilityOf(containerPaymentBox)); + getWebDriverWait(10).withMessage("Non si visualizza l'avviso PagoPA per il pagamento della notifica").until(ExpectedConditions.visibilityOfElementLocated(boxPagamento)); + } catch (TimeoutException e) { + logger.error("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); + Assert.fail("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); + } + } + + public void checkModelloF24() { + try { + By modelloF24 = By.xpath("//span[@data-testid='f24']"); + js().executeScript("arguments[0].scrollIntoView(true)", containerPaymentBox); + getWebDriverWait(10).withMessage("Non si visualizza il contenitore dei pagamenti").until(ExpectedConditions.visibilityOf(containerPaymentBox)); + getWebDriverWait(10).withMessage("Non si visualizza il contenitore del modello F24").until(ExpectedConditions.visibilityOfElementLocated(modelloF24)); + } catch (TimeoutException e) { + logger.error("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); + Assert.fail("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); + } + } + + public void checkBoxPagamentoMultiDestinatario() { + try { + js().executeScript("arguments[0].scrollIntoView(true)", containerPaymentBox); + getWebDriverWait(10).withMessage("Non si visualizza il contenitore dei pagamenti").until(ExpectedConditions.visibilityOf(containerPaymentBox)); + getWebDriverWait(10).withMessage("Non si visualizza l'input per la selezione del destinatario").until(ExpectedConditions.visibilityOf(selectMultiDestinatario)); + } catch (TimeoutException e) { + logger.error("Dettaglio notifica multi destinatario non ancora pagata visualizzata non correttamente con errore: " + e.getMessage()); + Assert.fail("Dettaglio notifica multi destinatario non ancora pagata visualizzata non correttamente con errore: " + e.getMessage()); + } + } + + public void clickMultiDestinatario() { + try { + js().executeScript("arguments[0].scrollIntoView(true)", selectMultiDestinatario); + getWebDriverWait(10).withMessage("L'input per la selezione del destinatario non è cliccabile").until(ExpectedConditions.elementToBeClickable(selectMultiDestinatario)); + selectMultiDestinatario.click(); + List selectOption = driver.findElements(By.xpath("//li[@role='option']")); + getWebDriverWait(10).withMessage("Non si visualizza la lista delle opzioni destinatario").until(ExpectedConditions.visibilityOfAllElements(selectOption)); + selectOption.get(0).click(); + } catch (TimeoutException e) { + logger.error("Non è stato possibile selezionare un destinatario con errore: " + e.getMessage()); + Assert.fail("Non è stato possibile selezionare un destinatario con errore: " + e.getMessage()); + } + } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NotificaMittentePagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NotificaMittentePagoPATest.java index 1d1684cf7..edf626bff 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NotificaMittentePagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NotificaMittentePagoPATest.java @@ -20,7 +20,6 @@ import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; -import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.slf4j.Logger; @@ -1265,6 +1264,30 @@ public void nellaSectionDelDestinatarioNumeroSiInserisconoISuoiDati(int numeroDe destinatarioPASection.inserireCodiceFiscaleMultiDestinatario(numeroDestinatario, destinatario.get("codiceFiscale")); } + @Then("Si controlla sia presente l'avviso PagoPa") + public void siControllaSiaPresenteLAvvisoPagoPa() { + logger.info("Si controlla la presenza del box per il pagamento della notifica"); + dettaglioNotificaMittenteSection.checkAvvisoPagoPa(); + } + + @Then("Si controlla sia presente il modello F24") + public void siControllaSiaPresenteIlModelloF24() { + logger.info("Si controlla sia presente il modello F24"); + dettaglioNotificaMittenteSection.checkModelloF24(); + } + + @Then("Si controlla sia presente il box per il pagamento del multidestinatario") + public void siControllaSiaPresenteIlBoxPerIlPagamentoDelMultidestinatario() { + logger.info("Si verifica la presenza della select per la selezione del destinatario"); + dettaglioNotificaMittenteSection.checkBoxPagamentoMultiDestinatario(); + } + + @And("Si seleziona un destinatario") + public void siSelezionaUnDestinatario() { + logger.info("Si seleziona il primo destinatario presente nella selct"); + dettaglioNotificaMittenteSection.clickMultiDestinatario(); + } + /** * A simple object that represents the esito notifica, i.e. the return value of siVerificaEsitoNotifica. */ diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/RicercaNotificheMittentePagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/RicercaNotificheMittentePagoPATest.java index 9991d1846..bb89a8da7 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/RicercaNotificheMittentePagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/RicercaNotificheMittentePagoPATest.java @@ -488,4 +488,20 @@ public void siVerificaCheICampiDellaRicercaDelleDateSianoErrate() { Assert.fail("Campo stato notifica NON trovato"); } } + + @And("Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN {string}") + public void nellaPaginaPiattformaNotificheSiEffettuaLaRicercaPerCodiceIUN(String codiceIUN) throws InterruptedException { + logger.info("Si cerca una notifica tramite IUN: " + codiceIUN); + PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); + piattaformaNotifichePage.inserimentoCodiceIUN(codiceIUN); + piattaformaNotifichePage.selectFiltraButton(); + } + + + @And("Si clicca la notifica ricercata") + public void siCliccaLaNotificaRicercata() { + logger.info("Se presente si clicca la notifica ricercata"); + PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); + piattaformaNotifichePage.clickNotificaRicercata(); + } } diff --git a/src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/CheckDettaglioNorificaConPagamento.feature b/src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/CheckDettaglioNorificaConPagamento.feature new file mode 100644 index 000000000..c27916575 --- /dev/null +++ b/src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/CheckDettaglioNorificaConPagamento.feature @@ -0,0 +1,44 @@ +Feature: Si verifica la corretta visualizzazione di notifiche non ancora pagate + + @checkNotificaNonPagata + Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata mono destinatario solo con avviso PagoPa + Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard + And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "QNMY-DXKH-LEDW-202405-J-1" + And Si clicca la notifica ricercata + Then Si controlla sia presente l'avviso PagoPa + And Logout da portale mittente + + @checkNotificaNonPagata + Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata mono destinatario solo con modello F24 + Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard + And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "JVDU-KLJG-RPZV-202405-X-1" + And Si clicca la notifica ricercata + Then Si controlla sia presente il modello F24 + And Logout da portale mittente + + @checkNotificaNonPagata + Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata mono destinatario solo con avviso PagoPa e modello F24 + Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard + And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "JHME-HQME-DGEL-202405-E-1" + And Si clicca la notifica ricercata + Then Si controlla sia presente l'avviso PagoPa + Then Si controlla sia presente il modello F24 + And Logout da portale mittente + + @checkNotificaNonPagata + Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata multi destinatario solo con avviso PagoPa + Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard + And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "PTUY-UJWN-YAQU-202405-L-1" + And Si clicca la notifica ricercata + Then Si controlla sia presente il box per il pagamento del multidestinatario + And Logout da portale mittente + + @checkNotificaNonPagata + Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Notifica multi destinatario non pagata, si seleziona un destinatario e si controllano gli avvisi relativi + Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard + And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "PTUY-UJWN-YAQU-202405-L-1" + And Si clicca la notifica ricercata + Then Si controlla sia presente il box per il pagamento del multidestinatario + And Si seleziona un destinatario + Then Si controlla sia presente l'avviso PagoPa + And Logout da portale mittente