From fd87f933a74fcb6865c33ab532465c129e0d53ff Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli Date: Tue, 26 Mar 2024 13:01:49 +0100 Subject: [PATCH 1/7] ref/9162 - added control on altri recapiti field --- .../e2e/common/RecapitiDestinatarioPage.java | 78 +++++++++++++------ .../PiattaformaNotifichePGPAPage.java | 2 +- .../personaGiuridica/RecapitiPGPage.java | 2 +- .../common/BackgroundTest.java | 7 +- .../RecapitiPersonaFisicaTest.java | 19 ++--- .../RecapitiPGPagoPaTest.java | 11 ++- .../004_062_modificaPECPG.feature | 2 +- ...071_visualizzazioneAltriRecapitiPG.feature | 1 + 8 files changed, 74 insertions(+), 48 deletions(-) diff --git a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java index 7e4928ca2..fdd1943c8 100644 --- a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java @@ -53,7 +53,7 @@ public class RecapitiDestinatarioPage extends BasePage { @FindBy(id = "s_pec") WebElement indirizzoPecField; - @FindBy(xpath = "//button[@data-testid = 'addSpecialButton']") + @FindBy(id = "addSpecialButton") WebElement associaButton; @FindBy(id = "s_mail") @@ -93,17 +93,17 @@ public void eliminaPecEsistente() { public void clickSuChiudiPopUp() { By chiudiButtonBy = By.xpath("//button[contains(text(),'Chiudi')]"); - this.getWebDriverWait(10).withMessage("Il bottone chiudi non è cliccabile").until(ExpectedConditions.elementToBeClickable(chiudiButtonBy)); + getWebDriverWait(10).withMessage("Il bottone chiudi non è cliccabile").until(ExpectedConditions.elementToBeClickable(chiudiButtonBy)); this.js().executeScript("arguments[0].click()", this.element(chiudiButtonBy)); } public void insertEmailPEC(String emailPEC) { - this.getWebDriverWait(10).withMessage("input pec field non trovato").until(ExpectedConditions.visibilityOf(pecField)); + getWebDriverWait(10).withMessage("input pec field non trovato").until(ExpectedConditions.visibilityOf(pecField)); pecField.sendKeys(emailPEC); } public void confermaButtonClick() { - this.getWebDriverWait(10).withMessage("Il bottone conferma non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.confermaButton)); + getWebDriverWait(10).withMessage("Il bottone conferma non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.confermaButton)); this.confermaButton.click(); } @@ -121,16 +121,16 @@ public void waitLoadPopUp() { List inputBoxes = driver.findElements(By.xpath("//input[contains(@id,'code-input-')]")); // The message is different in PG and PF By footerNotReceived = By.xpath("//p[contains(text(), 'Non l’hai ricevuto? Controlla')]"); - this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(titleBy)); - this.getWebDriverWait(10).until(ExpectedConditions.and( + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(titleBy)); + getWebDriverWait(10).until(ExpectedConditions.and( ExpectedConditions.visibilityOfElementLocated(descriptionBy), ExpectedConditions.attributeContains(descriptionBy, "textContent", "Il codice è valido per 15 minuti."))); - this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(titleOption)); - this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfAllElements(inputBoxes)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(titleOption)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfAllElements(inputBoxes)); if (inputBoxes.size() != 5) { Assert.fail("Il numero di input box non è corretto"); } - this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(footerNotReceived)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(footerNotReceived)); boolean checkButton = !confermaButtonPopUp.isEnabled() && annullaButton.isEnabled(); if (!checkButton) { Assert.fail("i pulsanti all'interno del pop-up non rispettano le condizioni"); @@ -176,7 +176,7 @@ public void confermaButtonClickPopUp() { public boolean waitMessaggioErrore() { try { By messaggioErroreBy = By.id("error-alert"); - this.getWebDriverWait(5).until(ExpectedConditions.visibilityOfElementLocated(messaggioErroreBy)); + getWebDriverWait(5).until(ExpectedConditions.visibilityOfElementLocated(messaggioErroreBy)); logger.info("Il messaggio di errore viene visualizzato correttamente"); return true; } catch (TimeoutException e) { @@ -230,7 +230,7 @@ public void insertPhone(String cellulare) { public boolean verificaPecAssociata() { try { - By pecAssociata = By.xpath("//p[contains(text(), 'PEC associata')]"); + By pecAssociata = By.id("associatedPEC"); getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(pecAssociata)); return true; } catch (TimeoutException e) { @@ -251,7 +251,7 @@ public boolean siVisualizzaPopUpConferma() { } public void clickConfermaButton() { - this.getWebDriverWait(30).withMessage("Il bottone conferma del pop up non é cliccabile").until(ExpectedConditions.elementToBeClickable(confermaButtonPoPUpPec)); + getWebDriverWait(10).withMessage("Il bottone conferma del pop up non é cliccabile").until(ExpectedConditions.elementToBeClickable(confermaButtonPoPUpPec)); this.confermaButtonPoPUpPec.click(); } @@ -323,7 +323,6 @@ public void cancellaTesto() { } - public void clickSuSalva() { By salvaButtonBy = By.xpath("//button[contains(text(),'Salva')]"); this.getWebDriverWait(30).withMessage("Non si riesce a cliccare sul bottone salva").until(ExpectedConditions.elementToBeClickable(salvaButtonBy)); @@ -339,7 +338,7 @@ public boolean siControllaPECModificata(String pecInserita) { public void clickSuEliminaPec() { - this.getWebDriverWait(30).withMessage("Non si è riuscito ad cliccare sul bottone elimina PEC").until(ExpectedConditions.elementToBeClickable(eliminaPECButton)); + getWebDriverWait(10).withMessage("Non si è riuscito ad cliccare sul bottone elimina PEC").until(ExpectedConditions.elementToBeClickable(eliminaPECButton)); logger.info("click sul pulsante elimina pec"); this.eliminaPECButton.click(); } @@ -347,14 +346,14 @@ public void clickSuEliminaPec() { public String waitLoadPopUpElimina() { By titlePopUp = By.id("dialog-title"); By subTitlePopUp = By.id("dialog-description"); - this.getWebDriverWait(10).withMessage("Non è stato caricato il titolo del pop-up").until(ExpectedConditions.visibilityOfElementLocated(titlePopUp)); - this.getWebDriverWait(10).withMessage("Non è stato caricato il sottotitolo del pop-up").until(ExpectedConditions.visibilityOfElementLocated(subTitlePopUp)); + getWebDriverWait(10).withMessage("Non è stato caricato il titolo del pop-up").until(ExpectedConditions.visibilityOfElementLocated(titlePopUp)); + getWebDriverWait(10).withMessage("Non è stato caricato il sottotitolo del pop-up").until(ExpectedConditions.visibilityOfElementLocated(subTitlePopUp)); return this.element(titlePopUp).getText(); } public void clickSuConfermaElimina() { - By confermaRimuoviPECBy = By.xpath("//button[contains(text(),'Annulla')]/following-sibling::button"); - this.getWebDriverWait(30).withMessage("Non è stato possibile cliccare sul bottone conferma").until(ExpectedConditions.elementToBeClickable(confermaRimuoviPECBy)); + By confermaRimuoviPECBy = By.id("buttonConferma"); + getWebDriverWait(10).withMessage("Non è stato possibile cliccare sul bottone conferma").until(ExpectedConditions.elementToBeClickable(confermaRimuoviPECBy)); this.element(confermaRimuoviPECBy).click(); } @@ -381,13 +380,13 @@ public void insertEnte(String comune) { this.enteField.sendKeys(Keys.ARROW_DOWN); this.enteField.sendKeys(Keys.ENTER); // verify if the first option is the one we want by checking the value - this.getWebDriverWait(10).withMessage("Il comune non è visibile").until(ExpectedConditions.attributeContains(this.enteField, "value", comune)); + getWebDriverWait(10).withMessage("Il comune non è visibile").until(ExpectedConditions.attributeContains(this.enteField, "value", comune)); } public void clickSuIndirizzoPEC() { this.tipoIndirizzoField.click(); By opzionePEC = By.xpath("//li[@data-value ='PEC']"); - this.getWebDriverWait(30).withMessage("Non è visibile l'opzione 'Indirizzo PEC'").until(ExpectedConditions.elementToBeClickable(opzionePEC)); + getWebDriverWait(30).withMessage("Non è visibile l'opzione 'Indirizzo PEC'").until(ExpectedConditions.elementToBeClickable(opzionePEC)); this.element(opzionePEC).click(); } @@ -405,7 +404,7 @@ public void insertPECAggiuntiva(String emailPec) { } public void clickSuAssocia() { - this.getWebDriverWait(30).withMessage("Il bottone associa non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.associaButton)); + getWebDriverWait(10).withMessage("Il bottone associa non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.associaButton)); this.js().executeScript("arguments[0].click()", associaButton); } @@ -461,10 +460,10 @@ public void eliminaNuovaEmail() { } public void eliminaNuovaPec() { - this.getWebDriverWait(30).withMessage("Non è stato possibile cliccare sul bottone elimina email").until(ExpectedConditions.elementToBeClickable(this.eliminaButtonList.get(0))); + getWebDriverWait(30).withMessage("Non è stato possibile cliccare sul bottone elimina email").until(ExpectedConditions.elementToBeClickable(this.eliminaButtonList.get(0))); this.js().executeScript("arguments[0].click()", this.eliminaButtonList.get(0)); By confermaPopUpBy = By.xpath("//div[@aria-labelledby='dialog-title']//div/button[contains(text(),'Conferma')]"); - this.getWebDriverWait(30).withMessage("Il bottone del pop-up non è cliccabile").until(ExpectedConditions.elementToBeClickable(confermaPopUpBy)); + getWebDriverWait(30).withMessage("Il bottone del pop-up non è cliccabile").until(ExpectedConditions.elementToBeClickable(confermaPopUpBy)); this.element(confermaPopUpBy).click(); } @@ -539,7 +538,32 @@ public void visualizzazioneSezioneAltriRecapiti() { public void visualizzazioneSezioneAltriRecapitiPG() { vaiInFondoAllaPagina(); By altriRecapitiSectionBy = By.id("specialContactTitle"); - getWebDriverWait(5).withMessage(" Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); + By titleGiaAssociatiBy = By.xpath("//p[contains(text(), 'Già associati')]"); + WebElement tableGiaAssociati = driver.findElement(By.xpath("//table[@aria-label='Già associati']")); + By modifyButtonBy = By.xpath(".//button[contains(@id, 'modifyContact')]"); + By deleteButtonBy = By.xpath(".//button[contains(@id, 'cancelContact')]"); + getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); + getWebDriverWait(10).withMessage("Non si visualizza il titolo della tabella").until(ExpectedConditions.visibilityOfElementLocated(titleGiaAssociatiBy)); + getWebDriverWait(10).withMessage("Non si visualizza la tabella dei recapiti già associati").until(ExpectedConditions.visibilityOf(tableGiaAssociati)); + getWebDriverWait(10).withMessage("Bottone modifica non visualizzato e non cliccabile").until(ExpectedConditions.and( + ExpectedConditions.visibilityOfElementLocated(modifyButtonBy), + ExpectedConditions.elementToBeClickable(modifyButtonBy))); + getWebDriverWait(10).withMessage("Bottone elimina non visualizzato e non cliccabile").until(ExpectedConditions.and( + ExpectedConditions.visibilityOfElementLocated(deleteButtonBy), + ExpectedConditions.elementToBeClickable(deleteButtonBy))); + List tableRows = tableGiaAssociati.findElements(By.xpath(".//tbody/tr")); + for (WebElement row : tableRows) { + List columns = row.findElements(By.xpath(".//td")); + if (columns.get(0).getText().contains("Comune di Verona")) { + logger.info("Si visualizza l'ente inserito correttamente"); + } + if (columns.get(1).getText().contains("pec@pec.pagopa.it")) { + logger.info("Si visualizza l'indirizzo pec inserito correttamente"); + } + if (columns.get(2).getText().contains("-") && columns.get(3).getText().contains("-")) { + logger.info("Si visualizzano il cellulare e la mail inseriti correttamente"); + } + } } public void checkButtonAnnullaEliminazioneInPopUp() { @@ -597,4 +621,10 @@ public void clickSuAnnulla() { ExpectedConditions.elementToBeClickable(annullaButtonBy))); this.element(annullaButtonBy).click(); } + + public void clickConfermaRecapitoGiaPresente() { + By confermaButton = By.xpath("//div[@data-testid='dialog-actions']//button[contains(text(), 'Conferma')]"); + getWebDriverWait(10).withMessage("Bottone conferma non visualizzato").until(ExpectedConditions.and(ExpectedConditions.visibilityOfElementLocated(confermaButton), ExpectedConditions.elementToBeClickable(confermaButton))); + this.element(confermaButton).click(); + } } \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PiattaformaNotifichePGPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PiattaformaNotifichePGPAPage.java index 3f8df2a6d..8b950fa29 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PiattaformaNotifichePGPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PiattaformaNotifichePGPAPage.java @@ -113,7 +113,7 @@ public void waitLoadSezioneNotificheDelegate(String ragioneSociale) { } public void clickRecapitiButton() { - getWebDriverWait(30).withMessage("Il bottone recapiti non è visibile").until(ExpectedConditions.visibilityOf(recapitiButton)); + getWebDriverWait(10).withMessage("Il bottone recapiti non è visibile").until(ExpectedConditions.visibilityOf(recapitiButton)); this.js().executeScript("arguments[0].click()", this.recapitiButton); } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RecapitiPGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RecapitiPGPage.java index 0fae659f1..55dedd4cf 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RecapitiPGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RecapitiPGPage.java @@ -20,7 +20,7 @@ public RecapitiPGPage(WebDriver driver) { public void waitLoadRecapitiPage() { try { By racapitiPageTitle = By.id("Recapiti-page"); - getWebDriverWait(30).withMessage("il titolo Ricapiti della pagina recapiti non è visibile").until(ExpectedConditions.visibilityOfElementLocated(racapitiPageTitle)); + getWebDriverWait(10).withMessage("il titolo Recapiti della pagina recapiti non è visibile").until(ExpectedConditions.visibilityOfElementLocated(racapitiPageTitle)); logger.info("Si visualizza correttamente recapiti page"); }catch (TimeoutException e){ logger.error("Non si visualizza correttamente recapiti page con errore:"+e.getMessage()); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java index e3408b3c9..3bdc69053 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java @@ -235,12 +235,9 @@ public void aggiungiPECPG() { public void aggiungiPecSezioneGiaAssociati() { recapitiPersonaFisicaTest.nellaSezioneAltriRecapitiSiSelezionaLEnte(mittente); recapitiPersonaFisicaTest.nellaSezioneAltriRecapitiSiSelezionaIlTipoDiIndirizzo(); - recapitiPersonaFisicaTest.nellaSezioneAltriRecapitiSiInserisceLaPECAggiuntivaDePersonaFisica(nomeFilePersonaFisica); + recapitiPersonaFisicaTest.nellaSezioneAltriRecapitiSiInserisceLaPECAggiuntivaDePersonaFisica("pec@pec.pagopa.it"); recapitiPersonaFisicaTest.nellaSezioneAltriRecapitiSiCliccaSulBottoneAssocia(); - recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlPopUpDiInserimentoOTP(); - recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequest(nomeFilePersonaFisica); - recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTP(nomeFilePersonaFisica); - recapitiPersonaFisicaTest.nellaSezioneAltriRecapitiSiControllaCheLaPecAggiuntivaSiaStataInseritaCorrettamente(); + recapitiPersonaFisicaTest.nellaSezioneAltriRecapitiSiCliccaSulBottoneConfermaPerInserireUnRecapito(); } public void revocaDelegaPG(String dpFile) { diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java index 5e4f0f971..268fcb950 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java @@ -548,19 +548,6 @@ public void nellaPaginaITuoiRecapitiDiPfSiControllaCheCiSiaGiaUnaPec() { } } - @And("Nella pagina I Tuoi Recapiti di PG, si controlla che ci sia già una pec") - public void nellaPaginaITuoiRecapitiDiPgSiControllaCheCiSiaGiaUnaPec() { - logger.info("Si controlla la presenza di una pec"); - String pec = dataPopulation.readDataPopulation("personaFisica.yaml").get("emailPec").toString(); - BackgroundTest backgroundTest = new BackgroundTest(); - if (!recapitiDestinatarioPage.siVisualizzaPecInserita()) { - backgroundTest.aggiungiPECPG(); - } else if (!recapitiDestinatarioPage.siControllaPECModificata(pec)) { - recapitiDestinatarioPage.eliminaPecEsistente(); - backgroundTest.aggiungiPECPG(); - } - } - @And("Nella pagina I Tuoi Recapiti si inserisce una nuova PEC {string}") public void nellaPaginaITuoiRecapitiSiInserisceUnaNuovaPECDellaPersonaFisica(String pec) { logger.info("Si inserisce una nuova PEC"); @@ -883,5 +870,11 @@ public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlRiquadroRelativoA ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.checkRiquadroPEC(); } + + @And("Nella sezione altri recapiti si clicca sul bottone conferma per inserire un recapito") + public void nellaSezioneAltriRecapitiSiCliccaSulBottoneConfermaPerInserireUnRecapito(){ + logger.info("Si clicca su conferma"); + recapitiDestinatarioPage.clickConfermaRecapitoGiaPresente(); + } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java index da37c77d3..1b24c3b9f 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java @@ -75,10 +75,9 @@ public void siVisualizzanoCorrettamenteTuttiGliElementiDellaSezioneAltriRecapiti recapitiDestinatarioPage.visualizzazioneSezioneAltriRecapitiPG(); } - @And("Nella pagina I Tuoi Recapiti PG si controlla che ci sia già una pec") - public void nellaPaginaITuoiRecapitiSiControllaCheCiSiaGiaUnaPec() { + @And("Nella pagina I Tuoi Recapiti di PG, si controlla che ci sia già una pec") + public void nellaPaginaITuoiRecapitiDiPgSiControllaCheCiSiaGiaUnaPec() { logger.info("Si controlla la presenza di una pec"); - String pec = dataPopulation.readDataPopulation("personaGiuridica.yaml").get("emailPec").toString(); BackgroundTest backgroundTest = new BackgroundTest(); if (!recapitiDestinatarioPage.siVisualizzaPecInserita()) { @@ -113,4 +112,10 @@ public void siConfermaEliminazioneNelPopUp() { public void siControllaPresenzaEmailPrecedentementeSalvata(String email) { recapitiDestinatarioPage.checkEmailPrecedentementeSalvata(email); } + + @And("Nella sezione altri recapiti si inserisce un recapito") + public void nellaSezioneAltriRecapitiSiInserisceUnRecapito(){ + BackgroundTest backgroundTest = new BackgroundTest(); + backgroundTest.aggiungiPecSezioneGiaAssociati(); + } } diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/004_062_modificaPECPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/004_062_modificaPECPG.feature index 8fb1286cd..7d360a2e2 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/004_062_modificaPECPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/004_062_modificaPECPG.feature @@ -9,7 +9,7 @@ Feature: La persona giuridica modifica l'indirizzo PEC Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard When Nella pagina Piattaforma Notifiche persona giuridica si clicca sul bottone I Tuoi Recapiti And Si visualizza correttamente la pagina Recapiti persona giuridica - And Nella pagina I Tuoi Recapiti PG si controlla che ci sia già una pec + And Nella pagina I Tuoi Recapiti di PG, si controlla che ci sia già una pec And Nella pagina I Tuoi Recapiti si clicca sul bottone modifica PEC e si verifica che si possa modificare la PEC And Si clicca sul bottone annulla per annullare la modifica della PEC e si verifica che non si possa modificare la PEC And Nella pagina I Tuoi Recapiti si clicca sul bottone modifica PEC e si verifica che si possa modificare la PEC diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature index f2d46cdd4..ba7c594a7 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature @@ -16,5 +16,6 @@ Feature: La persona giuridica visualizza tutti gli elementi della sezione altri And Nella pagina I Tuoi Recapiti si recupera il codice OTP tramite chiamata request "personaGiuridica" And Nella pagina I Tuoi Recapiti si inserisce il codice OTP "personaGiuridica" Then Nella pagina i Tuoi Recapiti si controlla che la pec sia stata inserita correttamente + And Nella sezione altri recapiti si inserisce un recapito Then Si visualizzano correttamente tutti gli elementi della sezione altri recapiti della persona giuridica And Logout da portale persona giuridica From ae4d310270491eb9e3b56ef6146b6f8889bdbb09 Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli Date: Tue, 26 Mar 2024 17:09:04 +0100 Subject: [PATCH 2/7] PN - 9334 - implemented checks on altri recapiti fields using 9162's method --- .../java/it/pn/frontend/e2e/common/BasePage.java | 2 +- .../e2e/common/RecapitiDestinatarioPage.java | 12 ++++++------ .../personaFisica/ITuoiRecapitiPage.java | 16 ++++++++-------- .../e2e/pages/mittente/DisserviziAppPAPage.java | 2 +- .../stepDefinitions/common/BackgroundTest.java | 2 +- .../personaFisica/RecapitiPersonaFisicaTest.java | 13 ++----------- .../personaGiuridica/DeleghePGPagoPATest.java | 2 +- .../personaGiuridica/DisserviziAppPGTest.java | 2 +- .../personaGiuridica/RecapitiPGPagoPaTest.java | 11 ++++++----- .../mittente/NotificaMittentePagoPATest.java | 12 ++++++------ ...08_071_visualizzazioneAltriRecapitiPG.feature | 2 +- 11 files changed, 34 insertions(+), 42 deletions(-) diff --git a/src/main/java/it/pn/frontend/e2e/common/BasePage.java b/src/main/java/it/pn/frontend/e2e/common/BasePage.java index bf4a57567..a932f1a98 100644 --- a/src/main/java/it/pn/frontend/e2e/common/BasePage.java +++ b/src/main/java/it/pn/frontend/e2e/common/BasePage.java @@ -73,7 +73,7 @@ public void vaiInFondoAllaPagina() { this.js().executeScript("window.scrollBy(0,document.body.scrollHeight)"); } - public void aggionamentoPagina() { + public void aggiornamentoPagina() { this.driver.navigate().refresh(); } diff --git a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java index fdd1943c8..6df8bf384 100644 --- a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java @@ -277,7 +277,7 @@ public boolean verificaMailAssociata() { public boolean siVisualizzaPecInserita() { try { By pecInseritaBy = By.xpath("//p[contains(text(),'PEC associata')]"); - this.getWebDriverWait(5).until(ExpectedConditions.visibilityOfElementLocated(pecInseritaBy)); + getWebDriverWait(5).until(ExpectedConditions.visibilityOfElementLocated(pecInseritaBy)); return true; } catch (TimeoutException e) { logger.error("Pec inserita non presente con errore:" + e.getMessage()); @@ -331,7 +331,7 @@ public void clickSuSalva() { public boolean siControllaPECModificata(String pecInserita) { By pecBy = By.xpath("//div[@data-testid = 'legalContacts']//div//p"); - this.getWebDriverWait(10).withMessage("Non trovata nessuna email PEC inserita").until(ExpectedConditions.visibilityOfElementLocated(pecBy)); + getWebDriverWait(10).withMessage("Non trovata nessuna email PEC inserita").until(ExpectedConditions.visibilityOfElementLocated(pecBy)); WebElement pec = this.element(pecBy); return pec.getText().equals(pecInserita); } @@ -535,14 +535,14 @@ public void visualizzazioneSezioneAltriRecapiti() { getWebDriverWait(5).withMessage(" Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); } - public void visualizzazioneSezioneAltriRecapitiPG() { + public void visualizzazioneCampiSezioneAltriRecapiti() { vaiInFondoAllaPagina(); - By altriRecapitiSectionBy = By.id("specialContactTitle"); + By altriRecapitiSectionBy = By.xpath(".//h5[contains(@id, 'specialContact')]"); By titleGiaAssociatiBy = By.xpath("//p[contains(text(), 'Già associati')]"); WebElement tableGiaAssociati = driver.findElement(By.xpath("//table[@aria-label='Già associati']")); By modifyButtonBy = By.xpath(".//button[contains(@id, 'modifyContact')]"); By deleteButtonBy = By.xpath(".//button[contains(@id, 'cancelContact')]"); - getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); + getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); getWebDriverWait(10).withMessage("Non si visualizza il titolo della tabella").until(ExpectedConditions.visibilityOfElementLocated(titleGiaAssociatiBy)); getWebDriverWait(10).withMessage("Non si visualizza la tabella dei recapiti già associati").until(ExpectedConditions.visibilityOf(tableGiaAssociati)); getWebDriverWait(10).withMessage("Bottone modifica non visualizzato e non cliccabile").until(ExpectedConditions.and( @@ -557,7 +557,7 @@ public void visualizzazioneSezioneAltriRecapitiPG() { if (columns.get(0).getText().contains("Comune di Verona")) { logger.info("Si visualizza l'ente inserito correttamente"); } - if (columns.get(1).getText().contains("pec@pec.pagopa.it")) { + if (columns.get(1).getText().contains("@")) { logger.info("Si visualizza l'indirizzo pec inserito correttamente"); } if (columns.get(2).getText().contains("-") && columns.get(3).getText().contains("-")) { diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java index e4880cc39..3fa05098c 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java @@ -47,11 +47,11 @@ public void waitLoadITuoiRecapitiPage() { By titlePageByOne = By.xpath("//h4[contains(@id,'Recapiti-page')]"); By titlePageByTwo = By.xpath("//h4[contains(@id,'I tuoi recapiti-page')]"); By subTitlePageBy = By.id("subtitle-page"); - this.getWebDriverWait(10).until(ExpectedConditions.or( + getWebDriverWait(10).until(ExpectedConditions.or( ExpectedConditions.visibilityOfElementLocated(titlePageByOne), ExpectedConditions.visibilityOfElementLocated(titlePageByTwo) )); - this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(subTitlePageBy)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(subTitlePageBy)); logger.info("La pagina I Tuoi Recapiti si vede correttamente"); } catch (TimeoutException e) { logger.error("La pagina I Tuoi Recapiti NON si vede correttamente con errori:" + e.getMessage()); @@ -183,7 +183,7 @@ public void selezionaTipoEmail() { logger.error("errore: " + e.getMessage()); } By opzionePEC = By.id("dropdown-EMAIL"); - this.getWebDriverWait(10) + getWebDriverWait(10) .withMessage("Non è visibile l'opzione indirizzo email") .until(ExpectedConditions.elementToBeClickable(opzionePEC)); this.element(opzionePEC).click(); @@ -198,7 +198,7 @@ public void selezionaTipoPec() { logger.error("errore: " + e.getMessage()); } By opzionePEC = By.id("dropdown-PEC"); - this.getWebDriverWait(10) + getWebDriverWait(10) .withMessage("Non è visibile l'opzione indirizzo email") .until(ExpectedConditions.elementToBeClickable(opzionePEC)); this.element(opzionePEC).click(); @@ -209,10 +209,10 @@ public void waitLoadRecapitiGiaAssociatoSection() { By tableBy = By.xpath("//table[@aria-label = 'Già associati']"); By eliminaBy = By.xpath("//form[@data-testid = 'specialContactForm']//div//button[contains(text(),'Elimina')]"); By modificaBy = By.xpath("//form[@data-testid = 'specialContactForm']//div//button[contains(text(),'Modifica')]"); - this.getWebDriverWait(10).withMessage("Non si visualizza il titolo 'Gia Associati'").until(ExpectedConditions.visibilityOfElementLocated(titlePage)); - this.getWebDriverWait(10).withMessage("Non si visualizza la tabella 'Gia Associati'").until(ExpectedConditions.visibilityOfElementLocated(tableBy)); - this.getWebDriverWait(10).withMessage("Non si visualizza il bottone elimina della sezione recapiti gia associati ").until(ExpectedConditions.visibilityOfElementLocated(eliminaBy)); - this.getWebDriverWait(10).withMessage("Non si visualizza il bottone modifica della sezione recapiti gia associati").until(ExpectedConditions.visibilityOfElementLocated(modificaBy)); + getWebDriverWait(10).withMessage("Non si visualizza il titolo 'Gia Associati'").until(ExpectedConditions.visibilityOfElementLocated(titlePage)); + getWebDriverWait(10).withMessage("Non si visualizza la tabella 'Gia Associati'").until(ExpectedConditions.visibilityOfElementLocated(tableBy)); + getWebDriverWait(10).withMessage("Non si visualizza il bottone elimina della sezione recapiti gia associati ").until(ExpectedConditions.visibilityOfElementLocated(eliminaBy)); + getWebDriverWait(10).withMessage("Non si visualizza il bottone modifica della sezione recapiti gia associati").until(ExpectedConditions.visibilityOfElementLocated(modificaBy)); } public void checkPostModifica() { diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java index e1f00649c..ec87f7c10 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java @@ -104,7 +104,7 @@ public void waitLoadDisserviziTable() { public void checkDisserviziInCorso() { try { - aggionamentoPagina(); + aggiornamentoPagina(); List disserviziTableRows = disserviziTable.findElements(By.id("tableDowntimeLog.row")); if (!disserviziTableRows.isEmpty()) { for (WebElement disserviziRow : disserviziTableRows) { diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java index b5319f7b7..ec19d4589 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/BackgroundTest.java @@ -149,7 +149,7 @@ public void aggiungiNuovaPECPF() { recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiVerificaCheLaPecSiaStataModificata(nomeFilePersonaFisica); logoutPF(); loginPFRecapiti(nomeFilePersonaFisica); - recapitiPersonaFisicaTest.ITuoiRecapitiButtonClick(); + recapitiPersonaFisicaTest.nellaPaginaPiattaformaNotifichePersonaFisicaSiCliccaSulBottoneITuoiRecapiti(); recapitiPersonaFisicaTest.siVisualizzaCorrettamenteLaPaginaITuoiRecapiti(); } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java index 6bed737dd..6754d73ff 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java @@ -30,7 +30,7 @@ public class RecapitiPersonaFisicaTest { private final List netWorkInfos = Hooks.netWorkInfos; @When("Nella pagina Piattaforma Notifiche persona fisica si clicca sul bottone I Tuoi Recapiti") - public void ITuoiRecapitiButtonClick() { + public void nellaPaginaPiattaformaNotifichePersonaFisicaSiCliccaSulBottoneITuoiRecapiti() { logger.info("Si cerca di cliccare il bottone I Tuoi Recapiti"); ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(driver); iTuoiRecapitiPage.iTuoiRecapitiButtonClick(); @@ -725,7 +725,7 @@ public void nellaSezioneAltriRecapitiSiControllaCheLaPecAggiuntivaSiaStataInseri if (recapitiDestinatarioPage.siVisualizzaPopUpConferma()) { recapitiDestinatarioPage.clickConfermaButton(); - recapitiDestinatarioPage.aggionamentoPagina(); + recapitiDestinatarioPage.aggiornamentoPagina(); recapitiDestinatarioPage.waitLoadPage(); } String pec = dataPopulation.readDataPopulation("personaFisica.yaml").get("additionalEmail").toString(); @@ -827,15 +827,6 @@ public void siVerificaEsistenzaDuePEC() { } } - @Then("Si visualizzano correttamente tutti gli elementi della sezione altri recapiti") - public void siVisualizzanoCorrettamenteTuttiGliElementiDellaSezioneAltriRecapiti() { - logger.info("Si controlla che si visualizzano correttamente tutti gli elementi della sezione recapiti gia associati"); - DataPopulation.waitTime(20); - this.driver.navigate().refresh(); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); - iTuoiRecapitiPage.waitLoadRecapitiGiaAssociatoSection(); - } - @And("Nella pagina I Tuoi Recapiti si controlla che ci sia già una Email diversa") public void nellaPaginaITuoiRecapitiSiControllaCheCiSiaGiaUnaEmailDiversa() { logger.info("Si controlla che che ci sia già una Email diversa"); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java index da9b58ca8..bea1c26de 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java @@ -324,7 +324,7 @@ public void siControllaCheLaDelegaNonSiPiuPresenteInElenco() { this.datiDelega = this.dataPopulation.readDataPopulation("personaGiuridica.yaml"); - deleghePGPagoPAPage.aggionamentoPagina(); + deleghePGPagoPAPage.aggiornamentoPagina(); if (!deleghePGPagoPAPage.cercaEsistenzaDelegaPG(this.datiDelega.get("ragioneSociale").toString())) { logger.info("La delega è stata rifiutata correttamente"); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java index ea7ee6cd6..09a527819 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java @@ -62,7 +62,7 @@ public void siVerificaAvvenutoDisservizioInPaginaStatoPiattaforma() { boolean res = false; for (int i = 0; i < 2; i++) { DataPopulation.waitTime(15); - disserviziAppPage.aggionamentoPagina(); + disserviziAppPage.aggiornamentoPagina(); if (disserviziAppPage.checkDisservizioInCorso()) { res = true; break; diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java index 1b24c3b9f..6c565aa7e 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java @@ -68,11 +68,12 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlNumeroDiTelefonoDelPGECliccaSul recapitiDestinatarioPage.clickAvvisamiSMS(); } - @Then("Si visualizzano correttamente tutti gli elementi della sezione altri recapiti della persona giuridica") - public void siVisualizzanoCorrettamenteTuttiGliElementiDellaSezioneAltriRecapitiDellaPersonaGiuridica() { - logger.info("Si visualizzano correttamente tutti gli elementi della sezione altri recapiti della persona giuridica"); - - recapitiDestinatarioPage.visualizzazioneSezioneAltriRecapitiPG(); + @Then("Si visualizzano correttamente tutti gli elementi della sezione altri recapiti") + public void siVisualizzanoCorrettamenteTuttiGliElementiDellaSezioneAltriRecapiti() { + logger.info("Si visualizzano correttamente tutti gli elementi della sezione altri recapiti"); + DataPopulation.waitTime(10); + this.driver.navigate().refresh(); + recapitiDestinatarioPage.visualizzazioneCampiSezioneAltriRecapiti(); } @And("Nella pagina I Tuoi Recapiti di PG, si controlla che ci sia già una pec") 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 54c1ff607..9ea49eb8b 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 @@ -382,7 +382,7 @@ public void verificaDelloStatoDellaNotificaComeDepositata(String statoNotifica) String coidiceIUNOld = this.datiNotifica.get("codiceIUN").toString(); for (int i = 0; i < 12; i++) { if (i >= 1) { - piattaformaNotifichePage.aggionamentoPagina(); + piattaformaNotifichePage.aggiornamentoPagina(); piattaformaNotifichePage.insertCodiceFiscale(this.personaFisica.get("codiceFiscale").toString()); piattaformaNotifichePage.inserimentoArcoTemporale(dataNotifica, dataNotifica); piattaformaNotifichePage.selezionareStatoNotifica("ACCEPTED"); @@ -632,7 +632,7 @@ public void siVerificaCheLaNotificaSiaNelloStato() { throw new RuntimeException(e); } if (!piattaformaNotifichePage.IsAnAdvancedStatus()) { - piattaformaNotifichePage.aggionamentoPagina(); + piattaformaNotifichePage.aggiornamentoPagina(); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); piattaformaNotifichePage.inserimentoCodiceIUN(datiNotifica.get("codiceIUN").toString()); piattaformaNotifichePage.selectFiltraButton(); @@ -669,7 +669,7 @@ public void verificaDelloStatoDellaNotificaInviataTramitePecCome(String statoNot CookiesSection cookiesSection = new CookiesSection(this.driver); for (int i = 0; i < 12; i++) { if (i >= 1) { - piattaformaNotifichePage.aggionamentoPagina(); + piattaformaNotifichePage.aggiornamentoPagina(); if (!CookieConfig.isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { cookiesSection.selezionaAccettaTuttiButton(); @@ -703,7 +703,7 @@ public void nellaPaginaPiattaformaNotificheInserireIlCodiceIUNDellaNotificaPec(S this.datiNotifica = dataPopulation.readDataPopulation(dpDatiiNotifica + ".yaml"); - piattaformaNotifichePage.aggionamentoPagina(); + piattaformaNotifichePage.aggiornamentoPagina(); piattaformaNotifichePage.waitLoadRefreshPage(); piattaformaNotifichePage.inserimentoCodiceIUN(this.datiNotifica.get("codiceIUN").toString()); } @@ -880,7 +880,7 @@ public void verificaDelloStatoDellaNotificaPersonaGiuridicaComeDepositata(String String codiceIUN = ""; for (int i = 0; i < 12; i++) { if (i >= 1) { - piattaformaNotifichePage.aggionamentoPagina(); + piattaformaNotifichePage.aggiornamentoPagina(); if (!CookieConfig.isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { cookiesSection.selezionaAccettaTuttiButton(); @@ -1087,7 +1087,7 @@ public void siVerificaCheLaNotificaSiaNelloStatoConsegnata() { throw new RuntimeException(e); } if (piattaformaNotifichePage.getListStato("Depositata") != 0 && piattaformaNotifichePage.getListStato("Invio in corso") != 0) { - piattaformaNotifichePage.aggionamentoPagina(); + piattaformaNotifichePage.aggiornamentoPagina(); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); piattaformaNotifichePage.inserimentoCodiceIUN(datiNotifica.get("codiceIUN").toString()); piattaformaNotifichePage.selectFiltraButton(); diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature index ba7c594a7..f4617843a 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapitiPG/008_071_visualizzazioneAltriRecapitiPG.feature @@ -17,5 +17,5 @@ Feature: La persona giuridica visualizza tutti gli elementi della sezione altri And Nella pagina I Tuoi Recapiti si inserisce il codice OTP "personaGiuridica" Then Nella pagina i Tuoi Recapiti si controlla che la pec sia stata inserita correttamente And Nella sezione altri recapiti si inserisce un recapito - Then Si visualizzano correttamente tutti gli elementi della sezione altri recapiti della persona giuridica + Then Si visualizzano correttamente tutti gli elementi della sezione altri recapiti And Logout da portale persona giuridica From 8819be275f0e5a1c59297c6abb7270400b74787b Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli Date: Tue, 26 Mar 2024 17:10:34 +0100 Subject: [PATCH 3/7] unused method deleted --- .../destinatario/personaFisica/ITuoiRecapitiPage.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java index 3fa05098c..a872d9ef2 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ITuoiRecapitiPage.java @@ -204,17 +204,6 @@ public void selezionaTipoPec() { this.element(opzionePEC).click(); } - public void waitLoadRecapitiGiaAssociatoSection() { - By titlePage = By.xpath("//p[contains(text(),'Già associati')]"); - By tableBy = By.xpath("//table[@aria-label = 'Già associati']"); - By eliminaBy = By.xpath("//form[@data-testid = 'specialContactForm']//div//button[contains(text(),'Elimina')]"); - By modificaBy = By.xpath("//form[@data-testid = 'specialContactForm']//div//button[contains(text(),'Modifica')]"); - getWebDriverWait(10).withMessage("Non si visualizza il titolo 'Gia Associati'").until(ExpectedConditions.visibilityOfElementLocated(titlePage)); - getWebDriverWait(10).withMessage("Non si visualizza la tabella 'Gia Associati'").until(ExpectedConditions.visibilityOfElementLocated(tableBy)); - getWebDriverWait(10).withMessage("Non si visualizza il bottone elimina della sezione recapiti gia associati ").until(ExpectedConditions.visibilityOfElementLocated(eliminaBy)); - getWebDriverWait(10).withMessage("Non si visualizza il bottone modifica della sezione recapiti gia associati").until(ExpectedConditions.visibilityOfElementLocated(modificaBy)); - } - public void checkPostModifica() { By saveButton = By.id("saveModifyButton-default"); By cancelButton = By.xpath("//button[contains(text(),'Annulla')]"); From 3ea90b357c759171b0f2c07c83bdc48684708356 Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli Date: Thu, 28 Mar 2024 14:51:37 +0100 Subject: [PATCH 4/7] refactor test's step without yaml logic --- .../e2e/common/RecapitiDestinatarioPage.java | 22 +++++++++---------- .../deleghePG/013_117_revocaDelegaPG.feature | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java index 4f0593930..a1eeae309 100644 --- a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java @@ -540,27 +540,27 @@ public void visualizzazioneSezioneAltriRecapiti() { public void visualizzazioneCampiSezioneAltriRecapiti() { vaiInFondoAllaPagina(); - By altriRecapitiSectionBy = By.xpath(".//h5[contains(@id, 'specialContact')]"); + By altriRecapitiSectionBy = By.id("specialContactTitle"); By titleGiaAssociatiBy = By.xpath("//p[contains(text(), 'Già associati')]"); WebElement tableGiaAssociati = driver.findElement(By.xpath("//table[@aria-label='Già associati']")); - By modifyButtonBy = By.xpath(".//button[contains(@id, 'modifyContact')]"); - By deleteButtonBy = By.xpath(".//button[contains(@id, 'cancelContact')]"); - getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); + getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); getWebDriverWait(10).withMessage("Non si visualizza il titolo della tabella").until(ExpectedConditions.visibilityOfElementLocated(titleGiaAssociatiBy)); getWebDriverWait(10).withMessage("Non si visualizza la tabella dei recapiti già associati").until(ExpectedConditions.visibilityOf(tableGiaAssociati)); - getWebDriverWait(10).withMessage("Bottone modifica non visualizzato e non cliccabile").until(ExpectedConditions.and( - ExpectedConditions.visibilityOfElementLocated(modifyButtonBy), - ExpectedConditions.elementToBeClickable(modifyButtonBy))); - getWebDriverWait(10).withMessage("Bottone elimina non visualizzato e non cliccabile").until(ExpectedConditions.and( - ExpectedConditions.visibilityOfElementLocated(deleteButtonBy), - ExpectedConditions.elementToBeClickable(deleteButtonBy))); List tableRows = tableGiaAssociati.findElements(By.xpath(".//tbody/tr")); for (WebElement row : tableRows) { List columns = row.findElements(By.xpath(".//td")); if (columns.get(0).getText().contains("Comune di Verona")) { logger.info("Si visualizza l'ente inserito correttamente"); } - if (columns.get(1).getText().contains("@")) { + if (columns.get(1).getText().contains("pec@pec.pagopa.it")) { + By modifyButtonBy = By.xpath(".//button[contains(@id, 'modifyContact')]"); + By deleteButtonBy = By.xpath(".//button[contains(@id, 'cancelContact')]"); + getWebDriverWait(10).withMessage("Bottone modifica non visualizzato e non cliccabile").until(ExpectedConditions.and( + ExpectedConditions.visibilityOfElementLocated(modifyButtonBy), + ExpectedConditions.elementToBeClickable(modifyButtonBy))); + getWebDriverWait(10).withMessage("Bottone elimina non visualizzato e non cliccabile").until(ExpectedConditions.and( + ExpectedConditions.visibilityOfElementLocated(deleteButtonBy), + ExpectedConditions.elementToBeClickable(deleteButtonBy))); logger.info("Si visualizza l'indirizzo pec inserito correttamente"); } if (columns.get(2).getText().contains("-") && columns.get(3).getText().contains("-")) { diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/deleghePG/013_117_revocaDelegaPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/deleghePG/013_117_revocaDelegaPG.feature index dccb7a1d4..073e1e87e 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/deleghePG/013_117_revocaDelegaPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/deleghePG/013_117_revocaDelegaPG.feature @@ -17,6 +17,6 @@ Feature:La persona giuridica revoca una delega | companyName | Convivio Spa | | displayName | Convivio Spa | | person | false | - And Si controlla che non sia presente una delega con stesso nome "nuovaDelegaPG" persona giuridica + And Si controlla che non sia presente una delega con stesso nome persona giuridica "Le Epistolae srl" And Nella sezione Deleghe sezione Deleghe dell'impresa si controlla che non sia più presente la delega "nuovaDelegaPG" And Logout da portale persona giuridica From a2d61b54ad53497724727676f3f274eeec1efe1a Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli Date: Fri, 29 Mar 2024 14:39:23 +0100 Subject: [PATCH 5/7] merge conflicts resolved --- .../it/pn/frontend/e2e/common/BasePage.java | 18 ++- .../pn/frontend/e2e/common/HelpdeskPage.java | 2 +- .../e2e/common/RecapitiDestinatarioPage.java | 1 + .../frontend/e2e/config/CustomHttpClient.java | 4 +- .../it/pn/frontend/e2e/listeners/Hooks.java | 2 +- .../e2e/listeners/LoggerStartupListener.java | 0 .../frontend/e2e/listeners/NetWorkInfo.java | 15 ++ .../frontend/e2e/model/enums/AppPortal.java | 19 +++ .../frontend/e2e/model/enums/TokenLogin.java | 32 +++++ .../pages/mittente/DisserviziAppPAPage.java | 44 +++--- .../pages/mittente/InvioNotifichePAPage.java | 4 +- .../mittente/PiattaformaNotifichePage.java | 56 +++++++- .../frontend/e2e/rest/RestNotification.java | 23 +++ .../frontend/e2e/section/CookiesSection.java | 16 +-- .../mittente/DestinatarioPASection.java | 1 + .../e2e/section/mittente/HeaderPASection.java | 17 ++- .../InformazioniPreliminariPASection.java | 33 +++-- .../section/mittente/SuccessPASection.java | 10 +- .../pn/frontend/e2e/utility/CookieConfig.java | 0 .../frontend/e2e/utility/DataPopulation.java | 44 ++++++ .../pn/frontend/e2e/utility/DownloadFile.java | 0 .../it/pn/frontend/e2e/utility/WebTool.java | 136 ++++++++++++++++++ .../AccettazioneRichiestaNotifica.java | 23 ++- .../frontend/e2e/listeners/NetWorkInfo.java | 60 -------- .../stepDefinitions/common/HelpdeskTest.java | 10 +- .../personaFisica/DeleghePagoPATest.java | 5 +- .../LoginPersonaFisicaPagoPA.java | 3 +- .../NotifichePersonaFisicaPagoPATest.java | 54 +++++-- .../RecapitiPersonaFisicaTest.java | 9 +- .../personaGiuridica/DeleghePGPagoPATest.java | 54 ++++--- .../personaGiuridica/DisserviziAppPGTest.java | 4 +- .../personaGiuridica/LoginPGPagoPATest.java | 7 +- .../RecapitiPGPagoPaTest.java | 3 +- .../mittente/LoginMittentePagoPA.java | 3 +- .../mittente/NewNotifichePagoPATest.java | 10 +- .../mittente/NotificaMittentePagoPATest.java | 120 +++++++++++++--- .../RicercaNotificheMittentePagoPATest.java | 2 +- .../frontend/e2e/utility/DataPopulation.java | 106 -------------- ...inatarioConIndirizzoFornitoDallaPA.feature | 44 ++++++ ...isualizzazioneDisserviziInCorsoPA.feature} | 0 40 files changed, 668 insertions(+), 326 deletions(-) rename src/{test => main}/java/it/pn/frontend/e2e/listeners/Hooks.java (99%) rename src/{test => main}/java/it/pn/frontend/e2e/listeners/LoggerStartupListener.java (100%) create mode 100644 src/main/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java create mode 100644 src/main/java/it/pn/frontend/e2e/model/enums/AppPortal.java create mode 100644 src/main/java/it/pn/frontend/e2e/model/enums/TokenLogin.java rename src/{test => main}/java/it/pn/frontend/e2e/utility/CookieConfig.java (100%) create mode 100644 src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java rename src/{test => main}/java/it/pn/frontend/e2e/utility/DownloadFile.java (100%) create mode 100644 src/main/java/it/pn/frontend/e2e/utility/WebTool.java delete mode 100644 src/test/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java delete mode 100644 src/test/java/it/pn/frontend/e2e/utility/DataPopulation.java create mode 100644 src/test/resources/feature/2-mittente/1_invioNotifiche/128_A1_invioNotificaADestinatarioConIndirizzoFornitoDallaPA.feature rename src/test/resources/feature/2-mittente/6_disserviziAppPA/{023_a23_visualizzazioneDisserviziInCorsoPA.feature => 023_A1_visualizzazioneDisserviziInCorsoPA.feature} (100%) diff --git a/src/main/java/it/pn/frontend/e2e/common/BasePage.java b/src/main/java/it/pn/frontend/e2e/common/BasePage.java index a932f1a98..35726a84f 100644 --- a/src/main/java/it/pn/frontend/e2e/common/BasePage.java +++ b/src/main/java/it/pn/frontend/e2e/common/BasePage.java @@ -12,7 +12,6 @@ import java.util.concurrent.TimeUnit; public class BasePage { - protected WebDriver driver; protected int loadComponentWaitTime = Integer.parseInt(System.getProperty("loadComponentWaitTime")); @@ -44,6 +43,19 @@ protected void scrollToElementClickAndInsertText(WebElement element, String text } } + public void scrollToElementAndClick(WebElement element) { + try { + if (!element.isDisplayed()) { + loggerBase.info("scroll elemento"); + this.js().executeScript("arguments[0].scrollIntoView(true);", element); + } + this.js().executeScript("arguments[0].click()", element); + } catch (ElementNotInteractableException e) { + loggerBase.error("elemento non interagibile"); + this.js().executeScript("arguments[0].click()", element); + } + } + protected WebDriverWait getWebDriverWait(long timeout) { return new WebDriverWait(this.driver, Duration.ofSeconds(timeout), Duration.ofMillis(500)); } @@ -62,7 +74,6 @@ protected JavascriptExecutor js() { public void waitLoadPage() { try { - TimeUnit.SECONDS.sleep(7); TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { throw new RuntimeException(e); @@ -98,5 +109,4 @@ public void clearWebElementField(WebElement element) { element.sendKeys(Keys.BACK_SPACE); } } -} - +} \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/common/HelpdeskPage.java b/src/main/java/it/pn/frontend/e2e/common/HelpdeskPage.java index e85b87903..0cb34d235 100644 --- a/src/main/java/it/pn/frontend/e2e/common/HelpdeskPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/HelpdeskPage.java @@ -176,7 +176,7 @@ public void handleDisservizio(String type) { public boolean checkIsCreatedDisservizio() { try { WebElement dateDisservizio = this.elements(By.xpath("//div[@data-field='data']")).get(1); - this.getWebDriverWait(30).until(ExpectedConditions.visibilityOf(dateDisservizio)); + this.getWebDriverWait(10).until(ExpectedConditions.visibilityOf(dateDisservizio)); if (dateDisservizio.getText() != null && !dateDisservizio.getText().isEmpty()) { logger.info("disservizio già in corso"); return true; diff --git a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java index a1eeae309..07f78a72f 100644 --- a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java @@ -566,6 +566,7 @@ public void visualizzazioneCampiSezioneAltriRecapiti() { if (columns.get(2).getText().contains("-") && columns.get(3).getText().contains("-")) { logger.info("Si visualizzano il cellulare e la mail inseriti correttamente"); } + break; } } diff --git a/src/main/java/it/pn/frontend/e2e/config/CustomHttpClient.java b/src/main/java/it/pn/frontend/e2e/config/CustomHttpClient.java index 2b634947e..604105fa8 100644 --- a/src/main/java/it/pn/frontend/e2e/config/CustomHttpClient.java +++ b/src/main/java/it/pn/frontend/e2e/config/CustomHttpClient.java @@ -162,8 +162,8 @@ public List sendHttpGetRequestList(String endpoint, Map headers, Class responseType) throws IOException { - + public ResponseType sendHttpGetRequest(String endpoint, Map headers, Class responseType) throws IOException { + String apiUrl = baseUrlApi + endpoint; try (CloseableHttpClient client = HttpClients.createDefault()) { this.httpRequest = ClassicRequestBuilder .get(apiUrl) diff --git a/src/test/java/it/pn/frontend/e2e/listeners/Hooks.java b/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java similarity index 99% rename from src/test/java/it/pn/frontend/e2e/listeners/Hooks.java rename to src/main/java/it/pn/frontend/e2e/listeners/Hooks.java index 70122e264..ca8c33599 100644 --- a/src/test/java/it/pn/frontend/e2e/listeners/Hooks.java +++ b/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java @@ -88,7 +88,7 @@ protected void chrome() { driver.manage().window().maximize(); } - driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20)); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); devTools = ((HasDevTools) driver).getDevTools(); devTools.createSession(); diff --git a/src/test/java/it/pn/frontend/e2e/listeners/LoggerStartupListener.java b/src/main/java/it/pn/frontend/e2e/listeners/LoggerStartupListener.java similarity index 100% rename from src/test/java/it/pn/frontend/e2e/listeners/LoggerStartupListener.java rename to src/main/java/it/pn/frontend/e2e/listeners/LoggerStartupListener.java diff --git a/src/main/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java b/src/main/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java new file mode 100644 index 000000000..0c5b5545c --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java @@ -0,0 +1,15 @@ +package it.pn.frontend.e2e.listeners; + +import lombok.Data; + +@Data +public class NetWorkInfo { + + private String requestId; + private String requestUrl; + private String requestMethod; + private String responseStatus; + private String responseBody; + private String authorizationBearer; + +} diff --git a/src/main/java/it/pn/frontend/e2e/model/enums/AppPortal.java b/src/main/java/it/pn/frontend/e2e/model/enums/AppPortal.java new file mode 100644 index 000000000..6d85d09a3 --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/model/enums/AppPortal.java @@ -0,0 +1,19 @@ +package it.pn.frontend.e2e.model.enums; + +public enum AppPortal { + PA("https://selfcare.", "#selfCareToken=", TokenLogin.PA_TOKEN.getToken()), + PF("https://cittadini.", "#token=", TokenLogin.PF_DELEGATE_TOKEN.getToken()), + PG("https://imprese.", "#selfCareToken=", TokenLogin.PG_DELEGATE_TOKEN.getToken()), + HELPDESK("https://helpdesk."); + public final String url; + + private AppPortal(String url, String paramToken, String token) { + String env = System.getProperty("environment"); + this.url = url + env + ".notifichedigitali.it/" + paramToken + token; + } + + private AppPortal(String url) { + String env = System.getProperty("environment"); + this.url = url + env + ".notifichedigitali.it/"; + } +} diff --git a/src/main/java/it/pn/frontend/e2e/model/enums/TokenLogin.java b/src/main/java/it/pn/frontend/e2e/model/enums/TokenLogin.java new file mode 100644 index 000000000..a54bba3b8 --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/model/enums/TokenLogin.java @@ -0,0 +1,32 @@ +package it.pn.frontend.e2e.model.enums; + +public enum TokenLogin { + PF_DELEGATE_TOKEN( + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjBBS3RoQjlYNS1fNHRWUGxNRmZUTHdWSkt1akxuSEhkODdSUkdtX1VTR0EifQ.eyJuYW1lIjoiR2FpbyBHaXVsaW8iLCJmYW1pbHlfbmFtZSI6IkNlc2FyZSIsInVpZCI6ImEwMWI2MmQ0LWUzZjgtNDhmMy1hNGQ4LWNmNjI4YTM0Yjc0NSIsImZpc2NhbF9udW1iZXIiOiJDU1JHR0w0NEwxM0g1MDFFIiwic3BpZF9sZXZlbCI6Imh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMiIsImZyb21fYWEiOmZhbHNlLCJhdWQiOiJjaXR0YWRpbmkuZGV2Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwibGV2ZWwiOiJMMiIsImlhdCI6MTY5OTg4NjU3OCwiZXhwIjoyMDE1NDQ5MjAwLCJpc3MiOiJodHRwczovL2h1Yi1sb2dpbi5zcGlkLmRldi5ub3RpZmljaGVkaWdpdGFsaS5pdCIsImp0aSI6Il9iMGI5MGYzNjc2ZTA1MjYxMzAzYyJ9.PaTdY6Hl8RmIJdmobl0ahjawsWdmXrehnWEzRgmQT4Wf7i4Lvz8h_FgXUtt9TB8rZ1t92j2XrqOip1Pa_fSXAUv0Gx4wgb1W4ll74iPs7Mf1sXsZxFQyrd_XwTcvnRYHalAsOizbINNckm-NB0Vo-bRzlgpqSN0dnZ2r9lYSryf5H-B7214mlXvmQu-QD64iyLibdmU8cFim9E5A3hIT9vCGdSGZBsLGkC_oYhmMGLz-N4UeChJid98c37mI4EGpFMwJ7sifDgggCzHbaQBdBKlNPzRIosGZLju6zILzZsEpVkIhYNi5suf5sJeHR56adXKlYIkMWUc8Gdh5g5YskA", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkU4aDZkaUZ2amtCdk1kYVF3SjBMWFlyVW5BeDYwWm1NQTFoUVc3UGtrSVkifQ.eyJzcGlkX2xldmVsIjoiaHR0cHM6Ly93d3cuc3BpZC5nb3YuaXQvU3BpZEwyIiwibmFtZSI6IkdhaW8gR2l1bGlvIiwiZmFtaWx5X25hbWUiOiJDZXNhcmUiLCJ1aWQiOiJhMDFiNjJkNC1lM2Y4LTQ4ZjMtYTRkOC1jZjYyOGEzNGI3NDUiLCJmaXNjYWxfbnVtYmVyIjoiQ1NSR0dMNDRMMTNINTAxRSIsImZyb21fYWEiOmZhbHNlLCJhdWQiOiJjaXR0YWRpbmkudGVzdC5ub3RpZmljaGVkaWdpdGFsaS5pdCIsImxldmVsIjoiTDIiLCJpYXQiOjE2OTk4OTI1OTIsImV4cCI6MjAxNTQ0OTIwMCwiaXNzIjoiaHR0cHM6Ly9odWItbG9naW4uc3BpZC50ZXN0Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwianRpIjoiXzdkMjdlYTcwMWEzZDljMzgzZGI1In0.t4JdDC9BrO__yVJ0cX7fDm_RfUSgZZdGhDnE4Uq77JjIVmi2oQz9dejom6scBa49A0VqETGeBkm32t145YIbJruNg5umyUIHJwr7tNk6YCHnk2_moBcLY2qFBBl66L95-yG0R3nTJAt1whhBkoxMqFlA7_5EgHtSAGhXK040owuUINm1aVPQXRUnvyTI8pqPVKj4cQM-sESVtdr5Bn81h8WUlnm3htIq-VlYWi-ntyYVpo1vCDQPJpytPqzS6qh6mVweTKdorLmWSpPpTARB8klaRPzkYaVA54Bb2Z64hmpPWmKcX8heXbO_lTzuRCzoe-GFAD-k2FkmIGWMjdxYFA"), + PF_DELEGATOR_TOKEN( + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjBBS3RoQjlYNS1fNHRWUGxNRmZUTHdWSkt1akxuSEhkODdSUkdtX1VTR0EifQ.eyJuYW1lIjoiTHVjcmV6aWEiLCJmYW1pbHlfbmFtZSI6IkJvcmdpYSIsInNwaWRfbGV2ZWwiOiJodHRwczovL3d3dy5zcGlkLmdvdi5pdC9TcGlkTDIiLCJ1aWQiOiIyY2JkMzkzZi0yNmI2LTQxODYtOTg4Ny1jYzAzZWE1MzFlYzciLCJmaXNjYWxfbnVtYmVyIjoiQlJHTFJaODBENThINTAxUSIsImZyb21fYWEiOmZhbHNlLCJhdWQiOiJjaXR0YWRpbmkuZGV2Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwibGV2ZWwiOiJMMiIsImlhdCI6MTY5OTg4NzkxOSwiZXhwIjoyMDE1NDQ5MjAwLCJpc3MiOiJodHRwczovL2h1Yi1sb2dpbi5zcGlkLmRldi5ub3RpZmljaGVkaWdpdGFsaS5pdCIsImp0aSI6Il9hZDY2NzE3Y2QxNDE1M2JmZjliMSJ9.KKA-NAKvnrRW5aj79H3dmhZgc3k-5n4k2rih172Y5Y8SDXFJbJzgscvfB8hzstuLpoXybr4cGtVwuk7ML82u2r0KMz_rQ5TLC3kTi3hakK0vF-lHZQKarh2PayYWzXAqOEkKws2KtWn9aAB1vFrkccOKmxi0XOZ0v15Mg1p4IKVOb4DihIcbMSGZXAGNJUCyL7nKiH8cy7nR81hGf6loDMEjvWHXI9GAm1rNLcSyKhcq1cHc9Y5vpBpTsgwlYxsYeXUbZHbDa_g5-_K3JXaxaAN75lcfcvZFl80Zq297YoE2C0tZSRnBI8owO6ewJgZFKFK7qlP_jjcD98Ttstf9HQ", + "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkU4aDZkaUZ2amtCdk1kYVF3SjBMWFlyVW5BeDYwWm1NQTFoUVc3UGtrSVkifQ.eyJuYW1lIjoiTHVjcmV6aWEiLCJmYW1pbHlfbmFtZSI6IkJvcmdpYSIsInNwaWRfbGV2ZWwiOiJodHRwczovL3d3dy5zcGlkLmdvdi5pdC9TcGlkTDIiLCJ1aWQiOiJkZjJhMTI2OC1lY2ZlLTQzMzAtYjY1MC01MTg0YTdlYjA3NTYiLCJmaXNjYWxfbnVtYmVyIjoiQlJHTFJaODBENThINTAxUSIsImZyb21fYWEiOmZhbHNlLCJhdWQiOiJjaXR0YWRpbmkudGVzdC5ub3RpZmljaGVkaWdpdGFsaS5pdCIsImxldmVsIjoiTDIiLCJpYXQiOjE2OTk4ODk3ODUsImV4cCI6MjAxNTQ0OTIwMCwiaXNzIjoiaHR0cHM6Ly9odWItbG9naW4uc3BpZC50ZXN0Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwianRpIjoiXzFmNTZjYjQ3MjM0M2EzMDExYTgyIn0.kq9aHDxtTZ7tzvLiIIDH88ZnIHXl5OR0j4iQldPQuwomDo3BqCPEev1Tg1HtTNKEE1p5rQw4mIJKYdSO2aARZanpYcmh49HmFtK8HBLnJtlVD59pIlHWcijpODGJkZuH8Jp8_nupFVEr_G-wsWeixsfjjPR09gA5gVFi13WTeZroz1_cIaZiuF8odwYXa5-vJoJCdVF-jEsSv4uHy_XtZVI8yffc3GQH5E0mHFA8Ua-Owdb15LPfHFsC5lWDemNa6C9f_qABWTCxS24geTWFgulB1gi5aFL8intFsnvLlODTeemPDG2gljS6OJYzFdqh9CwtTMLdjMdg3y5UzoPy0A"), + PG_DELEGATE_TOKEN( + "eyJraWQiOiJqd3QtZXhjaGFuZ2VfYzc6ZTI6NjQ6YzI6YzY6MTg6Nzk6Nzc6NDc6MDY6NzM6Nzk6OGQ6ZGY6MTA6ZTYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmYW1pbHlfbmFtZSI6IkFsaWdoaWVyaSIsImZpc2NhbF9udW1iZXIiOiJMR0hETlQwMFAxNEQ2MTJEIiwibmFtZSI6IkRhbnRlIiwic3BpZF9sZXZlbCI6Imh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMiIsImZyb21fYWEiOmZhbHNlLCJ1aWQiOiJlNDkwZjAyZS05NDI5LTRiMzgtYmIxMS1kZGI4YTU2MWZiNjIiLCJsZXZlbCI6IkwyIiwiaWF0IjoxNzAwMjIyOTQ5LCJleHAiOjE5MDAyMjM4NDksImF1ZCI6ImltcHJlc2UuZGV2Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwiaXNzIjoiaHR0cHM6Ly9wbnBnLnVhdC5zZWxmY2FyZS5wYWdvcGEuaXQiLCJqdGkiOiIwMGNhMDA3Zi0xNjQxLTRkNDUtYjM1MC0xZDY4MzBmYTQ3MzQiLCJlbWFpbCI6IkRhbnRlQWxpZ2hpZXJpQHBhcmFkaXNvLml0Iiwib3JnYW5pemF0aW9uIjp7ImlkIjoiZDBmNTJjN2QtNzZkNS00NTIwLTg5NzEtZWRmZmViNWI0NmQ1IiwibmFtZSI6IkNvbnZpdmlvIFNwYSIsInJvbGVzIjpbeyJwYXJ0eVJvbGUiOiJNQU5BR0VSIiwicm9sZSI6InBnLWFkbWluIn1dLCJzdWJVbml0Q29kZSI6bnVsbCwic3ViVW5pdFR5cGUiOm51bGwsImFvb1BhcmVudCI6bnVsbCwicGFyZW50RGVzY3JpcHRpb24iOm51bGwsInJvb3RQYXJlbnQiOnsiaWQiOm51bGwsImRlc2NyaXB0aW9uIjpudWxsfSwiZmlzY2FsX2NvZGUiOiIyNzk1NzgxNDQ3MCIsImlwYUNvZGUiOiIyNzk1NzgxNDQ3MCJ9LCJkZXNpcmVkX2V4cCI6MTkwMDIyMzg0OX0.FRNqnCz9WjeUSZ7URfAdmyjusxcePlDM7wmK038KJSSbLTkIbuq_Yhz4DIQN6wvK0WeQjNc2NZ5dKOQV9nuMzujXSvM3zoFA1VeGuxwDFCcBNPlDKCj281G8nuSlLLuaLD-dqZ9ObaEwAd5d1xTzhC0-D3pR34kQ1Ms0vK6xHrhCC7DHGLMY4IGyDYfnqS-b9-oeg61mCjk5nBaK1gltnr0Y_bfI0GhVYOrR06cTCeyh-tfpexsMzGtUYt24sLnIOHu9DU0BQv8AywHsu1zb_jtugC81TgZEKhZmSNsYcqFT1j-Eg30zHISjrMe6-xqgXdmSyhwrFrDyJHwnGnssGA", + "eyJraWQiOiJqd3QtZXhjaGFuZ2VfYzc6ZTI6NjQ6YzI6YzY6MTg6Nzk6Nzc6NDc6MDY6NzM6Nzk6OGQ6ZGY6MTA6ZTYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmYW1pbHlfbmFtZSI6IkFsaWdoaWVyaSIsImZpc2NhbF9udW1iZXIiOiJMR0hETlQwMFAxNEQ2MTJEIiwibmFtZSI6IkRhbnRlIiwic3BpZF9sZXZlbCI6Imh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMiIsImZyb21fYWEiOmZhbHNlLCJ1aWQiOiJlNDkwZjAyZS05NDI5LTRiMzgtYmIxMS1kZGI4YTU2MWZiNjIiLCJsZXZlbCI6IkwyIiwiaWF0IjoxNzAwMjIzMDE3LCJleHAiOjE5MDAyMjM5MTcsImF1ZCI6ImltcHJlc2UudGVzdC5ub3RpZmljaGVkaWdpdGFsaS5pdCIsImlzcyI6Imh0dHBzOi8vcG5wZy51YXQuc2VsZmNhcmUucGFnb3BhLml0IiwianRpIjoiMmVlYmY5ZTMtYTBkYS00NTEzLTkxMWQtNjMyMjBjODE2NTIyIiwiZW1haWwiOiJEYW50ZUFsaWdoaWVyaUBwYXJhZGlzby5pdCIsIm9yZ2FuaXphdGlvbiI6eyJpZCI6ImQwZjUyYzdkLTc2ZDUtNDUyMC04OTcxLWVkZmZlYjViNDZkNSIsIm5hbWUiOiJDb252aXZpbyBTcGEiLCJyb2xlcyI6W3sicGFydHlSb2xlIjoiTUFOQUdFUiIsInJvbGUiOiJwZy1hZG1pbiJ9XSwic3ViVW5pdENvZGUiOm51bGwsInN1YlVuaXRUeXBlIjpudWxsLCJhb29QYXJlbnQiOm51bGwsInBhcmVudERlc2NyaXB0aW9uIjpudWxsLCJyb290UGFyZW50Ijp7ImlkIjpudWxsLCJkZXNjcmlwdGlvbiI6bnVsbH0sImZpc2NhbF9jb2RlIjoiMjc5NTc4MTQ0NzAiLCJpcGFDb2RlIjoiMjc5NTc4MTQ0NzAifSwiZGVzaXJlZF9leHAiOjE5MDAyMjM5MTd9.YCN_gcThDAj7Xf4H6aWUGGuO7f5NwdfRin9bD3uUy9IcX1w3WsiuscUQNvJdCo4PCyL0MFrQsB2-Xyf7O-ygguRpzDeK8rxMvgAvxJaQEiKv0FllF2b90cTsubIHdaY0VdgOhmLubuZcPGVpOfP14uC77J7cgYmrYTLIL28PE-JloFY3NTwOdxpgsEU3cSoNB13GabzWTwzAji-2d3dfW6e2_-ybd0LZhzukj3ev0OprG0ZP-4aIRXK8Arr1R5V_zYZR6kRxdpvRTLRsr12Mcc7AiJF6LWkc8Ddem8RfHzBhneXhWRghn6iwCR1x-kRETWxUYBSyd72gqn8DaLQFoQ"), + PG_DELEGATOR_TOKEN( + "eyJraWQiOiJqd3QtZXhjaGFuZ2VfYzc6ZTI6NjQ6YzI6YzY6MTg6Nzk6Nzc6NDc6MDY6NzM6Nzk6OGQ6ZGY6MTA6ZTYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmYW1pbHlfbmFtZSI6IlBldHJhcmNhIiwiZmlzY2FsX251bWJlciI6IlBUUkZOQzA0QTAxQzM1MkUiLCJuYW1lIjoiRnJhbmNlc2NvIiwic3BpZF9sZXZlbCI6Imh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMiIsImZyb21fYWEiOmZhbHNlLCJ1aWQiOiJkNWE4YTM4MC05MTBkLTQ5ZGMtOWZiOC04NDcwMGM2NDQxMGYiLCJsZXZlbCI6IkwyIiwiaWF0IjoxNzAwMjIzMDkzLCJleHAiOjE5MDAyMjM5OTMsImF1ZCI6ImltcHJlc2UuZGV2Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwiaXNzIjoiaHR0cHM6Ly9wbnBnLnVhdC5zZWxmY2FyZS5wYWdvcGEuaXQiLCJqdGkiOiJjODA0Y2M1Ny0xZWU5LTQzZTYtOWFkMy00NTVlMmVlNTAwOWIiLCJlbWFpbCI6IkZyYW5jZXNjb1BldHJhcmNhQHNlY3JldHVtLml0Iiwib3JnYW5pemF0aW9uIjp7ImlkIjoiZTI0ODYxMjYtNDM5NC00MzAwLWEyNWQtYjZkODc5ZmExNzE3IiwibmFtZSI6IkxlIEVwaXN0b2xhZSBzcmwiLCJyb2xlcyI6W3sicGFydHlSb2xlIjoiTUFOQUdFUiIsInJvbGUiOiJwZy1hZG1pbiJ9XSwic3ViVW5pdENvZGUiOm51bGwsInN1YlVuaXRUeXBlIjpudWxsLCJhb29QYXJlbnQiOm51bGwsInBhcmVudERlc2NyaXB0aW9uIjpudWxsLCJyb290UGFyZW50Ijp7ImlkIjpudWxsLCJkZXNjcmlwdGlvbiI6bnVsbH0sImZpc2NhbF9jb2RlIjoiTEVMUFRSMDRBMDFDMzUyRSIsImlwYUNvZGUiOiJMRUxQVFIwNEEwMUMzNTJFIn0sImRlc2lyZWRfZXhwIjoxOTAwMjIzOTkzfQ.IrTkY_p7atg-v3aZo-9JkcBEqa8DR_5wb54g5Ylbewb5PrjGIEmLsmhY7L-D3-NSD4HgqmeolRtlplUAWfnMMVa9jfHurNr-NpeoOV5GV7kBd-uyIwnS_DK9KZq7AZeoAHP-Pz5p0ZMSuuJ2-uzx1zkJopvX-6uOZWwFl_OZQELCDWNJ2hgYPCKZvxxtSDyknHdKm_laIBQmZdlxAMr2y_Q9b2eqbdcRQGrGHa_Zkoo2qbIRZWW2EGcbfk6rgIoMdU_7JCGGHARkL0Y7OY9f9BIDfjLxudAbh73xiZJh-hMMkx73CXI2oyjmM40rytR9AyESkV8pFWSFNtiQ_NzR9A", + "eyJraWQiOiJqd3QtZXhjaGFuZ2VfYzc6ZTI6NjQ6YzI6YzY6MTg6Nzk6Nzc6NDc6MDY6NzM6Nzk6OGQ6ZGY6MTA6ZTYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmYW1pbHlfbmFtZSI6IlBldHJhcmNhIiwiZmlzY2FsX251bWJlciI6IlBUUkZOQzA0QTAxQzM1MkUiLCJuYW1lIjoiRnJhbmNlc2NvIiwic3BpZF9sZXZlbCI6Imh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMiIsImZyb21fYWEiOmZhbHNlLCJ1aWQiOiJkNWE4YTM4MC05MTBkLTQ5ZGMtOWZiOC04NDcwMGM2NDQxMGYiLCJsZXZlbCI6IkwyIiwiaWF0IjoxNzAwMjIzMTY1LCJleHAiOjE5MDAyMjQwNjUsImF1ZCI6ImltcHJlc2UudGVzdC5ub3RpZmljaGVkaWdpdGFsaS5pdCIsImlzcyI6Imh0dHBzOi8vcG5wZy51YXQuc2VsZmNhcmUucGFnb3BhLml0IiwianRpIjoiNGM5NDEwMzAtZWY2Yi00NDUwLTlhMWEtNDI2MmVhNWIyMThiIiwiZW1haWwiOiJGcmFuY2VzY29QZXRyYXJjYUBzZWNyZXR1bS5pdCIsIm9yZ2FuaXphdGlvbiI6eyJpZCI6ImUyNDg2MTI2LTQzOTQtNDMwMC1hMjVkLWI2ZDg3OWZhMTcxNyIsIm5hbWUiOiJMZSBFcGlzdG9sYWUgc3JsIiwicm9sZXMiOlt7InBhcnR5Um9sZSI6Ik1BTkFHRVIiLCJyb2xlIjoicGctYWRtaW4ifV0sInN1YlVuaXRDb2RlIjpudWxsLCJzdWJVbml0VHlwZSI6bnVsbCwiYW9vUGFyZW50IjpudWxsLCJwYXJlbnREZXNjcmlwdGlvbiI6bnVsbCwicm9vdFBhcmVudCI6eyJpZCI6bnVsbCwiZGVzY3JpcHRpb24iOm51bGx9LCJmaXNjYWxfY29kZSI6IkxFTFBUUjA0QTAxQzM1MkUiLCJpcGFDb2RlIjoiTEVMUFRSMDRBMDFDMzUyRSJ9LCJkZXNpcmVkX2V4cCI6MTkwMDIyNDA2NX0.K2kOmvd4KlGsq3aVuEsa0qywTqd7Mt0Q7CqtDjlAVeVY-j-aEnipjMTxZHHk5gUCxztKcidt_C81tqKEWWRvOUaMi5TUk7zsdy_zvjC6LEs_Ib3PXMpEU2MNyj5QjobaYTUw-Qi08_2aPPxJyH1AOi7sfGreKM3VHVjg4Mt24eabg7vD2A_Voaxg_HGNjhzl8N5z33goRnybLaYAj6gnT_KY-Z_dM7fXoVKJHsU0PPaqKwIlPEuPtCpeRYdYJShjAq10FKTcLjeYT2amub_FOjOnoEVQ8aDCLt0Y_xc0MG0kc4gx4zEFjUT1rrGlfm9pZ8sx9d9yr190L4Hsh8cSyg"), + PA_TOKEN( + "eyJraWQiOiJqd3QtZXhjaGFuZ2VfZWE6NDg6NTI6ZTQ6YWU6OGY6MzA6YjU6YWQ6M2M6ZDI6MDU6NzQ6Nzk6Yzk6ZWYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmYW1pbHlfbmFtZSI6IkJhcm9uZSIsImZpc2NhbF9udW1iZXIiOiJCUk5CQ0g5MUw0OUg4MjJFIiwibmFtZSI6IkJhY2NoaXNpbyIsInNwaWRfbGV2ZWwiOiJodHRwczovL3d3dy5zcGlkLmdvdi5pdC9TcGlkTDIiLCJmcm9tX2FhIjpmYWxzZSwidWlkIjoiMjEzNGQ5MmItNWQxYi00OWI1LTlhNmUtNDI4M2Y0ODc5YmJmIiwibGV2ZWwiOiJMMiIsImlhdCI6MTcwMDIyMjY2MiwiZXhwIjoxOTAwMjIyNjc3LCJhdWQiOiJzZWxmY2FyZS5kZXYubm90aWZpY2hlZGlnaXRhbGkuaXQiLCJpc3MiOiJodHRwczovL3VhdC5zZWxmY2FyZS5wYWdvcGEuaXQiLCJqdGkiOiJhYWY3NWE0NS03MmYwLTRmY2ItOWI5MC01YjliNWMyMTQ1YWMiLCJlbWFpbCI6InJzYW5uYUBnbWFpbC5jb20iLCJvcmdhbml6YXRpb24iOnsiaWQiOiJhOTVkYWNlNC00YTQ3LTQxNDktYTgxNC0wZTY2OTExM2NlNDAiLCJuYW1lIjoiQ29tdW5lIGRpIFZlcm9uYSIsInJvbGVzIjpbeyJwYXJ0eVJvbGUiOiJNQU5BR0VSIiwicm9sZSI6ImFkbWluIn1dLCJncm91cHMiOlsiNjMyMWQzMjU2NGZmMDYxYTUxNDY0YjlkIl0sInN1YlVuaXRDb2RlIjpudWxsLCJzdWJVbml0VHlwZSI6bnVsbCwiYW9vUGFyZW50IjpudWxsLCJwYXJlbnREZXNjcmlwdGlvbiI6bnVsbCwicm9vdFBhcmVudCI6eyJpZCI6bnVsbCwiZGVzY3JpcHRpb24iOm51bGx9LCJmaXNjYWxfY29kZSI6IjAwMjE1MTUwMjM2IiwiaXBhQ29kZSI6ImNfbDc4MSJ9LCJkZXNpcmVkX2V4cCI6MTkwMDIyMjY3N30.NKZRi2mFvcWeWbrOiqZEqji3V9DQ3dUg3vk9yrZxaNEnKVU4l3nHuip_Ej9qZiyJvN5lPmvU4PhuLCRM1rIZcTIhyXO0uAJFbjBudt1j0oa7ErW-G394ab4dErUWarikhHs_xSW1hgAbOEHfwKPXTsb1-N5c0nl3wEG84YZ0fBdOtFKR__DHVrYyx5PkixaiN2Ch4pTAYnI8myAjsfO3MTEEvVb2qO-9qvpjG-4swG-hzk36NyG1J1jenUHvNvqhymb3maNoZ-aiVZocVZumCRxmWxrGSWmqFXwsD-QwE4iltfCNKqvF4ONKc-itNoAPXjLkFvJqILYiv07XajFaXA", + "eyJraWQiOiJqd3QtZXhjaGFuZ2VfZWE6NDg6NTI6ZTQ6YWU6OGY6MzA6YjU6YWQ6M2M6ZDI6MDU6NzQ6Nzk6Yzk6ZWYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmYW1pbHlfbmFtZSI6IkJhcm9uZSIsImZpc2NhbF9udW1iZXIiOiJCUk5CQ0g5MUw0OUg4MjJFIiwibmFtZSI6IkJhY2NoaXNpbyIsInNwaWRfbGV2ZWwiOiJodHRwczovL3d3dy5zcGlkLmdvdi5pdC9TcGlkTDIiLCJmcm9tX2FhIjpmYWxzZSwidWlkIjoiMjEzNGQ5MmItNWQxYi00OWI1LTlhNmUtNDI4M2Y0ODc5YmJmIiwibGV2ZWwiOiJMMiIsImlhdCI6MTcwMDIyMjU0NiwiZXhwIjoxOTAwMjIyNTYxLCJhdWQiOiJzZWxmY2FyZS50ZXN0Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwiaXNzIjoiaHR0cHM6Ly91YXQuc2VsZmNhcmUucGFnb3BhLml0IiwianRpIjoiZTA2NGI1MmYtMjUyNC00MDEyLWI5N2QtZjZlNmYyZDYzMmMyIiwiZW1haWwiOiJyc2FubmFAZ21haWwuY29tIiwib3JnYW5pemF0aW9uIjp7ImlkIjoiYTk1ZGFjZTQtNGE0Ny00MTQ5LWE4MTQtMGU2NjkxMTNjZTQwIiwibmFtZSI6IkNvbXVuZSBkaSBWZXJvbmEiLCJyb2xlcyI6W3sicGFydHlSb2xlIjoiTUFOQUdFUiIsInJvbGUiOiJhZG1pbiJ9XSwic3ViVW5pdENvZGUiOm51bGwsInN1YlVuaXRUeXBlIjpudWxsLCJhb29QYXJlbnQiOm51bGwsInBhcmVudERlc2NyaXB0aW9uIjpudWxsLCJyb290UGFyZW50Ijp7ImlkIjpudWxsLCJkZXNjcmlwdGlvbiI6bnVsbH0sImZpc2NhbF9jb2RlIjoiMDAyMTUxNTAyMzYiLCJpcGFDb2RlIjoiY19sNzgxIn0sImRlc2lyZWRfZXhwIjoxOTAwMjIyNTYxfQ.r4QCr_qE5JZMlWiBmpKDqA9D6iCog0xcodO7g-NzTklZh5lxlrw_FVlqxQi7WA5BdYsPIlvqytGLBCQxQfiTKvuO-ieK_L1W4QxK5R_3DqNWwB1UuNssIWV1nhta2chKZhmZpZisI6MhVTmqBx18Eyh1iEoO1nbM6lfokRNOz2a4gvYqCKkmC58hbWCYFcpIqvxDyEed5fLr84NvcaQxopydCIBIMEcthyHWrWuO7AplFMd-6FOtMm3k4PMSEj6586T0CfZ-IVAqXZw-tP_A1ubygfEhrQGaVNPufkk5eAL_oFtgKb2VaRoyf4tyv0zCogNC9vwnMQZaBuzXiZIHsg"); + + private final String devToken; + private final String testToken; + + private TokenLogin(String devToken, String testToken) { + this.devToken = devToken; + this.testToken = testToken; + } + + public String getToken() { + String env = System.getProperty("environment"); + return env.equalsIgnoreCase("dev") ? devToken : testToken; + } +} diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java index ec87f7c10..6295241b6 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java @@ -23,6 +23,10 @@ public DisserviziAppPAPage(WebDriver driver) { @FindBy(id = "notifications-table") WebElement disserviziTable; + @FindBy(xpath = "//tr[@id='tableDowntimeLog.row']//td//div[@data-testid='downtime-status']") + List statusList; + + public void waitLoadStatoDellaPiattaformaPage() { try { By disserviziPageTitle = By.id("Stato della piattaforma-page"); @@ -103,35 +107,25 @@ public void waitLoadDisserviziTable() { } public void checkDisserviziInCorso() { - try { - aggiornamentoPagina(); - List disserviziTableRows = disserviziTable.findElements(By.id("tableDowntimeLog.row")); - if (!disserviziTableRows.isEmpty()) { - for (WebElement disserviziRow : disserviziTableRows) { - List disserviziColumns = disserviziRow.findElements(By.xpath("//td[@data-testid='tableDowntimeLog.row.cell']")); - if (!disserviziColumns.isEmpty()) { - // check if the columns are not empty - for (WebElement disserviziColumn : disserviziColumns) { - if (disserviziColumn.getText().contains("-")) { - logger.info("Si visualizza data di fine come: -"); - } - if (disserviziColumn.getText().contains("L'attestazione sarà disponibile al termine del disservizio")) { - logger.info("Si visualizza la frase corretta in 'Attestazioni opponibili a terzi'"); - return; - } - if (disserviziColumn.getText().contains("In corso")) { - logger.info("Si visualizza un record in elenco relativo ad un disservizio ancora in corso"); - return; - } - } - } + aggiornamentoPagina(); + if (!statusList.isEmpty()) { + for (WebElement status : statusList) { + if (status.getText().contains("In corso")) { + logger.info("Si visualizza un record in elenco relativo ad un disservizio ancora in corso"); + continue; + } + if (status.getText().contains("-")) { + logger.info("Si visualizza data di fine come: -"); + continue; + } + if (status.getText().contains("L'attestazione sarà disponibile al termine del disservizio")) { + logger.info("Si visualizza la frase corretta in 'Attestazioni opponibili a terzi'"); + return; } } + } else { logger.error("Non si visualizza un record in elenco relativo ad un disservizio ancora in corso"); Assert.fail("Non si visualizza un record in elenco relativo ad un disservizio ancora in corso"); - } catch (TimeoutException e) { - logger.error("Non si visualizza un record in elenco relativo ad un disservizio ancora in corso con errore:" + e.getMessage()); - Assert.fail("Non si visualizza un record in elenco relativo ad un disservizio ancora in corso con errore" + e.getMessage()); } } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/InvioNotifichePAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/InvioNotifichePAPage.java index 3a99951d0..988bf2338 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/InvioNotifichePAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/InvioNotifichePAPage.java @@ -15,7 +15,7 @@ public InvioNotifichePAPage(WebDriver driver) { } public void selezionareContinuaButton() { - getWebDriverWait(30).withMessage("Il bottone continua nella pagina invio notifica PA non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.continuaButton)); - scrollToElementClickAndInsertText(this.continuaButton, null); + getWebDriverWait(10).withMessage("Il bottone continua nella pagina invio notifica PA non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.continuaButton)); + scrollToElementAndClick(this.continuaButton); } } 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 71edef1a9..1e4ab8902 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 @@ -1,6 +1,10 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.NetWorkInfo; +import it.pn.frontend.e2e.rest.RestNotification; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; @@ -16,6 +20,7 @@ public class PiattaformaNotifichePage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("notificaMittentePagoPA"); + private final List netWorkInfos = Hooks.netWorkInfos; @FindBy(id = "recipientId") WebElement cfTextField; @@ -273,7 +278,7 @@ public void selezionaNotifica() { try { By notificaBy = By.id("notificationsTable.body.row"); attesaCaricamentoPagina(); - this.getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(notificaBy)); + this.getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(notificaBy)); List notifiche = this.elements(notificaBy); notifiche.get(0).click(); } catch (TimeoutException e) { @@ -288,8 +293,8 @@ public void selezionaNotificaIUN(String IUN) { } public void selectInviaUnaNuovaNotificaButton() { - this.getWebDriverWait(30).withMessage("Il bottone invia notifica non è cliccabile").until(ExpectedConditions.elementToBeClickable(inviaNuovaNotificaButton)); - this.js().executeScript("arguments[0].click()", this.inviaNuovaNotificaButton); + this.getWebDriverWait(10).withMessage("Il bottone invia notifica non è cliccabile").until(ExpectedConditions.elementToBeClickable(inviaNuovaNotificaButton)); + this.inviaNuovaNotificaButton.click(); } @@ -763,4 +768,49 @@ public void checkPaginaNotificheDelegante(String nomeDelegante) { } + + public void verificaPresenzaStato(String stato) { + By statusChip = By.xpath("//div[@data-testid='itemStatus']//span[contains(text(),'" + stato + "')]"); + try { + this.getWebDriverWait(10).withMessage("Lo stato " + stato + " non è presente") + .until(ExpectedConditions.visibilityOfElementLocated(statusChip)); + logger.info("Stato " + stato + " presente"); + } catch (TimeoutException e) { + logger.error("Stato " + stato + " non presente con errore: " + e.getMessage()); + Assert.fail("Stato " + stato + " non presente con errore: " + e.getMessage()); + } + } + + public void verificaNotificaCreata() { + String notificationRequestId = ""; + for (NetWorkInfo netWorkInfo : netWorkInfos) { + if (netWorkInfo.getRequestUrl().contains("/delivery/v2.3/requests") && netWorkInfo.getRequestMethod().equals("POST")) { + if (netWorkInfo.getResponseStatus().equals("202") && !netWorkInfo.getResponseBody().isEmpty()) { + notificationRequestId = netWorkInfo.getResponseBody().split("\"notificationRequestId\":\"")[1].split("\"")[0]; + logger.info("NotificationRequestId: " + notificationRequestId); + break; + } + } + } + if (!notificationRequestId.isEmpty()) { + String statusNotifica; + int maximumRetry = 0; + do { + if (maximumRetry > 4) { + logger.error("Sono stati fatti 5 tentativi per verificare la creazione della notifica"); + Assert.fail("La notifica risulta ancora in stato WAITING dopo 5 tentativi"); + } + RestNotification restNotification = new RestNotification(); + statusNotifica = restNotification.getNotificationStatus(notificationRequestId); + WebTool.waitTime(90); + logger.info("Tentativo n. " + maximumRetry + " - Stato notifica: " + statusNotifica); + maximumRetry++; + } while (statusNotifica.equals("WAITING")); + driver.navigate().refresh(); + logger.info("La notifica è stata creata correttamente"); + } else { + logger.error("NotificationRequestId non trovato, il codice della risposta al url /delivery/v2.3/requests è diverso di 202 "); + Assert.fail("NotificationRequestId non trovato, il codice della risposta al url /delivery/v2.3/requests è diverso di 202 "); + } + } } \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/rest/RestNotification.java b/src/main/java/it/pn/frontend/e2e/rest/RestNotification.java index 6ca14d6d2..6da81ffc5 100644 --- a/src/main/java/it/pn/frontend/e2e/rest/RestNotification.java +++ b/src/main/java/it/pn/frontend/e2e/rest/RestNotification.java @@ -1,5 +1,6 @@ package it.pn.frontend.e2e.rest;// ... Altre importazioni ... +import com.google.gson.internal.LinkedTreeMap; import it.pn.frontend.e2e.config.CustomHttpClient; import it.pn.frontend.e2e.exceptions.RestNotificationException; import it.pn.frontend.e2e.model.NewNotificationRequest; @@ -35,4 +36,26 @@ public NewNotificationResponse newNotificationWithOneRecipientAndDocument(NewNot } return null; } + + public String getNotificationStatus(String notificationRequestId) { + final CustomHttpClient httpClient2 = CustomHttpClient.getInstance(); // Modifica qui + try { + Object response = httpClient2.sendHttpGetRequest("/delivery/v2.3/requests?notificationRequestId=" + notificationRequestId, null, Object.class); + if (response instanceof LinkedTreeMap) { + LinkedTreeMap responseData = (LinkedTreeMap) response; + if (responseData.containsKey("notificationRequestStatus")) { + return responseData.get("notificationRequestStatus").toString(); + } else { + logger.error("L'attributo 'notificationRequestStatus' non è presente nella risposta JSON"); + return null; + } + } else { + logger.error("La risposta non è valida o non può essere convertita in JSON"); + return null; + } + } catch (IOException e) { + logger.error("Error during getNotificationStatus", e); + return null; + } + } } diff --git a/src/main/java/it/pn/frontend/e2e/section/CookiesSection.java b/src/main/java/it/pn/frontend/e2e/section/CookiesSection.java index 90c5ad262..82b559a92 100644 --- a/src/main/java/it/pn/frontend/e2e/section/CookiesSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/CookiesSection.java @@ -22,25 +22,25 @@ public CookiesSection(WebDriver driver) { super(driver); } - public boolean waitLoadCookiesPage(){ - try{ + public boolean waitLoadCookiesPage() { + try { By scopriDiPiuLink = By.id("onetrust-banner-sdk"); - this.getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(scopriDiPiuLink)); + this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(scopriDiPiuLink)); logger.info("Cookies Page caricata"); return true; - }catch (TimeoutException e){ - logger.warn("Il banner del cookie non è caricato con errore : "+e.getMessage()); + } catch (TimeoutException e) { + logger.warn("Il banner del cookie non è caricato con errore : " + e.getMessage()); return false; } } - public void selezionaAccettaTuttiButton(){ + public void selezionaAccettaTuttiButton() { try { - this.getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(this.accettaTuttiButton)); + this.getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(this.accettaTuttiButton)); logger.info("Si seleziona accetta tutti i cookies"); Actions actions = new Actions(driver); actions.moveToElement(this.accettaTuttiButton).click().perform(); - } catch(TimeoutException e){ + } catch (TimeoutException e) { logger.error("Non è cliccabile il bottone accetta tutti i cookies" + e.getMessage()); Assert.fail("Non è cliccabile il bottone accetta tutti i cookies" + e.getMessage()); } diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/DestinatarioPASection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/DestinatarioPASection.java index 88d681306..3fd0b2c33 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/DestinatarioPASection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/DestinatarioPASection.java @@ -115,6 +115,7 @@ public void selezionarePersonaFisica() { this.personaFisicaCheckBox.click(); } + public void inserireNomeDestinatario(String nomeDestinatario) { logger.info("inserimento nome destinatario"); this.scrollToElementClickAndInsertText(this.nomeDestinatarioTextField, nomeDestinatario); diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/HeaderPASection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/HeaderPASection.java index a9c6cd024..0bef40b83 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/HeaderPASection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/HeaderPASection.java @@ -2,7 +2,10 @@ import it.pn.frontend.e2e.common.BasePage; import org.junit.Assert; -import org.openqa.selenium.*; +import org.openqa.selenium.By; +import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; @@ -19,14 +22,14 @@ public HeaderPASection(WebDriver driver) { super(driver); } - public void waitLoadHeaderSection(){ - try{ + public void waitLoadHeaderSection() { + try { By titleLabel = By.cssSelector("a[title='Sito di PagoPA S.p.A.']"); - this.getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(titleLabel)); + this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(titleLabel)); logger.info("Header PA Section caricata"); - }catch (TimeoutException e){ - logger.error("Il titolo nel Header: 'Sito di PagoPA S.p.A.' non è caricato con errore : "+e.getMessage()); - Assert.fail("Il titolo nel Header: 'Sito di PagoPA S.p.A.' non è caricato con errore : "+e.getMessage()); + } catch (TimeoutException e) { + logger.error("Il titolo nel Header: 'Sito di PagoPA S.p.A.' non è caricato con errore : " + e.getMessage()); + Assert.fail("Il titolo nel Header: 'Sito di PagoPA S.p.A.' non è caricato con errore : " + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/InformazioniPreliminariPASection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/InformazioniPreliminariPASection.java index 73509a860..f969aa85b 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/InformazioniPreliminariPASection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/InformazioniPreliminariPASection.java @@ -2,7 +2,10 @@ import it.pn.frontend.e2e.common.BasePage; import org.junit.Assert; -import org.openqa.selenium.*; +import org.openqa.selenium.By; +import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; @@ -30,6 +33,9 @@ public class InformazioniPreliminariPASection extends BasePage { @FindBy(xpath = "//input[@value='AR_REGISTERED_LETTER']") WebElement raccomandataARButton; + @FindBy(xpath = "//input[@value='REGISTERED_LETTER_890']") + WebElement registeredLetter890Button; + public InformazioniPreliminariPASection(WebDriver driver) { super(driver); } @@ -54,7 +60,7 @@ public void waitLoadInformazioniPreliminariPASection() { public void insertNumeroDiProtocollo(String numeroProtocollo) { By numeroProtocolloTextBy = By.id("paProtocolNumber"); WebElement numeroProtocolloTextInput = driver.findElement(numeroProtocolloTextBy); - getWebDriverWait(60).until(ExpectedConditions.elementToBeClickable(numeroProtocolloTextInput)); + getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(numeroProtocolloTextInput)); logger.info("inserimento testo in numero protocollo"); scrollToElementClickAndInsertText(numeroProtocolloTextInput, numeroProtocollo); } @@ -71,20 +77,20 @@ public void insertDescrizione(String descrizione) { public void insertGruppo(String gruppo) { logger.info("inserimento gruppo"); - if (this.gruppoListBox.isDisplayed()){ + if (this.gruppoListBox.isDisplayed()) { this.gruppoListBox.click(); - }else { - this.scrollToElementClickAndInsertText(this.gruppoListBox,null); + } else { + this.scrollToElementClickAndInsertText(this.gruppoListBox, null); } - try{ - By gruppoBy = By.xpath("//li[contains(text(),'"+gruppo+"')]"); + try { + By gruppoBy = By.xpath("//li[contains(text(),'" + gruppo + "')]"); this.getWebDriverWait(40).until(ExpectedConditions.visibilityOfElementLocated(gruppoBy)); - logger.info("gruppo "+gruppo+" trovato con successo"); + logger.info("gruppo " + gruppo + " trovato con successo"); element(gruppoBy).click(); - }catch (TimeoutException e){ - logger.info("gruppo "+gruppo+" NON trovato con errore : "+e.getMessage()); - Assert.fail("gruppo "+gruppo+" NON trovato con errore : "+e.getMessage()); + } catch (TimeoutException e) { + logger.info("gruppo " + gruppo + " NON trovato con errore : " + e.getMessage()); + Assert.fail("gruppo " + gruppo + " NON trovato con errore : " + e.getMessage()); } } @@ -97,4 +103,9 @@ public void selectRaccomandataAR() { logger.info("selezione raccomandata AR"); this.raccomandataARButton.click(); } + + public void selectRegisteredLetter890() { + logger.info("selezione registered letter 890"); + this.registeredLetter890Button.click(); + } } diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/SuccessPASection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/SuccessPASection.java index ad4062b0a..5076954aa 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/SuccessPASection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/SuccessPASection.java @@ -23,13 +23,13 @@ public SuccessPASection(WebDriver driver) { } public void waitLoadSuccessPASection() { - try{ + try { By successCheckBy = By.id("title-sync-feedback"); - this.getWebDriverWait(this.loadComponentWaitTime).until(ExpectedConditions.visibilityOfElementLocated(successCheckBy)); + this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(successCheckBy)); logger.info("TA_QA: La notifica è stata creata con successo, PA section caricata correttamente"); - }catch (TimeoutException e){ - logger.error("TA_QA: Il titolo della Success PA section non caricata con errore: "+e.getMessage()); - Assert.fail("TA_QA: Il titolo della Success PA section non caricata con errore: "+e.getMessage()); + } catch (TimeoutException e) { + logger.error("TA_QA: Il titolo della Success PA section non caricata con errore: " + e.getMessage()); + Assert.fail("TA_QA: Il titolo della Success PA section non caricata con errore: " + e.getMessage()); } } diff --git a/src/test/java/it/pn/frontend/e2e/utility/CookieConfig.java b/src/main/java/it/pn/frontend/e2e/utility/CookieConfig.java similarity index 100% rename from src/test/java/it/pn/frontend/e2e/utility/CookieConfig.java rename to src/main/java/it/pn/frontend/e2e/utility/CookieConfig.java diff --git a/src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java b/src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java new file mode 100644 index 000000000..bfb119dc9 --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java @@ -0,0 +1,44 @@ +package it.pn.frontend.e2e.utility; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; +import org.junit.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public class DataPopulation { + private static final Logger logger = LoggerFactory.getLogger("DataPopulation"); + + private ObjectMapper objectMapper; + + public Map readDataPopulation(String dpFile) { + this.objectMapper = new ObjectMapper(new YAMLFactory()); + TypeReference> typeReference = new TypeReference<>() { + }; + Map readValue = new HashMap<>(); + try { + return objectMapper.readValue(new File("src/test/resources/dataPopulation/" + dpFile), typeReference); + } catch (IOException e) { + logger.error(e.getMessage()); + Assert.fail(e.getMessage()); + } + return readValue; + } + + public void writeDataPopulation(String dpFile, Map dp) { + this.objectMapper = new ObjectMapper(new YAMLFactory().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)); + try { + this.objectMapper.writeValue(new File("src/test/resources/dataPopulation/" + dpFile), dp); + } catch (IOException e) { + logger.error(e.getMessage()); + Assert.fail(e.getMessage()); + } + } +} diff --git a/src/test/java/it/pn/frontend/e2e/utility/DownloadFile.java b/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java similarity index 100% rename from src/test/java/it/pn/frontend/e2e/utility/DownloadFile.java rename to src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java diff --git a/src/main/java/it/pn/frontend/e2e/utility/WebTool.java b/src/main/java/it/pn/frontend/e2e/utility/WebTool.java new file mode 100644 index 000000000..eca939fb3 --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/utility/WebTool.java @@ -0,0 +1,136 @@ +package it.pn.frontend.e2e.utility; + +import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.NetWorkInfo; +import it.pn.frontend.e2e.model.enums.AppPortal; +import it.pn.frontend.e2e.pages.destinatario.personaFisica.NotifichePFPage; +import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; +import it.pn.frontend.e2e.section.CookiesSection; +import it.pn.frontend.e2e.section.destinatario.personaFisica.HeaderPFSection; +import it.pn.frontend.e2e.section.destinatario.personaGiuridica.HeaderPGSection; +import it.pn.frontend.e2e.section.mittente.HeaderPASection; +import org.junit.Assert; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class WebTool { + private static final Logger logger = LoggerFactory.getLogger("WebTool"); + private static final WebDriver driver = Hooks.driver; + private final List netWorkInfos = Hooks.netWorkInfos; + private final String env = System.getProperty("environment"); + + public static String switchToPortal(AppPortal portal) { + openNewTab(); + switch (portal) { + case PA -> { + driver.get(portal.url); + HeaderPASection headerPASection = new HeaderPASection(driver); + headerPASection.waitLoadHeaderSection(); + PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); + piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); + } + case PF -> { + driver.get(portal.url); + HeaderPFSection headerPFSection = new HeaderPFSection(driver); + headerPFSection.waitLoadHeaderDESection(); + NotifichePFPage notifichePFPage = new NotifichePFPage(driver); + notifichePFPage.waitLoadNotificheDEPage(); + } + case PG -> { + driver.get(portal.url); + HeaderPGSection headerPGSection = new HeaderPGSection(driver); + headerPGSection.waitLoadHeaderPGPage(); + } + case HELPDESK -> { + driver.get(portal.url); + } + default -> { + logger.error("Tipologia di portale non specificato o errato!"); + Assert.fail("Tipologia di portale non specificato o errato!"); + } + } + CookiesSection cookiesPage = new CookiesSection(driver); + if (cookiesPage.waitLoadCookiesPage()) { + cookiesPage.selezionaAccettaTuttiButton(); + } + return driver.getWindowHandle(); + } + + public static void openNewTab() { + ((JavascriptExecutor) driver).executeScript("window.open()"); + String newTab = driver.getWindowHandles().stream().reduce((first, second) -> second).orElse(null); + driver.switchTo().window(newTab); + } + + public static void closeTab() { + driver.close(); + String newTab = driver.getWindowHandles().stream().reduce((first, second) -> second).orElse(null); + driver.switchTo().window(newTab); + } + + /** + * Generate a random protocol number + * + * @return a random protocol number as a String + */ + public static String generatePaProtocolNumber() { + // Get the current date in the format "yyyyMMdd" + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + String currentDate = dateFormat.format(new Date()); + + // Generate a random number between 0 and 100 + Random random = new Random(); + String randomNumber = String.valueOf(random.nextInt(10000)); + + // Concatenate the current date and the random number + String protocolNumber = "TA-FFSMRC-" + currentDate + "-" + randomNumber; + logger.info("Protocol number generated: " + protocolNumber); + + return protocolNumber; + } + + /** + * Decode the NotificationRequestId from the response of the newNotification API + * The NotificationRequestId is encoded in base64 + * The decoded NotificationRequestId is a String IUN + * + * @param NotificationRequestId the requestID to decode + * @return String IUN + */ + public static String decodeNotificationRequestId(String NotificationRequestId) { + byte[] decodedBytes = java.util.Base64.getDecoder().decode(NotificationRequestId); + return new String(decodedBytes); + } + + /** + * Wait for the specified number of seconds + * + * @param seconds the number of seconds to wait + */ + public static void waitTime(int seconds) { + try { + int minutes; + int remainingSeconds; + if (seconds >= 60) { + minutes = seconds / 60; + remainingSeconds = seconds % 60; + logger.info("Si aspettano " + minutes + " minuto/i e " + remainingSeconds + " secondi... prima di proseguire oltre"); + } else { + logger.info("Si aspettano " + seconds + " secondi... prima di proseguire oltre"); + } + long millisecondsToWait = TimeUnit.SECONDS.toMillis(seconds); + Thread.sleep(millisecondsToWait); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("Errore durante l'attesa.", e); + } + } +} diff --git a/src/test/java/it/pn/frontend/e2e/api/mittente/AccettazioneRichiestaNotifica.java b/src/test/java/it/pn/frontend/e2e/api/mittente/AccettazioneRichiestaNotifica.java index 0fd32b703..3404241d4 100644 --- a/src/test/java/it/pn/frontend/e2e/api/mittente/AccettazioneRichiestaNotifica.java +++ b/src/test/java/it/pn/frontend/e2e/api/mittente/AccettazioneRichiestaNotifica.java @@ -31,32 +31,31 @@ public class AccettazioneRichiestaNotifica { private String responseReasonPhrase; - private int responseCode; - - public boolean runGetRichiestaNotifica(){ - try{ + private int responseCode; + public boolean runGetRichiestaNotifica() { + try { CloseableHttpClient httpclient = HttpClients.createDefault(); ClassicHttpRequest httpGet = ClassicRequestBuilder .get(this.getRichiestaNotificaEndPoint()) - .addHeader(HttpHeaders.CONTENT_TYPE,"application/json") - .addHeader("x-api-key",getxApikey()) - .addParameter("notificationRequestId",this.notificationRequestId) + .addHeader(HttpHeaders.CONTENT_TYPE, "application/json") + .addHeader("x-api-key", getxApikey()) + .addParameter("notificationRequestId", this.notificationRequestId) .build(); httpclient.execute(httpGet, response -> { logger.info(response.getCode() + " " + response.getReasonPhrase()); setResponseReasonPhrase(response.getReasonPhrase()); - if (response.getCode() == 200){ + if (response.getCode() == 200) { final HttpEntity entity = response.getEntity(); this.responseBody = EntityUtils.toString(entity); return true; - }else { + } else { this.responseCode = response.getCode(); return false; } }); - }catch (IOException e){ + } catch (IOException e) { Assert.fail(e.getMessage()); } return this.responseBody != null; @@ -106,8 +105,8 @@ public String getStatusNotifica() { public String getCodiceIUN() { String body = getresponseBody(); List results = Splitter.on(CharMatcher.anyOf(",:")).splitToList(body); - String result = results.get(results.size()-1); - return result.substring(1,result.length()-2); + String result = results.get(results.size() - 1); + return result.substring(1, result.length() - 2); } public String getResponseReasonPhrase() { diff --git a/src/test/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java b/src/test/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java deleted file mode 100644 index 9c907ca67..000000000 --- a/src/test/java/it/pn/frontend/e2e/listeners/NetWorkInfo.java +++ /dev/null @@ -1,60 +0,0 @@ -package it.pn.frontend.e2e.listeners; - -public class NetWorkInfo { - - private String requestId; - private String requestUrl; - private String requestMethod; - private String responseStatus; - private String responseBody; - private String authorizationBearer; - - public String getAuthorizationBearer() { - return authorizationBearer; - } - - public void setAuthorizationBearer(String authorizationBearer) { - this.authorizationBearer = authorizationBearer; - } - - public String getRequestId() { - return requestId; - } - - public void setRequestId(String requestId) { - this.requestId = requestId; - } - - public String getRequestUrl() { - return requestUrl; - } - - public void setRequestUrl(String requestUrl) { - this.requestUrl = requestUrl; - } - - public String getRequestMethod() { - return requestMethod; - } - - public void setRequestMethod(String requestMethod) { - this.requestMethod = requestMethod; - } - - public String getResponseStatus() { - return responseStatus; - } - - public void setResponseStatus(String responseStatus) { - this.responseStatus = responseStatus; - } - - public String getResponseBody() { - return responseBody; - } - - public void setResponseBody(String responseBody) { - this.responseBody = responseBody; - } - -} diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java index 56f420a2f..a1e2b0085 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java @@ -7,6 +7,7 @@ import it.pn.frontend.e2e.common.HelpdeskPage; import it.pn.frontend.e2e.listeners.Hooks; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; @@ -75,15 +76,10 @@ public void siVisualizzaCorrettamenteHomeMonitoraggio() { @And("Si crea il disservizio") public void siCreaIlDisservizio() { - try { - TimeUnit.SECONDS.sleep(5); - } catch (InterruptedException e) { - logger.error("pausa con errore: " + e.getMessage()); - throw new RuntimeException(e); - } + WebTool.waitTime(5); if (!helpdeskPage.checkIsCreatedDisservizio()) { helpdeskPage.handleDisservizio("KO"); - DataPopulation.waitTime(10); + WebTool.waitTime(5); } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/DeleghePagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/DeleghePagoPATest.java index fa361fb76..c3d383308 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/DeleghePagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/DeleghePagoPATest.java @@ -15,6 +15,7 @@ import it.pn.frontend.e2e.section.destinatario.personaFisica.PopUpRevocaDelegaSection; import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; @@ -361,7 +362,7 @@ public void siVisualizzanoTuttiICampiDellElencoDeiDelegati() { @And("Si controlla che non sia presente una delega con stesso nome") - public void siControllaCheNonSiaPresenteUnaDelegaConStessoNome(Map personaFisica) { + public void siControllaCheNonSiaPresenteUnaDelegaConStessoNome(Map personaFisica) { logger.info("Si controlla che non ci sia una delega con lo stesso nome"); String nome = personaFisica.get("nome"); @@ -468,7 +469,7 @@ public void siVerificaSiaPresenteUnaDelegaDaRifiutareNellaSezioneDelegheATuoCari @Then("Si controlla che non ci sia più una delega") public void siControllaCheNonCiSiaPiuUnaDelega() { logger.info("Si controlla che non sia più presente una delega"); - DataPopulation.waitTime(6); + WebTool.waitTime(6); this.deleghe = dataPopulation.readDataPopulation("delegatoPF.yaml"); String nome = this.deleghe.get("name").toString(); String cognome = this.deleghe.get("familyName").toString(); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/LoginPersonaFisicaPagoPA.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/LoginPersonaFisicaPagoPA.java index ebc639070..a6b30cfab 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/LoginPersonaFisicaPagoPA.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/LoginPersonaFisicaPagoPA.java @@ -15,6 +15,7 @@ import it.pn.frontend.e2e.section.destinatario.personaFisica.HeaderPFSection; import it.pn.frontend.e2e.utility.CookieConfig; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; @@ -72,7 +73,7 @@ public void loginMittenteConTokenExchange(String personaFisica) { String urlLogin = "https://cittadini." + environment + ".notifichedigitali.it/#token=" + token; this.driver.get(urlLogin); logger.info("Login effettuato con successo"); - DataPopulation.waitTime(10); + WebTool.waitTime(10); // Si visualizza la dashboard e si verifica che gli elementi base siano presenti (header e title della pagina) HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/NotifichePersonaFisicaPagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/NotifichePersonaFisicaPagoPATest.java index ea8e6e4a3..740db7e38 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/NotifichePersonaFisicaPagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/NotifichePersonaFisicaPagoPATest.java @@ -8,7 +8,6 @@ import it.pn.frontend.e2e.pages.destinatario.DestinatarioPage; import it.pn.frontend.e2e.pages.destinatario.personaFisica.AccediAPiattaformaNotifichePage; import it.pn.frontend.e2e.pages.destinatario.personaFisica.NotifichePFPage; -import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.PiattaformaNotifichePGPAPage; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.section.CookiesSection; import it.pn.frontend.e2e.section.destinatario.personaFisica.HeaderPFSection; @@ -44,6 +43,33 @@ public void nellaPiattaformaDestinatarioCliccareSulBottoneNotifiche() { notifichePFPage.clickNotificheButton(); } + @Then("pagina Piattaforma Notifiche persona fisica viene visualizzata correttamente") + public void paginaPiattaformaNotificheDestinatarioVieneVisualizzataCorrettamente() { + HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); + headerPFSection.waitLoadHeaderDESection(); + + if (!CookieConfig.isCookieEnabled()) { + CookiesSection cookiesSection = new CookiesSection(this.driver); + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); + } + } + + NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); + notifichePFPage.waitLoadNotificheDEPage(); + if (notifichePFPage.verificaPresenzaCodiceIunTextField()) { + logger.info("text field codice iun presente"); + } else { + logger.info("text field codice iun non presente"); + Assert.fail("text field codice iun non presente"); + } + try { + TimeUnit.SECONDS.sleep(5); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + @And("Si visualizza correttamente la Pagina Notifiche persona fisica") public void siVisualizzaCorrettamenteLaPaginaNotificheDestinatario() { NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); @@ -185,58 +211,58 @@ public void siControllaSezionePagamentoSeNotificaPrevedeIlPagamento() { if (!sezionePagamentoIsDisplayed) { logger.info("La notifica non prevede il pagamento "); - }else{ + } else { logger.info("La notifica prevede il pagamento"); boolean radioBoxPresent = accediAPiattaformaNotifichePage.isRadioBoxPresent(); - if (radioBoxPresent){ + if (radioBoxPresent) { accediAPiattaformaNotifichePage.clickRadioBoxButton(accediAPiattaformaNotifichePage.cssBuildRadioButton()); } boolean titoloPagamentoIsDisplayed = accediAPiattaformaNotifichePage.titoloDiPagamentoDisplayed(); - if (titoloPagamentoIsDisplayed){ + if (titoloPagamentoIsDisplayed) { logger.info("Sezione titolo di pagamento è visualizzato"); - }else{ + } else { logger.error("Sezione titolo di pagamento non è visualizzato"); Assert.fail("Sezione titolo di pagamento non è visualizzato"); } boolean codiceAvvisoIsDisplayed = accediAPiattaformaNotifichePage.codiceAvvisoDisplayed(); - if (codiceAvvisoIsDisplayed){ + if (codiceAvvisoIsDisplayed) { logger.info("Sezione codice avviso è visualizzato"); - }else{ + } else { logger.error("Sezione codice avviso non è visualizzato"); Assert.fail("Sezione codice avviso non è visualizzato"); } boolean modelloF24IsDisplayed = accediAPiattaformaNotifichePage.modelloF24Displayed(); - if (modelloF24IsDisplayed){ + if (modelloF24IsDisplayed) { logger.info("Sezione scarica modello F24 è visualizzato"); - }else{ + } else { logger.error("Sezione scarica modello F24 non è visualizzato"); Assert.fail("Sezione scarica modello F24 non è visualizzato"); } boolean scaricaAvvisoDisplayed = accediAPiattaformaNotifichePage.scaricaAvvisoDisplayed(); - if (scaricaAvvisoDisplayed){ + if (scaricaAvvisoDisplayed) { logger.info("Sezione scarica avviso è visualizzato"); - }else{ + } else { logger.error("Sezione scarica avviso non è visualizzato"); Assert.fail("Sezione scarica avviso non è visualizzato"); } boolean pagaAvvisoDisplayed = accediAPiattaformaNotifichePage.pagaAvvisoDisplayed(); - if (pagaAvvisoDisplayed){ + if (pagaAvvisoDisplayed) { logger.info("Sezione paga avviso è visualizzato"); - }else{ + } else { logger.error("Sezione paga avviso non è visualizzato"); Assert.fail("Sezione paga avviso non è visualizzato"); } } } - @Then("Si selezionano i file attestazioni opponibili da scaricare, all'interno della notifica persona fisica, e si controlla che il download sia avvenuto {string}") + @Then("Si selezionano i file attestazioni opponibili da scaricare, all'interno della notifica persona fisica, e si controlla che il download sia avvenuto {string}") public void siSelezionanoIFileAttestazioniOpponibiliDaScaricareAllInternoDellaNotificaDestinatarioESiControllaCheIlDownloadSiaAvvenuto(String dpFile) { DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); int numeroLinkAttestazioniOpponibile = dettaglioNotificaSection.getLinkAttestazioniOpponibili(); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java index 631b3e6d6..2c5f1a84c 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java @@ -10,6 +10,7 @@ import it.pn.frontend.e2e.pages.destinatario.personaFisica.ITuoiRecapitiPage; import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; @@ -296,7 +297,7 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTP() { @Then("Nella pagina i Tuoi Recapiti si controlla che la pec sia stata inserita correttamente") public void nellaPaginaITuoiRecapitiSiControllaCheLaPecSiaStataInseritaCorrettamente() { logger.info("Si controlla che la pec sia stata inserita correttamente"); - DataPopulation.waitTime(10); + WebTool.waitTime(10); driver.navigate().refresh(); if (recapitiDestinatarioPage.siVisualizzaPopUpConferma()) { logger.info("Si clicca su conferma nel pop-up"); @@ -569,7 +570,7 @@ public void nellaPaginaITuoiRecapitiSiVerificaCheLaPecSiaStataModificata(String recapitiDestinatarioPage.clickConfermaButton(); recapitiDestinatarioPage.visualizzaValidazione(); } else { - DataPopulation.waitTime(5); + WebTool.waitTime(5); driver.navigate().refresh(); if (recapitiDestinatarioPage.siControllaPECModificata(pec)) { logger.info("La PEC è stata modificata"); @@ -589,7 +590,7 @@ public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneModificaPEC() { } @And("Nella pagina I Tuoi Recapiti si recupera il codice OTP della nuova PEC tramite chiamata request {string}") - public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaPECTramiteChiamataRequest(String dpFile) { + public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaPECTramiteChiamataRequest(String dpFile) { logger.info("Si recupera il codice OTP della nuova pec"); Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); @@ -756,7 +757,7 @@ public void nellaSezioneAltriRecapitiSiControllaCheLaPecAggiuntivaSiaStataInseri recapitiDestinatarioPage.waitLoadPage(); } String pec = dataPopulation.readDataPopulation("personaFisica.yaml").get("additionalEmail").toString(); - DataPopulation.waitTime(10); + WebTool.waitTime(10); driver.navigate().refresh(); if (!recapitiDestinatarioPage.verificaNuovaEmailEPEC(pec)) { logger.error("La email PEC non è stata associata correttamente"); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java index bea1c26de..fec3dda33 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DeleghePGPagoPATest.java @@ -13,6 +13,7 @@ import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; import it.pn.frontend.e2e.stepDefinitions.destinatario.personaFisica.DeleghePagoPATest; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; @@ -424,25 +425,25 @@ public void nellaPaginaDelegheSezioneDelegheACaricoDellImpresaSiInserisceIlGrupp @And("Creo in background una delega per persona giuridica") public void creoInBackgroundUnaDelegaPerPersonaGiuridica(Map personaGiuridica) { logger.info("Si controlla che ci sia una delega"); - String dateto = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - DelegatePG delegatePG = DelegatePG.builder() - .companyName(personaGiuridica.get("companyName")) - .displayName(personaGiuridica.get("displayName")) - .fiscalCode(personaGiuridica.get("fiscalCode")) - .person(Boolean.parseBoolean(personaGiuridica.get("person"))) - .build(); - DelegateRequestPG delegateRequestPG = DelegateRequestPG.builder() - .dateto(dateto) - .delegate(delegatePG) - .visibilityIds(new ArrayList<>()) - .verificationCode("12345") - .build(); - String tokenExchange = loginPGPagoPaTest.getTokenExchangePGFromFile(personaGiuridica.get("accessoCome")); - DelegateResponsePG response = restDelegation.addDelegationPG(delegateRequestPG, tokenExchange); - System.setProperty("mandateId", response.getMandateId()); - System.setProperty("verificationCode", response.getVerificationCode()); - driver.navigate().refresh(); - } + String dateto = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + DelegatePG delegatePG = DelegatePG.builder() + .companyName(personaGiuridica.get("companyName")) + .displayName(personaGiuridica.get("displayName")) + .fiscalCode(personaGiuridica.get("fiscalCode")) + .person(Boolean.parseBoolean(personaGiuridica.get("person"))) + .build(); + DelegateRequestPG delegateRequestPG = DelegateRequestPG.builder() + .dateto(dateto) + .delegate(delegatePG) + .visibilityIds(new ArrayList<>()) + .verificationCode("12345") + .build(); + String tokenExchange = loginPGPagoPaTest.getTokenExchangePGFromFile(personaGiuridica.get("accessoCome")); + DelegateResponsePG response = restDelegation.addDelegationPG(delegateRequestPG, tokenExchange); + System.setProperty("mandateId", response.getMandateId()); + System.setProperty("verificationCode", response.getVerificationCode()); + driver.navigate().refresh(); + } @And("Si clicca sul bottone accetta delega dopo aver inserito il codice di verifica") public void siCliccaSulBottoneAccettaDelegaDopoAverInseritoIlCodiceDiVerifica() { @@ -478,7 +479,8 @@ public void siAccettaLaDelegaGruppo(String withGroup) { BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.accettazioneDelegaSceltaGruppo(withGroup.equalsIgnoreCase("senza")); } - public void siInserisceIlCodiceDellaDelegaACaricoDellImpresaNellaModaleErrata(){ + + public void siInserisceIlCodiceDellaDelegaACaricoDellImpresaNellaModaleErrata() { deleghePGPagoPAPage.inserimentoCodiceDelegaACaricoDellImpresaAPI("00000"); @@ -495,17 +497,25 @@ public void siEmulaAccettazioneDellaDelegaConGruppoConErrore() { backgroundTest.checkDelegaSceltaGruppoEInserimentoCodiceErrata(); } - public void checkErroreInInserimentoCodiceErrato() { + public void checkErroreInInserimentoCodiceErrato() { deleghePGPagoPAPage.checkErroreInInserimentoCodice(); } + public void siCliccaSulBottoneIndietroInInserimentoCodiceVerifica() { deleghePGPagoPAPage.clickIndietroInInserimentoCodiceVerifica(); } - public void siCliccaSulBottoneIndietroInAssegnazioneGruppo(){ + public void siCliccaSulBottoneIndietroInAssegnazioneGruppo() { deleghePGPagoPAPage.clickButtonIndietroInAssegnazioneGruppo(); } + @And("Non si inserisce il codice OTP e l invito della delega non è più presente") + public void nonSiInserisceIlCodiceOTPELInvitoDellaDelegaNonèPiùPresente() { + WebTool.waitTime(61 * 15); + driver.navigate().refresh(); + deleghePGPagoPAPage.waitLoadDeleghePage(); + } + @And("Si inserisce un codice della delega a carico dell impresa errato nella modale") public void siInserisceUnCodiceDellaDelegaACaricoDellImpresaErratoNellaModale() { logger.info("Si inserisce un codice della delega errato nella modale"); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java index 09a527819..2e45705fc 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/DisserviziAppPGTest.java @@ -6,7 +6,7 @@ import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.DisserviziAppPage; import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.PiattaformaNotifichePGPAPage; import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; -import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; @@ -61,7 +61,7 @@ public void siVerificaAvvenutoDisservizioInPaginaStatoPiattaforma() { backgroundTest.getStatoDellaPiattaformaPage(); boolean res = false; for (int i = 0; i < 2; i++) { - DataPopulation.waitTime(15); + WebTool.waitTime(15); disserviziAppPage.aggiornamentoPagina(); if (disserviziAppPage.checkDisservizioInCorso()) { res = true; diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/LoginPGPagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/LoginPGPagoPATest.java index 68bad5db3..bb080224d 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/LoginPGPagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/LoginPGPagoPATest.java @@ -15,6 +15,7 @@ import it.pn.frontend.e2e.section.destinatario.personaGiuridica.HeaderPGSection; import it.pn.frontend.e2e.utility.CookieConfig; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.apache.hc.client5.http.cookie.BasicCookieStore; import org.apache.hc.client5.http.impl.cookie.BasicClientCookie; import org.junit.Assert; @@ -76,16 +77,16 @@ public void loginMittenteConTokenExchange(String personaGiuridica) { String urlLogin = "https://imprese." + environment + ".notifichedigitali.it/#selfCareToken=" + token; this.driver.get(urlLogin); logger.info("Login effettuato con successo"); - DataPopulation.waitTime(10); + WebTool.waitTime(10); // Si visualizza la dashboard e si verifica che gli elementi base siano presenti (header e title della pagina) - if(personaGiuridica.equalsIgnoreCase("delegante")){ + if (personaGiuridica.equalsIgnoreCase("delegante")) { HeaderPGSection headerPGSection = new HeaderPGSection(this.driver); headerPGSection.waitLoadHeaderPGPage(); PiattaformaNotifichePGPAPage notifichePGPage = new PiattaformaNotifichePGPAPage(this.driver); Map personaGiuridicaFile = dataPopulation.readDataPopulation("personaGiuridica.yaml"); notifichePGPage.waitLoadPiattaformaNotificaPage(personaGiuridicaFile.get("ragioneSociale").toString()); - }else { + } else { HeaderPGSection headerPGSection = new HeaderPGSection(this.driver); headerPGSection.waitLoadHeaderPGPage(); PiattaformaNotifichePGPAPage notifichePGPage = new PiattaformaNotifichePGPAPage(this.driver); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java index 6c565aa7e..85bb51cf9 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RecapitiPGPagoPaTest.java @@ -8,6 +8,7 @@ import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.RecapitiPGPage; import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,7 +72,7 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlNumeroDiTelefonoDelPGECliccaSul @Then("Si visualizzano correttamente tutti gli elementi della sezione altri recapiti") public void siVisualizzanoCorrettamenteTuttiGliElementiDellaSezioneAltriRecapiti() { logger.info("Si visualizzano correttamente tutti gli elementi della sezione altri recapiti"); - DataPopulation.waitTime(10); + WebTool.waitTime(10); this.driver.navigate().refresh(); recapitiDestinatarioPage.visualizzazioneCampiSezioneAltriRecapiti(); } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/LoginMittentePagoPA.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/LoginMittentePagoPA.java index e3ad6a12e..db289b469 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/LoginMittentePagoPA.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/LoginMittentePagoPA.java @@ -14,6 +14,7 @@ import it.pn.frontend.e2e.section.mittente.HeaderPASection; import it.pn.frontend.e2e.utility.CookieConfig; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.apache.hc.client5.http.cookie.BasicCookieStore; import org.apache.hc.client5.http.impl.cookie.BasicClientCookie; import org.junit.Assert; @@ -69,7 +70,7 @@ public void loginMittenteConTokenExchange() { String urlLogin = "https://selfcare." + environment + ".notifichedigitali.it/#selfCareToken=" + token; this.driver.get(urlLogin); logger.info("Login effettuato con successo"); - DataPopulation.waitTime(10); + WebTool.waitTime(10); // Si visualizza la dashboard e si verifica che gli elementi base siano presenti (header e title della pagina) HeaderPASection headerPASection = new HeaderPASection(this.driver); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NewNotifichePagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NewNotifichePagoPATest.java index 47483c609..e89049791 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NewNotifichePagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/NewNotifichePagoPATest.java @@ -11,7 +11,7 @@ import it.pn.frontend.e2e.model.enums.NotificationFeePolicyEnum; import it.pn.frontend.e2e.model.enums.PhysicalCommunicationTypeEnum; import it.pn.frontend.e2e.rest.RestNotification; -import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; @@ -33,18 +33,18 @@ public void creoUnaNotificaConUnDestinatarioEUnDocumento() throws RestNotificati recipients.add(new Recipient()); ArrayList documents = new ArrayList<>(); documents.add(new Document()); - NewNotificationRequest notification = new NewNotificationRequest(DataPopulation.generatePaProtocolNumber(), "Pagamento Rata IMU", recipients, documents, PhysicalCommunicationTypeEnum.AR_REGISTERED_LETTER, "123456A", NotificationFeePolicyEnum.FLAT_RATE); + NewNotificationRequest notification = new NewNotificationRequest(WebTool.generatePaProtocolNumber(), "Pagamento Rata IMU", recipients, documents, PhysicalCommunicationTypeEnum.AR_REGISTERED_LETTER, "123456A", NotificationFeePolicyEnum.FLAT_RATE); while (attempt <= maxAttempts) { NewNotificationResponse response = restNotification.newNotificationWithOneRecipientAndDocument(notification); if (response != null) { logger.info("Notifica creata con successo"); - System.setProperty("IUN", DataPopulation.decodeNotificationRequestId(response.getNotificationRequestId())); + System.setProperty("IUN", WebTool.decodeNotificationRequestId(response.getNotificationRequestId())); return; } else { logger.warn("Tentativo #" + attempt + " di creazione della notifica fallito. Riprovo..."); - notification.setPaProtocolNumber(DataPopulation.generatePaProtocolNumber()); + notification.setPaProtocolNumber(WebTool.generatePaProtocolNumber()); attempt++; } } @@ -89,7 +89,7 @@ public void creoUnaNotificaConUnDestinatarioEUnDocumento(Integer numMultiRecipie @Then("Attendo {int} minuti e verifico in background che la notifica sia stata creata correttamente") public void verificoCheLaNotificaSiaStataCreataCorrettamente(int minutes) { - DataPopulation.waitTime(minutes * 60); + WebTool.waitTime(minutes * 60); driver.navigate().refresh(); /* TODO Need to implement the check of the notification 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 9ea49eb8b..2c00a69c1 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 @@ -8,6 +8,7 @@ import it.pn.frontend.e2e.api.mittente.AccettazioneRichiestaNotifica; import it.pn.frontend.e2e.listeners.Hooks; import it.pn.frontend.e2e.listeners.NetWorkInfo; +import it.pn.frontend.e2e.model.enums.AppPortal; import it.pn.frontend.e2e.pages.mittente.AreaRiservataPAPage; import it.pn.frontend.e2e.pages.mittente.InvioNotifichePAPage; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; @@ -15,6 +16,7 @@ import it.pn.frontend.e2e.section.mittente.*; import it.pn.frontend.e2e.utility.CookieConfig; import it.pn.frontend.e2e.utility.DataPopulation; +import it.pn.frontend.e2e.utility.WebTool; import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -33,9 +35,11 @@ public class NotificaMittentePagoPATest { private static final Logger logger = LoggerFactory.getLogger("NotificaMittentePagoPATest"); - private final WebDriver driver = Hooks.driver; private Map datiNotifica = new HashMap<>(); + private Map datiNotificaMap = new HashMap<>(); + private Map destinatarioMap = new HashMap<>(); + private Map indirizzoMap = new HashMap<>(); private Map personaFisica = new HashMap<>(); private final List netWorkInfos = Hooks.netWorkInfos; private Map personaGiuridica = new HashMap<>(); @@ -44,11 +48,13 @@ public class NotificaMittentePagoPATest { private final DestinatarioPASection destinatarioPASection = new DestinatarioPASection(this.driver); private final DataPopulation dataPopulation = new DataPopulation(); private final DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); + private final String variabileAmbiente = System.getProperty("environment"); + private final InformazioniPreliminariPASection informazioniPreliminariPASection = new InformazioniPreliminariPASection(this.driver); + @When("Nella Home page mittente cliccare sul bottone Gestisci di Piattaforma Notifiche") public void nellaHomePageMittenteCliccareSuGestisciDiPiattaforma() { AreaRiservataPAPage areaRiservataPAPage = new AreaRiservataPAPage(this.driver); - String variabileAmbiente = System.getProperty("environment"); logger.info("Cliccare sul bottone di Piattaforma Notifiche dell'Ambiente " + variabileAmbiente); switch (variabileAmbiente) { case "dev" -> areaRiservataPAPage.selezionaPiattaformaNotificaDev(); @@ -71,7 +77,6 @@ public void siVisualizzaCorrettamenteLaPaginaPiattaformaNotifiche() { throw new RuntimeException(e); } - String variabileAmbiente = System.getProperty("environment"); String urlChiamata = "https://webapi." + variabileAmbiente + ".notifichedigitali.it/delivery/notifications/sent?"; int codiceRispostaChiamataApi = getCodiceRispostaChiamataApi(urlChiamata); if (codiceRispostaChiamataApi != 200 && codiceRispostaChiamataApi != 0) { @@ -130,7 +135,6 @@ public String getNumeroProtocollo() { @And("Nella pagina Piattaforma Notifiche cliccare sul bottone Invia una nuova notifica") public void nellaPaginaPiattaformaNotificheCliccareSulBottoneInviaUnaNuovaNotifica() { logger.info("Selezione bottone invia una nuova notifica"); - piattaformaNotifichePage.selectInviaUnaNuovaNotificaButton(); piattaformaNotifichePage.waitLoadingSpinner(); } @@ -141,26 +145,19 @@ public void siVisualizzaCorrettamenteLaPaginaPiattaformaNotificheSectionInformaz HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - - InformazioniPreliminariPASection informazioniPreliminariPASection = new InformazioniPreliminariPASection(this.driver); informazioniPreliminariPASection.waitLoadInformazioniPreliminariPASection(); } @And("Nella section Informazioni preliminari inserire i dati della notifica {string} senza pagamento") public void nellaSectionInformazioniPreliminariInserireIDatiDellaNotificaSenzaPagamento(String datiNotificaFile) { logger.info("Inserimento dei dati della notifica senza pagamento dal file " + datiNotificaFile + ".yaml"); - aggiornamentoNumeroProtocollo(); - this.datiNotifica = dataPopulation.readDataPopulation(datiNotificaFile + ".yaml"); - - String variabileAmbiente = System.getProperty("environment"); String gruppo = ""; switch (variabileAmbiente) { case "dev" -> gruppo = datiNotifica.get("gruppoDev").toString(); case "test", "uat" -> gruppo = datiNotifica.get("gruppoTest").toString(); } - InformazioniPreliminariPASection informazioniPreliminariPASection = new InformazioniPreliminariPASection(this.driver); informazioniPreliminariPASection.insertOggettoNotifica(this.datiNotifica.get("oggettoDellaNotifica").toString()); informazioniPreliminariPASection.insertDescrizione(this.datiNotifica.get("descrizione").toString()); informazioniPreliminariPASection.insertNumeroDiProtocollo(this.datiNotifica.get("numeroProtocollo").toString()); @@ -175,7 +172,7 @@ private void aggiornamentoNumeroProtocollo() { String numeroProtocolOld = allDatataPopulation.get("numeroProtocollo").toString(); String numeroProtocolNew; do { - numeroProtocolNew = DataPopulation.generatePaProtocolNumber(); + numeroProtocolNew = WebTool.generatePaProtocolNumber(); } while (numeroProtocolOld.equals(numeroProtocolNew)); allDatataPopulation.put("numeroProtocollo", numeroProtocolNew); dataPopulation.writeDataPopulation("datiNotifica.yaml", allDatataPopulation); @@ -185,7 +182,6 @@ private void aggiornamentoNumeroProtocollo() { @And("Cliccare su continua") public void cliccareSuContinua() { logger.info("Cliccare sul bottone continua"); - InvioNotifichePAPage invioNotifichePAPage = new InvioNotifichePAPage(this.driver); invioNotifichePAPage.selezionareContinuaButton(); } @@ -923,6 +919,99 @@ public void siCliccaSullaSecondaPaginaDelleNotifiche(int pagina) { piattaformaNotifichePage.clickPagina(pagina); } + @Then("Nella section Informazioni preliminari si inseriscono i dati della notifica") + public void nellaSectionInformazioniPreliminariSiInserisconoIDatiDellaNotifica(Map datiNotifica) { + logger.info("Si inseriscono i dati della notifica nella sezione Informazioni Preliminari"); + String numeroDiProtocollo = WebTool.generatePaProtocolNumber(); + informazioniPreliminariPASection.insertOggettoNotifica(datiNotifica.get("oggettoNotifica")); + informazioniPreliminariPASection.insertDescrizione(datiNotifica.get("descrizione")); + informazioniPreliminariPASection.insertNumeroDiProtocollo(numeroDiProtocollo); + informazioniPreliminariPASection.insertGruppo(datiNotifica.get("gruppo")); + informazioniPreliminariPASection.insertCodiceTassonometrico(datiNotifica.get("codiceTassonomico")); + if (datiNotifica.get("modalitaInvio").equals("A/R")) { + informazioniPreliminariPASection.selectRaccomandataAR(); + } else { + informazioniPreliminariPASection.selectRegisteredLetter890(); + } + datiNotificaMap.put("numeroProtocollo", numeroDiProtocollo); + datiNotificaMap = datiNotifica; + } + + @Then("Nella section Destinatario si inseriscono i dati del destinatario") + public void nellaSectionDestinatarioSiInserisconoIDatiDelDestinatario(Map destinatario) { + logger.info("Si inseriscono i dati del destinatario nella sezione Destinatario"); + if (destinatario.get("soggettoGiuridico").equals("PF")) { + destinatarioPASection.selezionarePersonaFisica(); + } else { + destinatarioPASection.clickRadioButtonPersonaGiuridica(); + } + String nomeDestinatario = destinatario.get("nomeCognomeDestinatario"); + if (nomeDestinatario.split(" ").length > 0) { + destinatarioPASection.inserireNomeDestinatario(nomeDestinatario.split(" ")[0]); + destinatarioPASection.inserireCognomeDestinatario(nomeDestinatario.split(" ")[1]); + } else { + destinatarioPASection.insertRagioneSociale(nomeDestinatario); + } + destinatarioPASection.inserireCodiceFiscaleDestinatario(destinatario.get("codiceFiscale")); + destinatarioMap = destinatario; + } + + @And("Nella section Destinitario si clicca su {string} e si inseriscono i dati") + public void nellaSectionDestinitarioSiCliccaSuESiInserisconoIDati(String tipoIndirizzo, Map indirizzo) { + logger.info("Si clicca su " + tipoIndirizzo + " e si inseriscono i dati"); + if (tipoIndirizzo.contains("Aggiungi un indirizzo fisico")) { + destinatarioPASection.selezionaAggiungiUnIndirizzoFisico(); + } else { + destinatarioPASection.checkBoxAggiungiDomicilio(); + } + destinatarioPASection.inserireIndirizzo(indirizzo.get("indirizzo")); + destinatarioPASection.inserireNumeroCivico(indirizzo.get("civico")); + destinatarioPASection.inserireLocalita(indirizzo.get("localita")); + destinatarioPASection.inserireComune(indirizzo.get("comune")); + destinatarioPASection.inserireProvincia(indirizzo.get("provincia")); + destinatarioPASection.inserireCodicePostale(indirizzo.get("cap")); + destinatarioPASection.inserireStato(indirizzo.get("stato")); + indirizzoMap = indirizzo; + } + + @Then("Nella section Allegati si carica un atto") + public void nellaSectionAllegatiSiCaricaUnAtto() { + logger.info("Caricamento dell'allegato notifica.pdf"); + + AllegatiPASection allegatiPASection = new AllegatiPASection(this.driver); + File notificaFile = new File("src/test/resources/notifichePdf/notifica.pdf"); + String pathNotificaFile = notificaFile.getAbsolutePath(); + allegatiPASection.caricareNotificaPdfDalComputer(pathNotificaFile); + + if (allegatiPASection.verificaCaricamentoNotificaPdf()) { + logger.info("File notifica.pdf caricato correttamente"); + } else { + logger.error("File notifica.pdf non caricato"); + Assert.fail("File notifica.pdf non caricato"); + } + allegatiPASection.inserimentoNomeAllegato(datiNotificaMap.get("descrizione")); + } + + @And("Si verifica che la notifica è stata creata correttamente") + public void siVerificaCheLaNotificaeStataCreataCorrettamente() { + logger.info("Si verifica che la notifica sia stata creata correttamente filtrandolo per il numero di protocollo"); + piattaformaNotifichePage.verificaNotificaCreata(); + } + + @Then("In parallelo si effettua l'accesso al portale destinatario persona fisica e si apre la notifica ricevuta") + public void inParalleloSiEffettuaLAccessoAlPortaleDestinatarioESiApreLaNotificaRicevuta() { + WebTool.switchToPortal(AppPortal.PF); + piattaformaNotifichePage.selezionaNotifica(); + WebTool.waitTime(5); + WebTool.closeTab(); + } + + @Then("Si verifica che la notifica abbia lo stato {string}") + public void siVerificaCheLaNotificaAbbiaLoStato(String stato) { + logger.info("Si verifica che la notifica abbia lo stato " + stato); + piattaformaNotifichePage.verificaPresenzaStato(stato); + } + /** * A simple object that represents the esito notifica, i.e. the return value of siVerificaEsitoNotifica. */ @@ -945,15 +1034,14 @@ public EsitoNotifica(String statusNotifica, AccettazioneRichiestaNotifica accett */ protected EsitoNotifica siVerificaEsitoNotifica(String dpFile) { logger.info("si verifica se la notifica è stata accettata o rifiutata"); - String variabileAmbiente = System.getProperty("environment"); final String urlNotificationRequest = "https://webapi." + variabileAmbiente + ".notifichedigitali.it/delivery/v2.3/requests"; final String urlRichiestaNotifica = "https://api." + variabileAmbiente + ".notifichedigitali.it/delivery/v2.3/requests/"; AccettazioneRichiestaNotifica accettazioneRichiestaNotifica = new AccettazioneRichiestaNotifica(); String codiceApi; if (variabileAmbiente.equals("test")) { - codiceApi = dataPopulation.readDataPopulation("mittente.yaml").get("codiceApiKeyTEST").toString(); + codiceApi = "2b3d47f4-44c1-4b49-b6ef-54dc1c531311"; } else { - codiceApi = dataPopulation.readDataPopulation("mittente.yaml").get("codiceApiKeyDEV").toString(); + codiceApi = "a9f0508d-c344-4347-807f-343bc8210996"; } accettazioneRichiestaNotifica.setxApikey(codiceApi); String statusNotifica = "WAITING"; 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 af7fe6518..6baba02bb 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 @@ -47,7 +47,6 @@ public void inserireCodiceFiscale(String dpFile) { @And("Cliccare sul bottone Filtra") public void cliccareSulBottoneFiltra() { logger.info("Si clicca sul tasto filtra"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.selectFiltraButton(); } @@ -470,6 +469,7 @@ public void siVerificaCheICampiDellaRicercaDelleDateSianoErrate() { Assert.fail("Le date inserite sono corrette"); } } + @Then("Nella pagina piattaforma Notifiche è presente un campo di ricerca con un menu a tendina per selezionare lo stato della notifica") public void nellaPaginaPiattaformaNotificheÈPresenteUnCampoDiRicercaConUnMenuATendinaPerSelezionareLoStatoDellaNotifica() { PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); diff --git a/src/test/java/it/pn/frontend/e2e/utility/DataPopulation.java b/src/test/java/it/pn/frontend/e2e/utility/DataPopulation.java deleted file mode 100644 index 399037640..000000000 --- a/src/test/java/it/pn/frontend/e2e/utility/DataPopulation.java +++ /dev/null @@ -1,106 +0,0 @@ -package it.pn.frontend.e2e.utility; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; -import org.junit.Assert; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.concurrent.TimeUnit; - -public class DataPopulation { - private static final Logger logger = LoggerFactory.getLogger("DataPopulation"); - - private ObjectMapper objectMapper; - - public Map readDataPopulation(String dpFile) { - this.objectMapper = new ObjectMapper(new YAMLFactory()); - TypeReference> typeReference = new TypeReference<>() { - }; - Map readValue = new HashMap<>(); - try { - return objectMapper.readValue(new File("src/test/resources/dataPopulation/" + dpFile), typeReference); - } catch (IOException e) { - logger.error(e.getMessage()); - Assert.fail(e.getMessage()); - } - return readValue; - } - - public void writeDataPopulation(String dpFile, Map dp) { - this.objectMapper = new ObjectMapper(new YAMLFactory().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)); - try { - this.objectMapper.writeValue(new File("src/test/resources/dataPopulation/" + dpFile), dp); - } catch (IOException e) { - logger.error(e.getMessage()); - Assert.fail(e.getMessage()); - } - } - - /** - * Generate a random protocol number - * - * @return a random protocol number as a String - */ - public static String generatePaProtocolNumber() { - // Get the current date in the format "yyyyMMdd" - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); - String currentDate = dateFormat.format(new Date()); - - // Generate a random number between 0 and 100 - Random random = new Random(); - String randomNumber = String.valueOf(random.nextInt(10000)); - - // Concatenate the current date and the random number - String protocolNumber = "TA-FFSMRC-" + currentDate + "-" + randomNumber; - logger.info("Protocol number generated: " + protocolNumber); - - return protocolNumber; - } - - /** - * Wait for the specified number of seconds - * - * @param seconds the number of seconds to wait - */ - public static void waitTime(int seconds) { - try { - int minutes; - int remainingSeconds; - if (seconds >= 60) { - minutes = seconds / 60; - remainingSeconds = seconds % 60; - logger.info("Si aspettano " + minutes + " minuti e " + remainingSeconds + " secondi... prima di proseguire oltre"); - } else { - logger.info("Si aspettano " + seconds + " secondi... prima di proseguire oltre"); - } - long millisecondsToWait = TimeUnit.SECONDS.toMillis(seconds); - Thread.sleep(millisecondsToWait); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException("Errore durante l'attesa.", e); - } - } - - /** - * Decode the NotificationRequestId from the response of the newNotification API - * The NotificationRequestId is encoded in base64 - * The decoded NotificationRequestId is a String IUN - * - * @param NotificationRequestId the requestID to decode - * @return String IUN - */ - public static String decodeNotificationRequestId(String NotificationRequestId) { - byte[] decodedBytes = java.util.Base64.getDecoder().decode(NotificationRequestId); - return new String(decodedBytes); - } -} diff --git a/src/test/resources/feature/2-mittente/1_invioNotifiche/128_A1_invioNotificaADestinatarioConIndirizzoFornitoDallaPA.feature b/src/test/resources/feature/2-mittente/1_invioNotifiche/128_A1_invioNotificaADestinatarioConIndirizzoFornitoDallaPA.feature new file mode 100644 index 000000000..a31ed3732 --- /dev/null +++ b/src/test/resources/feature/2-mittente/1_invioNotifiche/128_A1_invioNotificaADestinatarioConIndirizzoFornitoDallaPA.feature @@ -0,0 +1,44 @@ +Feature: Mittente invia una notifica digitale al destinatario con indirizzo fornito dalla PA + + @TestSuite + @TA_invioNotificaConIndirizzoFornitoDallaPA + @mittente + @invioNotifiche + + Scenario: PN-9242 - Mittente invia una notifica digitale al destinatario con indirizzo fornito dalla PA + Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard + And Nella pagina Piattaforma Notifiche cliccare sul bottone Invia una nuova notifica + And Si visualizza correttamente la pagina Piattaforma Notifiche section Informazioni preliminari + Then Nella section Informazioni preliminari si inseriscono i dati della notifica + | oggettoNotifica | Pagamento rata IMU | + | descrizione | PAGAMENTO RATA IMU | + | gruppo | test-TA-FE-TEST | + | codiceTassonomico | 123456A | + | modalitaInvio | A/R | + And Cliccare su continua + And Si visualizza correttamente la pagina Piattaforma Notifiche section Destinatario + Then Nella section Destinatario si inseriscono i dati del destinatario + | soggettoGiuridico | PF | + | nomeCognomeDestinatario | Gaio Giulio | + | codiceFiscale | CSRGGL44L13H501E | + And Nella section Destinitario si clicca su "Aggiungi un indirizzo fisico" e si inseriscono i dati + | indirizzo | Via Roma | + | civico | 20 | + | localita | Milano | + | comune | Milano | + | provincia | MI | + | cap | 20147 | + | stato | Italia | + And Cliccare su continua + And Si visualizza correttamente la pagina Piattaforma Notifiche section Allegati + Then Nella section Allegati si carica un atto + And Nella section Allegati cliccare sul bottone Invia + Then Si visualizza correttamente la frase La notifica è stata correttamente creata + And Cliccare sul bottone vai alle notifiche + And Si visualizza correttamente la pagina Piattaforma Notifiche + And Si verifica che la notifica è stata creata correttamente + Then In parallelo si effettua l'accesso al portale destinatario persona fisica e si apre la notifica ricevuta + And Aspetta 180 secondi + And Cliccare sulla notifica restituita + Then Si verifica che la notifica abbia lo stato "Avvenuto accesso" + And Logout da portale mittente \ No newline at end of file diff --git a/src/test/resources/feature/2-mittente/6_disserviziAppPA/023_a23_visualizzazioneDisserviziInCorsoPA.feature b/src/test/resources/feature/2-mittente/6_disserviziAppPA/023_A1_visualizzazioneDisserviziInCorsoPA.feature similarity index 100% rename from src/test/resources/feature/2-mittente/6_disserviziAppPA/023_a23_visualizzazioneDisserviziInCorsoPA.feature rename to src/test/resources/feature/2-mittente/6_disserviziAppPA/023_A1_visualizzazioneDisserviziInCorsoPA.feature From 914a1c79304241a7f8755d904949ba442533e819 Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli Date: Tue, 2 Apr 2024 12:09:55 +0200 Subject: [PATCH 6/7] deleted unused import --- .../e2e/pages/destinatario/personaFisica/DeleghePage.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/DeleghePage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/DeleghePage.java index b69b22c5e..2111add5b 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/DeleghePage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/DeleghePage.java @@ -9,8 +9,6 @@ import org.slf4j.LoggerFactory; import java.util.List; -import java.util.concurrent.TimeUnit; - public class DeleghePage extends BasePage { From 19767b199b95a1d6f886c3695d6681fd1990b8db Mon Sep 17 00:00:00 2001 From: Gabriele Busnelli Date: Wed, 3 Apr 2024 12:29:37 +0200 Subject: [PATCH 7/7] merge conflicts resolved + fix test --- .../e2e/common/RecapitiDestinatarioPage.java | 9 ++-- .../RecapitiPersonaFisicaTest.java | 50 ++++++++++++++++++- ...071_visualizzazioneAltriRecapitiPG.feature | 5 +- 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java index d7331a0d3..bf8f4d5ff 100644 --- a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java @@ -357,12 +357,13 @@ public String waitLoadPopUpElimina() { } public void clickSuConfermaElimina() { - By confermaRimuoviPECBy = By.xpath("//button[contains(text(),'Annulla')]/following-sibling::button"); - getWebDriverWait(30).withMessage("Non è stato possibile cliccare sul bottone conferma").until(ExpectedConditions.elementToBeClickable(confermaRimuoviPECBy)); + By confermaRimuoviPECBy = By.id("buttonConferma"); + getWebDriverWait(10).withMessage("Non è stato possibile cliccare sul bottone conferma").until(ExpectedConditions.elementToBeClickable(confermaRimuoviPECBy)); this.element(confermaRimuoviPECBy).click(); } + public boolean siControllaEliminazionePEC() { - return pecField.isDisplayed(); + return pecField.isDisplayed(); } public boolean siControllaPresenzaPEC() { @@ -537,7 +538,7 @@ public void visualizzazioneSezioneAltriRecapiti() { public void visualizzazioneCampiSezioneAltriRecapiti() { vaiInFondoAllaPagina(); - By altriRecapitiSectionBy = By.id("specialContactTitle"); + By altriRecapitiSectionBy = By.xpath("//h5[contains(@id, 'specialContact')]"); By titleGiaAssociatiBy = By.xpath("//p[contains(text(), 'Già associati')]"); WebElement tableGiaAssociati = driver.findElement(By.xpath("//table[@aria-label='Già associati']")); getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java index 18ae2cb5e..0dbc849bc 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RecapitiPersonaFisicaTest.java @@ -62,10 +62,15 @@ public void nellaPaginaITuoiRecapitiSiInserisceLaPECDelDestinatario(String dpFil recapitiDestinatarioPage.insertEmailPEC(emailPEC); } + @And("Nella pagina I Tuoi Recapiti si inserisce l'indirizzo della PEC {string}") + public void nellaPaginaITuoiRecapitiSiInserisceLIndirizzoDellaPECDelDestinatario(String emailPEC) { + logger.info("Si inserisce la email PEC"); + recapitiDestinatarioPage.insertEmailPEC(emailPEC); + } + @And("Nella pagina I Tuoi Recapiti si clicca sul bottone conferma") public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneConferma() { logger.info("Si cerca di cliccare sul bottone conferma"); - recapitiDestinatarioPage.confermaButtonClick(); } @@ -266,6 +271,47 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequest( } } + @And("Nella pagina I Tuoi Recapiti si recupera il codice OTP tramite chiamata request dell'email {string} e viene inserito") + public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequestDellEmailEVieneInserito(String email) { + + RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); + ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); + + String startUrl = "http://localhost:8887/"; + String url = startUrl + recuperoOTPRecapiti.getUrlEndPoint() + email; + boolean results = recuperoOTPRecapiti.runRecuperoOTPRecapiti(url); + if (results) { + String OTP = recuperoOTPRecapiti.getResponseBody(); + iTuoiRecapitiPage.sendOTP(OTP); + recapitiDestinatarioPage.confermaButtonClickPopUp(); + if (recapitiDestinatarioPage.waitMessaggioErrore()) { + logger.error("Il codice OTP inserito è sbagliato"); + Assert.fail("Il codice OTP inserito è sbagliato"); + } + } else { + String variabileAmbiente = System.getProperty("environment"); + if (variabileAmbiente.equalsIgnoreCase("test")) { + startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; + } else if (variabileAmbiente.equalsIgnoreCase("dev")) { + startUrl = "http://internal-ecsa-20230409091221502000000003-2047636771.eu-south-1.elb.amazonaws.com:8080/"; + } + url = startUrl + recuperoOTPRecapiti.getUrlEndPoint() + email; + results = recuperoOTPRecapiti.runRecuperoOTPRecapiti(url); + if (results) { + String OTP = recuperoOTPRecapiti.getResponseBody(); + iTuoiRecapitiPage.sendOTP(OTP); + recapitiDestinatarioPage.confermaButtonClickPopUp(); + if (recapitiDestinatarioPage.waitMessaggioErrore()) { + logger.error("Il codice OTP inserito è sbagliato"); + Assert.fail("Il codice OTP inserito è sbagliato"); + } + } else { + logger.error("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); + Assert.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); + } + } + } + @And("Nella pagina I Tuoi Recapiti si inserisce il codice OTP {string}") public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTP(String dpFile) { logger.info("Si inserisce il codice OTP di verifica"); @@ -297,7 +343,7 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTP() { @Then("Nella pagina i Tuoi Recapiti si controlla che la pec sia stata inserita correttamente") public void nellaPaginaITuoiRecapitiSiControllaCheLaPecSiaStataInseritaCorrettamente() { logger.info("Si controlla che la pec sia stata inserita correttamente"); - WebTool.waitTime(10); + WebTool.waitTime(15); driver.navigate().refresh(); if (recapitiDestinatarioPage.siVisualizzaPopUpConferma()) { logger.info("Si clicca su conferma nel pop-up"); diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/008_071_visualizzazioneAltriRecapitiPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/008_071_visualizzazioneAltriRecapitiPG.feature index f4617843a..2a3b4b7aa 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/008_071_visualizzazioneAltriRecapitiPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/008_071_visualizzazioneAltriRecapitiPG.feature @@ -10,11 +10,10 @@ Feature: La persona giuridica visualizza tutti gli elementi della sezione altri When Nella pagina Piattaforma Notifiche persona giuridica si clicca sul bottone I Tuoi Recapiti And Si visualizza correttamente la pagina Recapiti persona giuridica And Nella pagina I Tuoi Recapiti si controlla che non ci sia già una pec - And Nella pagina I Tuoi Recapiti si inserisce la PEC "personaGiuridica" + And Nella pagina I Tuoi Recapiti si inserisce l'indirizzo della PEC "pec@pec.pagopa.it" And Nella pagina I Tuoi Recapiti si clicca sul bottone conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP - And Nella pagina I Tuoi Recapiti si recupera il codice OTP tramite chiamata request "personaGiuridica" - And Nella pagina I Tuoi Recapiti si inserisce il codice OTP "personaGiuridica" + And Nella pagina I Tuoi Recapiti si recupera il codice OTP tramite chiamata request dell'email "pec@pec.pagopa.it" e viene inserito Then Nella pagina i Tuoi Recapiti si controlla che la pec sia stata inserita correttamente And Nella sezione altri recapiti si inserisce un recapito Then Si visualizzano correttamente tutti gli elementi della sezione altri recapiti