diff --git a/config/configuration.properties b/config/configuration.properties new file mode 100644 index 000000000..c4611a29e --- /dev/null +++ b/config/configuration.properties @@ -0,0 +1,92 @@ +# test-config.properties +spring.profiles.active=uat + +browser=chrome +environment=test +cookie.config=true +headless=true +# the folder path must start with / and end with / +downloadFilePath=src/test/resources/dataPopulation/downloads/ +loadComponentWaitTime=120 +apiBaseUrl=https://webapi.${environment}.notifichedigitali.it/bff/v1/ + +#---------------------------------------------------------------- +ragione.sociale.baldassarre = Comune di Milano +#url.login.pg.dev = https://imprese.dev.notifichedigitali.it/ +url.login.pg.test = https://imprese.${environment}.notifichedigitali.it/ +#url.login.pf.dev = https://cittadini.dev.notifichedigitali.it/ +url.login.pf.test = https://cittadini.${environment}.notifichedigitali.it/ + +url.selfcare = https://uat.selfcare.pagopa.it/ +url.mittente = https://selfcare.${environment}.notifichedigitali.it + +codice.iun = YRUZ-NYXJ-DAJK-20240 +codice.iun.n1 = YRUZ-NYXJ-DAJK-202405-N-1 +codice.iun.n2 = YRUZ-NYXJ-DAJK-202405-N-2 +codice.iun.n3 = YRUZ-NYXJ-DAJK-202405-N-3 + + +# | --------- | --------- | ---------------- | ------------------- | +# | TYPE | PLATFORM | ENVIRONMENT | USER | +# |-----------|-----------|------------------|---------------------| +# | DELEGANTE | PF | TEST/DEV | GAIO GIULIO CESARE | +pn.bearer-token.tokentestPFDelegante = ${pn.external.bearer-token.tokentestPFDelegante} +pn.bearer-token.tokendevPFDelegante = ${pn.external.bearer-token.tokendevPFDelegante} +# |-----------|-----------|------------------|---------------------| +# | DELEGATO | PF | TEST/DEV | LUCREZIA BORGIA | +pn.bearer-token.tokentestPFDelegato = ${pn.external.bearer-token.tokentestPFDelegato} +pn.bearer-token.tokendevPFDelegato = ${pn.external.bearer-token.tokendevPFDelegato} +# |-----------|-----------|------------------|---------------------| +# | DELEGANTE | PG | TEST/DEV | CONVIVIO SPA | +pn.bearer-token.tokentestPGDelegante = ${pn.external.bearer-token.tokentestPGDelegante} +pn.bearer-token.tokendevPGDelegante = ${pn.external.bearer-token.tokendevPGDelegante} +# |-----------|-----------|------------------|---------------------| +# | DELEGATO | PG | TEST/DEV | LE EPISTOLAE SRL | +pn.bearer-token.tokentestPGDelegato = ${pn.external.bearer-token.tokentestPGDelegato} +pn.bearer-token.tokendevPGDelegato = ${pn.external.bearer-token.tokendevPGDelegato} +# |-----------|-----------|------------------|---------------------| +# | MITTENTE | PA | TEST/DEV | COMUNE DI VERONA | +pn.bearer-token.tokentestMittente = ${pn.external.bearer-token.tokentestMittente} +pn.bearer-token.tokendevMittente = ${pn.external.bearer-token.tokendevMittente} +# |-----------|-----------|------------------|----------------------| +# | DELEGANTE | PF | TEST/DEV | Cristoforo Colombo | +pn.bearer-token.tokentestPFColombo = ${pn.external.bearer-token.tokentestPFColombo} +# |-----------|-----------|------------------|----------------------| +# | RADD | 1 | TEST | null | +pn.bearer-token.tokentestRaddista1 = ${pn.external.bearer-token.tokentestRaddista1} +# |-----------|-----------|------------------|----------------------| + + +# | --------- | --------- | ---------------- | ------------------- | +# | TYPE | PLATFORM | ENVIRONMENT | USER | +# |-----------|-----------|------------------|---------------------| +# | DELEGANTE | PF | TEST/DEV | GAIO GIULIO CESARE | +pn.user.cesare = ${pn.external.user.cesare} +pn.pwd.cesare = ${pn.external.pwd.cesare} +# |-----------|-----------|------------------|---------------------| +# | DELEGATO | PF | TEST/DEV | LUCREZIA BORGIA | +pn.user.lucrezia = ${pn.external.user.lucrezia} +pn.pwd.lucrezia = ${pn.external.pwd.lucrezia} +# |-----------|-----------|------------------|---------------------| +# | DELEGANTE | PG | TEST/DEV | CONVIVIO SPA | +pn.user.dante = ${pn.external.user.dante} +pn.pwd.dante = ${pn.external.pwd.dante} +# |-----------|-----------|------------------|---------------------| +# | DELEGATO | PG | TEST/DEV | LE EPISTOLAE SRL | +pn.user.petrarca = ${pn.external.user.petrarca} +pn.pwd.petrarca = ${pn.external.pwd.petrarca} +# |-----------|-----------|------------------|---------------------| +# | MITTENTE | PA | TEST/DEV | COMUNE DI VERONA | +pn.user.mittente = ${pn.external.user.mittente} +pn.pwd.mittente = ${pn.external.pwd.mittente} +# |-----------|-----------|------------------|----------------------| + + + +# |----------------------| HELPDESK |----------------------| +pn.userDev.helpdesk = ${pn.external.userDev.helpdesk} +pn.pwdDev.helpdesk = ${pn.external.pwdDev.helpdesk} +pn.userUat.helpdesk = ${pn.external.userUat.helpdesk} +pn.pwdUat.helpdesk = ${pn.external.pwdUat.helpdesk} +pn.userTest.helpdesk = ${pn.external.userTest.helpdesk} +pn.pwdTest.helpdesk = ${pn.external.pwdTest.helpdesk} \ No newline at end of file diff --git a/pn-frontend-e2e.iml b/pn-frontend-e2e.iml new file mode 100644 index 000000000..abe781f78 --- /dev/null +++ b/pn-frontend-e2e.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 08eb10b83..ac6068b95 100644 --- a/pom.xml +++ b/pom.xml @@ -12,13 +12,44 @@ http://www.example.com + UTF-8 17 17 + 3.3.4 + 5.9.2 + 7.8.1 + 4.22.0 + 5.9.1 + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + com.vaadin.external.google + android-json + + + + + org.springframework.boot + spring-boot-starter-mail + + + + org.yaml + snakeyaml + 1.33 + @@ -27,57 +58,64 @@ 2.17.2 - - junit - junit - 4.13.2 - - org.seleniumhq.selenium selenium-java - 4.22.0 + ${selenium.version} - - org.seleniumhq.selenium selenium-devtools-v126 - 4.22.0 + ${selenium.version} + + + + io.github.bonigarcia + webdrivermanager + ${webdriver.version} - + io.cucumber - cucumber-java - 7.11.1 + cucumber-junit-platform-engine + ${cucumber.version} + test - - io.cucumber - cucumber-junit - 7.11.1 + cucumber-java - - io.cucumber - gherkin - 26.0.1 + cucumber-spring + ${cucumber.version} + test + - + - io.github.bonigarcia - webdrivermanager - 5.9.1 + org.junit.platform + junit-platform-suite + test + + org.junit.jupiter + junit-jupiter + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-api + + @@ -86,7 +124,6 @@ 4.5.14 - org.apache.commons @@ -115,7 +152,6 @@ 5.2.1 - org.apache.logging.log4j log4j-to-slf4j @@ -126,14 +162,22 @@ ch.qos.logback logback-classic - 1.4.12 + 1.5.6 ch.qos.logback logback-core - 1.4.12 + 1.5.6 + + + + + org.projectlombok + lombok + 1.18.30 + provided @@ -150,12 +194,17 @@ 20231013 - + - org.projectlombok - lombok - 1.18.30 - provided + com.google.code.gson + gson + 2.10.1 + + + + org.jsoup + jsoup + 1.15.4 @@ -165,13 +214,6 @@ 3.0.0 - - - com.google.code.gson - gson - 2.10.1 - - com.fasterxml.jackson.dataformat @@ -185,7 +227,6 @@ jackson-databind 2.14.0 - com.opencsv @@ -197,17 +238,12 @@ allure-cucumber7-jvm 2.21.0 - org.apache.pdfbox pdfbox 2.0.27 - - org.jsoup - jsoup - 1.15.4 - + org.apache.maven.plugins @@ -220,12 +256,60 @@ zip4j 2.11.5 - + + + + org.junit + junit-bom + 5.9.1 + pom + import + + + io.cucumber + cucumber-bom + 7.8.1 + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring.boot-version} + pom + import + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring.boot-version} + + + + org.projectlombok + lombok + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M5 + + + **/*Test.java + + + maven-clean-plugin @@ -244,10 +328,6 @@ 17 - - maven-surefire-plugin - 2.22.1 - maven-jar-plugin 3.0.2 @@ -271,15 +351,6 @@ - - - org.apache.maven.plugins - maven-compiler-plugin - - 14 - 14 - - - + - + \ No newline at end of file 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 59ad9a2d1..656aefb30 100644 --- a/src/main/java/it/pn/frontend/e2e/common/BasePage.java +++ b/src/main/java/it/pn/frontend/e2e/common/BasePage.java @@ -1,58 +1,78 @@ package it.pn.frontend.e2e.common; +import it.pn.frontend.e2e.config.WebDriverConfig; import org.openqa.selenium.*; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.time.Duration; import java.util.List; import java.util.concurrent.TimeUnit; +/* +*Modifiche e Ottimizzazioni +Costruttore con @Autowired: Iniezione di WebDriver tramite Spring Boot. +loadComponentWaitTime inizializzato tramite System.getProperty: Permette di definire il valore come variabile di ambiente con un valore predefinito di 10. +Metodo retryClickAndInsertText: Separato in un metodo privato per evitare codice duplicato. +Commenti migliorati: Documentazione migliorata per una migliore comprensione di alcune funzioni. +Thread.currentThread().interrupt() in waitLoadPage(): Gestisce correttamente l’interruzione del thread per conformità alle best practices di Java. +* +* +* */ + +@Component public class BasePage { - protected WebDriver driver; - - protected int loadComponentWaitTime = Integer.parseInt(System.getProperty("loadComponentWaitTime")); - private static final Logger loggerBase = LoggerFactory.getLogger("BasePage"); + protected WebDriver driver; + protected int loadComponentWaitTime; + private static final Logger loggerBase = LoggerFactory.getLogger(BasePage.class); + @Autowired public BasePage(WebDriver driver) { this.driver = driver; PageFactory.initElements(this.driver, this); + loadComponentWaitTime = Integer.parseInt(System.getProperty("loadComponentWaitTime", "10")); } protected void scrollToElementClickAndInsertText(WebElement element, String text) { try { if (!element.isDisplayed()) { - loggerBase.info("scroll elemento"); - this.js().executeScript("arguments[0].scrollIntoView(true);", element); + loggerBase.info("Scrolling to element"); + js().executeScript("arguments[0].scrollIntoView(true);", element); } - this.js().executeScript("arguments[0].click()", element); + js().executeScript("arguments[0].click()", element); if (text != null) { - loggerBase.info("inserimento testo"); + loggerBase.info("Inserting text"); element.sendKeys(text); } } catch (ElementNotInteractableException e) { - loggerBase.error("elemento non interagibile"); - this.js().executeScript("arguments[0].click()", element); - if (text != null) { - element.sendKeys(text); - } + loggerBase.error("Element not interactable", e); + retryClickAndInsertText(element, text); + } + } + + private void retryClickAndInsertText(WebElement element, String text) { + js().executeScript("arguments[0].click()", element); + if (text != null) { + element.sendKeys(text); } } public void scrollToElementAndClick(WebElement element) { try { if (!element.isDisplayed()) { - loggerBase.info("scroll elemento"); - this.js().executeScript("arguments[0].scrollIntoView(true);", element); + loggerBase.info("Scrolling to element"); + js().executeScript("arguments[0].scrollIntoView(true);", element); } - this.js().executeScript("arguments[0].click()", element); + js().executeScript("arguments[0].click()", element); } catch (ElementNotInteractableException e) { - loggerBase.error("elemento non interagibile"); - this.js().executeScript("arguments[0].click()", element); + loggerBase.error("elemento non interagibile", e); + js().executeScript("arguments[0].click()", element); } } @@ -61,11 +81,11 @@ protected WebDriverWait getWebDriverWait(long timeout) { } protected WebElement element(By by) { - return this.driver.findElement(by); + return driver.findElement(by); } protected List elements(By by) { - return this.driver.findElements(by); + return driver.findElements(by); } protected JavascriptExecutor js() { @@ -76,33 +96,33 @@ public void waitLoadPage() { try { TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { - throw new RuntimeException(e); + Thread.currentThread().interrupt(); + throw new RuntimeException("Interrupted while waiting for page load", e); } } public void vaiInFondoAllaPagina() { - this.js().executeScript("window.scrollBy(0,document.body.scrollHeight)"); + js().executeScript("window.scrollBy(0,document.body.scrollHeight)"); } public void aggiornamentoPagina() { - this.driver.navigate().refresh(); + driver.navigate().refresh(); } public void waitLoadingSpinner() { - By loadingSpinnerBy = By.xpath("//span[@role = 'loadingSpinner']"); - getWebDriverWait(60).withMessage("la pagina è ancora in caricamento").until(ExpectedConditions.invisibilityOfElementLocated(loadingSpinnerBy)); + By loadingSpinnerBy = By.xpath("//span[@role='loadingSpinner']"); + getWebDriverWait(60).withMessage("Page is still loading").until(ExpectedConditions.invisibilityOfElementLocated(loadingSpinnerBy)); } public void goBack() { - this.driver.navigate().back(); + driver.navigate().back(); } /** - * Clear the text field of a WebElement - * Note: this method replace clear() because - * it does not work with React-controlled inputs + * Clears text from a WebElement, compatible with React-controlled inputs. + * Replaces the default clear() method for better compatibility. * - * @param element WebElement to clear the text field + * @param element WebElement to clear */ public void clearWebElementField(WebElement element) { while (!element.getAttribute("value").isEmpty()) { @@ -110,8 +130,7 @@ public void clearWebElementField(WebElement element) { } } - public boolean checkURL(String url){ + public boolean checkURL(String url) { return driver.getCurrentUrl().contains(url); } - -} \ No newline at end of file +} diff --git a/src/main/java/it/pn/frontend/e2e/common/DettaglioNotificaSection.java b/src/main/java/it/pn/frontend/e2e/common/DettaglioNotificaSection.java index d90046ed4..760537238 100644 --- a/src/main/java/it/pn/frontend/e2e/common/DettaglioNotificaSection.java +++ b/src/main/java/it/pn/frontend/e2e/common/DettaglioNotificaSection.java @@ -1,11 +1,7 @@ package it.pn.frontend.e2e.common; -import io.cucumber.java.en.And; -import io.cucumber.java.en.Then; -import it.pn.frontend.e2e.section.mittente.DettaglioNotificaMittenteSection; -import it.pn.frontend.e2e.utility.NotificationBuilder; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -14,11 +10,17 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; + +@Component public class DettaglioNotificaSection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("DettaglioNotificaSection"); @@ -40,6 +42,11 @@ public class DettaglioNotificaSection extends BasePage { @FindBy(id = "breadcrumb-indietro-button") WebElement indietroButton; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public DettaglioNotificaSection(WebDriver driver) { super(driver); } @@ -67,7 +74,7 @@ public void waitLoadDettaglioNotificaDESection() { } public void clickLinkAttestazioniOpponibile(int numeroLinkAttestazioniOpponibile) { - WebTool.waitTime(2); + webTool.waitTime(2); attestazioniFile = driver.findElements(By.xpath("//button[contains(text(),'Attestazione opponibile a terzi: notifica presa in carico')]")); if (attestazioniFile.get(numeroLinkAttestazioniOpponibile).isDisplayed()) { attestazioniFile.get(numeroLinkAttestazioniOpponibile).click(); @@ -76,6 +83,14 @@ public void clickLinkAttestazioniOpponibile(int numeroLinkAttestazioniOpponibile } } + public void toBeClickableLinkAttestazioniOpponibile(int numeroLinkAttestazioniOpponibile) { + webTool.waitTime(2); + attestazioniFile = driver.findElements(By.xpath("//button[contains(text(),'Attestazione opponibile a terzi: notifica presa in carico')]")); + if (attestazioniFile.get(numeroLinkAttestazioniOpponibile).isDisplayed()) { + getWebDriverWait(10).withMessage("Il link non è cliccabile").until(elementToBeClickable(attestazioniFile.get(numeroLinkAttestazioniOpponibile))); + } + } + public void clickLinkDocumentiAllegati(int numeroLinkDocumentiAllegati) { if (documentiAllegati.get(numeroLinkDocumentiAllegati).isDisplayed()) { documentiAllegati.get(numeroLinkDocumentiAllegati).click(); @@ -98,7 +113,7 @@ public void selezioneVediDettaglioButton() { logger.info("Tutti gli stati sono stati visualizzati correttamente"); } else { logger.error("Tutti i stati non sono stati visualizzati correttamente"); - Assert.fail("Tutti i stati non sono stati visualizzati correttamente"); + Assertions.fail("Tutti i stati non sono stati visualizzati correttamente"); } } @@ -159,7 +174,7 @@ public void selezioneAvvisoPagoPa() { logger.info("check su avviso pagopa avvenuto con successo"); } catch (TimeoutException e) { logger.error("check su avviso pagopa non avvenuto con successo: " + e.getMessage()); - Assert.fail("check su avviso pagopa non avvenuto con successo: " + e.getMessage()); + Assertions.fail("check su avviso pagopa non avvenuto con successo: " + e.getMessage()); } } 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 60aa0e832..ffe459cf7 100644 --- a/src/main/java/it/pn/frontend/e2e/common/HelpdeskPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/HelpdeskPage.java @@ -1,10 +1,11 @@ package it.pn.frontend.e2e.common; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.model.enums.Disservice; import it.pn.frontend.e2e.model.enums.Status; import it.pn.frontend.e2e.utility.WebTool; import org.apache.commons.io.FileUtils; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -30,8 +31,11 @@ import java.util.stream.Stream; import net.lingala.zip4j.ZipFile; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; - +@Component public class HelpdeskPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("Helpdesk Page"); @@ -73,6 +77,13 @@ public class HelpdeskPage extends BasePage { private String zipPassword; private String codiceIdentificativoPF; + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public HelpdeskPage(WebDriver driver) { super(driver); } @@ -97,7 +108,7 @@ public void checkForm() { this.getWebDriverWait(40).withMessage("submit non presente").until(ExpectedConditions.visibilityOf(this.loginButton)); } catch (TimeoutException e) { logger.error("Form non presente errore: " + e.getMessage()); - Assert.fail("Form non presente errore: " + e.getMessage()); + Assertions.fail("Form non presente errore: " + e.getMessage()); } } @@ -107,14 +118,14 @@ public void checkHome() { logger.info("pagina home carica"); } catch (TimeoutException e) { logger.error("errore caricamento home helpdesk: " + e.getMessage()); - Assert.fail("errore caricamento home helpdesk: " + e.getMessage()); + Assertions.fail("errore caricamento home helpdesk: " + e.getMessage()); } } public void waitLoadServiceTable() { if (services.size() < 3) { logger.error("I servizi visualizzati sono meno di 3"); - Assert.fail("I servizi visualizzati sono meno di 3"); + Assertions.fail("I servizi visualizzati sono meno di 3"); } getWebDriverWait(10).withMessage("Non è visibile la tabella dei disservizi").until(ExpectedConditions.visibilityOfAllElements(services)); } @@ -141,7 +152,7 @@ public void clickMonitoraggio() { this.monitoraggioPN.click(); } catch (TimeoutException e) { logger.error("Card monitoraggio non cliccabile: " + e.getMessage()); - Assert.fail("Card monitoraggio non cliccabile: " + e.getMessage()); + Assertions.fail("Card monitoraggio non cliccabile: " + e.getMessage()); } } @@ -159,7 +170,7 @@ public void handleDisservizio(Disservice disservizio, Status status) { WebElement tooltip = this.element(By.xpath(".//div[@role='tooltip']")); if (!tooltip.isDisplayed()) { logger.error("Non è stato possibile visualizzare il tooltip per il disservizio"); - Assert.fail("Non è stato possibile visualizzare il tooltip per il disservizio"); + Assertions.fail("Non è stato possibile visualizzare il tooltip per il disservizio"); } WebElement button = tooltip.findElement(By.id(status.getValue() + "-insert")); getWebDriverWait(10).withMessage("Il pulsante: " + status.getValue() + " non è visibile o cliccabile").until(ExpectedConditions.and( @@ -202,7 +213,7 @@ public boolean checkIsCreatedDisservizio() { return false; } catch (TimeoutException e) { logger.error("disservizio non creato: " + e.getMessage()); - Assert.fail("disservizio non creato: " + e.getMessage()); + Assertions.fail("disservizio non creato: " + e.getMessage()); return false; } } @@ -215,7 +226,7 @@ public void clickSezioneRicerca() { this.elements(ricercaButton).get(0).click(); } catch (TimeoutException e) { logger.error("Card ricerca non cliccabile: " + e.getMessage()); - Assert.fail("Card ricerca non cliccabile: " + e.getMessage()); + Assertions.fail("Card ricerca non cliccabile: " + e.getMessage()); } } @@ -230,7 +241,7 @@ public void checkRicercaPage() { this.getWebDriverWait(30).withMessage("button reset filtri non trovato").until(ExpectedConditions.visibilityOfElementLocated(buttonResetFiltri)); } catch (TimeoutException e) { logger.error("home ricerca non caricata correttamente: " + e.getMessage()); - Assert.fail("home ricerca non caricata correttamente: " + e.getMessage()); + Assertions.fail("home ricerca non caricata correttamente: " + e.getMessage()); } } @@ -248,7 +259,7 @@ public void logout() { this.elements(buttonConfermaLogout).get(0).click(); } catch (TimeoutException e) { logger.error("logout non riuscito correttamente: " + e.getMessage()); - Assert.fail("logout non riuscito correttamente: " + e.getMessage()); + Assertions.fail("logout non riuscito correttamente: " + e.getMessage()); } } @@ -264,7 +275,7 @@ public void insertCfAndRicercaOnPage(String codiceFiscale) { buttonRicerca.click(); } catch (TimeoutException e) { logger.error("bottone non cliccabile:" + e.getMessage()); - Assert.fail("bottone non cliccabile:" + e.getMessage()); + Assertions.fail("bottone non cliccabile:" + e.getMessage()); } try { @@ -291,7 +302,7 @@ public void insertIunAndRicercaOnPage(String iun) { this.getWebDriverWait(30).withMessage("bottone per la ricerca non trovato").until(ExpectedConditions.elementToBeClickable(buttonRicerca)); buttonRicerca.click(); - WebTool.waitTime(3); + webTool.waitTime(3); } public void insertIun(String iun) { @@ -318,7 +329,7 @@ public void checkUid() { setCodiceIdentificativoPF(Uid.getText().replace("Codice Univoco: ", "")); } catch (TimeoutException e) { logger.error("codice univoco non trovato: " + e.getMessage()); - Assert.fail("codice univoco non trovato: " + e.getMessage()); + Assertions.fail("codice univoco non trovato: " + e.getMessage()); } } @@ -348,7 +359,7 @@ public void changeOption() { this.getWebDriverWait(30).withMessage("input uid non trovato").until(ExpectedConditions.visibilityOfElementLocated(checkUidIsDisplayed)); } catch (TimeoutException e) { logger.error("opzione ottieni cf non trovata: " + e.getMessage()); - Assert.fail("opzione ottieni cf non trovata: " + e.getMessage()); + Assertions.fail("opzione ottieni cf non trovata: " + e.getMessage()); } } @@ -393,7 +404,7 @@ public void checkMessaggioDiErroreData() { this.getWebDriverWait(15).withMessage("Messaggio di errore non trovato").until(ExpectedConditions.visibilityOfElementLocated(messaggio)); } catch (TimeoutException e) { logger.error("Messaggio di errore non trovato: " + e.getMessage()); - Assert.fail("Messaggio di errore non trovato: " + e.getMessage()); + Assertions.fail("Messaggio di errore non trovato: " + e.getMessage()); } } @@ -409,8 +420,9 @@ public void checkMessaggioDiErroreCF() { this.getWebDriverWait(15).withMessage("Messaggio di errore non trovato").until(ExpectedConditions.visibilityOfElementLocated(messaggio)); } + public void checkZipLink() throws IOException, AWTException { - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = webDriverConfig.getHeadless().equalsIgnoreCase("true"); if (!headless) { logger.info("controllo esistenza link per scaricare zip"); By zipLink = By.xpath("//a[contains(text(),'Download')]"); @@ -597,7 +609,7 @@ public void clickResettaFiltri() { } public void checkCampiPuliti() { - Assert.assertTrue("I campi non sono puliti", numeroTicketInput.getAttribute("value").isEmpty() && codiceFiscaleInput.getAttribute("value").isEmpty()); + Assertions.assertTrue(numeroTicketInput.getAttribute("value").isEmpty() && codiceFiscaleInput.getAttribute("value").isEmpty(),"I campi non sono puliti"); logger.info("I campi sono puliti"); } @@ -615,7 +627,7 @@ public void checkCodiceFiscale() { logger.info("codice fiscale corrispondente"); } else { logger.error("codice fiscale diverso"); - Assert.fail("dopo ricerca di corrispondenza il codice fiscale risulta differente"); + Assertions.fail("dopo ricerca di corrispondenza il codice fiscale risulta differente"); } } @@ -641,7 +653,7 @@ public void spuntareDeanonimizzazioneDati() { public void inserimentoArcoTemporale() { - WebTool.waitTime(60); + webTool.waitTime(60); logger.info(driver.getPageSource()); By calendarButton = By.xpath("//div[@data-testid='data-range-picker']//div//div//button"); @@ -649,7 +661,7 @@ public void inserimentoArcoTemporale() { element(calendarButton).click(); By previousMonth = By.xpath("//button[@aria-label='Previous month']"); element(previousMonth).click(); - WebTool.waitTime(1); + webTool.waitTime(1); By dateEleven = By.xpath("//button[contains(text(),'11')]"); element(dateEleven).click(); } diff --git a/src/main/java/it/pn/frontend/e2e/common/NotificheDestinatarioPage.java b/src/main/java/it/pn/frontend/e2e/common/NotificheDestinatarioPage.java index d6c3fd22c..b58e77953 100644 --- a/src/main/java/it/pn/frontend/e2e/common/NotificheDestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/NotificheDestinatarioPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.common; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +10,11 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; +@Component public class NotificheDestinatarioPage extends BasePage{ private static final Logger logger = LoggerFactory.getLogger("NotificheDestinatarioPage"); @@ -19,14 +23,18 @@ public class NotificheDestinatarioPage extends BasePage{ @FindBy(xpath = "//button[contains(text(),'Ricevuta di consegna PEC')]") WebElement ricevutaDiConsegnaButton; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public NotificheDestinatarioPage(WebDriver driver) { super(driver); } public void inserisciCodiceIUN(String codiceIUN) throws InterruptedException { getWebDriverWait(10).withMessage("L'input codice IUN non è visibile").until(ExpectedConditions.visibilityOf(this.codiceIunTextField)); - WebTool.waitTime(1); + webTool.waitTime(1); codiceIunTextField.sendKeys(codiceIUN); } public boolean verificaCodiceIUN(String codiceIUNInserito) { @@ -37,7 +45,7 @@ public boolean verificaCodiceIUN(String codiceIUNInserito) { return true; }catch (TimeoutException e){ logger.error("Il codice IUN"+codiceIUNInserito+" non è stato trovato con errore:"+e.getMessage()); - Assert.fail("Il codice IUN"+codiceIUNInserito+" non è stato trovato con errore:"+e.getMessage()); + Assertions.fail("Il codice IUN"+codiceIUNInserito+" non è stato trovato con errore:"+e.getMessage()); } return false; } 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 5f024c9a7..ee11376e1 100644 --- a/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/common/RecapitiDestinatarioPage.java @@ -1,22 +1,26 @@ package it.pn.frontend.e2e.common; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.List; +@Component public class RecapitiDestinatarioPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("RecapitiDestinatarioPage"); - @FindBy(id = "add-contact") - WebElement confermaButton; + @FindBy(id = "default_pec-button") + WebElement attivaButton; - @FindBy(xpath = "//button[@data-testid='courtesy-email-button']") + @FindBy(id = "default_email-button") WebElement avvisamiViaEmailButton; @FindBy(id = "code-confirm-button") @@ -28,7 +32,7 @@ public class RecapitiDestinatarioPage extends BasePage { @FindBy(xpath = "//button[@data-testid='add email']") WebElement avvisamiMailButton; - @FindBy(xpath = "//button[@data-testid='courtesy-sms-button']") + @FindBy(id = "default_sms-button") WebElement avvisamiSMSButton; @FindBy(id = "default_email") @@ -37,13 +41,13 @@ public class RecapitiDestinatarioPage extends BasePage { @FindBy(id = "default_sms") WebElement inserimentoPhoneField; - @FindBy(id = "cancelContact-default") + @FindBy(id = "cancelContact-default_pec") WebElement eliminaPECButton; @FindBy(xpath = "//button[@id='confirmDialog']") WebElement confermaButtonPoPUpPec; - @FindBy(xpath = "//button[@id='modifyContact-default']") + @FindBy(id = "modifyContact-default_email") WebElement modificaEmailButton; @FindBy(id = "sender") @@ -77,9 +81,14 @@ public class RecapitiDestinatarioPage extends BasePage { WebElement pecField; - @FindBy(xpath = "//div[@data-testid='legalContacts']") + @FindBy(id = "default_pec-typography") WebElement pecEmail; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public RecapitiDestinatarioPage(WebDriver driver) { super(driver); } @@ -100,24 +109,24 @@ public void eliminaPecEsistente() { public void clickSuChiudiPopUp() { //By chiudiButtonBy = By.xpath("//button[contains(text(),'Chiudi')]"); logger.info("Log clickSuChiudiPopUp"); - WebTool.waitTime(5); + webTool.waitTime(5); WebElement chiudiButtonBy = driver.findElement(By.xpath("//h2[@id='dialog-title']/following-sibling::div/button[contains(text(),'Annulla')]")); getWebDriverWait(10).withMessage("Il bottone chiudi non è cliccabile").until(ExpectedConditions.elementToBeClickable(chiudiButtonBy)); this.js().executeScript("arguments[0].click()", chiudiButtonBy); } public void insertEmailPEC(String emailPEC) { - WebTool.waitTime(5); + webTool.waitTime(5); pecField = driver.findElement(By.id("default_pec")); getWebDriverWait(10).withMessage("input pec field non trovato").until(ExpectedConditions.visibilityOf(pecField)); pecField.sendKeys(emailPEC); - } + } public void confermaButtonClick() { - WebTool.waitTime(5); - confermaButton = driver.findElement(By.id("add-contact")); - getWebDriverWait(10).withMessage("Il bottone conferma non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.confermaButton)); - this.confermaButton.click(); + webTool.waitTime(5); + By attivaButton = By.id("default_pec-button"); + getWebDriverWait(10).withMessage("Il bottone Attiva non è cliccabile").until(ExpectedConditions.elementToBeClickable(element(attivaButton))); + element(attivaButton).click(); } public void clickConfermaButtonEliminaPopUp() { @@ -134,7 +143,7 @@ public void waitLoadPopUp() { By titleOption = By.xpath("//div[@data-testid='dialog-content']//p[contains(text(), 'Inserisci codice')]"); 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')]"); + By footerNotReceived = By.xpath("//div[contains(text(), 'Non l’hai ricevuto?')]"); getWebDriverWait(10).withMessage("Non viene visualizzato correttamente il titolo").until(ExpectedConditions.visibilityOfElementLocated(titleBy)); getWebDriverWait(10).withMessage("La descrizione non viene visualizzata e il testo non è corretto").until(ExpectedConditions.and( ExpectedConditions.visibilityOfElementLocated(descriptionBy), @@ -142,17 +151,17 @@ public void waitLoadPopUp() { getWebDriverWait(10).withMessage("La scritta 'Inserisci codice' non viene visualizzata correttamente").until(ExpectedConditions.visibilityOfElementLocated(titleOption)); getWebDriverWait(10).withMessage("Le input boxes non vengono visualizzate").until(ExpectedConditions.visibilityOfAllElements(inputBoxes)); if (inputBoxes.size() != 5) { - Assert.fail("Il numero di input box non è corretto"); + Assertions.fail("Il numero di input box non è corretto"); } 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"); + Assertions.fail("i pulsanti all'interno del pop-up non rispettano le condizioni"); } logger.info("Il pop-up di conferma viene visualizzato correttamente"); } catch (TimeoutException e) { logger.error("Il pop-up di conferma NON viene visualizzato correttamente con errori: " + e.getMessage()); - Assert.fail("Il pop-up di conferma NON viene visualizzato correttamente con errori:" + e.getMessage()); + Assertions.fail("Il pop-up di conferma NON viene visualizzato correttamente con errori:" + e.getMessage()); } } @@ -168,7 +177,7 @@ public void sendOTP(String otp) { logger.info("Il codice otp viene inserito correttamente"); } catch (TimeoutException e) { logger.error("Il codice otp NON viene inserito correttamente con errore:" + e.getMessage()); - Assert.fail("Il codice otp NON viene inserito correttamente con errore:" + e.getMessage()); + Assertions.fail("Il codice otp NON viene inserito correttamente con errore:" + e.getMessage()); } } @@ -187,8 +196,8 @@ public void confermaButtonClickPopUp() { getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(confermaButtonPopUp)); confermaButtonPopUp.click(); - WebTool.waitTime(5); - By confermaButtonPostInserimentoBy = By.xpath("//div[@data-testid='dialog-actions']/button[contains(text(), 'Conferma')]"); + webTool.waitTime(5); + By confermaButtonPostInserimentoBy = By.id("code-confirm-button"); if (!driver.findElements(confermaButtonPostInserimentoBy).isEmpty()) { element(confermaButtonPostInserimentoBy).click(); } @@ -213,7 +222,7 @@ public void annullaButtonClick() { this.annullaButton.click(); } catch (TimeoutException e) { logger.error("Il bottone annulla non è cliccabile con errore: " + e.getMessage()); - Assert.fail("Il bottone annulla non è cliccabile con errore: " + e.getMessage()); + Assertions.fail("Il bottone annulla non è cliccabile con errore: " + e.getMessage()); } } @@ -252,7 +261,7 @@ public void insertPhone(String cellulare) { public boolean verificaPecAssociata() { try { - By pecAssociata = By.id("associatedPEC"); + By pecAssociata = By.id("default_pec-typography"); getWebDriverWait(10).withMessage("PEC associata non presente").until(ExpectedConditions.visibilityOfElementLocated(pecAssociata)); return true; } catch (NoSuchElementException | TimeoutException e) { @@ -285,7 +294,7 @@ public void visualizzaValidazione() { getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(pecAssociata)); } catch (TimeoutException e) { logger.error("Pec non associata con errore:" + e.getMessage()); - Assert.fail("Pec non associata con errore:" + e.getMessage()); + Assertions.fail("Pec non associata con errore:" + e.getMessage()); } } @@ -325,7 +334,7 @@ public boolean siVisualizzaPecInserita() { } public void clickSuModifica() { - By modificaMailButton = By.xpath("//button[@id='modifyContact-default']"); + By modificaMailButton = By.id("modifyContact-default_email"); getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(modificaMailButton)); if (modificaEmailButton.isDisplayed()) { this.modificaEmailButton.click(); @@ -337,14 +346,14 @@ public void clickSuModifica() { public void clickSuModificaPEC() { try { - By modificaButtonBy = By.xpath("//div[@data-testid='legalContacts']//button[@id='modifyContact-default']"); + By modificaButtonBy = By.id("modifyContact-default_pec"); this.getWebDriverWait(10).withMessage("Non si riesce a cliccare o vedere il bottone modifica PEC").until(ExpectedConditions.and( ExpectedConditions.visibilityOfElementLocated(modificaButtonBy), ExpectedConditions.elementToBeClickable(modificaButtonBy))); this.element(modificaButtonBy).click(); } catch (TimeoutException e) { logger.error("Non si riesce a cliccare o vedere il bottone modifica PEC con errore:" + e.getMessage()); - Assert.fail("Non si riesce a cliccare o vedere il bottone modifica PEC con errore:" + e.getMessage()); + Assertions.fail("Non si riesce a cliccare o vedere il bottone modifica PEC con errore:" + e.getMessage()); } } @@ -356,7 +365,7 @@ public void cancellaTesto() { logger.info("testo email pec cancellata"); } catch (TimeoutException e) { logger.error("Non si riesce a cancellare il testo della email PEC :" + e.getMessage()); - Assert.fail("Non si riesce a cancellare il testo della email PEC :" + e.getMessage()); + Assertions.fail("Non si riesce a cancellare il testo della email PEC :" + e.getMessage()); } } @@ -404,6 +413,8 @@ public void clickSuConfermaElimina() { } public boolean siControllaEliminazionePEC() { + webTool.waitTime(3); + pecField = driver.findElement(By.id("default_pec")); return pecField.isDisplayed(); } @@ -412,7 +423,7 @@ public boolean siControllaPresenzaPEC() { } public void insertEnte(String comune) { - WebTool.waitTime(5); + webTool.waitTime(5); enteField = driver.findElement(By.id("sender")); this.enteField.sendKeys(comune); // wait 2seconds for the list to appear @@ -535,14 +546,13 @@ public String getPecErrorMessage() { public boolean verificaBottoneConfermaDisabilitato() { try { - getWebDriverWait(30).until(ExpectedConditions.visibilityOf(this.confermaButton)); - return Boolean.parseBoolean(this.confermaButton.getAttribute("disabled")); + getWebDriverWait(30).until(ExpectedConditions.visibilityOf(this.attivaButton)); + return Boolean.parseBoolean(this.attivaButton.getAttribute("disabled")); } catch (NoSuchElementException | TimeoutException e) { logger.error("bottone non disabilitato " + e.getMessage()); return false; } } - public void clickHoCapitoCheckBoxPopup() { By hoCapitoCheckboxBy = By.xpath("//span[contains(text(),'Ho capito')]/preceding-sibling::span/input"); WebElement hoCapitoCheckBox = this.driver.findElement(hoCapitoCheckboxBy); @@ -551,7 +561,7 @@ public void clickHoCapitoCheckBoxPopup() { } public void confermaEmailPopup() { - By popupConfirmButtonBy = By.id("confirmButton"); + By popupConfirmButtonBy = By.id("code-confirm-button"); getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(popupConfirmButtonBy)); this.driver.findElement(popupConfirmButtonBy).click(); } @@ -576,7 +586,7 @@ public boolean avvisamiViaEmailIsDisabled() { } public void visualizzazioneSezioneAltriRecapiti() { - By altriRecapitiSectionBy = By.id("specialContact"); + By altriRecapitiSectionBy = By.id("courtesyContactsTitle"); getWebDriverWait(5).withMessage(" Non si visualizza correttamente il titolo della sezione altri recapiti").until(ExpectedConditions.visibilityOfElementLocated(altriRecapitiSectionBy)); } @@ -616,18 +626,18 @@ public void visualizzazioneCampiSezioneAltriRecapiti() { public void checkButtonAnnullaEliminazioneInPopUp() { try { - WebTool.waitTime(3); + webTool.waitTime(3); buttonAnnullaEliminazioneInPopUp = driver.findElement(By.id("buttonAnnulla")); getWebDriverWait(10).withMessage("pulsante annulla eliminazione non trovato").until(ExpectedConditions.visibilityOf(buttonAnnullaEliminazioneInPopUp)); logger.info("pulsante annulla eliminazione visibile"); } catch (TimeoutException e) { logger.error("caricamento pop-up con errore:" + e.getMessage()); - Assert.fail("caricamento pop-up con errore:" + e.getMessage()); + Assertions.fail("caricamento pop-up con errore:" + e.getMessage()); } } public void clickButtonAnnullaEliminazioneInPopUp() { - WebTool.waitTime(5); + webTool.waitTime(5); buttonAnnullaEliminazioneInPopUp = driver.findElement(By.id("buttonAnnulla")); getWebDriverWait(10).withMessage("Non è stato possibile cliccare sul bottone annulla").until(ExpectedConditions.elementToBeClickable(buttonAnnullaEliminazioneInPopUp)); buttonAnnullaEliminazioneInPopUp.click(); @@ -638,19 +648,21 @@ public void checkEmailPrecedentementeSalvata(String email) { logger.info("la mail associata risulta uguale alla precedente"); } else { logger.error("la mail associata é diversa dalla precedentemente salvata"); - Assert.fail("la mail associata é diversa dalla precedentemente salvata"); + Assertions.fail("la mail associata é diversa dalla precedentemente salvata"); } } public void verificaPecModificabile() { try { + webTool.waitTime(5); + pecField = driver.findElement(By.id("default_pec")); getWebDriverWait(10).until(ExpectedConditions.and( ExpectedConditions.visibilityOf(pecField), ExpectedConditions.attributeToBe(pecField, "readonly", ""))); logger.info("pec modificabile"); } catch (TimeoutException e) { logger.error("pec non modificabile con errore:" + e.getMessage()); - Assert.fail("pec non modificabile con errore:" + e.getMessage()); + Assertions.fail("pec non modificabile con errore:" + e.getMessage()); } } @@ -662,7 +674,7 @@ public void verificaPecNonModificabile() { logger.info("pec non modificabile"); } catch (TimeoutException e) { logger.error("pec modificabile con errore:" + e.getMessage()); - Assert.fail("pec modificabile con errore:" + e.getMessage()); + Assertions.fail("pec modificabile con errore:" + e.getMessage()); } } @@ -693,7 +705,7 @@ public void clickSuBottoneCellulareDiCortesia(String actionButton) { } public void clickSuBottoneEmailDiCortesia(String actionButton) { - By bottoneActionBy = By.xpath("//form[contains(., 'Indirizzo e-mail')]//button[contains(text(), '" + actionButton + "')]"); + By bottoneActionBy = By.xpath("//button[contains(text(), '" + actionButton + "')]"); getWebDriverWait(10).withMessage("Il bottone non è cliccabile").until(ExpectedConditions.visibilityOfElementLocated(bottoneActionBy)); this.element(bottoneActionBy).click(); } @@ -706,7 +718,7 @@ public void checkNumeroDiCellulareNonPresente() { )); } catch (TimeoutException e) { logger.error("Input numero di cellulare non visualizzato o non vuoto con errore: " + e.getMessage()); - Assert.fail("Input numero di cellulare non visualizzato o non vuoto con errore: " + e.getMessage()); + Assertions.fail("Input numero di cellulare non visualizzato o non vuoto con errore: " + e.getMessage()); } } @@ -715,7 +727,7 @@ public void checkCampoEmailModificabile() { getWebDriverWait(10).withMessage("Campo email non modificabile").until(ExpectedConditions.visibilityOf(inserimentoMailField)); } catch (TimeoutException e) { logger.error("Campo email non modificabile con errore: " + e.getMessage()); - Assert.fail("Campo email non modificabile con errore: " + e.getMessage()); + Assertions.fail("Campo email non modificabile con errore: " + e.getMessage()); } } @@ -733,7 +745,7 @@ public void checkDisclaimer() { ExpectedConditions.attributeToBe(confermaButtonBy, "disabled", "true"))); } catch (TimeoutException e) { logger.error("Qualche componente del pop up non viene visualizzato con errore: " + e.getMessage()); - Assert.fail("Qualche componente del pop up non viene visualizzato con errore: " + e.getMessage()); + Assertions.fail("Qualche componente del pop up non viene visualizzato con errore: " + e.getMessage()); } } @@ -746,7 +758,7 @@ public void checkMessaggioErroreTreTentativiOTPSbagliato() { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } By messageContainer = By.id("error-alert"); By modalErrorTitle = By.id("codeModalErrorTitle"); @@ -757,7 +769,7 @@ public void checkMessaggioErroreTreTentativiOTPSbagliato() { )); } catch (TimeoutException e) { logger.error("Il messaggio di errore non viene visualizzato correttamente con errore: " + e.getMessage()); - Assert.fail("Il messaggio di errore non viene visualizzato correttamente con errore: " + e.getMessage()); + Assertions.fail("Il messaggio di errore non viene visualizzato correttamente con errore: " + e.getMessage()); } } @@ -799,7 +811,7 @@ public void visualizzazioneSezioneAltriRecapitiPG(String textboxId) { public void selezionaTipoEmail() { this.tipoIndirizzoField.click(); - WebTool.waitTime(2); + webTool.waitTime(2); By opzioneEmail = By.id("EMAIL"); getWebDriverWait(10) .withMessage("Non è visibile l'opzione indirizzo email") @@ -809,7 +821,7 @@ public void selezionaTipoEmail() { public void selezionaTipoPec() { tipoIndirizzoField.click(); - WebTool.waitTime(2); + webTool.waitTime(2); By opzionePEC = By.id("PEC"); getWebDriverWait(10) .withMessage("Non è visibile l'opzione indirizzo PEC") @@ -819,7 +831,7 @@ public void selezionaTipoPec() { public void selezionaTipoCelulare() { this.tipoIndirizzoField.click(); - WebTool.waitTime(2); + webTool.waitTime(2); By opzioneCelulare = By.id("Celulare"); getWebDriverWait(10) .withMessage("Non è visibile l'opzione celulare") @@ -831,16 +843,16 @@ public void checkMessaggioDiErrore(String check){ String id = ""; if (check.equalsIgnoreCase("pec")){ id = "s_pec-helper-text"; - Assert.assertFalse("la textbox non presenta il bordo rosso",indirizzoPecField.getAttribute("aria-invalid").equalsIgnoreCase("false")); + Assertions.assertFalse(indirizzoPecField.getAttribute("aria-invalid").equalsIgnoreCase("false"),"la textbox non presenta il bordo rosso"); } if (check.equalsIgnoreCase("email")){ id = "s_mail-helper-text"; - Assert.assertFalse("la textbox non presenta il bordo rosso",emailField.getAttribute("aria-invalid").equalsIgnoreCase("false")); + Assertions.assertFalse(emailField.getAttribute("aria-invalid").equalsIgnoreCase("false"),"la textbox non presenta il bordo rosso"); } By errorMessage = By.id(id); getWebDriverWait(5).withMessage("Il messaggio di errore non è visibile").until(ExpectedConditions.visibilityOfElementLocated(errorMessage)); - Assert.assertNotNull("lIl bottone Associa è attivo", associaButton.getAttribute("disabled")); + Assertions.assertNotNull("lIl bottone Associa è attivo", associaButton.getAttribute("disabled")); } public void clearMailbox(String check){ diff --git a/src/main/java/it/pn/frontend/e2e/config/BearerTokenConfig.java b/src/main/java/it/pn/frontend/e2e/config/BearerTokenConfig.java new file mode 100644 index 000000000..7ef6790c8 --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/config/BearerTokenConfig.java @@ -0,0 +1,25 @@ +package it.pn.frontend.e2e.config; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +/* +*Modifiche principali: +Iniezione di WebDriver: Ho rimosso tutte le istanze di new ChromeDriver(), new FirefoxDriver(), ecc., e ho creato un bean in una classe separata (che andremo a configurare subito dopo) che gestisce la creazione del WebDriver. + +Rimozione di new per altre dipendenze: Ho sostituito la creazione di oggetti come CookieConfig, RestDelegation e RestContact con l'iniezione di dipendenze utilizzando @Autowired. + +Configurazione di un WebDriver come Bean +* +* +* */ +@Getter +@Configuration +@PropertySource( value = "file:config/bearer-token-${environment}.properties", ignoreResourceNotFound = true ) +public class BearerTokenConfig { + + +} 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 6e2178930..7e2e41af6 100644 --- a/src/main/java/it/pn/frontend/e2e/config/CustomHttpClient.java +++ b/src/main/java/it/pn/frontend/e2e/config/CustomHttpClient.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import io.cucumber.java.Before; import it.pn.frontend.e2e.model.address.DigitalAddress; import it.pn.frontend.e2e.model.delegate.DelegateResponsePF; import lombok.Getter; @@ -17,6 +18,13 @@ import org.apache.hc.core5.http.io.entity.EntityUtils; import org.apache.hc.core5.http.io.entity.StringEntity; import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; import java.io.File; import java.io.IOException; @@ -26,11 +34,17 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.logging.Logger; @Slf4j +@Component public class CustomHttpClient { - private static CustomHttpClient instance; + + private static CustomHttpClient instance ; private final Gson gson = new Gson(); + @Autowired + private WebDriverConfig webDriverConfig; + @Setter @Getter private String baseUrlApi; @@ -42,26 +56,39 @@ public class CustomHttpClient { private final CloseableHttpClient httpClient; private ClassicHttpRequest httpRequest; + public CustomHttpClient() { + System.out.println("CustomHttpClient......."); this.baseUrlApi = "https://api.test.notifichedigitali.it"; this.httpClient = HttpClients.createDefault(); this.apiKey = "2b3d47f4-44c1-4b49-b6ef-54dc1c531311"; } public CustomHttpClient(String baseUrlApi, String apiKeyTest) { + System.out.println("CustomHttpClient1......."); + this.baseUrlApi = baseUrlApi; this.httpClient = HttpClients.createDefault(); this.apiKey = apiKeyTest; } + public CustomHttpClient(CustomHttpClient customHttpClient) { + System.out.println("CustomHttpClient2......."); + instance = customHttpClient; + this.baseUrlApi = "https://api.test.notifichedigitali.it"; + this.httpClient = HttpClients.createDefault(); + this.apiKey = "2b3d47f4-44c1-4b49-b6ef-54dc1c531311"; + } + public CustomHttpClient(String apiKeyTest) { + System.out.println("CustomHttpClient2......."); this.baseUrlApi = "https://api.test.notifichedigitali.it"; this.httpClient = HttpClients.createDefault(); this.apiKey = apiKeyTest; } - - public static CustomHttpClient getInstance() { +/** + public static CustomHttpClient getInstance() { if (instance == null) { synchronized (CustomHttpClient.class) { if (instance == null) { @@ -71,8 +98,9 @@ public static CustomHttpClient getInstance() { } return (CustomHttpClient) instance; } - - public static CustomHttpClient getInstanceWithApiKey(String apiKey) { +**/ +/** + public static CustomHttpClient getInstanceWithApiKey(String apiKey) { if (instance == null) { synchronized (CustomHttpClient.class) { if (instance == null) { @@ -82,10 +110,9 @@ public static CustomHttpClient getInstanceWithApiKey(String apiKey) } return (CustomHttpClient) instance; } - +**/ public ResponseType sendHttpPostRequest(String endpoint, Map headers, RequestType requestObject, Class responseType) throws IOException { String apiUrl = baseUrlApi + endpoint; - try (CloseableHttpClient client = HttpClients.createDefault()) { ObjectMapper objectMapper = new ObjectMapper(); String jsonBody = objectMapper.writeValueAsString(requestObject); @@ -246,7 +273,7 @@ public ResponseType sendHttpGetRequest(String endpoint, Map head } public String getJwtToken(String TokenExchange) throws IOException { - String env = System.getProperty("environment"); + String env = webDriverConfig.getEnvironment(); CloseableHttpClient client = HttpClients.createDefault(); this.httpRequest = ClassicRequestBuilder .post("https://webapi." + env + ".notifichedigitali.it/token-exchange") @@ -276,7 +303,7 @@ public String getJwtToken(String TokenExchange) throws IOException { } public ResponseType sendHttpDeleteRequest(String endpoint, Map headers, Class responseType) throws IOException { - String env = System.getProperty("environment"); + String env = webDriverConfig.getEnvironment(); try (CloseableHttpClient client = HttpClients.createDefault()) { this.httpRequest = ClassicRequestBuilder .delete(endpoint) diff --git a/src/main/java/it/pn/frontend/e2e/config/UserPasswordConfig.java b/src/main/java/it/pn/frontend/e2e/config/UserPasswordConfig.java new file mode 100644 index 000000000..580cc6c3c --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/config/UserPasswordConfig.java @@ -0,0 +1,23 @@ +package it.pn.frontend.e2e.config; + +import lombok.Getter; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +/* +*Modifiche principali: +Iniezione di WebDriver: Ho rimosso tutte le istanze di new ChromeDriver(), new FirefoxDriver(), ecc., e ho creato un bean in una classe separata (che andremo a configurare subito dopo) che gestisce la creazione del WebDriver. + +Rimozione di new per altre dipendenze: Ho sostituito la creazione di oggetti come CookieConfig, RestDelegation e RestContact con l'iniezione di dipendenze utilizzando @Autowired. + +Configurazione di un WebDriver come Bean +* +* +* */ +@Getter +@Configuration +@PropertySource( value = "file:config/user-password-test.properties", ignoreResourceNotFound = true ) +public class UserPasswordConfig { + + +} diff --git a/src/main/java/it/pn/frontend/e2e/config/WebDriverConfig.java b/src/main/java/it/pn/frontend/e2e/config/WebDriverConfig.java new file mode 100644 index 000000000..83436a329 --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/config/WebDriverConfig.java @@ -0,0 +1,342 @@ +package it.pn.frontend.e2e.config; + +import io.github.bonigarcia.wdm.WebDriverManager; +import it.pn.frontend.e2e.listeners.HooksNew; +import it.pn.frontend.e2e.listeners.NetWorkInfo; +import it.pn.frontend.e2e.utility.CookieConfig; +import lombok.Getter; +import lombok.Setter; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.devtools.DevTools; +import org.openqa.selenium.devtools.HasDevTools; +import org.openqa.selenium.devtools.v126.network.Network; +import org.openqa.selenium.devtools.v126.network.model.RequestWillBeSent; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.edge.EdgeOptions; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.firefox.FirefoxOptions; +import org.openqa.selenium.firefox.FirefoxProfile; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.*; + +import java.time.Duration; +import java.util.*; + +/* +*Modifiche principali: +Iniezione di WebDriver: Ho rimosso tutte le istanze di new ChromeDriver(), new FirefoxDriver(), ecc., e ho creato un bean in una classe separata (che andremo a configurare subito dopo) che gestisce la creazione del WebDriver. + +Rimozione di new per altre dipendenze: Ho sostituito la creazione di oggetti come CookieConfig, RestDelegation e RestContact con l'iniezione di dipendenze utilizzando @Autowired. + +Configurazione di un WebDriver come Bean +* +* +* */ +@Getter +@Configuration +@PropertySource( value = "file:config/configuration.properties", ignoreResourceNotFound = true ) +public class WebDriverConfig { + + @Value("${browser}") + private String browser; + + @Value("${environment}") + private String environment; + + @Value("${cookie.config}") + private String cookie; + + @Value("${headless}") + @Setter + private String headless; + + @Value("${downloadFilePath}") + private String downloadFilePath; + + @Value("${loadComponentWaitTime}") + private String loadComponentWaitTime; + + @Value("${apiBaseUrl}") + private String baseUrl; + + @Value("${ragione.sociale.baldassarre}") + private String ragioneSocialeBaldassarre; + + @Value("${url.login.pg.dev}") + private String baseUrlPgDev; + + @Value("${url.login.pg.test}") + private String baseUrlPgTest; + + @Value("${url.login.pf.dev}") + private String baseUrlPfDev; + + @Value("${url.login.pf.test}") + private String baseUrlPfTest; + + @Value("${pn.bearer-token.tokentestPFDelegante}") + private String tokentestPFDelegante; + + @Value("${ pn.bearer-token.tokendevPFDelegante}") + private String tokendevPFDelegante; + + @Value("${pn.bearer-token.tokentestPFDelegato}") + private String tokentestPFDelegato; + + @Value("${pn.bearer-token.tokendevPFDelegato}") + private String tokendevPFDelegato; + + @Value("${pn.bearer-token.tokentestPGDelegante}") + private String tokentestPGDelegante; + + @Value("${pn.bearer-token.tokendevPGDelegante}") + private String tokendevPGDelegante; + + @Value("${pn.bearer-token.tokentestPGDelegato}") + private String tokentestPGDelegato; + + @Value("${pn.bearer-token.tokendevPGDelegato}") + private String tokendevPGDelegato; + + @Value("${pn.bearer-token.tokentestMittente}") + private String tokentestMittente; + + @Value("${pn.bearer-token.tokendevMittente}") + private String tokendevMittente; + + @Value("${pn.bearer-token.tokentestPFColombo}") + private String tokentestPFColombo; + + @Value("${pn.bearer-token.tokentestRaddista1}") + private String tokentestRaddista1; + + @Value("${url.selfcare}") + private String urlSelfCare; + + @Value("${pn.user.cesare}") + private String userCesare; + + @Value("${pn.pwd.cesare}") + private String pwdCesare; + + @Value("${pn.user.lucrezia}") + private String userLucrezia; + + @Value("${pn.pwd.lucrezia}") + private String pwdLucrezia; + + @Value("${pn.user.dante}") + private String userDante; + + @Value("${pn.pwd.dante}") + private String pwdDante; + + @Value("${pn.user.petrarca}") + private String userPetrarca; + + @Value("${pn.pwd.petrarca}") + private String pwdPetrarca; + + @Value("${pn.user.mittente}") + private String userMittente; + + @Value("${pn.pwd.mittente}") + private String pwdMittente; + + @Value("${pn.userDev.helpdesk}") + private String userDevHelpdesk; + + @Value("${pn.pwdDev.helpdesk}") + private String pwdDevHelpdesk; + + @Value("${pn.userUat.helpdesk}") + private String userUatHelpdesk; + + @Value("${pn.pwdUat.helpdesk}") + private String pwdUatHelpdesk; + + @Value("${pn.userTest.helpdesk}") + private String userTestHelpdesk; + + @Value("${pn.pwdTest.helpdesk}") + private String pwdTestHelpdesk; + + @Value("${url.mittente}") + private String urlMittente; + @Value("${url.helpdesk.test.notifichedigitali}") + private String urlHelpdeskTestNotifichedigitali; + + @Value("${codice.iun}") + private String codiceIun; + + private final Map requests = new HashMap<>(); + + @Getter + private final List netWorkInfos = new ArrayList<>(); + + private final String os = System.getProperty("os.name"); + + private DevTools devTools; + @Value("${codice.iun.n1}") + private String codiceIunN1; + + @Value("${codice.iun.n2}") + private String codiceIunN2; + + @Value("${codice.iun.n3}") + private String codiceIunN3; + + @Getter + public WebDriver driver; + + @Autowired + public CookieConfig cookieConfig; + + /** + * Logger + */ + private static final Logger logger = LoggerFactory.getLogger(WebDriverConfig.class); + + + @Bean + @Primary + public WebDriver webDriver() { + + var browser = Optional.ofNullable(getBrowser()) + .orElseThrow(() -> new IllegalArgumentException("Browser must be specified")); + // var browser = Optional.ofNullable(System.getProperty("browser")) + // .orElseThrow(() -> new IllegalArgumentException("Browser must be specified")); + // this.headless = System.getProperty("headless", "false"); + // webDriverConfig.setHeadless(System.getProperty("headless", "false")); + // webDriverConfig.setHeadless("false"); + switch (browser) { + case "firefox" -> setupFirefox(); + case "chrome" -> setupChrome(); + case "edge" -> setupEdge(); + default -> throw new IllegalArgumentException("Unsupported browser: " + browser); + } + + cookieConfig.addCookie(); + + return driver; + } + + + public void setupFirefox() { + WebDriverManager.firefoxdriver().setup(); + var firefoxProfile = new FirefoxProfile(); + var firefoxOptions = new FirefoxOptions(); + firefoxOptions.setProfile(firefoxProfile); + firefoxOptions.addArguments("-private"); + + if (Boolean.parseBoolean(getHeadless())) { + firefoxOptions.addArguments("--width=1200", "--height=800", "--headless"); + } + driver = new FirefoxDriver(firefoxOptions); + driver.manage().window().maximize(); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); + logger.info("Firefox driver started"); + } + + public void setupChrome() { + WebDriverManager.chromedriver().setup(); + var chromeOptions = new ChromeOptions(); + chromeOptions.addArguments("--lang=it", "--incognito", "--disable-dev-shm-usage", "--remote-allow-origins=*", "--enable-clipboard"); + var downloadFilePath = getDownloadFilePath(); + // var downloadFilePath = System.getProperty("downloadFilePath"); + var chromePrefs = Map.of("download.default_directory", downloadFilePath); + chromeOptions.setExperimentalOption("prefs", chromePrefs); + + if (Boolean.parseBoolean(getHeadless())) { + chromeOptions.addArguments("--no-sandbox", "--headless", "window-size=1920,1080"); + } + + driver = new ChromeDriver(chromeOptions); + driver.manage().window().maximize(); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); + + setupDevTools(); + logger.info("Chrome driver started"); + } + + public void setupEdge() { + if (this.os.toLowerCase().contains("windows")) { + WebDriverManager.edgedriver().setup(); + } else { + throw new UnsupportedOperationException("Edge browser is not supported on OS: " + this.os); + } + var edgeOptions = new EdgeOptions(); + edgeOptions.setCapability("ms:inPrivate", true); + if (Boolean.parseBoolean(getHeadless())) { + edgeOptions.addArguments("window-size=1920,1080", "--headless"); + } + driver = new EdgeDriver(edgeOptions); + driver.manage().window().maximize(); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20)); + logger.info("Edge driver started"); + } + + + private void setupDevTools() { + devTools = ((HasDevTools) driver).getDevTools(); + devTools.createSession(); + devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty())); + captureHttpRequests(); + captureHttpResponse(); + } + + private void captureHttpRequests() { + devTools.addListener(Network.requestWillBeSent(), request -> { + var url = request.getRequest().getUrl(); + cookieConfig.getCookies(url).forEach(cookie -> driver.manage().addCookie(cookie)); + requests.put(request.getRequestId().toString(), request); + }); + } + + private void captureHttpResponse() { + devTools.addListener(Network.responseReceived(), response -> { + var requestId = response.getRequestId().toString(); + if (requests.containsKey(requestId)) { + var request = requests.get(requestId); + var headers = request.getRequest().getHeaders(); + + // Controlla il tipo di risorsa come stringa "XHR" + if ("XHR".equals(response.getType().toString())) { + var netWorkInfo = new NetWorkInfo(); + if (headers.get("Authorization") != null) { + var authHeader = headers.get("Authorization").toString(); + System.setProperty("token", authHeader); + netWorkInfo.setAuthorizationBearer(authHeader); + } + netWorkInfo.setRequestId(requestId); + netWorkInfo.setRequestUrl(request.getRequest().getUrl()); + netWorkInfo.setRequestMethod(request.getRequest().getMethod()); + netWorkInfo.setResponseStatus(response.getResponse().getStatus().toString()); + + try { + var bodyResponse = devTools.send(Network.getResponseBody(response.getRequestId())).getBody(); + netWorkInfo.setResponseBody(bodyResponse); + } catch (Exception ignored) { + // Ignorato perché non sempre è disponibile il body della risposta + } + logger.info("NET_INFO: "+netWorkInfo.getRequestUrl()); + netWorkInfos.add(netWorkInfo); + } + } + requests.remove(requestId); + }); + } + + public void clearRequest (){ + requests.clear(); + } + public void clearNetWorkInfos (){ + netWorkInfos.clear(); + } + +} diff --git a/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java b/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java index 21f816dc9..b112dfca2 100644 --- a/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java +++ b/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java @@ -1,9 +1,6 @@ package it.pn.frontend.e2e.listeners; -import io.cucumber.java.After; -import io.cucumber.java.Before; + import io.cucumber.java.Scenario; -import io.cucumber.java.en.And; -import io.github.bonigarcia.wdm.WebDriverManager; import it.pn.frontend.e2e.model.address.DigitalAddress; import it.pn.frontend.e2e.model.singleton.MandateSingleton; import it.pn.frontend.e2e.rest.RestContact; @@ -11,332 +8,35 @@ import it.pn.frontend.e2e.utility.CookieConfig; import lombok.Getter; import org.apache.commons.io.FileUtils; -import org.junit.Assert; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.DevToolsException; import org.openqa.selenium.devtools.HasDevTools; import org.openqa.selenium.devtools.v126.network.Network; -import org.openqa.selenium.devtools.v126.network.model.Headers; import org.openqa.selenium.devtools.v126.network.model.RequestWillBeSent; import org.openqa.selenium.devtools.v126.network.model.ResourceType; -import org.openqa.selenium.edge.EdgeDriver; -import org.openqa.selenium.edge.EdgeOptions; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.firefox.FirefoxOptions; -import org.openqa.selenium.firefox.FirefoxProfile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.time.Duration; import java.util.*; -import java.util.concurrent.TimeUnit; - -public class Hooks { - private static final Logger logger = LoggerFactory.getLogger("Hooks"); - public static WebDriver driver; - public DevTools devTools; - public Map requests = new HashMap<>(); - ; - - @Getter - public static String scenario; - public static List netWorkInfos = new ArrayList<>(); - private String headless; - private final CookieConfig cookieConfig = new CookieConfig(); - private final String os = System.getProperty("os.name"); - - protected void firefox() { - WebDriverManager.firefoxdriver().setup(); - FirefoxProfile profile = new FirefoxProfile(); - FirefoxOptions firefoxOptions = new FirefoxOptions(); - firefoxOptions.setProfile(profile); - firefoxOptions.addArguments("-private"); - - if (this.headless != null && this.headless.equalsIgnoreCase("true")) { - firefoxOptions.addArguments("--width=1200"); - firefoxOptions.addArguments("--height=800"); - firefoxOptions.addArguments("--headless"); - } - driver = new FirefoxDriver(firefoxOptions); - if (this.headless != null && this.headless.equalsIgnoreCase("false")) { - driver.manage().window().maximize(); - } - driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); - logger.info("firefox driver started"); - } - - protected void chrome() { - WebDriverManager.chromedriver().setup(); - ChromeOptions chromeOptions = new ChromeOptions(); - chromeOptions.addArguments("--lang=it"); - chromeOptions.addArguments("--incognito"); - chromeOptions.addArguments("--disable-dev-shm-usage"); - chromeOptions.addArguments("--remote-allow-origins=*"); - chromeOptions.addArguments("--enable-clipboard"); - String downloadFilepath = System.getProperty("downloadFilePath"); - - HashMap chromePrefs = new HashMap(); - chromePrefs.put("download.default_directory", downloadFilepath); - - chromeOptions.setExperimentalOption("prefs", chromePrefs); - if (this.headless != null && this.headless.equalsIgnoreCase("true")) { - chromeOptions.addArguments("--no-sandbox"); - chromeOptions.addArguments("headless"); - chromeOptions.addArguments("window-size=1920,1080"); - } - - driver = new ChromeDriver(chromeOptions); - if (this.headless != null && this.headless.equalsIgnoreCase("false")) { - driver.manage().window().maximize(); - } - - driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); - - devTools = ((HasDevTools) driver).getDevTools(); - devTools.createSession(); - devTools.send(Network.enable( - Optional.empty(), - Optional.empty(), - Optional.empty() - )); - - this.captureHttpRequests(); - this.captureHttpResponse(); - logger.info("chromedriver started"); - } - - private void captureHttpRequests() { - devTools.addListener( - Network.requestWillBeSent(), - request -> { - String url = request.getRequest().getUrl(); - if (!cookieConfig.getCookies(url).isEmpty()) { - cookieConfig.getCookies(url).forEach(cookie -> driver.manage().addCookie(cookie)); - } - requests.put(request.getRequestId().toString(), request); - } - ); - } - - public void captureHttpResponse() { - devTools.addListener( - Network.responseReceived(), - response -> { - String requestId = response.getRequestId().toString(); - if (requests.containsKey(requestId)) { - RequestWillBeSent request = requests.get(requestId); - Headers headers = request.getRequest().getHeaders(); - if (response.getType().equals(ResourceType.XHR)) { - NetWorkInfo netWorkInfo = new NetWorkInfo(); - if (headers.get("Authorization") != null) { - System.setProperty("token", Objects.requireNonNull(headers.get("Authorization")).toString()); - netWorkInfo.setAuthorizationBearer( - (Objects.requireNonNull(headers.get("Authorization"))).toString()); - } - netWorkInfo.setRequestId(requestId); - netWorkInfo.setRequestUrl(request.getRequest().getUrl()); - netWorkInfo.setRequestMethod(request.getRequest().getMethod()); - netWorkInfo.setResponseStatus(response.getResponse().getStatus().toString()); - try { - String bodyResponse = devTools.send(Network.getResponseBody(response.getRequestId())).getBody(); - netWorkInfo.setResponseBody(bodyResponse); - } catch (DevToolsException ignored) { - // Ignored because the response body is not always available. - } - netWorkInfos.add(netWorkInfo); - } - } - requests.remove(requestId); - } - ); - } - - protected void edge() { - if (this.os.toLowerCase().contains("windows")) { - WebDriverManager.edgedriver().setup(); - } else { - Assert.fail("browser edge non compatibile con il os : " + this.os); - } - EdgeOptions edgeOptions = new EdgeOptions(); - edgeOptions.setCapability("ms:inPrivate", true); - if (this.headless != null && this.headless.equalsIgnoreCase("true")) { - edgeOptions.addArguments("window-size=1920,1080"); - edgeOptions.addArguments("--headless"); - } - driver = new EdgeDriver(edgeOptions); - if (this.headless != null && this.headless.equalsIgnoreCase("false")) { - driver.manage().window().maximize(); - } +/* +* Modifiche principali: +Iniezione di WebDriver: Ho rimosso tutte le istanze di new ChromeDriver(), new FirefoxDriver(), ecc., e ho creato un bean in una classe separata (che andremo a configurare subito dopo) che gestisce la creazione del WebDriver. - driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20)); - logger.info("edge driver started"); - } +Rimozione di new per altre dipendenze: Ho sostituito la creazione di oggetti come CookieConfig, RestDelegation e RestContact con l'iniezione di dipendenze utilizzando @Autowired.*/ - @Before - public void startScenario(Scenario scenario) { - logger.info("-------------------------------------------START SCENARIO: " + scenario.getName() + "------------------------------------------------"); - this.scenario = scenario.getName(); - Collection tags = scenario.getSourceTagNames(); - for (String tag : tags) { - if (tag.startsWith("@TA_")) { - MDC.put("tag", tag); - MDC.put("team", "TA-QA"); - } - } - - logger.info("os type : " + this.os); - logger.info("user language : " + System.getProperty("user.language")); - - String browser = null; - if (System.getProperty("browser") == null) { - Assert.fail("valorizzare la variabile browser"); - } else { - browser = System.getProperty("browser"); - } - if (System.getProperty("headless") != null) { - this.headless = System.getProperty("headless"); - } - if (System.getProperty("environment") == null) { - Assert.fail("valorizzare la variabile environment"); - } - switch (browser) { - case "firefox" -> firefox(); - case "chrome" -> chrome(); - case "edge" -> edge(); - default -> { - logger.error("browser not correct"); - Assert.fail("browser not correct"); - } - } - cookieConfig.addCookie(); - } - - @After - public void endScenario(Scenario scenario) { - - System.clearProperty("IUN"); - - for (NetWorkInfo netWorkInfo : netWorkInfos) { - logger.info(netWorkInfo.getRequestId()); - logger.info(netWorkInfo.getRequestUrl()); - logger.info(netWorkInfo.getRequestMethod()); - logger.info(netWorkInfo.getResponseStatus()); - logger.info(netWorkInfo.getResponseBody()); - } - - if (scenario.isFailed()) { - logger.error("scenario go to error : " + scenario.getName()); - try { - File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); - byte[] screenshotByte = FileUtils.readFileToByteArray(screenshot); - Date date = Calendar.getInstance().getTime(); - DateFormat formatter = new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss"); - String today = formatter.format(date); - String testCaseFailed = "logs/" + scenario.getName() + "_" + today + ".png"; - FileUtils.copyFile(screenshot, new File(testCaseFailed)); - scenario.attach(screenshotByte, "image/png", scenario.getName()); - } catch (IOException e) { - logger.error(e.getCause().toString()); - } - } - - logger.info("quit driver"); - driver.quit(); - requests.clear(); - netWorkInfos.clear(); - try { - TimeUnit.SECONDS.sleep(5); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - logger.info("-------------------------------------------END SCENARIO: " + scenario.getName() + "------------------------------------------------"); - } - - /** - * Clear the delegate of PF after the scenario - * P.S: This will work only if you invoke the feature step that creates the delegate - */ - @After("@DeleghePF or @DeleghePG") - public void clearDelegate() { - logger.info("REVOCA TUTTE LE DELEGHE...."); - MandateSingleton mandateSingleton = MandateSingleton.getInstance(); - String mandateId = mandateSingleton.getMandateId(Hooks.getScenario()); - if (mandateId != null) { - logger.info("REVOCA DELEGA: "+mandateId); - RestDelegation restDelegation = RestDelegation.getInstance(); - restDelegation.revokeDelegation(mandateId); - logger.info("Delega revocata con successo"); - } else { - logger.info("mandateId non trovato"); - } - } - - /** - * Clear directory of file downloaded - * P.S: This will work only if you invoke the feature step that creates the delegate - */ - @After("@File") - public void clearDirectory() { - String folderPath = System.getProperty("downloadFilePath"); - - File folder = new File(folderPath); - - if (folder.isDirectory()) { - File[] files = folder.listFiles(); - for (File file : files) { - if (file.isFile()) { - if (file.delete()) { - System.out.println("File cancellato: " + file.getAbsolutePath()); - } else { - System.out.println("Impossibile cancellare il file: " + file.getAbsolutePath()); - } - } - } - } - } - - /** - * Clear the contacts of PF after the scenario - * P.S: This will work only if there are any contacts available - */ - - @After(value = "@recapitiPF or @recapitiPG") - @And("Rimuovi tutti i recapiti se esistono") - public void clearRecapiti() throws IOException { - - RestContact restContact = RestContact.getInstance(); - List digitalAddress = restContact.getAllDigitalAddress(); - - // Check for legal ones and remove them - if (digitalAddress != null) { - logger.info("SENDER DIGITAL ADDRESS...." + digitalAddress); - logger.info("SENDER DIGITAL ADDRESS...." + digitalAddress.size()); - digitalAddress.forEach(addressDigital -> { - logger.info("SENDER_ID: " + addressDigital.getSenderId()); - if (addressDigital.getSenderId().equalsIgnoreCase("default")) { +public class Hooks { - if ("PEC".equalsIgnoreCase(addressDigital.getChannelType())) { - logger.info("Remove Digital Address LegalPec: " + addressDigital.getSenderId()); - restContact.removeDigitalAddressLegalPec(); - } else { - logger.info("Remove Digital Address Courtesy Email: " + addressDigital.getSenderId()); - restContact.removeDigitalAddressCourtesyEmail(); - } - } else { - logger.info("Remove Special Contact: " + addressDigital.getSenderId()); - restContact.removeSpecialContact(addressDigital); - } - }); - } - } +//Update HooksNew } diff --git a/src/main/java/it/pn/frontend/e2e/listeners/HooksNew.java b/src/main/java/it/pn/frontend/e2e/listeners/HooksNew.java new file mode 100644 index 000000000..1f82e7a0e --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/listeners/HooksNew.java @@ -0,0 +1,180 @@ +package it.pn.frontend.e2e.listeners; + + +import static java.lang.Boolean.TRUE; +import static org.springframework.util.ObjectUtils.isEmpty; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Files; +import java.text.SimpleDateFormat; +import java.time.Duration; +import java.util.*; + +import io.cucumber.java.After; +import io.cucumber.java.Before; +import io.cucumber.java.Scenario; +import io.cucumber.java.en.And; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.model.singleton.MandateSingleton; +import it.pn.frontend.e2e.rest.RestContact; +import it.pn.frontend.e2e.rest.RestDelegation; +import it.pn.frontend.e2e.utility.CookieConfig; +import lombok.Getter; +import org.apache.commons.io.FileUtils; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.devtools.DevTools; +import org.openqa.selenium.devtools.HasDevTools; +import org.openqa.selenium.devtools.v126.network.Network; +import org.openqa.selenium.devtools.v126.network.model.RequestWillBeSent; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.edge.EdgeOptions; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.firefox.FirefoxOptions; +import org.openqa.selenium.firefox.FirefoxProfile; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; + +import io.github.bonigarcia.wdm.WebDriverManager; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + + +public class HooksNew { + + /** + * Logger + */ + private static final Logger logger = LoggerFactory.getLogger(HooksNew.class); + + + @Getter + public WebDriver driver; + + private WebDriverWait wait; + + private DevTools devTools; + + private final Map requests = new HashMap<>(); + @Getter + public static String scenario; + + @Autowired + private WebDriverConfig webDriverConfig; + + @Getter + private final List netWorkInfos = new ArrayList<>(); + + private final String os = System.getProperty("os.name"); + @Autowired + MandateSingleton mandateSingleton ; + @Autowired + private RestContact restContact; + @Autowired + private CookieConfig cookieConfig; + @Autowired + RestDelegation restDelegation ; + + @Before + public void startScenario(Scenario scenario) { + logger.info("----- START SCENARIO: {} -----", scenario.getName()); + HooksNew.scenario = scenario.getName(); + + scenario.getSourceTagNames().stream() + .filter(tag -> tag.startsWith("@TA_")) + .forEach(tag -> { + MDC.put("tag", tag); + MDC.put("team", "TA-QA"); + }); + + driver = webDriverConfig.webDriver(); + } + + @After + public void endScenario(Scenario scenario) throws IOException { + System.clearProperty("IUN"); + webDriverConfig.getNetWorkInfos().forEach(netWorkInfo -> { + logger.info("Request ID: {}", netWorkInfo.getRequestId()); + logger.info("Request URL: {}", netWorkInfo.getRequestUrl()); + logger.info("Method: {}", netWorkInfo.getRequestMethod()); + logger.info("Response Status: {}", netWorkInfo.getResponseStatus()); + logger.info("Response Body: {}", netWorkInfo.getResponseBody()); + }); + + if (scenario.isFailed()) { + logger.error("Scenario failed: {}", scenario.getName()); + var screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); + var screenshotBytes = Files.readAllBytes(screenshot.toPath()); + var formatter = new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss"); + var timestamp = formatter.format(new Date()); + var fileName = "logs/" + scenario.getName() + "_" + timestamp + ".png"; + FileUtils.copyFile(screenshot, new File(fileName)); + scenario.attach(screenshotBytes, "image/png", scenario.getName()); + } + + driver.quit(); + webDriverConfig.clearRequest(); + webDriverConfig.clearNetWorkInfos(); + logger.info("----- END SCENARIO: {} -----", scenario.getName()); + } + + + @And("Revoca deleghe se esistono") + @After("@DeleghePF or @DeleghePG") + public void clearDelegate() { + logger.info("Revoking all delegations..."); + var mandateId = mandateSingleton.getMandateId(HooksNew.getScenario()); + if (mandateId != null) { + restDelegation.revokeDelegation(mandateId); + logger.info("Delegation revoked: {}", mandateId); + } else { + logger.info("Mandate ID not found"); + } + } + + @After("@File") + public void clearDirectory() { + var folderPath = webDriverConfig.getDownloadFilePath(); + var folder = new File(folderPath); + if (folder.isDirectory()) { + Arrays.stream(Objects.requireNonNull(folder.listFiles())) + .filter(File::isFile) + .forEach(file -> { + if (file.delete()) { + logger.info("Deleted file: {}", file.getAbsolutePath()); + } else { + logger.warn("Failed to delete file: {}", file.getAbsolutePath()); + } + }); + } + } + + @And("Rimuovi tutti i recapiti se esistono") + public void clearRecapiti() { + var digitalAddresses = restContact.getAllDigitalAddress(); + if (digitalAddresses != null && !digitalAddresses.isEmpty()) { + digitalAddresses.forEach(address -> { + if ("default".equalsIgnoreCase(address.getSenderId())) { + if ("PEC".equalsIgnoreCase(address.getChannelType())) { + restContact.removeDigitalAddressLegalPec(); + } else { + restContact.removeDigitalAddressCourtesyEmail(); + } + } else { + restContact.removeSpecialContact(address); + } + }); + } + } + +} \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPF.java b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPF.java index 688905a1f..ad628cc31 100644 --- a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPF.java +++ b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPF.java @@ -2,6 +2,7 @@ import lombok.Builder; import lombok.Data; +import org.springframework.stereotype.Component; import java.util.List; diff --git a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPG.java b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPG.java index 719cb9e44..45a026985 100644 --- a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPG.java +++ b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateRequestPG.java @@ -2,6 +2,7 @@ import lombok.Builder; import lombok.Data; +import org.springframework.stereotype.Component; import java.util.List; diff --git a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePF.java b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePF.java index 79b45bf96..d01aa7e88 100644 --- a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePF.java +++ b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePF.java @@ -4,6 +4,7 @@ import lombok.Builder; import lombok.Data; import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; diff --git a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePG.java b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePG.java index a0b39ea56..4777905cc 100644 --- a/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePG.java +++ b/src/main/java/it/pn/frontend/e2e/model/delegate/DelegateResponsePG.java @@ -4,6 +4,7 @@ import lombok.Builder; import lombok.Data; import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; 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 index 6d85d09a3..2726afd5e 100644 --- a/src/main/java/it/pn/frontend/e2e/model/enums/AppPortal.java +++ b/src/main/java/it/pn/frontend/e2e/model/enums/AppPortal.java @@ -1,5 +1,8 @@ package it.pn.frontend.e2e.model.enums; +import it.pn.frontend.e2e.config.WebDriverConfig; +import org.springframework.beans.factory.annotation.Autowired; + public enum AppPortal { PA("https://selfcare.", "#selfCareToken=", TokenLogin.PA_TOKEN.getToken()), PF("https://cittadini.", "#token=", TokenLogin.PF_DELEGATE_TOKEN.getToken()), @@ -7,13 +10,16 @@ public enum AppPortal { HELPDESK("https://helpdesk."); public final String url; + @Autowired + private WebDriverConfig webDriverConfig; + private AppPortal(String url, String paramToken, String token) { - String env = System.getProperty("environment"); + String env = webDriverConfig.getEnvironment(); this.url = url + env + ".notifichedigitali.it/" + paramToken + token; } private AppPortal(String url) { - String env = System.getProperty("environment"); + String env = webDriverConfig.getEnvironment(); 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 index a54bba3b8..c7701a8c8 100644 --- a/src/main/java/it/pn/frontend/e2e/model/enums/TokenLogin.java +++ b/src/main/java/it/pn/frontend/e2e/model/enums/TokenLogin.java @@ -1,5 +1,8 @@ package it.pn.frontend.e2e.model.enums; +import it.pn.frontend.e2e.config.WebDriverConfig; +import org.springframework.beans.factory.annotation.Autowired; + public enum TokenLogin { PF_DELEGATE_TOKEN( "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjBBS3RoQjlYNS1fNHRWUGxNRmZUTHdWSkt1akxuSEhkODdSUkdtX1VTR0EifQ.eyJuYW1lIjoiR2FpbyBHaXVsaW8iLCJmYW1pbHlfbmFtZSI6IkNlc2FyZSIsInVpZCI6ImEwMWI2MmQ0LWUzZjgtNDhmMy1hNGQ4LWNmNjI4YTM0Yjc0NSIsImZpc2NhbF9udW1iZXIiOiJDU1JHR0w0NEwxM0g1MDFFIiwic3BpZF9sZXZlbCI6Imh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMiIsImZyb21fYWEiOmZhbHNlLCJhdWQiOiJjaXR0YWRpbmkuZGV2Lm5vdGlmaWNoZWRpZ2l0YWxpLml0IiwibGV2ZWwiOiJMMiIsImlhdCI6MTY5OTg4NjU3OCwiZXhwIjoyMDE1NDQ5MjAwLCJpc3MiOiJodHRwczovL2h1Yi1sb2dpbi5zcGlkLmRldi5ub3RpZmljaGVkaWdpdGFsaS5pdCIsImp0aSI6Il9iMGI5MGYzNjc2ZTA1MjYxMzAzYyJ9.PaTdY6Hl8RmIJdmobl0ahjawsWdmXrehnWEzRgmQT4Wf7i4Lvz8h_FgXUtt9TB8rZ1t92j2XrqOip1Pa_fSXAUv0Gx4wgb1W4ll74iPs7Mf1sXsZxFQyrd_XwTcvnRYHalAsOizbINNckm-NB0Vo-bRzlgpqSN0dnZ2r9lYSryf5H-B7214mlXvmQu-QD64iyLibdmU8cFim9E5A3hIT9vCGdSGZBsLGkC_oYhmMGLz-N4UeChJid98c37mI4EGpFMwJ7sifDgggCzHbaQBdBKlNPzRIosGZLju6zILzZsEpVkIhYNi5suf5sJeHR56adXKlYIkMWUc8Gdh5g5YskA", @@ -20,13 +23,16 @@ public enum TokenLogin { private final String devToken; private final String testToken; + @Autowired + private WebDriverConfig webDriverConfig; + private TokenLogin(String devToken, String testToken) { this.devToken = devToken; this.testToken = testToken; } public String getToken() { - String env = System.getProperty("environment"); + String env = webDriverConfig.getEnvironment(); return env.equalsIgnoreCase("dev") ? devToken : testToken; } } diff --git a/src/main/java/it/pn/frontend/e2e/model/radd/StartTransaction/StartTransactionRequest.java b/src/main/java/it/pn/frontend/e2e/model/radd/StartTransaction/StartTransactionRequest.java index 161a6f4a5..61c042c1a 100644 --- a/src/main/java/it/pn/frontend/e2e/model/radd/StartTransaction/StartTransactionRequest.java +++ b/src/main/java/it/pn/frontend/e2e/model/radd/StartTransaction/StartTransactionRequest.java @@ -1,19 +1,10 @@ package it.pn.frontend.e2e.model.radd.StartTransaction; import com.fasterxml.jackson.annotation.JsonInclude; -import com.google.gson.internal.bind.DefaultDateTypeAdapter; -import io.cucumber.messages.types.Hook; -import it.pn.frontend.e2e.listeners.Hooks; import lombok.Data; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - import java.time.Instant; -import java.time.LocalDate; -import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; -import java.util.UUID; @Data @JsonInclude(JsonInclude.Include.NON_NULL) diff --git a/src/main/java/it/pn/frontend/e2e/model/singleton/MandateSingleton.java b/src/main/java/it/pn/frontend/e2e/model/singleton/MandateSingleton.java index a480c872c..2d906eb8e 100644 --- a/src/main/java/it/pn/frontend/e2e/model/singleton/MandateSingleton.java +++ b/src/main/java/it/pn/frontend/e2e/model/singleton/MandateSingleton.java @@ -1,36 +1,36 @@ package it.pn.frontend.e2e.model.singleton; +import org.springframework.stereotype.Component; + import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - +/* +*Modifiche Apportate: +Annotazione @Component: La classe è annotata con @Component, permettendo a Spring di gestire l'istanza come un Singleton automaticamente. +Rimozione del metodo getInstance: Con l'uso di @Component, non è necessario implementare il pattern Singleton manualmente. Spring gestirà una sola istanza di questa classe nel contesto dell'applicazione. +Costruttore privato rimosso: Non è necessario bloccare il costruttore dato che Spring garantisce l’unicità dell’istanza. +* */ + +@Component public class MandateSingleton { - private Map scenarioMandateId = new ConcurrentHashMap<>(); - private Map verificationCodeMandateId = new ConcurrentHashMap<>(); - private static MandateSingleton instance; - private void MandateSingleton(){ - } - - public static synchronized MandateSingleton getInstance() { - if (instance == null) { - instance = new MandateSingleton(); - } - return instance; - } + private final Map scenarioMandateId = new ConcurrentHashMap<>(); + private final Map verificationCodeMandateId = new ConcurrentHashMap<>(); - public void setScenarioMandateId(String scenarioName,String mandateId){ - scenarioMandateId.put(scenarioName,mandateId); + // Spring Boot gestisce automaticamente l'istanza Singleton per i componenti + public void setScenarioMandateId(String scenarioName, String mandateId) { + scenarioMandateId.put(scenarioName, mandateId); } - public String getMandateId(String scenarioName){ + public String getMandateId(String scenarioName) { return scenarioMandateId.get(scenarioName); } - public void setScenarioVerificationCode(String mandateId,String verificationCode){ - verificationCodeMandateId.put(mandateId,verificationCode); + public void setScenarioVerificationCode(String mandateId, String verificationCode) { + verificationCodeMandateId.put(mandateId, verificationCode); } - public String getVerificationCode(String mandateId){ + public String getVerificationCode(String mandateId) { return verificationCodeMandateId.get(mandateId); } } diff --git a/src/main/java/it/pn/frontend/e2e/model/singleton/NotificationSingleton.java b/src/main/java/it/pn/frontend/e2e/model/singleton/NotificationSingleton.java index 6a40b4ba0..ef0591920 100644 --- a/src/main/java/it/pn/frontend/e2e/model/singleton/NotificationSingleton.java +++ b/src/main/java/it/pn/frontend/e2e/model/singleton/NotificationSingleton.java @@ -1,29 +1,39 @@ package it.pn.frontend.e2e.model.singleton; +import org.springframework.stereotype.Component; + +import org.springframework.stereotype.Component; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - +/* +* Modifiche Effettuate: +Annotazione @Component: Per rendere la classe un bean Spring, in modo che venga automaticamente gestita come singleton. +Rimozione del Metodo getInstance: Non è più necessario gestire manualmente l’istanza; Spring gestirà la creazione e l’unicità del bean. +Documentazione: Ho aggiunto i JavaDoc ai metodi setScenarioIun e getIun per migliorare la comprensibilità. +* */ +@Component public class NotificationSingleton { - private Map scenarioIun = new ConcurrentHashMap<>(); - private static NotificationSingleton instance; - - private void NotificationSingleton(){ - } - - public static synchronized NotificationSingleton getInstance() { - if (instance == null) { - instance = new NotificationSingleton(); - } - return instance; - } + private final Map scenarioIun = new ConcurrentHashMap<>(); - public void setScenarioIun(String scenarioName,String iun){ - scenarioIun.put(scenarioName,iun); + /** + * Setta un identificatore unico di notifica (IUN) per uno specifico scenario. + * + * @param scenarioName nome dello scenario + * @param iun identificatore unico della notifica + */ + public void setScenarioIun(String scenarioName, String iun) { + scenarioIun.put(scenarioName, iun); } - public String getIun(String scenarioName){ + /** + * Recupera l'identificatore unico di notifica (IUN) per uno specifico scenario. + * + * @param scenarioName nome dello scenario + * @return l'identificatore unico della notifica, o null se non trovato + */ + public String getIun(String scenarioName) { return scenarioIun.get(scenarioName); } } \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/DestinatarioPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/DestinatarioPage.java index 0663295d6..2dfb7b39a 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/DestinatarioPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/DestinatarioPage.java @@ -4,11 +4,12 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.exceptions.RestNotificationException; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.model.documents.Document; -import it.pn.frontend.e2e.model.notification.NewNotificationRequest; -import it.pn.frontend.e2e.model.notification.NewNotificationResponse; import it.pn.frontend.e2e.model.enums.NotificationFeePolicyEnum; import it.pn.frontend.e2e.model.enums.PhysicalCommunicationTypeEnum; +import it.pn.frontend.e2e.model.notification.NewNotificationRequest; +import it.pn.frontend.e2e.model.notification.NewNotificationResponse; import it.pn.frontend.e2e.model.singleton.NotificationSingleton; import it.pn.frontend.e2e.rest.RestNotification; import it.pn.frontend.e2e.rest.RestRaddAlternative; @@ -17,31 +18,43 @@ import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.junit.Assert; -import org.openqa.selenium.By; -import org.openqa.selenium.TimeoutException; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; +import org.junit.jupiter.api.Assertions; +import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Map; @Slf4j +@Component public class DestinatarioPage extends BasePage { @Getter @Setter private NewNotificationRequest notificationRequest; - private final NotificationSingleton notificationSingleton = NotificationSingleton.getInstance(); - private final RestNotification restNotification = new RestNotification(); - private static final NotificationBuilder notificationBuilder = new NotificationBuilder(); - private int destinatariNumber; - private final WebDriver driver = Hooks.driver; + + @Autowired + private NotificationSingleton notificationSingleton; + + @Autowired + private RestNotification restNotification; + + @Autowired + private NotificationBuilder notificationBuilder; + + @Autowired + @Lazy + private HooksNew hooks; + + private int destinatariNumber; //Questa classe è utilizzata per metodi in comune tra PF e PG + @Autowired public DestinatarioPage(WebDriver driver) { super(driver); } @@ -55,34 +68,39 @@ public DestinatarioPage(WebDriver driver) { @FindBy(id = "notificationsTable.body.row") List listaNotificheDelegante; + @Autowired + @Lazy + private WebTool webTool; + public void inserimentoDataErrato() { String data = "01/01/1111"; - getWebDriverWait(10).withMessage("Il campo data inizio non è visibile").until(ExpectedConditions.visibilityOfAllElements(this.dataInizioField)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfAllElements(this.dataInizioField)); dataInizioField.click(); dataInizioField.sendKeys(data); - getWebDriverWait(3).withMessage("Il valore della data che si vuole inserire non corrisponde").until(ExpectedConditions.attributeToBe(this.dataInizioField, "value", data)); - getWebDriverWait(10).withMessage("Il campo data fine non è visibile").until(ExpectedConditions.visibilityOfAllElements(this.dataFineField)); + getWebDriverWait(3).until(ExpectedConditions.attributeToBe(this.dataInizioField, "value", data)); + + getWebDriverWait(10).until(ExpectedConditions.visibilityOfAllElements(this.dataFineField)); dataFineField.click(); dataFineField.sendKeys(data); - getWebDriverWait(3).withMessage("Il valore della data che si vuole inserire non corrisponde").until(ExpectedConditions.attributeToBe(this.dataFineField, "value", data)); + getWebDriverWait(3).until(ExpectedConditions.attributeToBe(this.dataFineField, "value", data)); } public boolean isDateBoxInvalid() { - final String isTextboxInvalid = "true"; + String isTextboxInvalid = "true"; boolean invalidBoxDate = true; try { - getWebDriverWait(10).withMessage("Il campo data inizio non è visibile").until(ExpectedConditions.visibilityOfAllElements(this.dataInizioField, this.dataFineField)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfAllElements(this.dataInizioField, this.dataFineField)); String ariaInvalidInizio = dataInizioField.getAttribute("aria-invalid"); String ariaInvalidFine = dataFineField.getAttribute("aria-invalid"); if (isTextboxInvalid.equals(ariaInvalidInizio) || isTextboxInvalid.equals(ariaInvalidFine)) { log.info("Almeno un campo data è in stato invalido"); } else { log.error("Nessuno dei campi data è passato allo stato invalido"); - Assert.fail("Nessuno dei campi data è passato allo stato invalido"); + Assertions.fail("Nessuno dei campi data è passato allo stato invalido"); } } catch (TimeoutException e) { log.error("Campi data non visualizzati correttamente con errore: " + e.getMessage()); - Assert.fail("Campi data non visualizzati correttamente con errore: " + e.getMessage()); + Assertions.fail("Campi data non visualizzati correttamente con errore: " + e.getMessage()); } return invalidBoxDate; } @@ -95,60 +113,28 @@ public void clickButtonNotificheDelegateOnSideMenu(String nomeDelegante) { String id = "side-item-" + nomeDelegante; By buttonNotificheOnSideMenu = By.id(id); - getWebDriverWait(10).withMessage("bottone notifiche nel layout non visibile").until(ExpectedConditions.visibilityOfElementLocated(buttonNotificheOnSideMenu)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(buttonNotificheOnSideMenu)); this.js().executeScript("arguments[0].click()", this.element(buttonNotificheOnSideMenu)); - } public void clickSulDettaglioNotificaDelegante() { WebElement singolaNotificaDelegante = listaNotificheDelegante.get(0); - getWebDriverWait(10).withMessage("la prima notifica della tabella non è visibile").until(ExpectedConditions.visibilityOf(singolaNotificaDelegante)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOf(singolaNotificaDelegante)); log.info("Si clicca sulla prima notifica del delegante"); singolaNotificaDelegante.click(); } public void clickProdotto(String xpath) { By prodottoDestinatario = By.xpath(xpath); - getWebDriverWait(10).withMessage("prodotto non disponbile").until(ExpectedConditions.visibilityOfElementLocated(prodottoDestinatario)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(prodottoDestinatario)); element(prodottoDestinatario).click(); } - public void clickTuttiGliEnti() { - By tuttiGliEnti = By.id("tutti-gli-enti-selezionati"); - getWebDriverWait(10).withMessage("Il radio button 'tutti gli enti selezionati' non è visibile").until(ExpectedConditions.visibilityOfElementLocated(tuttiGliEnti)); - element(tuttiGliEnti).click(); - } - - public void clickSoloEntiSelezionati() { - By soloEntiSelezionati = By.id("enti-selezionati"); - getWebDriverWait(10).withMessage("Il radio button 'solo enti selezionati' non è visibile").until(ExpectedConditions.visibilityOfElementLocated(soloEntiSelezionati)); - element(soloEntiSelezionati).click(); - } - - public void clickListaEnti() { - By listaEnti = By.id("enti"); - getWebDriverWait(10).withMessage("Il menù a tendina degli enti non è visibile").until(ExpectedConditions.visibilityOfElementLocated(listaEnti)); - element(listaEnti).click(); - } - - public void controlloEntiRadice(List enti) { - for (String ente : enti) { - By enteRadice = By.xpath("//li//p[contains(text(),'" + ente + "')]"); - getWebDriverWait(10).withMessage("Ente: " + ente + " non visibile").until(ExpectedConditions.visibilityOfElementLocated(enteRadice)); - } - } - - public void checkBannerAnnullamentoNotifica() { - By bannerAnnullamentoNotificaBy = By.xpath("//div[@data-testid='cancelledAlertText']"); - getWebDriverWait(10).withMessage("Il banner di annullamento della notifica non è presente").until(ExpectedConditions.visibilityOfElementLocated(bannerAnnullamentoNotificaBy)); - getWebDriverWait(10).withMessage("Il banner di annullamento della notifica presenta la corretta descrizione").until( - ExpectedConditions.attributeToBe(bannerAnnullamentoNotificaBy, "textContent", "Questa notifica è stata annullata dall’ente mittente. Puoi ignorarne il contenuto.")); - } - public void checkCreateNewNotification() throws RestNotificationException { int maxAttempts = 4; int attempt = 1; - Assert.assertNotNull("Non può essere creata una notifica senza alcun destinatario", notificationRequest.getRecipients()); + Assertions.assertNotNull(notificationRequest.getRecipients(), "Non può essere creata una notifica senza alcun destinatario"); + while (attempt <= maxAttempts) { NewNotificationResponse responseOfCreateNotification = restNotification.newNotificationWithOneRecipientAndDocument(notificationRequest); @@ -158,18 +144,18 @@ public void checkCreateNewNotification() throws RestNotificationException { LinkedTreeMap getNotificationStatus; String notificationStatus; do { - Assert.assertTrue("La notifica risulta ancora in stato WAITING dopo 5 tentativi", maxAttemptsPolling <= 4); + Assertions.assertTrue(maxAttemptsPolling <= 4, "La notifica risulta ancora in stato WAITING dopo 5 tentativi"); log.info(responseOfCreateNotification.getNotificationRequestId()); getNotificationStatus = restNotification.getNotificationStatus(responseOfCreateNotification.getNotificationRequestId()); notificationStatus = getNotificationStatus.get("notificationRequestStatus").toString(); if (!notificationStatus.equals("ACCEPTED")) { - WebTool.waitTime(90); + webTool.waitTime(90); log.info("Tentativo n. " + maxAttemptsPolling + " - Stato notifica: " + notificationStatus); maxAttemptsPolling++; } else { log.info("Notifica per destinatario creata con successo"); - notificationSingleton.setScenarioIun(Hooks.getScenario(), WebTool.decodeNotificationRequestId(responseOfCreateNotification.getNotificationRequestId())); - log.info("Il codice IUN della notifica creata è il seguente: {}", notificationSingleton.getIun(Hooks.getScenario())); + notificationSingleton.setScenarioIun(HooksNew.getScenario(), WebTool.decodeNotificationRequestId(responseOfCreateNotification.getNotificationRequestId())); + log.info("Il codice IUN della notifica creata è il seguente: {}", notificationSingleton.getIun(HooksNew.getScenario())); driver.navigate().refresh(); return; } @@ -181,21 +167,22 @@ public void checkCreateNewNotification() throws RestNotificationException { } } log.error("Errore nella creazione della notifica per PF dopo {} tentativi", maxAttempts); - Assert.fail("Errore nella creazione della notifica dopo " + maxAttempts + " tentativi"); + Assertions.fail("Errore nella creazione della notifica dopo " + maxAttempts + " tentativi"); } public void aggiuntaDestinatarioANotifica(Map datiDestinatario) { - Assert.assertTrue("Non è possibile aggiungere un ulteriore destinatario", destinatariNumber <= 4); + Assertions.assertTrue(destinatariNumber <= 4, "Non è possibile aggiungere un ulteriore destinatario"); log.info("Si procede con l'inserimento del destinatario nella notifica"); - String costiNotifica = "false"; - if (notificationRequest.getNotificationFeePolicy() == NotificationFeePolicyEnum.DELIVERY_MODE) { - costiNotifica = "true"; - } + String costiNotifica = notificationRequest.getNotificationFeePolicy() == NotificationFeePolicyEnum.DELIVERY_MODE ? "true" : "false"; notificationRequest.setRecipients(notificationBuilder.destinatarioBuilder(datiDestinatario, notificationRequest.getRecipients())); - WebTool.waitTime(15); - log.info("NUMERO DESTINATARI...: " + notificationRequest.getRecipients().size()); - log.info("DESTINATARIO...: " + destinatariNumber); - notificationRequest.getRecipients().get(destinatariNumber).setPayments(notificationBuilder.paymentsBuilder(Integer.parseInt(datiDestinatario.getOrDefault("avvisoPagoPa", "0")), Integer.parseInt(datiDestinatario.getOrDefault("F24", "0")), costiNotifica)); + + log.info("NUMERO DESTINATARI: " + notificationRequest.getRecipients().size()); + notificationRequest.getRecipients().get(destinatariNumber).setPayments( + notificationBuilder.paymentsBuilder( + Integer.parseInt(datiDestinatario.getOrDefault("avvisoPagoPa", "0")), + Integer.parseInt(datiDestinatario.getOrDefault("F24", "0")), + costiNotifica + )); destinatariNumber++; } @@ -212,4 +199,35 @@ public void raddFlow(String token, String tipoDestinatario, String codiceFiscale restRaddAlternative.completeTransactionRaddAlternative(operationId); } + public void clickTuttiGliEnti() { + By tuttiGliEnti = By.id("tutti-gli-enti-selezionati"); + getWebDriverWait(10).withMessage("Il radio button 'tutti gli enti selezionati' non è visibile").until(ExpectedConditions.visibilityOfElementLocated(tuttiGliEnti)); + element(tuttiGliEnti).click(); + } + + public void clickSoloEntiSelezionati() { + By soloEntiSelezionati = By.id("enti-selezionati"); + getWebDriverWait(10).withMessage("Il radio button 'solo enti selezionati' non è visibile").until(ExpectedConditions.visibilityOfElementLocated(soloEntiSelezionati)); + element(soloEntiSelezionati).click(); + } + + public void clickListaEnti() { + By listaEnti = By.id("enti"); + getWebDriverWait(10).withMessage("Il menù a tendina degli enti non è visibile").until(ExpectedConditions.visibilityOfElementLocated(listaEnti)); + element(listaEnti).click(); + } + + public void controlloEntiRadice(List enti) { + for (String ente : enti) { + By enteRadice = By.xpath("//li//p[contains(text(),'" + ente + "')]"); + getWebDriverWait(10).withMessage("Ente: " + ente + " non visibile").until(ExpectedConditions.visibilityOfElementLocated(enteRadice)); + } + } + + public void checkBannerAnnullamentoNotifica() { + By bannerAnnullamentoNotificaBy = By.xpath("//div[@data-testid='cancelledAlertText']"); + getWebDriverWait(10).withMessage("Il banner di annullamento della notifica non è presente").until(ExpectedConditions.visibilityOfElementLocated(bannerAnnullamentoNotificaBy)); + getWebDriverWait(10).withMessage("Il banner di annullamento della notifica presenta la corretta descrizione").until( + ExpectedConditions.attributeToBe(bannerAnnullamentoNotificaBy, "textContent", "Questa notifica è stata annullata dall’ente mittente. Puoi ignorarne il contenuto.")); + } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/AccediAPiattaformaNotifichePage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/AccediAPiattaformaNotifichePage.java index d6ec222e1..047042b9f 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/AccediAPiattaformaNotifichePage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/AccediAPiattaformaNotifichePage.java @@ -2,15 +2,18 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.List; +@Component public class AccediAPiattaformaNotifichePage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("AccediAPiattaformaNotifichePage"); @@ -77,19 +80,23 @@ public class AccediAPiattaformaNotifichePage extends BasePage { @FindBy(xpath = "//*[@id=\"root\"]/div[1]/div/main/div/div/div[1]/div[3]/div[4]/div/button[2]") List pagopaAllegatoItems; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public AccediAPiattaformaNotifichePage(WebDriver driver) { super(driver); } public void waitLoadAccediAPiattaformaNotifichePage() { - By titleLabel = By.id("login-mode-page-title"); - By loginBy = By.id("spidButton"); - getWebDriverWait(30).withMessage("Il titolo della pagina accedi a piattaforma notifiche non è visibile").until(ExpectedConditions.visibilityOfElementLocated(titleLabel)); - getWebDriverWait(30).withMessage("Il bottone login della pagina accedi a piattaforma notifiche non è visibile e cliccabile").until(ExpectedConditions.and(ExpectedConditions.visibilityOfElementLocated(loginBy),ExpectedConditions.elementToBeClickable(loginBy))); - logger.info("Accedi A Piattaforma Notifiche Page caricata"); + By titleLabel = By.id("login-mode-page-title"); + By loginBy = By.id("spidButton"); + getWebDriverWait(30).withMessage("Il titolo della pagina accedi a piattaforma notifiche non è visibile").until(ExpectedConditions.visibilityOfElementLocated(titleLabel)); + getWebDriverWait(30).withMessage("Il bottone login della pagina accedi a piattaforma notifiche non è visibile e cliccabile").until(ExpectedConditions.and(ExpectedConditions.visibilityOfElementLocated(loginBy), ExpectedConditions.elementToBeClickable(loginBy))); + logger.info("Accedi A Piattaforma Notifiche Page caricata"); } @@ -194,7 +201,7 @@ public boolean scaricaAvvisoDisplayed() { //TODO Verificare.... public boolean piuAvvisiDisplayed() { - if (pagopaItems.isEmpty()){ + if (pagopaItems.isEmpty()) { logger.info("Avvisi pagoPa sono trovati"); return true; } @@ -202,7 +209,7 @@ public boolean piuAvvisiDisplayed() { if (pagopaItems.size() < 2) { logger.info("Avvisi pagoPa non sono trovati"); return false; - }else { + } else { logger.info("Avvisi pagoPa sono trovati"); return true; } @@ -212,7 +219,7 @@ public boolean allegatoPagoPaDisplayed() { if (pagopaAllegatoItems.isEmpty()) { logger.info("Allegati pagoPa non sono trovati"); return true; - }else { + } else { return false; } } @@ -250,7 +257,7 @@ public boolean siControllaCostiDiNotifica() { public void cliccaPaga() { logger.info("Si clicca su bottone paga"); - WebTool.waitTime(5); + webTool.waitTime(5); pagaAvviso = driver.findElement(By.cssSelector("[data-testid='pay-button']")); pagaAvviso.click(); } @@ -266,16 +273,17 @@ public void inserireDatiPagamento(String email) { public void checkoutPagamento() throws InterruptedException { logger.info("Si procede con il pagamento"); - WebTool.waitTime(5); + webTool.waitTime(5); element(By.cssSelector("[data-qaid='CP']")).click(); - WebTool.waitTime(5); + webTool.waitTime(5); // frame of the card number WebElement iframeCardNumber = driver.findElement(By.xpath("//iframe[@id='frame_CARD_NUMBER']")); driver.switchTo().frame(iframeCardNumber); - WebTool.waitTime(5); + webTool.waitTime(5); getWebDriverWait(10).withMessage("Il textbox numero di carta non è visibile").until(ExpectedConditions.visibilityOf(creditCardNumber)); creditCardNumber.click(); creditCardNumber.clear(); + logger.info("Si inserisce numero di CC"); creditCardNumber.sendKeys("5127390031101597"); driver.switchTo().defaultContent(); @@ -309,42 +317,40 @@ public void checkoutPagamento() throws InterruptedException { element(titolare).sendKeys("Titolare"); driver.switchTo().defaultContent(); - WebTool.waitTime(5); - - WebElement continuaBottone = driver.findElement(By.xpath("//button[@aria-label='Continua']") ); - getWebDriverWait(7).withMessage("Il bottone Continua non è cliccabile").until(ExpectedConditions.elementToBeClickable(continuaBottone)); + webTool.waitTime(5); + WebElement continuaBottone = driver.findElement(By.xpath("//button[@aria-label='Continue']")); //for local test use //button[@aria-label='Continua'] + getWebDriverWait(8).withMessage("Il bottone Continua non è cliccabile").until(ExpectedConditions.elementToBeClickable(continuaBottone)); continuaBottone.click(); - WebTool.waitTime(2); + webTool.waitTime(10); //Select Nexi - WebElement modificaButton = driver.findElement(By.xpath("//button[@aria-label='Modifica PSP']")); + WebElement modificaButton = driver.findElement(By.xpath("//button[@aria-label='Change payment service provider (PSP)']")); //for local test use //button[@aria-label='Modifica PSP'] getWebDriverWait(5).withMessage("Il bottone modifica non è cliccabile").until(ExpectedConditions.elementToBeClickable(modificaButton)); modificaButton.click(); - WebTool.waitTime(2); - - List nexiButton = driver.findElements(By.xpath("//div[contains(text(),'Nexi')]")); - WebTool.waitTime(10); + webTool.waitTime(10); + List nexiButton = driver.findElements(By.xpath("//div[contains(text(),'Intesa Sanpaolo S.p.A')]")); + webTool.waitTime(10); //getWebDriverWait(10).withMessage("Il bottone Nexi non è cliccabile").until(ExpectedConditions.elementToBeClickable(nexiButton)); - if (nexiButton.size()==2){ + if (nexiButton.size() == 2) { nexiButton.get(1).click(); - }else { + } else { nexiButton.get(0).click(); } - WebTool.waitTime(2); + webTool.waitTime(5); - WebElement pagaButton = driver.findElement(By.xpath("//button[@id='paymentCheckPageButtonPay']")); + WebElement pagaButton = driver.findElement(By.xpath("//button[@id='paymentCheckPageButtonPay']")); getWebDriverWait(5).withMessage("Il bottone Paga non è cliccabile").until(ExpectedConditions.elementToBeClickable(pagaButton)); pagaButton.click(); - WebTool.waitTime(35); - List chiudi = driver.findElements(By.xpath("//button[contains(text(),'Chiudi')]")); + webTool.waitTime(50); + List chiudi = driver.findElements(By.xpath("//button[contains(text(),'Continue')]")); //for local test use //button[@aria-label='Continua'] getWebDriverWait(10).withMessage("Il bottone Chiudi non è cliccabile").until(ExpectedConditions.elementToBeClickable(chiudi.get(0))); chiudi.get(0).click(); } public void siVisualizzaStatoPagato() { - WebTool.waitTime(10); + webTool.waitTime(20); By statoPagamento = By.xpath("//div[@id='status-chip-Pagato']"); getWebDriverWait(5).withMessage("Lo stato di pagamento non è visibile").until(ExpectedConditions.visibilityOfElementLocated(statoPagamento)); logger.info("Lo stato di pagamento è Pagato"); diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ComeVuoiAccederePage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ComeVuoiAccederePage.java index 45718e777..8217ee89a 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ComeVuoiAccederePage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ComeVuoiAccederePage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaFisica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +10,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class ComeVuoiAccederePage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("ComeVuoiAccederePage"); @@ -18,6 +21,7 @@ public class ComeVuoiAccederePage extends BasePage { @FindBy(id = "spidButton") WebElement spidButton; + @Autowired public ComeVuoiAccederePage(WebDriver driver) { super(driver); } @@ -29,7 +33,7 @@ public void waitLoadComeVuoiAccederePage(){ logger.info("Come Vuoi Accedere Page caricata"); }catch (TimeoutException e){ logger.error("Come Vuoi Accedere Page non caricata con errore : "+e.getMessage()); - Assert.fail("Come Vuoi Accedere Page non caricata con errore : "+e.getMessage()); + Assertions.fail("Come Vuoi Accedere Page non caricata con errore : "+e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ConfermaDatiSpidPFPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ConfermaDatiSpidPFPage.java index 64c10c4af..a58dd3da7 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ConfermaDatiSpidPFPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ConfermaDatiSpidPFPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaFisica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +10,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class ConfermaDatiSpidPFPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("ConfermaDatiSpidPFPage"); @@ -27,7 +30,7 @@ public class ConfermaDatiSpidPFPage extends BasePage { @FindBy(css = "input[value='Conferma']") WebElement confermaButton; - + @Autowired public ConfermaDatiSpidPFPage(WebDriver driver) { super(driver); } @@ -41,7 +44,7 @@ public void waitLoadConfermaDatiSpidDEPage(){ logger.info("Conferma Dati Spid DE Page caricata"); }catch (TimeoutException e){ logger.error("Conferma Dati Spid DE Page non caricata con errore : "+e.getMessage()); - Assert.fail("Conferma Dati Spid DE Page non caricata con errore : "+e.getMessage()); + Assertions.fail("Conferma Dati Spid DE Page non caricata con errore : "+e.getMessage()); } } 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 b40c7670d..9ab11ed21 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 @@ -1,20 +1,28 @@ package it.pn.frontend.e2e.pages.destinatario.personaFisica; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.List; +@Component public class DeleghePage extends BasePage { private final Logger logger = LoggerFactory.getLogger("DeleghePage"); + @Autowired + private WebDriverConfig webDriverConfig; + @FindBy(id = "add-delegation-button") WebElement addDelegaButton; @@ -27,7 +35,11 @@ public class DeleghePage extends BasePage { @FindBy(id = "dialog-close-button") WebElement annullaButton; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public DeleghePage(WebDriver driver) { super(driver); } @@ -39,7 +51,7 @@ public void waitDeleghePage() { this.logger.info("Il titolo o il bottone aggiungi delega è visibile nella pagina aggiungiDeleghe"); } catch (TimeoutException e) { logger.error("Il titolo o il bottone aggiungi delega non è visibile nella pagina aggiungiDeleghe con errore : " + e.getMessage()); - Assert.fail("Il titolo o il bottone aggiungi delega non è visibile nella pagina aggiungiDeleghe con errore : " + e.getMessage()); + Assertions.fail("Il titolo o il bottone aggiungi delega non è visibile nella pagina aggiungiDeleghe con errore : " + e.getMessage()); } } @@ -47,7 +59,7 @@ public void clickAggiungiDelegaButton() { getWebDriverWait(10).withMessage("Il bottone aggiungi delega non è visualizzato").until(ExpectedConditions.elementToBeClickable(addDelegaButton)); logger.info("click sul bottone add deleghe"); - WebTool.waitTime(3); + webTool.waitTime(3); this.addDelegaButton.click(); } @@ -59,7 +71,7 @@ public void controlloCreazioneDelega() { this.logger.info("Si visualizza la delega creata"); } catch (TimeoutException e) { logger.error("Non si visualizza la delega creata"); - Assert.fail("Non si visualizza la delega creata"); + Assertions.fail("Non si visualizza la delega creata"); } } @@ -108,7 +120,7 @@ public void clickMenuDelegante(String fullName) { } } else { logger.error("Non è stato trovato nessun delegato con il nome: " + fullName); - Assert.fail("Non è stato trovato nessun delegato con il nome: " + fullName); + Assertions.fail("Non è stato trovato nessun delegato con il nome: " + fullName); } } @@ -123,7 +135,7 @@ public void clickMenuDelegato(String fullName) { logger.info("Cliccato correttamente su menu delega button"); } else { logger.error("Non è stato trovato nessun delegato con il nome: " + fullName); - Assert.fail("Non è stato trovato nessun delegato con il nome: " + fullName); + Assertions.fail("Non è stato trovato nessun delegato con il nome: " + fullName); } } @@ -139,7 +151,7 @@ public void siCliccaSulBottoneChiudi() { this.element(closeCodiceButtonBy).click(); } catch (TimeoutException e) { logger.error("Il bottone chiudi viene visualizzato NON correttamente con errore:" + e.getMessage()); - Assert.fail("Il bottone chiudi viene visualizzato NON correttamente con errore:" + e.getMessage()); + Assertions.fail("Il bottone chiudi viene visualizzato NON correttamente con errore:" + e.getMessage()); } } @@ -149,13 +161,14 @@ public void clickOpzioneRevoca() { public void clickMenuPerRifiuto(String nome, String cognome) { try { + webTool.waitTime(5); By menuDelegheBy = By.xpath("//table[@id='notifications-table']//td[div/p[contains(text(),'" + nome + " " + cognome + "')]]/following-sibling::td//button[@data-testid='delegationMenuIcon']"); - getWebDriverWait(this.loadComponentWaitTime).until(ExpectedConditions.visibilityOfElementLocated(menuDelegheBy)); + getWebDriverWait(Integer.parseInt(webDriverConfig.getLoadComponentWaitTime())).until(ExpectedConditions.visibilityOfElementLocated(menuDelegheBy)); logger.info("Si clicca correttamente il menu della delega"); this.element(menuDelegheBy).click(); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente il menu della delega con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente il menu della delega con errore:" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente il menu della delega con errore:" + e.getMessage()); } } @@ -167,7 +180,7 @@ public void clickRifiuta() { logger.info("Si visualizza il bottone rifiuta"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente il bottone rifiuta con errore: " + e.getMessage()); - Assert.fail("Non si visualizza correttamente il bottone rifiuta con errore: " + e.getMessage()); + Assertions.fail("Non si visualizza correttamente il bottone rifiuta con errore: " + e.getMessage()); } } @@ -179,7 +192,7 @@ public void clickRifiutaPopUp() { logger.info("Si visualizza il bottone rifiuta nel pop-up"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente il bottone rifiuta pop-up con errore: " + e.getMessage()); - Assert.fail("Non si visualizza correttamente il bottone rifiuta pop-up errore: " + e.getMessage()); + Assertions.fail("Non si visualizza correttamente il bottone rifiuta pop-up errore: " + e.getMessage()); } } @@ -191,7 +204,7 @@ public void clickAnnullaPopUp() { logger.info("Si visualizza il bottone Annulla nel pop-up"); } catch (TimeoutException e) { logger.error("Non si clicca correttamente sul bottone Annulla pop-up con errore: " + e.getMessage()); - Assert.fail("Non si clicca correttamente sul bottone Annulla pop-up errore: " + e.getMessage()); + Assertions.fail("Non si clicca correttamente sul bottone Annulla pop-up errore: " + e.getMessage()); } } @@ -209,7 +222,7 @@ public boolean verificaEsistenzaDelega(String nome, String cognome) { public boolean siVisualizzaUnaDelegaConNome(String nome, String cognome) { try { - WebTool.waitTime(5); + webTool.waitTime(5); By delegaBy = By.xpath("//tr[@id = 'delegatesTable.body.row']//p[contains(text(),'"+ nome +" "+ cognome +"')]"); this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(delegaBy)); @@ -255,7 +268,7 @@ public void checkModaleMostraCodice() { } }catch (TimeoutException e ){ logger.error("modale mostra codice non caricata con errore: " + e.getMessage()); - Assert.fail("modale mostra codice non caricata con errore: " + e.getMessage()); + Assertions.fail("modale mostra codice non caricata con errore: " + e.getMessage()); } } public void clickAnnullaRevoca(){ 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 f354fb6f1..de6138826 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 @@ -1,15 +1,17 @@ package it.pn.frontend.e2e.pages.destinatario.personaFisica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; - +@Component public class ITuoiRecapitiPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("ITuoiRecapitiPage"); @@ -19,15 +21,16 @@ public class ITuoiRecapitiPage extends BasePage { @FindBy(id = "default_sms") WebElement phoneNumInputField; - @FindBy(xpath = "//button[@data-testid='courtesy-sms-button']") + @FindBy(id = "default_sms-button") WebElement avvisamiViaSMSButton; @FindBy(id = "addressType") WebElement tipoIndirizzoField; - @FindBy(id = "subtitle-page") - List subTitlesSection; + @FindBy(xpath = "//*[@id='legalContactsSection']/p") + WebElement subTitlesSection; + @Autowired public ITuoiRecapitiPage(WebDriver driver) { super(driver); } @@ -38,7 +41,7 @@ public void iTuoiRecapitiButtonClick() { this.js().executeScript("arguments[0].click()", this.iTuoiRecapitiButton); } catch (TimeoutException e) { logger.error("il bottone i tuoi Recapiti non trovato o non è cliccabile: " + e.getMessage()); - Assert.fail("il bottone i tuoi Recapiti non trovato o non è cliccabile: " + e.getMessage()); + Assertions.fail("il bottone i tuoi Recapiti non trovato o non è cliccabile: " + e.getMessage()); } } @@ -55,7 +58,7 @@ public void waitLoadITuoiRecapitiPage() { 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()); - Assert.fail("La pagina I Tuoi Recapiti NON si vede correttamente con errori:" + e.getMessage()); + Assertions.fail("La pagina I Tuoi Recapiti NON si vede correttamente con errori:" + e.getMessage()); } } @@ -86,7 +89,7 @@ public void waitLoadCourtesyContacts() { logger.info("Il contatto di cortesia si visualizza correttamente"); } catch (TimeoutException e) { logger.error("il contatto di cortesia non si visualizza correttamente con errori:" + e.getMessage()); - Assert.fail("il contatto di cortesia non si visualizza correttamente con errori:" + e.getMessage()); + Assertions.fail("il contatto di cortesia non si visualizza correttamente con errori:" + e.getMessage()); } } @@ -103,7 +106,7 @@ public void sendOTP(String otp) { logger.info("Il codice otp viene inserito correttamente"); } catch (TimeoutException e) { logger.error("Il codice otp NON viene inserito correttamente con errore:" + e.getMessage()); - Assert.fail("Il codice otp NON viene inserito correttamente con errore:" + e.getMessage()); + Assertions.fail("Il codice otp NON viene inserito correttamente con errore:" + e.getMessage()); } } @@ -114,10 +117,9 @@ public void clickSalvaEmail() { } public void eliminaEmailEsistente() { - By eliminaMailButton = By.xpath("//button[@id='cancelContact-default']"); + By eliminaMailButton = By.xpath("//button[@id='cancelContact-default_email']"); getWebDriverWait(10).withMessage("il Bottone elimina e-mail non presente").until(ExpectedConditions.elementToBeClickable(eliminaMailButton)); this.js().executeScript("arguments[0].click();", this.element(eliminaMailButton)); - logger.info("Log eliminaEmailEsistente: " + driver.getPageSource()); } public void insertEmail(String emailPEC) { @@ -165,7 +167,7 @@ public void cancellaTesto() { } } catch (TimeoutException e) { logger.error("Non si riesce ad cancellare il testo della email :" + e.getMessage()); - Assert.fail("Non si riesce ad cancellare il testo della email :" + e.getMessage()); + Assertions.fail("Non si riesce ad cancellare il testo della email :" + e.getMessage()); } } @@ -206,7 +208,7 @@ public void selezionaTipoPec() { } public void checkPostModifica() { - By saveButton = By.id("saveModifyButton-default"); + By saveButton = By.id("saveContact-default_email"); By cancelButton = By.xpath("//button[contains(text(),'Annulla')]"); By emailField = By.id("default_email"); getWebDriverWait(10).withMessage("Non si visualizza il bottone salva e non è cliccabile").until(ExpectedConditions.and( @@ -223,30 +225,29 @@ public void checkPostModifica() { public void checkRiquadroPEC() { try { - By titleSection = By.xpath("//div[@data-testid='DigitalContactsCardBody']//*/div/div"); + By titleSection = By.id("legalContactsTitle"); By pecField = By.id("default_pec"); - By confirmButton = By.id("add-contact"); - By infoBanner = By.xpath("//span[@data-testid='legal-contact-disclaimer']"); + By confirmButton = By.id("default_pec-button"); + By infoBanner = By.xpath("//p[@data-testid='DigitalContactsCardDescription']"); getWebDriverWait(10).withMessage("Non si visualizza il titolo della sezione recapito legale o il contenuto è errato").until(ExpectedConditions.and( ExpectedConditions.visibilityOfElementLocated(titleSection), - ExpectedConditions.attributeToBe(this.element(titleSection), "innerText", "Recapito legale"))); + ExpectedConditions.attributeToBe(this.element(titleSection), "innerText", "Recapito a valore legale"))); getWebDriverWait(10).withMessage("Non si visualizza il sottotitolo della sezione recapito legale o il contenuto è errato").until(ExpectedConditions.and( - ExpectedConditions.visibilityOf(subTitlesSection.get(1)), - ExpectedConditions.attributeToBe(subTitlesSection.get(1), "innerText", "Quando c’è una notifica per te, ti inviamo qui l’avviso di avvenuta ricezione. Accedi a SEND per leggerla e pagare eventuali spese."))); + ExpectedConditions.visibilityOf(subTitlesSection), + ExpectedConditions.attributeToBe(subTitlesSection, "innerText", "È il recapito ufficiale che scegli per ricevere comunicazioni a valore legale dalla PA. Se attivi un recapito a valore legale riceverai le notifiche di SEND solo in digitale, senza più preoccuparti dei documenti cartacei."))); getWebDriverWait(10).withMessage("Non si visualizza il campo pec o non è modificabile").until(ExpectedConditions.and( ExpectedConditions.visibilityOfElementLocated(pecField), - ExpectedConditions.attributeToBe(this.element(pecField), "readonly", ""), - ExpectedConditions.attributeToBe(this.element(pecField), "placeholder", "Il tuo indirizzo PEC"))); + ExpectedConditions.attributeToBe(this.element(pecField), "placeholder", "La tua PEC"))); getWebDriverWait(10).withMessage("Non si visualizza il bottone conferma o non è cliccabile").until(ExpectedConditions.and( ExpectedConditions.visibilityOfElementLocated(confirmButton), ExpectedConditions.not(ExpectedConditions.elementToBeClickable(confirmButton)))); getWebDriverWait(10).withMessage("Non si visualizza il banner informativo o il suo contenuto è errato").until(ExpectedConditions.and( - ExpectedConditions.visibilityOfElementLocated(infoBanner), - ExpectedConditions.attributeToBe(this.element(infoBanner), "innerText", "Questo è l’indirizzo principale che verrà utilizzato per inviarti gli avvisi di avvenuta ricezione in via digitale. Inserendolo, non riceverai più raccomandate cartacee."))); + ExpectedConditions.visibilityOf(elements(infoBanner).get(0)), + ExpectedConditions.attributeToBe(this.elements(infoBanner).get(0), "innerText", "Quando un ente invia una comunicazione per te su SEND, ricevi l’avviso ufficiale sulla PEC che hai scelto."))); logger.info("Il riquadro PEC si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il riquadro PEC NON si visualizza correttamente con errori:" + e.getMessage()); - Assert.fail("Il riquadro PEC NON si visualizza correttamente con errori:" + e.getMessage()); + Assertions.fail("Il riquadro PEC NON si visualizza correttamente con errori:" + e.getMessage()); } } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/LoginSpidPFPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/LoginSpidPFPage.java index f16f8b4ba..d34fbe7af 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/LoginSpidPFPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/LoginSpidPFPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaFisica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +10,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class LoginSpidPFPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("LoginSpidPFPage"); @@ -24,7 +27,7 @@ public class LoginSpidPFPage extends BasePage { @FindBy(xpath = "//button[contains(@class,'button-spid')]") WebElement entraConSpidButton; - + @Autowired public LoginSpidPFPage(WebDriver driver) { super(driver); } @@ -36,7 +39,7 @@ public void waitLoadLoginSpidDEPage(){ logger.info("Login Spid DE Page caricata"); }catch (TimeoutException e){ logger.error("Login Spid DE Page non caricata con errore : "+e.getMessage()); - Assert.fail("Login Spid DE Page non caricata con errore : "+e.getMessage()); + Assertions.fail("Login Spid DE Page non caricata con errore : "+e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/NotifichePFPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/NotifichePFPage.java index e927f6876..1a5346a9c 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/NotifichePFPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/NotifichePFPage.java @@ -2,72 +2,84 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.time.LocalDate; import java.util.List; +@Component public class NotifichePFPage extends BasePage { - private static final Logger logger = LoggerFactory.getLogger("NotifichePFPage"); + private static final Logger logger = LoggerFactory.getLogger(NotifichePFPage.class); + + @Autowired + private WebDriver driver; @FindBy(id = "Le tue notifiche-page") - WebElement titleLabel; + private WebElement titleLabel; @FindBy(id = "notifications-table") - WebElement tableNotifiche; + private WebElement tableNotifiche; @FindBy(id = "iunMatch") - WebElement codiceIunTextField; + private WebElement codiceIunTextField; @FindBy(id = "filter-notifications-button") - WebElement filtraButton; + private WebElement filtraButton; @FindBy(id = "startDate") - WebElement dataInizioField; + private WebElement dataInizioField; @FindBy(id = "endDate") - WebElement dataFineField; + private WebElement dataFineField; @FindBy(id = "side-item-Notifiche") - WebElement notificheDeButton; + private WebElement notificheDeButton; @FindBy(id = "side-item-Gaio Giulio Cesare") - WebElement nomeDeleganteButton; + private WebElement nomeDeleganteButton; @FindBy(id = "next") - WebElement paginaSuccessivaButton; + private WebElement paginaSuccessivaButton; @FindBy(id = "page3") - WebElement numeroPaginaTreButton; + private WebElement numeroPaginaTreButton; @FindBy(id = "page2") - WebElement paginaSeconda; + private WebElement paginaSeconda; @FindBy(id = "page1") - WebElement paginaPrima; + private WebElement paginaPrima; @FindBy(id = "rows-per-page") - WebElement numeroPagineButton; + private WebElement numeroPagineButton; @FindBy(id = "iunMatch-helper-text") - WebElement notValidIunMessage; + private WebElement notValidIunMessage; @FindBy(css = "[data-testid='cancelButton']") - WebElement rimuoviFiltriButton; + private WebElement rimuoviFiltriButton; @FindBy(xpath = "//button[@data-testid='download-f24-button']") - WebElement buttonDownloadF24; + private WebElement buttonDownloadF24; @FindBy(xpath = "//button[@data-testid='download-pagoPA-notice-button']") - WebElement buttonDownloadAvvisoPagoPA; + private WebElement buttonDownloadAvvisoPagoPA; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public NotifichePFPage(WebDriver driver) { super(driver); + this.driver = driver; } public void waitLoadNotificheDEPage() { @@ -96,7 +108,7 @@ public void waitESelectDelegheButton() { } public void selectFiltraButton() { - WebTool.waitTime(5); + webTool.waitTime(5); filtraButton = driver.findElement(By.id("filter-notifications-button")); getWebDriverWait(40).withMessage("Il bottone filtra sulla pagina notifiche non è cliccabile").until(ExpectedConditions.elementToBeClickable(filtraButton)); filtraButton.click(); @@ -236,7 +248,7 @@ public void waitLoadSecondaPagina() { logger.info("Si visualizza una pagina differente dalla precedente"); } else { logger.error("Non si visualizza una pagina differente dalla precedente"); - Assert.fail("Non si visualizza una pagina differente dalla precedente"); + Assertions.fail("Non si visualizza una pagina differente dalla precedente"); } } @@ -247,7 +259,7 @@ public void siSceglieUnaPaginaDiversaConNumeroESiFiltra(String iun) { codiceIunTextField.click(); codiceIunTextField.sendKeys(iun); clickFiltraButton(); - WebTool.waitTime(2); + webTool.waitTime(2); clickRimuoviFiltriButton(); } @@ -274,7 +286,7 @@ public int conteggioNotifiche() { public void selezionaNotifica() { By notificaBy = By.xpath("//td[contains(@class,'MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-1cpwezh')]"); - WebTool.waitTime(2); + webTool.waitTime(2); getWebDriverWait(30).withMessage("Non viene visualizzata la prima riga della tabella delle notifiche").until(ExpectedConditions.elementToBeClickable(notificaBy)); elements(notificaBy).get(0).click(); } @@ -313,7 +325,7 @@ public void clickRimuoviFiltriButton() { public void firstPageDisplayed() { String isPageSelected = paginaPrima.getAttribute("aria-current"); - Assert.assertTrue(isPageSelected.equalsIgnoreCase("true")); + Assertions.assertTrue(isPageSelected.equalsIgnoreCase("true")); logger.info("Si visualizza prima pagina"); } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ScegliSpidPFPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ScegliSpidPFPage.java index 78f967336..9af22333b 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ScegliSpidPFPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaFisica/ScegliSpidPFPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaFisica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +10,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class ScegliSpidPFPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("ScegliSpidPFPage"); @@ -18,6 +21,7 @@ public class ScegliSpidPFPage extends BasePage { @FindBy(id = "spid-select-xx_testenv2") WebElement testButton; + @Autowired public ScegliSpidPFPage(WebDriver driver) { super(driver); } @@ -29,7 +33,7 @@ public void waitLoadScegliSpidDEPage(){ logger.info("Scegli Spid DE Page caricata"); }catch (TimeoutException e){ logger.error("Scegli Spid DE Page non caricata con errore : "+e.getMessage()); - Assert.fail("Scegli Spid DE Page non caricata con errore : "+e.getMessage()); + Assertions.fail("Scegli Spid DE Page non caricata con errore : "+e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AccediAreaRiservataPGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AccediAreaRiservataPGPage.java index 13561b348..518b6f289 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AccediAreaRiservataPGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AccediAreaRiservataPGPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,13 +10,17 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class AccediAreaRiservataPGPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("AccediAreaRiservataPGPage"); @FindBy(id = "spidButton") WebElement spidButton; + @Autowired public AccediAreaRiservataPGPage(WebDriver driver) { super(driver); } @@ -29,7 +33,7 @@ public void waitLoadAccediAreaRiservataPGPage() { logger.info("AccediAreaRiservaPage caricata correttamente"); } catch (TimeoutException e ){ logger.error("Accedi Area Riservata Page non caricata correttamente con errore: "+e.getMessage()); - Assert.fail("Accedi Area Riservata Page non caricata correttamente con errore: "+e.getMessage()); + Assertions.fail("Accedi Area Riservata Page non caricata correttamente con errore: "+e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AutorizzaInvioDatiPGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AutorizzaInvioDatiPGPage.java index 700ba8052..d457d3f86 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AutorizzaInvioDatiPGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/AutorizzaInvioDatiPGPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,10 +10,14 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class AutorizzaInvioDatiPGPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("AutorizzaInvioDatiPGPage"); + @Autowired public AutorizzaInvioDatiPGPage(WebDriver driver) { super(driver); } @@ -29,7 +33,7 @@ public void waitLoadAutorizzaInvioDatiPGPage() { logger.info("AutorizzaInviaDatiPGPage caricata correttamente"); } catch (TimeoutException e){ logger.error("AutorizzaInviaDatiPGPage non caricata correttamente con errore: "+e.getMessage()); - Assert.fail("AutorizzaInviaDatiPGPage non caricata correttamente con errore: "+e.getMessage()); + Assertions.fail("AutorizzaInviaDatiPGPage non caricata correttamente con errore: "+e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DeleghePGPagoPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DeleghePGPagoPAPage.java index 60d408b05..9dcc80072 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DeleghePGPagoPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DeleghePGPagoPAPage.java @@ -1,17 +1,18 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; - +@Component public class DeleghePGPagoPAPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("DeleghePGPagoPAPage"); @@ -84,7 +85,7 @@ public class DeleghePGPagoPAPage extends BasePage { @FindBy(id = "error-alert") WebElement errorCodeInPopUp; - + @Autowired public DeleghePGPagoPAPage(WebDriver driver) { super(driver); } @@ -98,7 +99,7 @@ public void waitLoadDeleghePage() { logger.info("Deleghe page si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Deleghe page non si visualizza correttamente con errore: " + e.getMessage()); - Assert.fail("Deleghe page non si visualizza correttamente con errore: " + e.getMessage()); + Assertions.fail("Deleghe page non si visualizza correttamente con errore: " + e.getMessage()); } } @@ -109,7 +110,7 @@ public void clickDelegatiImpresa() { logger.info("Bottone delegati dell impresa cliccato"); } catch (TimeoutException e) { logger.error("il bottone delegati imprese non è cliccabile" + e.getMessage()); - Assert.fail("il bottone delegati imprese non è cliccabile" + e.getMessage()); + Assertions.fail("il bottone delegati imprese non è cliccabile" + e.getMessage()); } } @@ -151,7 +152,7 @@ public void verificaPresenzaElencoDeleghe() { logger.info("L'elenco delle deleghe si visualizza correttamente"); } catch (TimeoutException e) { logger.error("L'elenco delle deleghe non si visualizza correttamente con errore: " + e.getMessage()); - Assert.fail("L'elenco delle deleghe non si visualizza correttamente con errore: " + e.getMessage()); + Assertions.fail("L'elenco delle deleghe non si visualizza correttamente con errore: " + e.getMessage()); } } @@ -170,7 +171,7 @@ public boolean controlloDelegaRestituita(String ragioneSociale) { logger.info("controllo ragione sociale"); } catch (TimeoutException e) { logger.error("ragione sociale non caricata" + e.getMessage()); - Assert.fail("ragione sociale non caricata" + e.getMessage()); + Assertions.fail("ragione sociale non caricata" + e.getMessage()); } logger.info("ragione sociale caricata correttamente"); return this.elements(delegaBy).size() == 1; @@ -190,7 +191,7 @@ public void waitLoadPopUpGruppo() { this.logger.info("Si vede correttamente il pop-up di assegnazione gruppo"); } catch (TimeoutException e) { this.logger.error("Non si vede correttamente il pop-up di assegnazione gruppo con errore: " + e.getMessage()); - Assert.fail("Non si vede correttamente il pop-up di assegnazione gruppo con errore: " + e.getMessage()); + Assertions.fail("Non si vede correttamente il pop-up di assegnazione gruppo con errore: " + e.getMessage()); } } @@ -239,7 +240,7 @@ public void controlloStatoAttiva(String ragioneSociale) { logger.info("La delega ha lo stato Attiva"); } catch (TimeoutException e) { logger.error("La delega NON ha lo stato Attiva con errore: " + e.getMessage()); - Assert.fail("La delega NON ha lo stato Attiva con errore: " + e.getMessage()); + Assertions.fail("La delega NON ha lo stato Attiva con errore: " + e.getMessage()); } } @@ -266,7 +267,7 @@ public void waitLoadPopUpRevoca() { this.logger.info("Si visualizza il pop-up rifiuta delega"); } catch (TimeoutException e) { this.logger.error("Non si visualizza il pop-up rifiuta delega con errore: " + e.getMessage()); - Assert.fail("Non si visualizza il pop-up rifiuta delega con errore: " + e.getMessage()); + Assertions.fail("Non si visualizza il pop-up rifiuta delega con errore: " + e.getMessage()); } } @@ -276,7 +277,7 @@ public void clickOpzioneModifica() { this.opzioneModifica.click(); } catch (TimeoutException e) { logger.error(" errore: " + e.getMessage()); - Assert.fail(" errore: " + e.getMessage()); + Assertions.fail(" errore: " + e.getMessage()); } } @@ -287,7 +288,7 @@ public void waitLoadPopUpModifica() { logger.info("Si visualizza correttamente il pop-up"); } catch (TimeoutException e) { logger.error("NON Si visualizza correttamente il pop-up con errore: " + e.getMessage()); - Assert.fail("NON Si visualizza correttamente il pop-up con errore: " + e.getMessage()); + Assertions.fail("NON Si visualizza correttamente il pop-up con errore: " + e.getMessage()); } } @@ -324,6 +325,9 @@ public void inserimentoCodiceDelegaACaricoDellImpresaAPI(String codiceDelega) { public boolean siVisualizzaUnaDelegaPG() { try { + By menuDelegati = By.id("tab-1"); + this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(menuDelegati)); + element(menuDelegati).click(); By menuDelega = By.xpath("//button[@data-testid='delegationMenuIcon']"); this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(menuDelega)); logger.info("Trovato correttamente almeno una delega"); @@ -344,7 +348,7 @@ public void checkAlertWrongDelegationCode() { logger.info("Alert chiusa"); } catch (TimeoutException e) { logger.error("Alert non visualizzato con errore: " + e.getMessage()); - Assert.fail("Alert non visualizzato con errore: " + e.getMessage()); + Assertions.fail("Alert non visualizzato con errore: " + e.getMessage()); } } @@ -358,7 +362,7 @@ public void clickButtonIndietroDaAssegnaGruppo() { logger.info("Bottone indietro cliccato"); } catch (TimeoutException e) { logger.error("Bottone non visualizzato con errore " + e.getMessage()); - Assert.fail("Bottone non visualizzato con errore: " + e.getMessage()); + Assertions.fail("Bottone non visualizzato con errore: " + e.getMessage()); } } @@ -390,7 +394,7 @@ public void checkTextboxCodiceSonoRosse() { logger.info("Textbox di input codice delega invalido"); } else { logger.error("Almeno una textbox di input codice delega non in stato invalido"); - Assert.fail("Almeno una textbox di input codice delega non in stato invalido"); + Assertions.fail("Almeno una textbox di input codice delega non in stato invalido"); } } @@ -402,7 +406,7 @@ public void checkErroreInSelezioneGruppo() { logger.info("testo di errore gruppo trovato con successo"); }catch (TimeoutException e){ logger.error("errore in cattura testo di errore ricerca gruppo per assegnazione con errore:" + e.getMessage()); - Assert.fail("errore in cattura testo di errore ricerca gruppo per assegnazione con errore:" + e.getMessage()); + Assertions.fail("errore in cattura testo di errore ricerca gruppo per assegnazione con errore:" + e.getMessage()); } } @@ -436,7 +440,7 @@ public void checkTabellaDelegheACaricoDellImpresa() { getWebDriverWait(10).withMessage("menu non caricato correttamente").until(ExpectedConditions.visibilityOfElementLocated(menuDelega)); } catch (TimeoutException e) { logger.error("tabella deleghe a carico dell impresa non caricata correttamente" + e.getMessage()); - Assert.fail("tabella deleghe a carico dell impresa non caricata correttamente" + e.getMessage()); + Assertions.fail("tabella deleghe a carico dell impresa non caricata correttamente" + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DisserviziAppPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DisserviziAppPage.java index 928283d80..61884d01e 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DisserviziAppPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/DisserviziAppPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,9 +10,12 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; +@Component public class DisserviziAppPage extends BasePage { @FindBy(id = "Stato della piattaforma-page") @@ -20,6 +23,7 @@ public class DisserviziAppPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("Disservizi Page"); + @Autowired public DisserviziAppPage(WebDriver driver) { super(driver); } @@ -30,7 +34,7 @@ public void waitLoadStatoDellaPiattaformaPage() { logger.info("Si visualizza correttamente la sezione disservizi"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente la sezione disservizi con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente la sezione disservizi con errore" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente la sezione disservizi con errore" + e.getMessage()); } } @@ -45,7 +49,7 @@ public void checkDatiPaginaDisservizi() { this.getWebDriverWait(10).withMessage("ultimo aggiornamento stato piattaforma non presente").until(ExpectedConditions.visibilityOfElementLocated(dateLastCheck)); } catch (TimeoutException e) { logger.error("Dati presenti nella pagina stato della piattaforma non corretti: " + e.getMessage()); - Assert.fail("Dati presenti nella pagina stato della piattaforma non corretti: " + e.getMessage()); + Assertions.fail("Dati presenti nella pagina stato della piattaforma non corretti: " + e.getMessage()); } } @@ -66,7 +70,7 @@ public void checkElencoDisservizi() { logger.info("Si visualizza correttamente l'elenco dei disservizi"); } catch (Exception e) { logger.error("NON si visualizza correttamente l'elenco dei disservizi con errore:" + e.getMessage()); - Assert.fail("NON si visualizza correttamente l'elenco dei disservizi con errore:" + e.getMessage()); + Assertions.fail("NON si visualizza correttamente l'elenco dei disservizi con errore:" + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/GruppiPGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/GruppiPGPage.java index b97386fd9..fda16ea8d 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/GruppiPGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/GruppiPGPage.java @@ -1,15 +1,18 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.utility.WebTool; import lombok.extern.slf4j.Slf4j; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.time.Instant; import java.time.LocalDate; @@ -18,9 +21,9 @@ import java.util.Map; @Slf4j +@Component public class GruppiPGPage extends BasePage { - private final AccediAreaRiservataPGPage accediAreaRiservataPGPage = new AccediAreaRiservataPGPage(driver); private final Actions actions = new Actions(driver); @FindBy(id = "side-item-Gruppi") @@ -41,6 +44,18 @@ public class GruppiPGPage extends BasePage { @FindBy(xpath = "//button[contains(text(), 'Conferma')]") WebElement buttonConferma; + @Autowired + private WebTool webTool; + @Autowired + private AccediAreaRiservataPGPage accediAreaRiservataPGPage; + @Autowired + private ScegliSpidPGPage scegliSpidPGPage ; + @Autowired + private LoginPGPagoPAPage loginPGPagoPAPage; + @Autowired + private AutorizzaInvioDatiPGPage autorizzaInvioDatiPGPage ; + + @Autowired public GruppiPGPage(WebDriver driver) { super(driver); } @@ -49,21 +64,21 @@ public void clickGruppiButton() { js().executeScript("arguments[0].scrollIntoView(true);", gruppiButton); getWebDriverWait(10).withMessage("Il bottone gruppi non è visibile").until(ExpectedConditions.visibilityOf(gruppiButton)); gruppiButton.click(); - WebTool.waitTime(5); - WebTool.switchToOtherTab(); + webTool.waitTime(5); + webTool.switchToOtherTab(); } public void loginGruppi(String nome, String pwd) { accediAreaRiservataPGPage.waitLoadAccediAreaRiservataPGPage(); accediAreaRiservataPGPage.clickSpidButton(); - ScegliSpidPGPage scegliSpidPGPage = new ScegliSpidPGPage(driver); + scegliSpidPGPage.clickTestButton(); - LoginPGPagoPAPage loginPGPagoPAPage = new LoginPGPagoPAPage(driver); + loginPGPagoPAPage.waitLoadLoginPGPage(); loginPGPagoPAPage.insertUsername(nome); loginPGPagoPAPage.insertPassword(pwd); loginPGPagoPAPage.clickInviaButton(); - AutorizzaInvioDatiPGPage autorizzaInvioDatiPGPage = new AutorizzaInvioDatiPGPage(driver); + autorizzaInvioDatiPGPage.waitLoadAutorizzaInvioDatiPGPage(); autorizzaInvioDatiPGPage.clickInviaButton(); } @@ -121,7 +136,7 @@ public void creazioneNuovoGruppo(Map datiGruppo) { } public void checkButtonConfermaAndClick() { - WebTool.waitTime(5); + webTool.waitTime(5); buttonConferma = driver.findElement(By.xpath("//button[contains(text(), 'Conferma')]")); getWebDriverWait(10).withMessage("Il bottone conferma non è abilitato").until(ExpectedConditions.elementToBeClickable(buttonConferma)); log.info("Il bottone è abilitato e lo si clicca"); @@ -212,7 +227,7 @@ public void siModificaUnCampoDelGruppo(String campo, String modifica) { } } catch (InterruptedException e) { log.error("È fallita l'attesa prima della modifica del campo con errore: {}", e.getMessage()); - Assert.fail("È fallita l'attesa prima della modifica del campo con errore: " + e.getMessage()); + Assertions.fail("È fallita l'attesa prima della modifica del campo con errore: " + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/HomePagePG.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/HomePagePG.java index 8c7d6c6d3..21a56f548 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/HomePagePG.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/HomePagePG.java @@ -1,19 +1,23 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; +@Component public class HomePagePG extends BasePage { private static final Logger logger = LoggerFactory.getLogger("HomePagePG"); + @Autowired public HomePagePG(WebDriver driver) { super(driver); } @@ -54,7 +58,7 @@ public void checkBottoneDeleghe() { isDisplayed = false; // Elemento non trovato } - Assert.assertTrue("Il side menu deleghe non è visibile", !isDisplayed); + Assertions.assertTrue(!isDisplayed,"Il side menu deleghe non è visibile"); } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/LoginPGPagoPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/LoginPGPagoPAPage.java index d6251d014..353ed6d0f 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/LoginPGPagoPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/LoginPGPagoPAPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +10,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class LoginPGPagoPAPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("LoginPGPagoPAPage"); @@ -24,6 +27,7 @@ public class LoginPGPagoPAPage extends BasePage { @FindBy(xpath = "//button[@name = 'confirm']") WebElement inviaButton; + @Autowired public LoginPGPagoPAPage(WebDriver driver) { super(driver); } @@ -38,7 +42,7 @@ public void waitLoadLoginPGPage() { logger.info("LoginPGPage caricata correttamente"); } catch (TimeoutException e){ logger.error("LoginPGPage non caricata correttamente con errore :" +e.getMessage()); - Assert.fail("LoginPGPage non caricata correttamente con errore :" +e.getMessage()); + Assertions.fail("LoginPGPage non caricata correttamente con errore :" +e.getMessage()); } } 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 6121788ba..09b0021b7 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 @@ -3,17 +3,21 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.common.DettaglioNotificaSection; import it.pn.frontend.e2e.common.HelpdeskPage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.section.mittente.DettaglioNotificaMittenteSection; import it.pn.frontend.e2e.utility.DownloadFile; import it.pn.frontend.e2e.utility.WebTool; import net.lingala.zip4j.ZipFile; import org.apache.commons.io.FileUtils; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.io.IOException; import java.net.URL; @@ -28,6 +32,7 @@ import java.util.Map; import java.util.stream.Stream; +@Component public class PiattaformaNotifichePGPAPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("PiattaformaNotifichePGPAPage"); @@ -71,6 +76,21 @@ public class PiattaformaNotifichePGPAPage extends BasePage { @FindBy(xpath = "//button[contains(text(), 'Ricevuta di consegna')]") WebElement ricevutaDiConsegnaButton; + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + private DownloadFile downloadFile; + @Autowired + private DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection; + @Autowired + private HelpdeskPage helpdeskPage ; + @Autowired + private DettaglioNotificaSection dettaglioNotificaSection ; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public PiattaformaNotifichePGPAPage(WebDriver driver) { super(driver); } @@ -102,7 +122,7 @@ public void waitLoadPiattaformaNotificaPage(String ragioneSociale) { logger.info("La pagina Piattaforma Notifiche si carica correttamente"); } catch (TimeoutException e) { logger.error("La pagina Piattaforma Notifiche non si carica correttamente con errore: " + e.getMessage()); - Assert.fail("La pagina Piattaforma Notifiche non si carica correttamente con errore: " + e.getMessage()); + Assertions.fail("La pagina Piattaforma Notifiche non si carica correttamente con errore: " + e.getMessage()); } } @@ -113,21 +133,29 @@ public void clickSuDelegeButton() { logger.info("click sul bottone Deleghe effetuato"); } catch (TimeoutException e) { logger.error("il bottone deleghe non è stato trovato " + e.getMessage()); - Assert.fail("il bottone deleghe non è stato trovato" + e.getMessage()); + Assertions.fail("il bottone deleghe non è stato trovato" + e.getMessage()); } } - public void clickNotificheDelegate() { - WebTool.waitTime(5); + public void clickNotificheENotificheDelegate() { + webTool.waitTime(5); getWebDriverWait(10).until(ExpectedConditions.visibilityOf(this.sideItemNotificheButton)); sideItemNotificheButton.click(); - WebTool.waitTime(10); - By notificheDelegateButton = By.id("side-item-Notifiche delegate"); + webTool.waitTime(10); + By notificheDelegateButton = By.id("menu-item(notifiche delegate)"); this.getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(notificheDelegateButton)); this.js().executeScript("arguments[0].click()", this.element(notificheDelegateButton)); logger.info("Si clicca correttamente sulla voce notifiche delegate"); } + public void clickNotificheDelegate() { + webTool.waitTime(5); + By notificheDelegateButton = By.id("menu-item(notifiche delegate)"); + this.getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(notificheDelegateButton)); + this.js().executeScript("arguments[0].click()", this.element(notificheDelegateButton)); + logger.info("Si clicca correttamente sulla voce notifiche delegate"); + } + public void waitLoadSezioneNotificheDelegate(String ragioneSociale) { try { By notificheDelegatePageTitle = By.id("Notifiche delegate a " + ragioneSociale + "-page"); @@ -135,7 +163,7 @@ public void waitLoadSezioneNotificheDelegate(String ragioneSociale) { logger.info("Si visualizza correttamente la sezione notifiche delegate"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente la sezione notifiche delegate con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente la sezione notifiche delegate con errore" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente la sezione notifiche delegate con errore" + e.getMessage()); } } @@ -201,7 +229,7 @@ public boolean modelloF24Displayed() { public void clickModelloF24Numero(int numOfF24) { List f24 = driver.findElements(By.xpath("//button[@data-testid='download-f24-button']")); logger.info("F24 trovato:" + f24.size()); - WebTool.waitTime(3); + webTool.waitTime(3); getWebDriverWait(30).withMessage("Il sezione scarica modello F24 non è cliccabile").until(ExpectedConditions.elementToBeClickable(f24.get(numOfF24 - 1))); f24.get(numOfF24 - 1).click(); } @@ -212,12 +240,12 @@ public void checkBoxModelloF24PG() { getWebDriverWait(10).withMessage("Non si visualizza il box allegati modelli F24").until(ExpectedConditions.visibilityOfElementLocated(boxModelloF24)); } catch (TimeoutException e) { logger.error("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); - Assert.fail("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); + Assertions.fail("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); } } public void clickRicevutaDiConsegna() throws AWTException, IOException { - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = webDriverConfig.getHeadless().equalsIgnoreCase("true"); if (!headless) { logger.info("controllo esistenza bottone per scaricare zip"); getWebDriverWait(10).withMessage("Il bottone Ricevuta di consegna non cliccabile").until(ExpectedConditions.elementToBeClickable(ricevutaDiConsegnaButton)); @@ -253,15 +281,13 @@ public void clickRicevutaDiConsegna() throws AWTException, IOException { // Generate a unique filename for the downloaded ZIP file String fileName = "downloaded_" + System.currentTimeMillis() + ".zip"; - DownloadFile downloadFile = new DownloadFile(this.driver); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); String codiceIUN; - WebTool.waitTime(1); + webTool.waitTime(1); codiceIUN = dettaglioNotificaMittenteSection.getInfoNotifica(3); File file = new File(downloadDirectory, fileName); ricevutaDiConsegnaButton.click(); - WebTool.waitTime(1); + webTool.waitTime(1); final String urlFileRicevuta = downloadFile.getUrl("https://webapi.test.notifichedigitali.it/bff/v1/notifications/received/" + codiceIUN + "/documents/"); FileUtils.copyURLToFile(new URL(urlFileRicevuta), file, 1000, 1000); logger.info("ZIP file downloaded successfully."); @@ -324,7 +350,6 @@ public void extractZipWithoutPassword() throws IOException { String zipDirectoryPath = workingDirectory + "/src/test/resources/dataPopulation/zip"; String extractDirectoryPath = zipDirectoryPath + "/extract"; - HelpdeskPage helpdeskPage = new HelpdeskPage(this.driver); // Find the latest ZIP file File latestZipFile = helpdeskPage.findLatestZipFile(zipDirectoryPath); if (latestZipFile == null) { @@ -344,22 +369,21 @@ public void extractZipWithoutPassword() throws IOException { } public void controllaTesto(String nomeFile) { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); + Map infoNotifiche = dettaglioNotificaSection.recuperoInfoNotificheDestinatario(); if (nomeFile.contains("PN_NOTIFICATION_ATTACHMENTS")) { if (dettaglioNotificaMittenteSection.controlloTestoFile(nomeFile, "A Simple PDF File")) { logger.info("Il testo all'interno del file è corretto"); } else { logger.error("Il testo all'interno del file NON è corretto"); - Assert.fail("Il testo all'interno del file NON è corretto"); + Assertions.fail("Il testo all'interno del file NON è corretto"); } } else if (nomeFile.contains("Avviso di avvenuta ricezione")) { if (dettaglioNotificaMittenteSection.controlloTestoFile(nomeFile, "A Simple PDF File")) { logger.info("Il testo all'interno del file è corretto"); } else { logger.error("Il testo all'interno del file NON è corretto"); - Assert.fail("Il testo all'interno del file NON è corretto"); + Assertions.fail("Il testo all'interno del file NON è corretto"); } } else { if (nomeFile.equals("Attestazione_opponibile_a_terzi_notifica_presa_in_carico")) { @@ -367,7 +391,7 @@ public void controllaTesto(String nomeFile) { logger.info("Il nome del mittente all'interno del file è corretto"); } else { logger.error("Il nome del mittente all'interno del file NON è corretto"); - Assert.fail("Il nome del mittente all'interno del file NON è corretto"); + Assertions.fail("Il nome del mittente all'interno del file NON è corretto"); } } @@ -375,7 +399,7 @@ public void controllaTesto(String nomeFile) { logger.info("Il nome del destinatario all'interno del file è corretto"); } else { logger.error("Il nome del destinatario all'interno del file NON è corretto"); - Assert.fail("Il nome del destinatario all'interno del file NON è corretto"); + Assertions.fail("Il nome del destinatario all'interno del file NON è corretto"); } } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PreAccediAreaRiservataPGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PreAccediAreaRiservataPGPage.java index 9053d37d3..c60fdd061 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PreAccediAreaRiservataPGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/PreAccediAreaRiservataPGPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -29,7 +29,7 @@ public void waitLoadPreAccediPage() { logger.info("PreAccediAreaRiservataPGPage caricata corretamente"); } catch (TimeoutException e ){ logger.error("PreAccediAreaRiservataPGPage non caricata corretamente con errore: " +e.getMessage()); - Assert.fail("PreAccediAreaRiservataPGPage non caricata corretamente con errore: " +e.getMessage()); + Assertions.fail("PreAccediAreaRiservataPGPage non caricata corretamente con errore: " +e.getMessage()); } } 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 55dedd4cf..259a1270c 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 @@ -1,6 +1,6 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -24,7 +24,7 @@ public void waitLoadRecapitiPage() { logger.info("Si visualizza correttamente recapiti page"); }catch (TimeoutException e){ logger.error("Non si visualizza correttamente recapiti page con errore:"+e.getMessage()); - Assert.fail("Non si visualizza correttamente recapiti page con errore:"+e.getMessage()); + Assertions.fail("Non si visualizza correttamente recapiti page con errore:"+e.getMessage()); } } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RicercaNotifichePGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RicercaNotifichePGPage.java index afeb7b6f1..22738de9e 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RicercaNotifichePGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/RicercaNotifichePGPage.java @@ -2,12 +2,14 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.sql.Driver; @@ -28,6 +30,10 @@ public RicercaNotifichePGPage(WebDriver driver) { @FindBy(id = "notificationsTable.body.row") WebElement primaNotifica; + @Autowired + @Lazy + private WebTool webTool; + public void clickNotificheImpresa() { try { By notificheImpresaButton = By.xpath("//div[@data-testid=\"sideMenuItem-Notifiche dell'impresa\"]"); @@ -36,7 +42,7 @@ public void clickNotificheImpresa() { this.element(notificheImpresaButton).click(); } catch (Exception e) { logger.error("Non si clicca sulla voce notifiche dell'impresa con errore:" + e.getMessage()); - Assert.fail("Non si clicca sulla voce notifiche dell'impresa con errore:" + e.getMessage()); + Assertions.fail("Non si clicca sulla voce notifiche dell'impresa con errore:" + e.getMessage()); } } @@ -47,7 +53,7 @@ public void cliccaNotificaRestituita(String codiceIun) { this.js().executeScript("arguments[0].click()", this.element(notificaBy)); } catch (TimeoutException e) { logger.error("Notifica non trovata con errore: " + e.getMessage()); - Assert.fail("Notifica non trovata con errore: " + e.getMessage()); + Assertions.fail("Notifica non trovata con errore: " + e.getMessage()); } catch (StaleElementReferenceException e) { this.getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(notificaBy)); this.js().executeScript("arguments[0].click()", this.element(notificaBy)); @@ -72,7 +78,7 @@ public void waitLoadDettaglioNotificaPGDelegato() { logger.info("La pagina dettaglio notifica si è caricata correttamente"); } catch (TimeoutException e) { logger.error("La pagina dettaglio notifica NON si è caricata correttamente con errore:" + e.getMessage()); - Assert.fail("La pagina dettaglio notifica NON si è caricata correttamente con errore:" + e.getMessage()); + Assertions.fail("La pagina dettaglio notifica NON si è caricata correttamente con errore:" + e.getMessage()); } } @@ -97,20 +103,20 @@ public void waitLoadNotifichePGPage() { logger.info("Notifiche PG Page caricata"); } catch (TimeoutException e) { logger.error("Notifiche PG Page non caricata con errore : " + e.getMessage()); - Assert.fail("Notifiche PG Page non caricata con errore : " + e.getMessage()); + Assertions.fail("Notifiche PG Page non caricata con errore : " + e.getMessage()); } } public void cliccaSuPrimaNotifica(){ try { - WebTool.waitTime(10); + webTool.waitTime(10); primaNotifica = driver.findElement(By.id("notificationsTable.body.row")); getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(primaNotifica)); logger.info("Si clicca sulla prima notifica"); primaNotifica.click(); } catch (Exception e) { logger.error("Non si clicca sulla prima notifica con errore:" + e.getMessage()); - Assert.fail("Non si clicca sulla prima notifica con errore:" + e.getMessage()); + Assertions.fail("Non si clicca sulla prima notifica con errore:" + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/ScegliSpidPGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/ScegliSpidPGPage.java index c622c43bb..6aebc30c3 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/ScegliSpidPGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/ScegliSpidPGPage.java @@ -1,7 +1,8 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; + +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,13 +11,17 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class ScegliSpidPGPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("ScegliSpidPGPage"); @FindBy(id = "xx_testenv2") WebElement testButton; + @Autowired public ScegliSpidPGPage(WebDriver driver) { super(driver); } @@ -29,7 +34,7 @@ public void waitLoadScegliSpidPGPage() { logger.info("ScegliSpidPGPage caricata correttamente"); } catch (TimeoutException e){ logger.error("ScegliSpidPGPage non caricata correttamente con errore: " +e.getMessage()); - Assert.fail("ScegliSpidPGPage non caricata correttamente con errore: " +e.getMessage()); + Assertions.fail("ScegliSpidPGPage non caricata correttamente con errore: " +e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/SelezionaImpresaPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/SelezionaImpresaPage.java index b44e00dc7..aff2567d6 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/SelezionaImpresaPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/SelezionaImpresaPage.java @@ -2,13 +2,16 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; +@Component public class SelezionaImpresaPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("SelezionaImpresaPage"); @@ -16,13 +19,18 @@ public class SelezionaImpresaPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Accedi')]") WebElement accediButton; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public SelezionaImpresaPage(WebDriver driver) { super(driver); } public void waitLoadSelezionaImpresaPage() { - WebTool.waitTime(5); + webTool.waitTime(10); By titlePageBy = By.xpath("//h3[contains(text(),'Seleziona la tua impresa')]"); this.getWebDriverWait(30).withMessage("Il titolo della pagina Seleziona la tua impresa non è visibile").until(ExpectedConditions.visibilityOfElementLocated(titlePageBy)); this.getWebDriverWait(30).withMessage("Il bottone accedi della pagina Seleziona la tua impresa non è visibile").until(ExpectedConditions.visibilityOf(this.accediButton)); diff --git a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/UtentiPGPage.java b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/UtentiPGPage.java index fb80f65f7..838bdb324 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/UtentiPGPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/destinatario/personaGiuridica/UtentiPGPage.java @@ -1,24 +1,29 @@ package it.pn.frontend.e2e.pages.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.List; import java.util.Set; - +@Component public class UtentiPGPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("UtentiPGPage"); - private final AccediAreaRiservataPGPage accediAreaRiservataPGPage = new AccediAreaRiservataPGPage(this.driver); + private final Actions actions = new Actions(this.driver); + @FindBy(xpath = "//button[contains(text(),'Aggiungi utente')]") WebElement addUserButton; @FindBy(xpath = "//button[contains(text(),'Indietro')]") @@ -70,6 +75,22 @@ public class UtentiPGPage extends BasePage { @FindBy(xpath = "//span[contains(text(),'Utenti')]") WebElement sezioneUtenti; + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + private ScegliSpidPGPage scegliSpidPGPage ; + @Autowired + private AccediAreaRiservataPGPage accediAreaRiservataPGPage; + @Autowired + private LoginPGPagoPAPage loginPGPagoPAPage; + @Autowired + private AutorizzaInvioDatiPGPage autorizzaInvioDatiPGPage; + @Autowired + @Lazy + private WebTool webTool; + + + @Autowired public UtentiPGPage(WebDriver driver) { super(driver); } @@ -79,7 +100,7 @@ public void clickSezioneUtenti() { sezioneUtenti.click(); //build url String companyId = "d0f52c7d-76d5-4520-8971-edffeb5b46d5"; - String environment = System.getProperty("environment"); + String environment = webDriverConfig.getEnvironment(); String utentiUrl = "https://imprese." + environment + ".notifichedigitali.it/dashboard/" + companyId + "/users"; //switch tab String parentWindowHandle = driver.getWindowHandle(); @@ -102,23 +123,23 @@ public void loginUtenti(String nome, String pwd) { accediAreaRiservataPGPage.waitLoadAccediAreaRiservataPGPage(); accediAreaRiservataPGPage.clickSpidButton(); - ScegliSpidPGPage scegliSpidPGPage = new ScegliSpidPGPage(this.driver); + scegliSpidPGPage.clickTestButton(); - LoginPGPagoPAPage loginPGPagoPAPage = new LoginPGPagoPAPage(this.driver); + loginPGPagoPAPage.waitLoadLoginPGPage(); loginPGPagoPAPage.insertUsername(nome); loginPGPagoPAPage.insertPassword(pwd); loginPGPagoPAPage.clickInviaButton(); - AutorizzaInvioDatiPGPage autorizzaInvioDatiPGPage = new AutorizzaInvioDatiPGPage(this.driver); + autorizzaInvioDatiPGPage.waitLoadAutorizzaInvioDatiPGPage(); autorizzaInvioDatiPGPage.clickInviaButton(); } public void waitLoadUtentiPage() { try { - WebTool.waitTime(15); + webTool.waitTime(15); WebElement utentiPageTitle = driver.findElement(By.xpath("//div/h4[contains(text(),'Utenti')]")); WebElement sottoTitolo = driver.findElement(By.xpath("//div/p[contains(text(),'Gestisci gli utenti')]")); WebElement addUserButton = driver.findElement(By.xpath("//button[contains(text(),'Aggiungi utente')]")); @@ -132,7 +153,7 @@ public void waitLoadUtentiPage() { logger.info("Si visualizza correttamente utenti page"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente utenti page con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente utenti page con errore:" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente utenti page con errore:" + e.getMessage()); } } @@ -157,12 +178,12 @@ public void waitLoadAggiungiUtentePage() { public void insertData(String codiceFiscale, String name, String surname, String email) throws InterruptedException { codiceFiscaleBox.sendKeys(codiceFiscale); - WebTool.waitTime(2); + webTool.waitTime(2); if (nameBox.getAttribute("value").equalsIgnoreCase(name) && surnameBox.getAttribute("value").equalsIgnoreCase(surname)) { logger.info("Il nome e il cognome è generato correttamente"); } else { logger.error("Il nome e il cognome non è generato correttamente"); - Assert.fail("Il nome e il cognome non è generato correttamente"); + Assertions.fail("Il nome e il cognome non è generato correttamente"); } this.js().executeScript("arguments[0].setAttribute('autocomplete', 'off')", emailBox); emailBox.sendKeys(Keys.chord(Keys.CONTROL, "a"), Keys.DELETE); @@ -237,7 +258,7 @@ public void waitLoadRecapPage() { logger.info("Si visualizza correttamente pagina riepilogativa"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente pagina riepilogativa con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente pagina riepilogativa con errore:" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente pagina riepilogativa con errore:" + e.getMessage()); } } @@ -254,7 +275,7 @@ public void checkEmailBoxActive() { logger.info("il campo email e il campo conferma email sono attivi"); } else { logger.error("il campo email e il campo conferma email sono disattivi"); - Assert.fail("il campo email e il campo conferma email sono disattivi"); + Assertions.fail("il campo email e il campo conferma email sono disattivi"); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/AcccediAreaRiservataPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/AcccediAreaRiservataPAPage.java index 5de17680d..4b8a95a76 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/AcccediAreaRiservataPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/AcccediAreaRiservataPAPage.java @@ -2,13 +2,22 @@ import it.pn.frontend.e2e.common.BasePage; -import it.pn.frontend.e2e.section.CookiesSection; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +/* +* Modifiche principali +Iniezione WebDriver con Spring: Il costruttore della classe utilizza @Autowired, permettendo a Spring di gestire automaticamente il driver. +Annotazione @Component: Aggiunta per registrare la classe come bean Spring, rendendo l'istanza accessibile in altre parti dell’applicazione. +Logging migliorato: La sintassi dei log logger.error è stata modificata per sfruttare il placeholder {} di SLF4J, migliorando la leggibilità.*/ + + +@Component public class AcccediAreaRiservataPAPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("AccediAreaRiservataPAPage"); @FindBy(id = "spidButton") @@ -17,6 +26,7 @@ public class AcccediAreaRiservataPAPage extends BasePage { @FindBy (id = "forward_prod-pn-test") WebElement testButton; + @Autowired public AcccediAreaRiservataPAPage(WebDriver driver) { super(driver); } @@ -28,7 +38,7 @@ public void waitLoadLoginPageMittente(){ logger.info("Accedi Area Riservata Page caricata"); }catch (TimeoutException e){ logger.error("Il titolo nella pagina Accedi Area Riservata non è presente con errore : "+e.getMessage()); - Assert.fail("Il titolo nella pagina Accedi Area Riservata non è presente con errore : "+e.getMessage()); + Assertions.fail("Il titolo nella pagina Accedi Area Riservata non è presente con errore : "+e.getMessage()); } } @@ -41,7 +51,7 @@ public void selezionareSpidButton(){ logger.info("click sul bottone SPID effettuato"); }catch (TimeoutException e){ logger.error("Il bottone SPID non è cliccabile con errore : "+e.getMessage()); - Assert.fail("Il bottone SPID non è cliccabile con errore : "+e.getMessage()); + Assertions.fail("Il bottone SPID non è cliccabile con errore : "+e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/ApiKeyPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/ApiKeyPAPage.java index ccc330a4a..b41bb4ee0 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/ApiKeyPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/ApiKeyPAPage.java @@ -1,71 +1,92 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import it.pn.frontend.e2e.utility.WebTool; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.List; - +/* +* Principali Modifiche +Spring Boot Integration: La classe è annotata con @Component per essere riconosciuta come bean. +Iniezione del WebDriver: Il driver viene iniettato tramite @Autowired nel costruttore. +Logging Ottimizzato: Utilizzo di placeholder {} con SLF4J nei metodi di logging per migliore leggibilità e prestazioni. +* dubbio su Action per capire come iniettarlo in Spring +* +* */ +@Component public class ApiKeyPAPage extends BasePage { - private static final Logger logger = LoggerFactory.getLogger("ApiKeyPAPage"); + + private static final Logger logger = LoggerFactory.getLogger(ApiKeyPAPage.class); @FindBy(id = "generate-api-key") - WebElement generateApiKeyButton; + private WebElement generateApiKeyButton; @FindBy(id = "name") - WebElement apiKeyNameInput; + private WebElement apiKeyNameInput; @FindBy(id = "button-view-groups-id") - WebElement visualizzaIdGruppo; + private WebElement visualizzaIdGruppo; @FindBy(id = "continue-button") - WebElement apiContinuaButton; + private WebElement apiContinuaButton; @FindBy(id = "go-to-api-keys") - WebElement tornaApiButton; + private WebElement tornaApiButton; @FindBy(id = "button-block") - WebElement blockButton; + private WebElement blockButton; @FindBy(id = "close-modal-button") - WebElement annullaButtonNelPopUp; + private WebElement annullaButtonNelPopUp; @FindBy(id = "action-modal-button") - WebElement confermaButtonNelPopUp; + private WebElement confermaButtonNelPopUp; @FindBy(xpath = "//li[contains(@data-testid,'buttonEnable')]") - WebElement attivaButtonNelMenu; + private WebElement attivaButtonNelMenu; @FindBy(id = "button-rotate") - WebElement ruotaButtonNelMenu; + private WebElement ruotaButtonNelMenu; @FindBy(id = "groups") - WebElement gruppoInput; + private WebElement gruppoInput; @FindBy(id = "button-view") - WebElement visualizzaApiButton; + private WebElement visualizzaApiButton; @FindBy(id = "close-modal-button") - WebElement closeButtonPopUpVisualizza; + private WebElement closeButtonPopUpVisualizza; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public ApiKeyPAPage(WebDriver driver) { super(driver); } + public void waitLoadApikeyPage() { try { By apiKeyTitle = By.id("API Key-page"); - this.getWebDriverWait(30).withMessage("il titolo della pagina Apikey non è visibile").until(ExpectedConditions.visibilityOfElementLocated(apiKeyTitle)); - this.getWebDriverWait(40).withMessage("il bottone genera ApiKey non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.generateApiKeyButton)); + this.getWebDriverWait(30).withMessage("Il titolo della pagina ApiKey non è visibile") + .until(ExpectedConditions.visibilityOfElementLocated(apiKeyTitle)); + this.getWebDriverWait(40).withMessage("Il bottone genera ApiKey non è cliccabile") + .until(ExpectedConditions.elementToBeClickable(this.generateApiKeyButton)); logger.info("Api Key Page caricata"); } catch (TimeoutException e) { - logger.error("Api Key Page NON caricata con errore : " + e.getMessage()); - Assert.fail("Api Key Page NON caricata con errore : " + e.getMessage()); + logger.error("Api Key Page NON caricata con errore: {}", e.getMessage()); + Assertions.fail("Api Key Page NON caricata con errore: " + e.getMessage()); } } @@ -74,23 +95,26 @@ public void clickSulBottoneGeneraApiKey() { } public void inserireUnNomePerApiKey(String nomeApiKey) { - getWebDriverWait(30).withMessage("Il campo Nome Apikey non è visibile").until(ExpectedConditions.visibilityOf(this.apiKeyNameInput)); + getWebDriverWait(30).withMessage("Il campo Nome Apikey non è visibile") + .until(ExpectedConditions.visibilityOf(this.apiKeyNameInput)); this.apiKeyNameInput.sendKeys(nomeApiKey); } public void clickSulBottoneContinua() { - getWebDriverWait(40).withMessage("Il bottone Continua non è cliccabile").until(ExpectedConditions.elementToBeClickable(this.apiContinuaButton)); + getWebDriverWait(40).withMessage("Il bottone Continua non è cliccabile") + .until(ExpectedConditions.elementToBeClickable(this.apiContinuaButton)); this.apiContinuaButton.click(); } public void siVisualizzaCorrettamenteConfermaPage() { try { By confirmationApiPageTitle = By.id("go-to-api-keys"); - this.getWebDriverWait(30).withMessage("Il titolo della pagina conferma Apikey non è visibile").until(ExpectedConditions.visibilityOfElementLocated(confirmationApiPageTitle)); - logger.info("Api Key ConfirmationPage caricata"); + this.getWebDriverWait(30).withMessage("Il titolo della pagina conferma Apikey non è visibile") + .until(ExpectedConditions.visibilityOfElementLocated(confirmationApiPageTitle)); + logger.info("Api Key Confirmation Page caricata"); } catch (TimeoutException e) { - logger.error("Il titolo della Api Key ConfirmationPage NON caricata con errore : " + e.getMessage()); - Assert.fail("Il titolo della Api Key ConfirmationPage NON caricata con errore : " + e.getMessage()); + logger.error("Il titolo della Api Key ConfirmationPage NON caricata con errore: {}", e.getMessage()); + Assertions.fail("Il titolo della Api Key ConfirmationPage NON caricata con errore: " + e.getMessage()); } } @@ -101,30 +125,31 @@ public void clickSulBottoneTornaApiKey() { public void siVisualizzaNuovaApiAttiva(String nomeApiKey) { try { By statoAttivoField = By.xpath("//div[@data-testid='statusChip-Attiva']"); - this.getWebDriverWait(30).withMessage("lo stato dell'ApiKey non è Attiva").until(ExpectedConditions.visibilityOfElementLocated(statoAttivoField)); + this.getWebDriverWait(30).withMessage("lo stato dell'ApiKey non è Attiva") + .until(ExpectedConditions.visibilityOfElementLocated(statoAttivoField)); By apiNameAttivoField = By.xpath("//p[contains(text(),'" + nomeApiKey + "')]"); - this.getWebDriverWait(30).withMessage("Il nome del ApiKey attiva non è: " + nomeApiKey).until(ExpectedConditions.visibilityOfElementLocated(apiNameAttivoField)); - logger.info("Api Key ConfirmationPage caricata"); + this.getWebDriverWait(30).withMessage("Il nome del ApiKey attiva non è: " + nomeApiKey) + .until(ExpectedConditions.visibilityOfElementLocated(apiNameAttivoField)); + logger.info("Api Key Confirmation Page caricata"); } catch (TimeoutException e) { - logger.error("Api Key ConfirmationPage NON caricata con errore : " + e.getMessage()); - Assert.fail("Api Key ConfirmationPage NON caricata con errore : " + e.getMessage()); + logger.error("Api Key Confirmation Page NON caricata con errore: {}", e.getMessage()); + Assertions.fail("Api Key Confirmation Page NON caricata con errore: " + e.getMessage()); } } public String getNomi(int i) { By nomiApiKeyBy = By.xpath("//tbody/tr/td[contains(@class,'MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-1kqk1ww')]/div/p"); - this.getWebDriverWait(30).withMessage("la lista dei nomi ApiKey non è visibile ").until(ExpectedConditions.visibilityOfElementLocated(nomiApiKeyBy)); + this.getWebDriverWait(30).withMessage("la lista dei nomi ApiKey non è visibile") + .until(ExpectedConditions.visibilityOfElementLocated(nomiApiKeyBy)); List nomiApiKeyList = this.elements(nomiApiKeyBy); - return nomiApiKeyList.get(i).getText(); - } public int getPosizioneMenuButton() { By statiApiKeyBy = By.xpath("//div[contains(@id,'status-chip-')]"); - this.getWebDriverWait(30).withMessage("lista stati ApiKey non trovata").until(ExpectedConditions.visibilityOfElementLocated(statiApiKeyBy)); + this.getWebDriverWait(30).withMessage("lista stati ApiKey non trovata") + .until(ExpectedConditions.visibilityOfElementLocated(statiApiKeyBy)); List statiApiKeyList = this.elements(statiApiKeyBy); - for (int i = 0; i < statiApiKeyList.size(); i++) { if (statiApiKeyList.get(i).getAttribute("id").equalsIgnoreCase("status-chip-Attiva")) { if (!getNomi(i).equalsIgnoreCase("fe-TA-apikey-test")) { @@ -132,25 +157,21 @@ public int getPosizioneMenuButton() { } } } - return -1; - } public void clickMenuButton() { - By menuAttivaButtonBy = By.xpath("//button[@data-testid='contextMenuButton' and @aria-label='Opzioni su API Key']"); List menuAttivaButton = this.elements(menuAttivaButtonBy); - this.getWebDriverWait(30).withMessage("menu Apikey da Bloccare non trovato").until(ExpectedConditions.visibilityOfElementLocated(menuAttivaButtonBy)); - + this.getWebDriverWait(30).withMessage("menu Apikey da Bloccare non trovato") + .until(ExpectedConditions.visibilityOfElementLocated(menuAttivaButtonBy)); int posizioneMenuButton = getPosizioneMenuButton(); if (posizioneMenuButton >= 0) { menuAttivaButton.get(posizioneMenuButton).click(); } else { logger.error("Nessuna Api Key diversa da 'fe-TA-apikey-test' da bloccare"); - Assert.fail("Nessuna Api Key diversa da 'fe-TA-apikey-test' da bloccare"); + Assertions.fail("Nessuna Api Key diversa da 'fe-TA-apikey-test' da bloccare"); } - } public void clickSuBlocca() { @@ -165,7 +186,7 @@ public void siVisualizzaPopUp() { logger.info("Il popup si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il popup NON si visualizza correttamente con errore:" + e.getMessage()); - Assert.fail("Il popup NON si visualizza correttamente con errore:" + e.getMessage()); + Assertions.fail("Il popup NON si visualizza correttamente con errore:" + e.getMessage()); } } @@ -186,7 +207,7 @@ public void notificaSelezionataStatoBloccata() { logger.info("La notifica è in stato bloccata"); } catch (TimeoutException e) { logger.error("La notifica è in stato bloccata con errore:" + e.getMessage()); - Assert.fail("La notifica è in stato bloccata con errore:" + e.getMessage()); + Assertions.fail("La notifica è in stato bloccata con errore:" + e.getMessage()); } } @@ -202,7 +223,7 @@ public void siVisualizzaPoPUpAttiva() { logger.info("Si visualizza correttamente il popup attiva"); } catch (TimeoutException e) { logger.error("NON si visualizza correttamente il popup attiva con errore:" + e.getMessage()); - Assert.fail("NON si visualizza correttamente il popup attiva con errore:" + e.getMessage()); + Assertions.fail("NON si visualizza correttamente il popup attiva con errore:" + e.getMessage()); } } @@ -213,7 +234,7 @@ public void siVisualizzaNotificaSelezionataBloccata() { logger.info("La notifica è in stato bloccata"); } catch (TimeoutException e) { logger.error("La notifica è in stato bloccata con errore:" + e.getMessage()); - Assert.fail("La notifica è in stato bloccata con errore:" + e.getMessage()); + Assertions.fail("La notifica è in stato bloccata con errore:" + e.getMessage()); } } @@ -229,7 +250,7 @@ public void siVisualizzaPoPUpRuota() { logger.info("Si visualizza correttamente il popup ruota"); } catch (TimeoutException e) { logger.error("NON si visualizza correttamente il popup ruota con errore:" + e.getMessage()); - Assert.fail("NON si visualizza correttamente il popup ruota con errore:" + e.getMessage()); + Assertions.fail("NON si visualizza correttamente il popup ruota con errore:" + e.getMessage()); } } @@ -240,7 +261,7 @@ public void siVisualizzaNotificaSelezionataRuotata() { logger.info("Si visualizza correttamente il popup ruota"); } catch (TimeoutException e) { logger.error("NON si visualizza correttamente il popup ruota con errore:" + e.getMessage()); - Assert.fail("NON si visualizza correttamente il popup ruota con errore:" + e.getMessage()); + Assertions.fail("NON si visualizza correttamente il popup ruota con errore:" + e.getMessage()); } } @@ -396,7 +417,7 @@ public void waitLoadMessaggioData() { logger.info("Il messaggio con la data di creazione si vede correttamente"); } catch (TimeoutException e) { logger.error("Il messaggio con la data di creazione NON si vede correttamente con errore: " + e.getMessage()); - Assert.fail("Il messaggio con la data di creazione NON si vede correttamente con errore: " + e.getMessage()); + Assertions.fail("Il messaggio con la data di creazione NON si vede correttamente con errore: " + e.getMessage()); } } @@ -424,7 +445,7 @@ public void cancellareTestoInserito() { logger.info("Il testo è stato cancellato correttamente"); } catch (TimeoutException e) { logger.error("Il testo NON è stato cancellato correttamente" + e.getMessage()); - Assert.fail("Il testo è NON stato cancellato correttamente" + e.getMessage()); + Assertions.fail("Il testo è NON stato cancellato correttamente" + e.getMessage()); } } @@ -435,7 +456,7 @@ public void siVisualizzaMessaggioErroreApiName() { logger.info("Si visualizza correttamente il messaggio di errore"); } catch (TimeoutException e) { logger.error("NON si visualizza correttamente il messaggio di errore" + e.getMessage()); - Assert.fail("NON si visualizza correttamente il messaggio di errore" + e.getMessage()); + Assertions.fail("NON si visualizza correttamente il messaggio di errore" + e.getMessage()); } } @@ -451,7 +472,7 @@ public void siVisualizzaPopUpVisualizza() { logger.info("Si visualizza correttamente il sotto titolo del pop up"); } catch (TimeoutException e) { logger.error("NON si visualizza correttamente il sotto titolo pop up: " + e.getMessage()); - Assert.fail("NON si visualizza correttamente il sotto titolo pop up: " + e.getMessage()); + Assertions.fail("NON si visualizza correttamente il sotto titolo pop up: " + e.getMessage()); } } @@ -462,8 +483,10 @@ public void chiudiPopUpVisualizza() { } public void clickVisualizzaIdApiKey() { + webTool.waitTime(5); + visualizzaIdGruppo = driver.findElement(By.id("button-view-groups-id")); this.getWebDriverWait(30).withMessage("Il bottone visualizza Id api key non è cliccabile") - .until(ExpectedConditions.elementToBeClickable(this.visualizzaIdGruppo)); + .until(ExpectedConditions.elementToBeClickable(visualizzaIdGruppo)); this.visualizzaIdGruppo.click(); } @@ -474,7 +497,7 @@ public void popUpGruppiAssociati() { logger.info("Si visualizza correttamente il titolo popup Gruppi associati alla API"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente il titolo popup Gruppi associati alla API con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente il titolo popup Gruppi associati alla API con errore:" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente il titolo popup Gruppi associati alla API con errore:" + e.getMessage()); } } @@ -494,7 +517,7 @@ public String copiaApiKey() { return inputFieldApiKey.getAttribute("value"); } catch (TimeoutException e) { logger.error("NON si visualizza correttamente il campo ApiKey con errore:" + e.getMessage()); - Assert.fail("NON si visualizza correttamente il campo ApiKey con errore:" + e.getMessage()); + Assertions.fail("NON si visualizza correttamente il campo ApiKey con errore:" + e.getMessage()); return null; } finally { this.chiudiPopUpVisualizza(); @@ -511,7 +534,23 @@ public void mouseHoverGroups() { logger.info("mouse hover sopra gruppi effetuato correttamente"); } else { logger.error("Non è stato possibile trovare la colonna gruppi della prima riga"); - Assert.fail("Non è stato possibile trovare la colonna gruppi della prima riga"); + Assertions.fail("Non è stato possibile trovare la colonna gruppi della prima riga"); } } + + public String copiaApiKeyESalva(){ + By apiKeyField = By.id("apiKeyId"); + return element(apiKeyField).getAttribute("value"); + } + + public String visualizzaApiKeyInElenco(){ + By contextMenu = By.xpath("//button[@data-testid='contextMenuButton']"); + elements(contextMenu).get(0).click(); + webTool.waitTime(1); + By visualizzaCodiceButton = By.xpath("//li[@data-testid='buttonView']"); + element(visualizzaCodiceButton).click(); + webTool.waitTime(1); + By apiKeyDaElenco = By.xpath("//input[@aria-invalid='false']"); + return element(apiKeyDaElenco).getAttribute("value"); + } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/AreaRiservataPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/AreaRiservataPAPage.java index 76a43e3d4..41768ec90 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/AreaRiservataPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/AreaRiservataPAPage.java @@ -1,52 +1,58 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; - +/* +*Iniezione Spring: La classe è ora annotata con @Component per permettere a Spring Boot di gestirla come un bean, e il costruttore AreaRiservataPAPage riceve WebDriver tramite iniezione automatica. +Gestione WebElement: Gli elementi WebElement definiti con @FindBy vengono iniettati automaticamente grazie a Spring e Selenium, senza ulteriori istanze di driver nella classe. +* */ +@Component public class AreaRiservataPAPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("AreaRiservataPAPage"); @FindBy(xpath = "//p[contains(@class,'MuiTypography-root MuiTypography-body1 ShowDots')]") - List infoLabel; + private List infoLabel; @FindBy(id = "forward_prod-pn-dev") - WebElement piattaformaNotificaDevGestisciButton; + private WebElement piattaformaNotificaDevGestisciButton; @FindBy(id = "forward_prod-pn-test") - WebElement piattaformaNotificaTestGestisciButton; + private WebElement piattaformaNotificaTestGestisciButton; @FindBy(id = "forward_prod-pn") - WebElement piattaformaNotificaUatGestisciButton; - + private WebElement piattaformaNotificaUatGestisciButton; + @Autowired public AreaRiservataPAPage(WebDriver driver) { super(driver); } - public void waitLoadAreaRiservataPAPage(){ - try{ + public void waitLoadAreaRiservataPAPage() { + try { By panoramicaLabel = By.cssSelector(".MuiTypography-root.MuiTypography-h4"); - this.getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(panoramicaLabel)); + getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(panoramicaLabel)); logger.info("Titolo Panoramica dell'area Riservata PA Page caricato"); - }catch (TimeoutException e){ - logger.error("Titolo 'Panoramica' dell'area Riservata PA Page non caricato con errore : "+e.getMessage()); - Assert.fail("Titolo 'Panoramica' dell'area Riservata PA Page non caricato con errore : "+e.getMessage()); + } catch (TimeoutException e) { + logger.error("Titolo 'Panoramica' dell'area Riservata PA Page non caricato con errore: " + e.getMessage()); + Assertions.fail("Titolo 'Panoramica' dell'area Riservata PA Page non caricato con errore: " + e.getMessage()); } } - public boolean verificaCodiceFiscale(String codiceFiscale){ + public boolean verificaCodiceFiscale(String codiceFiscale) { boolean codiceFiscaleFound = false; - for(WebElement element : infoLabel){ - logger.info("Info ente presente nella pagina Aria Riservata: "+element.getText()); - if(element.getText().equals(codiceFiscale)){ + for (WebElement element : infoLabel) { + logger.info("Info ente presente nella pagina Area Riservata: " + element.getText()); + if (element.getText().equals(codiceFiscale)) { codiceFiscaleFound = true; break; } @@ -54,49 +60,48 @@ public boolean verificaCodiceFiscale(String codiceFiscale){ return codiceFiscaleFound; } - public void selezionaPiattaformaNotificaDev(){ + public void selezionaPiattaformaNotificaDev() { try { getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(piattaformaNotificaDevGestisciButton)); - if (this.piattaformaNotificaDevGestisciButton.isDisplayed()) { - this.piattaformaNotificaDevGestisciButton.click(); + if (piattaformaNotificaDevGestisciButton.isDisplayed()) { + piattaformaNotificaDevGestisciButton.click(); } else { - this.js().executeScript("arguments[0].scrollIntoView(true);", this.piattaformaNotificaDevGestisciButton); - this.piattaformaNotificaDevGestisciButton.click(); + js().executeScript("arguments[0].scrollIntoView(true);", piattaformaNotificaDevGestisciButton); + piattaformaNotificaDevGestisciButton.click(); } - }catch(TimeoutException | NoSuchElementException | ElementClickInterceptedException e){ - logger.error("il bottone piattaforma notifica dev non è presente o non è cliccabile, "+e.getMessage()); - Assert.fail("il bottone piattaforma notifica dev non è presente o non è cliccabile. "+e.getMessage()); + } catch (TimeoutException | NoSuchElementException | ElementClickInterceptedException e) { + logger.error("Il bottone piattaforma notifica dev non è presente o non è cliccabile: " + e.getMessage()); + Assertions.fail("Il bottone piattaforma notifica dev non è presente o non è cliccabile: " + e.getMessage()); } } - public void selezionaPiattaformaNotificaTest() { - try{ - getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(piattaformaNotificaTestGestisciButton)); - if(this.piattaformaNotificaTestGestisciButton.isDisplayed()){ - this.piattaformaNotificaTestGestisciButton.click(); - }else{ - this.js().executeScript("arguments[0].scrollIntoView(true);",this.piattaformaNotificaDevGestisciButton); - this.piattaformaNotificaTestGestisciButton.click(); - } - }catch(TimeoutException e){ - logger.error("il bottone piattaforma notifica test non è presente o non è cliccabile, "+e.getMessage()); - Assert.fail("il bottone piattaforma notifica test non è presente o non è cliccabile. "+e.getMessage()); + public void selezionaPiattaformaNotificaTest() { + try { + getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(piattaformaNotificaTestGestisciButton)); + if (piattaformaNotificaTestGestisciButton.isDisplayed()) { + piattaformaNotificaTestGestisciButton.click(); + } else { + js().executeScript("arguments[0].scrollIntoView(true);", piattaformaNotificaTestGestisciButton); + piattaformaNotificaTestGestisciButton.click(); + } + } catch (TimeoutException | NoSuchElementException | ElementClickInterceptedException e) { + logger.error("Il bottone piattaforma notifica test non è presente o non è cliccabile: " + e.getMessage()); + Assertions.fail("Il bottone piattaforma notifica test non è presente o non è cliccabile: " + e.getMessage()); } } public void selezionaPiattaformaNotificaUat() { - try{ - getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(piattaformaNotificaUatGestisciButton)); - - if(this.piattaformaNotificaUatGestisciButton.isDisplayed()){ - this.piattaformaNotificaUatGestisciButton.click(); - }else{ - this.js().executeScript("arguments[0].scrollIntoView(true);",this.piattaformaNotificaDevGestisciButton); - this.piattaformaNotificaUatGestisciButton.click(); - } - }catch(TimeoutException | NoSuchElementException | ElementClickInterceptedException e){ - logger.error("il bottone piattaforma notifica uat non è presente o non è cliccabile, "+e.getMessage()); - Assert.fail("il bottone piattaforma notifica uat non è presente o non è cliccabile. "+e.getMessage()); + try { + getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(piattaformaNotificaUatGestisciButton)); + if (piattaformaNotificaUatGestisciButton.isDisplayed()) { + piattaformaNotificaUatGestisciButton.click(); + } else { + js().executeScript("arguments[0].scrollIntoView(true);", piattaformaNotificaUatGestisciButton); + piattaformaNotificaUatGestisciButton.click(); + } + } catch (TimeoutException | NoSuchElementException | ElementClickInterceptedException e) { + logger.error("Il bottone piattaforma notifica uat non è presente o non è cliccabile: " + e.getMessage()); + Assertions.fail("Il bottone piattaforma notifica uat non è presente o non è cliccabile: " + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/AutorizziInvioDatiPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/AutorizziInvioDatiPAPage.java index 07d9548fd..a4c37d447 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/AutorizziInvioDatiPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/AutorizziInvioDatiPAPage.java @@ -1,43 +1,47 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class AutorizziInvioDatiPAPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("AutorizziInvioDatiPAPage"); @FindBy(css = "button[name='confirm']") - WebElement inviaButton; + private WebElement inviaButton; + @Autowired public AutorizziInvioDatiPAPage(WebDriver driver) { super(driver); } - public void waitLoadAutorizziInvioDatiPAPage(){ - try{ + public void waitLoadAutorizziInvioDatiPAPage() { + try { By titlePage = By.cssSelector("h1.u-text-r-xl.u-margin-bottom-l"); - this.getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(titlePage)); + getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(titlePage)); logger.info("Autorizzi Invio Dati PA Page caricata"); - }catch (TimeoutException | NoSuchElementException e){ - logger.error("il titolo di Autorizzi Invio Dati PA Page non caricato con errore : "+e.getMessage()); - Assert.fail("il titolo di Autorizzi Invio Dati PA Page non caricato con errore : "+e.getMessage()); + } catch (TimeoutException | NoSuchElementException e) { + logger.error("Il titolo di Autorizzi Invio Dati PA Page non è caricato con errore: " + e.getMessage()); + Assertions.fail("Il titolo di Autorizzi Invio Dati PA Page non è caricato con errore: " + e.getMessage()); } } - public void selezionareInvia(){ + public void selezionareInvia() { logger.info("Click button Invia"); try { - this.getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(this.inviaButton)); - this.inviaButton.click(); - }catch (TimeoutException e){ - logger.error("Il bottone invia nella pagina Autorizza Invio Dati non è stato cliccato con errore : "+e.getMessage()); - Assert.fail("Il bottone invia nella pagina Autorizza Invio Dati non è stato cliccato con errore : "+e.getMessage()); - } + getWebDriverWait(30).until(ExpectedConditions.elementToBeClickable(inviaButton)); + inviaButton.click(); + } catch (TimeoutException e) { + logger.error("Il bottone Invia nella pagina Autorizza Invio Dati non è stato cliccato con errore: " + e.getMessage()); + Assertions.fail("Il bottone Invia nella pagina Autorizza Invio Dati non è stato cliccato con errore: " + e.getMessage()); + } } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/DashboardPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/DashboardPage.java index 665992a57..7a4fd59d8 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/DashboardPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/DashboardPage.java @@ -1,41 +1,35 @@ package it.pn.frontend.e2e.pages.mittente; -import com.google.gson.internal.LinkedTreeMap; 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.config.WebDriverConfig; import it.pn.frontend.e2e.model.singleton.NotificationSingleton; -import it.pn.frontend.e2e.rest.RestNotification; import it.pn.frontend.e2e.utility.WebTool; -import org.apache.commons.io.FileUtils; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.awt.*; import java.awt.event.KeyEvent; import java.io.File; -import java.io.IOException; -import java.net.URL; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; +@Component // Rende la classe un bean Spring per l'iniezione in altre classi public class DashboardPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("DashboardMittentePagoPA"); - private final List netWorkInfos = Hooks.netWorkInfos; - private final NotificationSingleton notificationSingleton = NotificationSingleton.getInstance(); + @Autowired + private NotificationSingleton notificationSingleton; @FindBy(id = "menu-item(statistiche)") WebElement sezioneStatistiche; @@ -88,7 +82,13 @@ public class DashboardPage extends BasePage { @FindBy(xpath = "//button[@data-testid='exportJpgButton']") WebElement esportaJpegBottone; + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public DashboardPage(WebDriver driver) { super(driver); } @@ -128,33 +128,37 @@ public void checkVisualizzaGraficoInviiDigitaliPerEsito() { } public void checkVisualizzaGraficoTempoMedioInviiDigitali() { - getWebDriverWait(10).withMessage("Il grafico Errori tecnici per tipologia non visibile").until(ExpectedConditions.visibilityOf(graficoErroriTecnici)); - logger.info("Si visualizza il grafico Errori tecnici per tipologia"); - } - - public void checkVisualizzaGraficoErroriTecnici(){ getWebDriverWait(10).withMessage("Il grafico Tempo medio degli invii digitali non visibile").until(ExpectedConditions.visibilityOf(graficoTempoMedioInviiDigitali)); logger.info("Si visualizza il grafico Tempo medio degli invii digitali"); } - public void checkVisualizzaGraficoInviatePerStato(){ + public void checkVisualizzaGraficoErroriTecnici() { + getWebDriverWait(10).withMessage("Il grafico Errori tecnici non visibile").until(ExpectedConditions.visibilityOf(graficoErroriTecnici)); + logger.info("Si visualizza il grafico Errori tecnici"); + } + + public void checkVisualizzaGraficoInviatePerStato() { getWebDriverWait(10).withMessage("la sezione Notifiche inviate per stato non visibile").until(ExpectedConditions.visibilityOf(sezioneNotificheInviatePerStato)); logger.info("Si visualizza la sezione Notifiche inviate per stato e grafico"); } - public void checkVisualizzaGraficoConsegnatePerModalitaInvio(){ + public void checkVisualizzaGraficoConsegnatePerModalitaInvio() { getWebDriverWait(10).withMessage("la sezione Notifiche consegnate per modalità di invio non visibile").until(ExpectedConditions.visibilityOf(sezioneNotificheConsegnatePerModalitaInvio)); logger.info("Si visualizza la sezione Notifiche consegnate per modalità di invio e grafico"); } - public void insertDataErrata(){ - getWebDriverWait(10).withMessage("Il filtro di data non visibile").until(ExpectedConditions.visibilityOf(dateDa.get(0))); - logger.info("Si inserisce una data errata"); - dateDa.get(0).click(); - Actions action = new Actions(driver); - action.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).sendKeys(Keys.BACK_SPACE).perform(); - WebTool.waitTime(1); - dateDa.get(0).sendKeys("01/01/1111"); + public void insertDataErrata() { + getWebDriverWait(10).withMessage("Il filtro di data non visibile").until(ExpectedConditions.visibilityOf(dateDa.get(0))); + logger.info("Si inserisce una data errata"); + dateDa.get(0).click(); + new Actions(driver) + .keyDown(Keys.CONTROL) + .sendKeys("a") + .keyUp(Keys.CONTROL) + .sendKeys(Keys.BACK_SPACE) + .perform(); + webTool.waitTime(1); + dateDa.get(0).sendKeys("01/01/1111"); } public void insertDataErrataNotificheDigitali(){ @@ -163,22 +167,25 @@ public void insertDataErrataNotificheDigitali(){ dateDa.get(1).click(); Actions action = new Actions(driver); action.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).sendKeys(Keys.BACK_SPACE).perform(); - WebTool.waitTime(1); + webTool.waitTime(1); dateDa.get(1).sendKeys("01/01/1111"); } public void insertDataCorretta(){ getWebDriverWait(10).withMessage("Il filtro di data non visibile").until(ExpectedConditions.visibilityOf(dateDa.get(0))); logger.info("Si inserisce una data corretta"); dateDa.get(0).click(); - Actions action = new Actions(driver); - action.keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).sendKeys(Keys.BACK_SPACE).perform(); + new Actions(driver) + .keyDown(Keys.CONTROL) + .sendKeys("a") + .keyUp(Keys.CONTROL) + .sendKeys(Keys.BACK_SPACE) + .perform(); LocalDate dataDaInserire = LocalDate.now().minusDays(90); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); String formattedDate = dataDaInserire.format(formatter); - WebTool.waitTime(1); + webTool.waitTime(1); dateDa.get(0).sendKeys(formattedDate); } - public void insertDataCorrettaNotificheDigitali(){ getWebDriverWait(10).withMessage("Il filtro di data non visibile").until(ExpectedConditions.visibilityOf(dateDa.get(1))); logger.info("Si inserisce una data corretta"); @@ -188,7 +195,7 @@ public void insertDataCorrettaNotificheDigitali(){ LocalDate dataDaInserire = LocalDate.now().minusDays(90); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); String formattedDate = dataDaInserire.format(formatter); - WebTool.waitTime(1); + webTool.waitTime(1); dateDa.get(1).sendKeys(formattedDate); } @@ -239,14 +246,14 @@ public void checkTipoGraficoPerModalitaInvio(String tipoGrafico){ public void cambiaTipoGrafico(){ getWebDriverWait(10).withMessage("Il tipo di grafico Aggregato non visibile").until(ExpectedConditions.visibilityOf(tipoAggregato.get(0))); tipoAggregato.get(0).click(); - WebTool.waitTime(1); + webTool.waitTime(1); tipoAndamentale.get(0).click(); } public void cambiaTipoGraficoPerModalitaInvio(){ getWebDriverWait(10).withMessage("Il tipo di grafico Aggregato non visibile").until(ExpectedConditions.visibilityOf(tipoAggregato.get(0))); tipoAggregato.get(1).click(); - WebTool.waitTime(1); + webTool.waitTime(1); tipoAndamentale.get(0).click(); } @@ -263,7 +270,7 @@ public void sceglieOpzioneGiorni(){ } public void clickJpegExport() throws AWTException { - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = webDriverConfig.getHeadless().equalsIgnoreCase("true"); if (!headless) { logger.info("controllo esistenza bottone per scaricare jpeg"); getWebDriverWait(10).withMessage("Il bottone esporta jpeg non cliccabile").until(ExpectedConditions.elementToBeClickable(esportaJpegBottone)); @@ -302,9 +309,9 @@ public void clickJpegExport() throws AWTException { logger.info("Si clicca sul bottone Esporta JPEG"); esportaJpegBottone.click(); - WebTool.waitTime(2); + webTool.waitTime(2); File downloadedFile = new File(downloadDirectory + fileName); - Assert.assertTrue(downloadedFile.exists()); + Assertions.assertTrue(downloadedFile.exists()); logger.info("JPEG file downloaded successfully."); } } 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 d407a25cd..097d422f6 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 @@ -1,19 +1,21 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.WebTool; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; -import org.junit.Assert; -import org.openqa.selenium.By; -import org.openqa.selenium.TimeoutException; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; +import org.junit.jupiter.api.Assertions; +import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.io.File; import java.io.IOException; @@ -21,30 +23,43 @@ import java.util.GregorianCalendar; import java.util.List; +@Component public class DisserviziAppPAPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("Disservizi PA Page"); - private DataPopulation dataPopulation = new DataPopulation(); + // @Value("${downloadFilePath}") + // private String downloadFilePath; + @Autowired + private WebDriverConfig webDriverConfig; + + @Autowired + private DataPopulation dataPopulation; - public DisserviziAppPAPage(WebDriver driver) { - super(driver); - } @FindBy(id = "notifications-table") - WebElement disserviziTable; + private WebElement disserviziTable; @FindBy(xpath = "//tr[@id='tableDowntimeLog.row']//td//div[@data-testid='downtime-status']") - List statusList; - + private List statusList; @FindBy(css = "[data-testid='download-legal-fact']") - List attestazioniFile; + private List attestazioniFile; @FindBy(xpath = "//span[contains(text(), 'Risolto')]") - List stato; + private List stato; + + @Autowired + @Lazy + private WebTool webTool; + + @Autowired + public DisserviziAppPAPage(WebDriver driver) { + super(driver); + } + public void waitLoadStatoDellaPiattaformaPage() { - WebTool.waitTime(5); + webTool.waitTime(5); try { By disserviziPageTitle = By.id("Stato della piattaforma-page"); By disserviziPageSubTitle = By.id("subtitle-page"); @@ -52,33 +67,27 @@ public void waitLoadStatoDellaPiattaformaPage() { By disserviziLastUpdate = By.id("appStatusLastCheck"); By disserviziTitleOfTable = By.xpath("//h6[contains(text(),'Storico dei disservizi')]"); - getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della pagina") - .until(ExpectedConditions.visibilityOfElementLocated(disserviziPageTitle)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(disserviziPageTitle)); getWebDriverWait(3).until(ExpectedConditions.textToBe(disserviziPageTitle, "Stato della piattaforma")); - getWebDriverWait(10).withMessage("Non si visualizza correttamente il sottotitolo della pagina") - .until(ExpectedConditions.visibilityOfElementLocated(disserviziPageSubTitle)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(disserviziPageSubTitle)); getWebDriverWait(3).until(ExpectedConditions.textToBe(disserviziPageSubTitle, "Verifica il funzionamento di SEND, visualizza lo storico dei disservizi e scarica le relative attestazioni opponibili a terzi.")); - getWebDriverWait(10).withMessage("Non si visualizza correttamente la sezione disservizi") - .until(ExpectedConditions.visibilityOfElementLocated(disserviziBoxAlert)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(disserviziBoxAlert)); - if (this.element(disserviziBoxAlert).getText().contains("C'è un disservizio in corso")) { - getWebDriverWait(3).until(ExpectedConditions.textToBe(disserviziBoxAlert, "C'è un disservizio in corso. Per maggiori dettagli, consulta la tabella qui sotto.")); - } else { - getWebDriverWait(3).until(ExpectedConditions.textToBe(disserviziBoxAlert, "Tutti i servizi di SEND sono operativi.")); - } + String boxAlertText = element(disserviziBoxAlert).getText(); + getWebDriverWait(3).until(ExpectedConditions.textToBe(disserviziBoxAlert, boxAlertText.contains("C'è un disservizio in corso") ? + "C'è un disservizio in corso. Per maggiori dettagli, consulta la tabella qui sotto." : + "Tutti i servizi di SEND sono operativi." + )); disserviziTable = driver.findElement(By.id("notifications-table")); - getWebDriverWait(10).withMessage("Non si visualizza correttamente l'ultimo aggiornamento della pagina") - .until(ExpectedConditions.visibilityOfElementLocated(disserviziLastUpdate)); - getWebDriverWait(10).withMessage("Non si visualizza correttamente la tabella dei disservizi") - .until(ExpectedConditions.visibilityOf(disserviziTable)); - getWebDriverWait(10).withMessage("Non si visualizza correttamente il titolo della tabella dei disservizi") - .until(ExpectedConditions.visibilityOfElementLocated(disserviziTitleOfTable)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(disserviziLastUpdate)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOf(disserviziTable)); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(disserviziTitleOfTable)); logger.info("Si visualizza correttamente la sezione disservizi"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente la sezione disservizi con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente la sezione disservizi con errore" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente la sezione disservizi con errore" + e.getMessage()); } } @@ -94,14 +103,14 @@ public void getDateDisservice() { dataPopulation.setDataA(dataFinePrimaRiga); } else { logger.error("non é stato possibile recuperare i dati dalla tabella dei disservizi"); - Assert.fail("non é stato possibile recuperare i dati dalla tabella dei disservizi"); + Assertions.fail("non é stato possibile recuperare i dati dalla tabella dei disservizi"); } } public void waitLoadDisserviziTable() { try { - WebTool.waitTime(10); + webTool.waitTime(10); disserviziTable = driver.findElement(By.id("notifications-table")); getWebDriverWait(10).withMessage("Non si visualizza correttamente la tabella dei disservizi") .until(ExpectedConditions.visibilityOf(disserviziTable)); @@ -122,7 +131,7 @@ public void waitLoadDisserviziTable() { getWebDriverWait(3).until(ExpectedConditions.textToBePresentInElement(tableHeaderTitles.get(4), "Stato")); } else { logger.error("Non si visualizza correttamente l'header della tabella dei disservizi"); - Assert.fail("Non si visualizza correttamente l'header della tabella dei disservizi"); + Assertions.fail("Non si visualizza correttamente l'header della tabella dei disservizi"); } getWebDriverWait(10).withMessage("Non si visualizza correttamente l'header della tabella dei disservizi") .until(ExpectedConditions.visibilityOf(disserviziTableHeader)); @@ -141,12 +150,12 @@ public void waitLoadDisserviziTable() { } } else { logger.error("Non si visualizzano correttamente le righe della tabella dei disservizi"); - Assert.fail("Non si visualizzano correttamente le righe della tabella dei disservizi"); + Assertions.fail("Non si visualizzano correttamente le righe della tabella dei disservizi"); } logger.info("Si visualizza correttamente la tabella dei disservizi"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente la tabella dei disservizi con errore:" + e.getMessage()); - Assert.fail("Non si visualizza correttamente la tabella dei disservizi con errore" + e.getMessage()); + Assertions.fail("Non si visualizza correttamente la tabella dei disservizi con errore" + e.getMessage()); } } @@ -169,7 +178,7 @@ public void checkDisserviziInCorso() { } } 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"); + Assertions.fail("Non si visualizza un record in elenco relativo ad un disservizio ancora in corso"); } } @@ -185,7 +194,7 @@ public void checkDisservizioRisolto(String tipoDisservizio) { logger.info("Disservizio risolto trovato"); } else { logger.error("Non si visualizza un record in elenco relativo ad un disservizio risolto"); - Assert.fail("Non si visualizza un record in elenco relativo ad un disservizio risolto"); + Assertions.fail("Non si visualizza un record in elenco relativo ad un disservizio risolto"); } } } @@ -199,7 +208,7 @@ public void checkDisserviziDisponibili() { continue; } else { logger.error("Non si visualizza un record in elenco relativo ad un disservizio risolto"); - Assert.fail("Non si visualizza un record in elenco relativo ad un disservizio risolto"); + Assertions.fail("Non si visualizza un record in elenco relativo ad un disservizio risolto"); } if (status.getText().contains("/") || status.getText().contains("Oggi") && status.getText().contains(":")) { logger.info("Si visualizza data di fine servizio"); @@ -211,12 +220,60 @@ public void checkDisserviziDisponibili() { } } else { logger.error("Non si visualizza un record in elenco relativo ad un disservizio disponibile"); - Assert.fail("Non si visualizza un record in elenco relativo ad un disservizio disponibile"); + Assertions.fail("Non si visualizza un record in elenco relativo ad un disservizio disponibile"); } } - + /* + *Spiegazione delle Modifiche: +Metodo Privato performDownloadAttestazione: La logica comune per trovare e cliccare l'attestazione è stata centralizzata in questo metodo. +Parametro : Controlla l’indice aggiuntivo richiesto per selezionare una riga specifica in base al metodo chiamante (downloadAttestazione() o downloadAttestazione(int rows)). +Metodo determineRowElement: Valuta la riga corretta da selezionare in base alla dimensione della tabella e al indexModifier. +Logging Ottimizzato: I messaggi di log sono stati uniformati per fornire informazioni su quale riga viene selezionata e cliccata. + * + * + * + * */ public void downloadAttestazione() { + performDownloadAttestazione(0); + } + + public void downloadAttestazione(int rows) { + performDownloadAttestazione(rows); + } + + private void performDownloadAttestazione(int indexModifier) { + List disserviziTableRows = disserviziTable.findElements(By.id("tableDowntimeLog.row")); + if (disserviziTableRows.isEmpty()) { + logger.error("Non ci sono notifiche da selezionare nel arco temporale settato"); + Assertions.fail("Non ci sono notifiche da selezionare nel arco temporale settato"); + return; + } + + logger.info("Tabella caricata e non vuota"); + int index = GregorianCalendar.getInstance().get(Calendar.HOUR_OF_DAY) + indexModifier; + + WebElement riga = determineRowElement(disserviziTableRows, index, indexModifier); + WebElement linkDownloadAttestazione = riga.findElements(By.xpath("//button[@data-testid='download-legal-fact']")).get(0); + linkDownloadAttestazione.click(); + logger.info("Click effettuato con successo"); + } + + private WebElement determineRowElement(List rows, int index, int indexModifier) { + WebElement selectedRow; + if (rows.size() > index) { + selectedRow = rows.get(index); + logger.info("Riga selezionata (index={}): {}", index, selectedRow.getText()); + } else { + int adjustedIndex = rows.size() > indexModifier ? rows.size() - (indexModifier + 1) : rows.size() - 1; + selectedRow = rows.get(adjustedIndex); + logger.info("Riga selezionata (adjusted index={}): {}", adjustedIndex, selectedRow.getText()); + } + return selectedRow; + } + + + /* public void downloadAttestazione() { List disserviziTableRows = disserviziTable.findElements(By.id("tableDowntimeLog.row")); if (!disserviziTableRows.isEmpty()) { logger.info("tabella caricata e non vuota"); @@ -224,9 +281,9 @@ public void downloadAttestazione() { Calendar calendar = GregorianCalendar.getInstance(); int index = calendar.get(Calendar.HOUR_OF_DAY); - logger.info("SIZE ROWS TABLE..."+disserviziTableRows.size()); + logger.info("SIZE ROWS TABLE..." + disserviziTableRows.size()); logger.info("ROWS SELEZIONATA: " + index); - WebElement riga =null; + WebElement riga = null; if (disserviziTableRows.size() >= index) { riga = disserviziTableRows.get(index); } else { @@ -238,27 +295,66 @@ public void downloadAttestazione() { logger.info("click effettuato con successo"); } else { logger.error("Non ci sono notifiche da selezionare nel arco temporale settato"); - Assert.fail("Non ci sono notifiche da selezionare nel arco temporale settato"); + Assertions.fail("Non ci sono notifiche da selezionare nel arco temporale settato"); } + } + public void downloadAttestazione(int rows) { + List disserviziTableRows = disserviziTable.findElements(By.id("tableDowntimeLog.row")); + if (!disserviziTableRows.isEmpty()) { + logger.info("tabella caricata e non vuota"); + Calendar calendar = GregorianCalendar.getInstance(); + int index = calendar.get(Calendar.HOUR_OF_DAY) + rows; + logger.info("HOUR..." + index); + logger.info("SIZE ROWS TABLE..." + disserviziTableRows.size()); + logger.info("ROWS TABLE..." + rows); + logger.info("ROWS SELEZIONATA: " + index); + WebElement riga = null; + if (disserviziTableRows.size() > index) { + logger.info("ROWS SELEZIONATA1: " + index); + riga = disserviziTableRows.get(index); + } else { + logger.info("ROWS SELEZIONATA2: " + rows); + if ((rows + 1) < disserviziTableRows.size()) { + logger.info("ROWS SELEZIONATA3: " + (disserviziTableRows.size() - (rows + 1))); + riga = disserviziTableRows.get(disserviziTableRows.size() - (rows + 1)); + + } else if(disserviziTableRows.size() > rows) { + logger.info("ROWS SELEZIONATA4: " + rows); + riga = disserviziTableRows.get(rows); + } + else { + logger.info("ROWS SELEZIONATA5: " + (disserviziTableRows.size() - 1)); + riga = disserviziTableRows.get(disserviziTableRows.size() - 1); + } -} + } + WebElement linkDownloadAttestazione = riga.findElements(By.xpath("//button[@data-testid='download-legal-fact']")).get(0); + linkDownloadAttestazione.click(); + logger.info("click effettuato con successo"); + } else { + logger.error("Non ci sono notifiche da selezionare nel arco temporale settato"); + Assertions.fail("Non ci sono notifiche da selezionare nel arco temporale settato"); + } + } + */ -public void clickLinkAttestazioniOpponibileDisservizi(int numeroLinkAttestazioniOpponibile) { - if (attestazioniFile.get(numeroLinkAttestazioniOpponibile).isDisplayed()) { - attestazioniFile.get(numeroLinkAttestazioniOpponibile).click(); - } else { - this.js().executeScript("arguments[0].scrollIntoView(true);", attestazioniFile.get(numeroLinkAttestazioniOpponibile)); - attestazioniFile.get(numeroLinkAttestazioniOpponibile).click(); + public void clickLinkAttestazioniOpponibileDisservizi(int numeroLinkAttestazioniOpponibile) { + if (attestazioniFile.get(numeroLinkAttestazioniOpponibile).isDisplayed()) { + attestazioniFile.get(numeroLinkAttestazioniOpponibile).click(); + } else { + this.js().executeScript("arguments[0].scrollIntoView(true);", attestazioniFile.get(numeroLinkAttestazioniOpponibile)); + attestazioniFile.get(numeroLinkAttestazioniOpponibile).click(); + } } -} public boolean confrontoFileConDisservizio() { getDateDisservice(); logger.info("date prese con successo dal disserivizio"); - String folderPath = System.getProperty("downloadFilePath"); + String folderPath = webDriverConfig.getDownloadFilePath(); + logger.info("DOWNLOAD FOLDER "+folderPath); // Stringa da cercare nel nome del file String searchString = "PN_DOWNTIME_LEGAL_FACTS"; // Creazione di un oggetto File che rappresenta la cartella @@ -286,7 +382,7 @@ public boolean confrontoFileConDisservizio() { //break// Rimuovere il commento se si desidera fermarsi al primo file trovato } catch (IOException e) { logger.error("Errore nel leggere il PDF: " + file.getName(), e); - Assert.fail("Errore nel leggere il PDF: " + file.getName()); + Assertions.fail("Errore nel leggere il PDF: " + file.getName()); } } } @@ -298,6 +394,7 @@ public boolean confrontoFileConDisservizio() { } return false; } + } 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 e6be0a059..cb2304087 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 @@ -7,17 +7,25 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; +@Component public class InvioNotifichePAPage extends BasePage { @FindBy(id = "step-submit") WebElement continuaButton; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public InvioNotifichePAPage(WebDriver driver) { super(driver); } public void selezionareContinuaButton() { - WebTool.waitTime(5); + webTool.waitTime(5); continuaButton = driver.findElement(By.id("step-submit")); 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/LoginPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/LoginPAPage.java index d518ff89f..8f73c453b 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/LoginPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/LoginPAPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,8 +10,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; - +@Component public class LoginPAPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("LoginPAPage"); @@ -25,6 +27,7 @@ public class LoginPAPage extends BasePage { @FindBy(xpath = "//button[contains(text(),'Invia')]") WebElement inviaButton; + @Autowired public LoginPAPage(WebDriver driver) { super(driver); } @@ -36,7 +39,7 @@ public void waitLoadLoginPAPage(){ logger.info("Login PA Page caricata"); }catch (TimeoutException e){ logger.error("Il titolo della pagina Login PA non caricato con errore : "+e.getMessage()); - Assert.fail("Il titolo della pagina Login PA non caricato con errore : "+e.getMessage()); + Assertions.fail("Il titolo della pagina Login PA non caricato con errore : "+e.getMessage()); } } @@ -59,7 +62,7 @@ public void selezionaInviaDati(){ this.inviaButton.click(); }catch (TimeoutException e){ logger.error("Il bottone invia nella pagina Login PA non è stato cliccato con errore : "+e.getMessage()); - Assert.fail("Il bottone invia nella pagina Login PA non è stato cliccato con errore : "+e.getMessage()); + Assertions.fail("Il bottone invia nella pagina Login PA non è stato cliccato con errore : "+e.getMessage()); } } } 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 3662777a7..d95cc5fe2 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 @@ -2,19 +2,24 @@ import com.google.gson.internal.LinkedTreeMap; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.listeners.NetWorkInfo; import it.pn.frontend.e2e.model.singleton.NotificationSingleton; import it.pn.frontend.e2e.rest.RestNotification; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.NoSuchElementException; -import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.text.DateFormatSymbols; import java.time.LocalDate; @@ -22,12 +27,14 @@ import java.util.concurrent.TimeUnit; import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; - +/* +* Modifiche principali: +Autowired NotificationSingleton e WebDriverConfig: Ho integrato i componenti tramite annotazione @Autowired per sfruttare la gestione delle dipendenze di Spring Boot, eliminando la necessità di istanziare manualmente queste classi. +Component: Aggiunta dell’annotazione @Component per rendere la classe gestibile da Spring Boot.*/ +@Component public class PiattaformaNotifichePage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("notificaMittentePagoPA"); - private final List netWorkInfos = Hooks.netWorkInfos; - private final NotificationSingleton notificationSingleton = NotificationSingleton.getInstance(); @FindBy(id = "recipientId") WebElement cfTextField; @@ -104,7 +111,17 @@ public class PiattaformaNotifichePage extends BasePage { @FindBy(id = "message") WebElement erroreMessaggio; - + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + private NotificationSingleton notificationSingleton; + @Autowired + private RestNotification restNotification; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public PiattaformaNotifichePage(WebDriver driver) { super(driver); } @@ -112,12 +129,14 @@ public PiattaformaNotifichePage(WebDriver driver) { public void waitLoadPiattaformaNotifichePAPage() { try { By notificheTitle = By.id("Notifiche-page"); - this.getWebDriverWait(10).withMessage("Il bottone invia notifica non visibile").until(ExpectedConditions.visibilityOf(this.inviaNuovaNotificaButton)); + webTool.waitTime(10); + inviaNuovaNotificaButton = driver.findElement(By.id("new-notification-btn")); + this.getWebDriverWait(10).withMessage("Il bottone invia notifica non visibile").until(ExpectedConditions.visibilityOf(inviaNuovaNotificaButton)); this.getWebDriverWait(10).withMessage("Il titolo non è visibile").until(ExpectedConditions.visibilityOfElementLocated(notificheTitle)); logger.info("Piattaforma Notifiche Page caricata"); } catch (TimeoutException e) { logger.error("Piattaforma Notifiche Page non caricata con errore : " + e.getMessage()); - Assert.fail("Piattaforma Notifiche Page non caricata con errore : " + e.getMessage()); + Assertions.fail("Piattaforma Notifiche Page non caricata con errore : " + e.getMessage()); } } @@ -130,13 +149,13 @@ public void insertCodiceFiscale(String codiceFiscale) { logger.info("Codice Fiscale inserito correttamente"); } catch (TimeoutException e) { logger.error("Codice Fiscale Non inserito con errore: " + e.getMessage()); - Assert.fail("Codice Fiscale Non inserito con errore: " + e.getMessage()); + Assertions.fail("Codice Fiscale Non inserito con errore: " + e.getMessage()); } } public void selectFiltraNotificaButtonMittente() { - WebTool.waitTime(10); + webTool.waitTime(10); filtraNotificaButtonMittente = driver.findElement(By.id("filter-button")); getWebDriverWait(10).withMessage("Il bottone filtra non è cliccabile").until(elementToBeClickable(filtraNotificaButtonMittente)); filtraNotificaButtonMittente.click(); @@ -144,7 +163,7 @@ public void selectFiltraNotificaButtonMittente() { } public void selectFiltraNotificaButtonDestinatario() { - WebTool.waitTime(10); + webTool.waitTime(10); filtraNotificaButton = driver.findElement(By.id("filter-notifications-button")); getWebDriverWait(10).withMessage("Il filtro non è cliccabile").until(elementToBeClickable(filtraNotificaButton)); filtraNotificaButton.click(); @@ -160,7 +179,7 @@ public int getListaCf(String cfInserito) { return this.elements(cfListBy).size(); } catch (TimeoutException | NoSuchElementException e) { logger.error("Codici fiscali non trovati " + e.getMessage()); - Assert.fail("Codici fiscali non trovati " + e.getMessage()); + Assertions.fail("Codici fiscali non trovati " + e.getMessage()); return 0; } @@ -188,6 +207,9 @@ public boolean verificaEsistenzaEPassaggioPagina() { } public void inserimentoCodiceIUN(String codiceIUN) { + + webTool.waitTime(5); + codiceIUNTextField = driver.findElement(By.id("iunMatch")); getWebDriverWait(10).withMessage("Il campo per l'inserimento del codice IUN non è visibile").until(ExpectedConditions.visibilityOf(codiceIUNTextField)); codiceIUNTextField.click(); codiceIUNTextField.sendKeys(codiceIUN); @@ -218,14 +240,12 @@ public boolean controlloDateInserite(String dataInerita) { public void inserimentoArcoTemporale(String da, String a) { - WebTool.waitTime(15); getWebDriverWait(10).until(ExpectedConditions.visibilityOfAllElements(dataInizioField, dataFineField)); dataInizioField = getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(By.id("startDate"))); dataInizioField = getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='startDate']"))); - WebTool.waitTime(5); - + webTool.waitTime(2); String[] arraySplitDateDa = da.split("/"); List dataFieldList = driver.findElements(By.cssSelector(".MuiInputBase-input")); @@ -247,7 +267,6 @@ public void inserimentoArcoTemporale(String da, String a) { // Step 2: Click on the input field to open the calendar pop-up //dataFieldList.get(0).click(); - // Step 3: Wait for the calendar pop-up to appear WebElement calendar = getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".MuiDateCalendar-root"))); // Adjust based on your app @@ -271,9 +290,8 @@ public void inserimentoArcoTemporale(String da, String a) { click++; } } - // Step 4: Select a date (e.g., the 15th day of the current month) - WebTool.waitTime(3); + webTool.waitTime(2); WebElement dateToSelect = calendar.findElement(By.xpath("//div[contains(@class, 'MuiDateCalendar-root')]//div[contains(@class,'MuiDayCalendar-monthContainer')]//*[text()='" + dayDa + "']")); dateToSelect = getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(dateToSelect)); dateToSelect.click(); @@ -289,7 +307,7 @@ public void inserimentoArcoTemporale(String da, String a) { int monthA = Integer.parseInt(arraySplitDateA[1]); int yerarsA = Integer.parseInt(arraySplitDateA[2]); - WebTool.waitTime(3); + webTool.waitTime(2); // Step 2: Click on the input field to open the calendar pop-up if (dataFieldList != null && dataFieldList.size() == 5) { @@ -302,9 +320,10 @@ public void inserimentoArcoTemporale(String da, String a) { // Step 3: Wait for the calendar pop-up to appear WebElement calendar1 = getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".MuiDateCalendar-root"))); // Adjust based on your app - WebElement previousMonthAButton = driver.findElement(By.xpath("//div[contains(@class, 'MuiDateCalendar-root')]//button[@title='Previous month']")); + previousMonthAButton = getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(previousMonthAButton)); + int clickA = 0; WebElement monthAToSelect = null; while (clickA < 36) { @@ -319,7 +338,7 @@ public void inserimentoArcoTemporale(String da, String a) { } } - WebTool.waitTime(3); + webTool.waitTime(2); // Step 4: Select a date (e.g., the 15th day of the current month) // Adjust based on your app @@ -341,7 +360,7 @@ public boolean inserimentoArcoTemporaleErrato(String da, String a) { dataInizioField = getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='startDate']"))); - WebTool.waitTime(5); + webTool.waitTime(5); String[] arraySplitDateDa = da.split("/"); @@ -375,7 +394,7 @@ public boolean inserimentoArcoTemporaleErrato(String da, String a) { } // Step 4: Select a date (e.g., the 15th day of the current month) - WebTool.waitTime(3); + webTool.waitTime(3); WebElement dateToSelect = calendar.findElement(By.xpath("//div[contains(@class, 'MuiDateCalendar-root')]//div[contains(@class,'MuiDayCalendar-monthContainer')]//*[text()='" + dayDa + "']")); dateToSelect = getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(dateToSelect)); dateToSelect.click(); @@ -392,7 +411,7 @@ public boolean inserimentoArcoTemporaleErrato(String da, String a) { int monthA = Integer.parseInt(arraySplitDateA[1]); int yerarsA = Integer.parseInt(arraySplitDateA[2]); - WebTool.waitTime(3); + webTool.waitTime(3); // Step 2: Click on the input field to open the calendar pop-up dataFieldList.get(3).click(); @@ -415,7 +434,7 @@ public boolean inserimentoArcoTemporaleErrato(String da, String a) { } } - WebTool.waitTime(3); + webTool.waitTime(3); // Step 4: Select a date (e.g., the 15th day of the current month) WebElement dateToSelect1 = calendar1.findElement(By.xpath("//div[contains(@class, 'MuiDateCalendar-root')]//div[contains(@class,'MuiDayCalendar-monthContainer')]//*[text()='" + dayA + "']")); @@ -456,7 +475,7 @@ public void selezionareStatoNotifica(String statoInserito) { logger.info("Stato notifica selezionato correttamente"); } catch (TimeoutException e) { logger.error("Stato notifica NON trovata con errore: " + e.getMessage()); - Assert.fail("Stato notifica NON trovata con errore: " + e.getMessage()); + Assertions.fail("Stato notifica NON trovata con errore: " + e.getMessage()); } } @@ -491,7 +510,7 @@ public void selezionaNotifica120Giorni() { getWebDriverWait(3).withMessage("Il bottone filtra non è cliccabile").until(elementToBeClickable(pageSize50)); pageSize50.click(); - WebTool.waitTime(10); + webTool.waitTime(10); notificaBy = By.id("notificationsTable.body.row"); List notifiche = this.elements(notificaBy); @@ -500,7 +519,9 @@ public void selezionaNotifica120Giorni() { int index = calendar.get(Calendar.HOUR_OF_DAY); logger.info("index NOTIFICHE : " + index); - if (notifiche!= null) { + logger.info("Scenario " + HooksNew.getScenario()); + + if (notifiche != null) { logger.info("ELENCO NOTIFICHE : " + notifiche.size()); if (notifiche.size() >= index) { logger.info("NOTIFICA SELEZIONATA: " + index); @@ -508,15 +529,69 @@ public void selezionaNotifica120Giorni() { } else { notifiche.get(notifiche.size() - 1).click(); } - }else { + } else { logger.error("Non ci sono notifiche da selezionare nel arco temporale settato"); - Assert.fail("Non ci sono notifiche da selezionare nel arco temporale settato"); + Assertions.fail("Non ci sono notifiche da selezionare nel arco temporale settato"); } // List notifiche = this.elements(notificaBy); // notifiche.get(0).click(); } catch (TimeoutException e) { logger.error("Notifica non trovata con errore: " + e.getMessage()); - Assert.fail("Notifica non trovata con errore: " + e.getMessage()); + Assertions.fail("Notifica non trovata con errore: " + e.getMessage()); + } + } + + + public void selezionaNotifica120Giorni(int rows) { + waitLoadPage(); + try { + By notificaBy = By.id("notificationsTable.body.row"); + attesaCaricamentoPagina(); + getWebDriverWait(30).withMessage("La tabella delle notifiche non è caricata correttamente").until(elementToBeClickable(notificaBy)); + + WebElement buttonRighePagine = driver.findElement(By.id("rows-per-page")); + getWebDriverWait(10).withMessage("Il bottone filtra non è cliccabile").until(elementToBeClickable(buttonRighePagine)); + buttonRighePagine.click(); + WebElement pageSize50 = driver.findElement(By.id("pageSize-50")); + getWebDriverWait(3).withMessage("Il bottone filtra non è cliccabile").until(elementToBeClickable(pageSize50)); + pageSize50.click(); + + webTool.waitTime(10); + notificaBy = By.id("notificationsTable.body.row"); + List notifiche = this.elements(notificaBy); + + logger.info("Scenario " + HooksNew.getScenario()); + + Calendar calendar = GregorianCalendar.getInstance(); + int index = calendar.get(Calendar.HOUR_OF_DAY) + rows; + logger.info("HOUR..." + index); + logger.info("SIZE ROWS TABLE..." + notifiche.size()); + logger.info("ROWS TABLE..." + rows); + logger.info("ROWS SELEZIONATA: " + index); + WebElement riga = null; + if (notifiche != null) { + if (notifiche.size() >= index) { + logger.info("ROWS SELEZIONATA1: " + index); + notifiche.get(index).click(); + } else { + logger.info("ROWS SELEZIONATA2: " + rows); + if ((rows + 1) < notifiche.size()) { + logger.info("ROWS SELEZIONATA3: " + (notifiche.size() - (rows + 1))); + notifiche.get(notifiche.size() - (rows + 1)).click(); + ; + } else { + logger.info("ROWS SELEZIONATA4: " + (notifiche.size() - 1)); + notifiche.get(notifiche.size() - 1).click(); + ; + } + } + } else { + logger.error("Non ci sono notifiche da selezionare nel arco temporale settato"); + Assertions.fail("Non ci sono notifiche da selezionare nel arco temporale settato"); + } + } catch (TimeoutException e) { + logger.error("Notifica non trovata con errore: " + e.getMessage()); + Assertions.fail("Notifica non trovata con errore: " + e.getMessage()); } } @@ -534,19 +609,19 @@ public void selezionaPrimaNotifica() { getWebDriverWait(3).withMessage("Il bottone filtra non è cliccabile").until(elementToBeClickable(pageSize50)); pageSize50.click(); - WebTool.waitTime(10); + webTool.waitTime(10); notificaBy = By.id("notificationsTable.body.row"); List notifiche = this.elements(notificaBy); notifiche.get(0).click(); } catch (TimeoutException e) { logger.error("Notifica non trovata con errore: " + e.getMessage()); - Assert.fail("Notifica non trovata con errore: " + e.getMessage()); + Assertions.fail("Notifica non trovata con errore: " + e.getMessage()); } } public void selezionaNotificaIUN(String IUN) { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); driver.navigate().to("https://selfcare." + variabileAmbiente + ".notifichedigitali.it/dashboard/" + IUN + "/dettaglio"); } @@ -557,7 +632,7 @@ public void selectInviaUnaNuovaNotificaButton() { public void waitLoadRefreshPage() { - WebTool.waitTime(5); + webTool.waitTime(5); } public String ricercaNotifica(String oggettoDellaNotifica, String statoNotifica) { @@ -639,14 +714,14 @@ public int controlloNumeroRisultatiDate() { public void inserimentoData(String dataInserita) { getWebDriverWait(10).withMessage("il campo data non è visibile nella pagina").until(ExpectedConditions.visibilityOf(this.dataInizioField)); - WebTool.waitTime(15); + webTool.waitTime(15); getWebDriverWait(10).until(ExpectedConditions.visibilityOfAllElements(dataInizioField, dataFineField)); dataInizioField = getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(By.id("startDate"))); dataInizioField = getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='startDate']"))); - WebTool.waitTime(10); + webTool.waitTime(10); String[] arraySplitDateDa = dataInserita.split("/"); @@ -684,7 +759,7 @@ public void siVisualizzaCorrettamenteIlCFField() { logger.info("Il campo di codice fiscale si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il campo di codice fiscale NON si visualizza correttamente con errore : " + e.getMessage()); - Assert.fail("Il campo di codice fiscale NON si visualizza correttamente : " + e.getMessage()); + Assertions.fail("Il campo di codice fiscale NON si visualizza correttamente : " + e.getMessage()); } } @@ -695,7 +770,7 @@ public void siVisualizzaCorrettamenteIlCodiceIUNField() { logger.info("Il campo di codice iun si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il campo di codice iun NON si visualizza correttamente con errore : " + e.getMessage()); - Assert.fail("Il campo di codice iun NON si visualizza correttamente : " + e.getMessage()); + Assertions.fail("Il campo di codice iun NON si visualizza correttamente : " + e.getMessage()); } } @@ -706,7 +781,7 @@ public void siVisualizzaCorrettamenteLoStatoField() { logger.info("Il campo dello stato si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il campo dello stato NON si visualizza correttamente con errore : " + e.getMessage()); - Assert.fail("Il campo dello stato NON si visualizza correttamente : " + e.getMessage()); + Assertions.fail("Il campo dello stato NON si visualizza correttamente : " + e.getMessage()); } } @@ -717,7 +792,7 @@ public void siVisualizzaCorrettamenteLaDataInzioField() { logger.info("Il campo della data di inizio si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il campo della data di inizio NON si visualizza correttamente con errore : " + e.getMessage()); - Assert.fail("Il campo della data di inizio NON si visualizza correttamente : " + e.getMessage()); + Assertions.fail("Il campo della data di inizio NON si visualizza correttamente : " + e.getMessage()); } } @@ -728,7 +803,7 @@ public void siVisualizzaCorrettamenteLaDataFineField() { logger.info("Il campo della data di fine si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il campo della data di fine NON si visualizza correttamente con errore : " + e.getMessage()); - Assert.fail("Il campo della data di fine NON si visualizza correttamente : " + e.getMessage()); + Assertions.fail("Il campo della data di fine NON si visualizza correttamente : " + e.getMessage()); } } @@ -794,7 +869,7 @@ public void controlloOrdineNotifiche() { } if (dataSuccessiva.isBefore(dataPrecedente)) { logger.error("Le date non sono ordinate dal più recente"); - Assert.fail("Le date non sono ordinate dal più recente"); + Assertions.fail("Le date non sono ordinate dal più recente"); return; } } @@ -813,7 +888,7 @@ private List getListaDate() { } catch (TimeoutException e) { logger.error("Date NON trovate con errore: " + e.getMessage()); - Assert.fail("Date NON trovate con errore: " + e.getMessage()); + Assertions.fail("Date NON trovate con errore: " + e.getMessage()); return null; } } @@ -836,7 +911,7 @@ public void siCambiaPaginaUtilizzandoUnaFrecetta(Integer numPage) { while (index <= numPage) { frecciaPaginaSuccessiva.click(); index++; - WebTool.waitTime(2); + webTool.waitTime(2); } } @@ -848,7 +923,7 @@ public void selezionaUltimaPaginaUtilizzandoUnaFrecetta() { } while (frecciaPaginaSuccessiva.isEnabled()) { frecciaPaginaSuccessiva.click(); - WebTool.waitTime(2); + webTool.waitTime(2); } } @@ -864,12 +939,12 @@ public void siCambiaIlNumeroElementiVisualizzatiAttraversoIlFiltro() { .withMessage("Il pulsante 'righe per pagina' non è presente") .until(ExpectedConditions.visibilityOf(this.numeroNotificheButton)); vaiInFondoAllaPagina(); - WebTool.waitTime(1); + webTool.waitTime(1); this.numeroNotificheButton.click(); this.getWebDriverWait(10) .withMessage("Il pulsante '50' per assegnare il numero di notifiche per pagina non è presente") .until(ExpectedConditions.visibilityOf(this.numberElement)); - WebTool.waitTime(1); + webTool.waitTime(1); this.numberElement.click(); } @@ -898,7 +973,7 @@ public void vuoiUscirePopUp() { logger.info("Si visualizza il pop up vuoi uscire"); } catch (TimeoutException e) { logger.error("Non si visualizza il pop up vuoi uscire con errore:" + e.getMessage()); - Assert.fail("Non si visualizza il pop up vuoi uscire con errore:" + e.getMessage()); + Assertions.fail("Non si visualizza il pop up vuoi uscire con errore:" + e.getMessage()); } } @@ -993,7 +1068,7 @@ public void checkDefaultPagination() { logger.info("numero di default delle notifiche visualizzate corretto"); } else { logger.error("numero di default delle notifiche visualizzate non corretto"); - Assert.fail("numero di default delle notifiche visualizzate non corretto"); + Assertions.fail("numero di default delle notifiche visualizzate non corretto"); } } @@ -1028,7 +1103,7 @@ public boolean controlloEsistenzaStato() { return true; } catch (TimeoutException e) { logger.error("Stato notifica NON trovata con errore: " + e.getMessage()); - Assert.fail("Stato notifica NON trovata con errore: " + e.getMessage()); + Assertions.fail("Stato notifica NON trovata con errore: " + e.getMessage()); return false; } finally { this.element(By.id("menu-status")).click(); @@ -1057,13 +1132,13 @@ public void checkPaginaNotificheDelegante(String nomeDelegante) { logger.info("Pagina notifiche delegante caricata correttamente"); } catch (TimeoutException e) { logger.error("Pagina notifiche delegante non caricata con errore: " + e.getMessage()); - Assert.fail("Pagina notifiche delegante non caricata con errore: " + e.getMessage()); + Assertions.fail("Pagina notifiche delegante non caricata con errore: " + e.getMessage()); } } public void verificaPresenzaStato(String stato) { - WebTool.waitTime(10); + webTool.waitTime(10); By statusChip = By.xpath("//div[@data-testid='itemStatus']//span[contains(text(),'" + stato + "')]"); getWebDriverWait(10).withMessage("Lo stato " + stato + " non è presente") .until(ExpectedConditions.visibilityOfElementLocated(statusChip)); @@ -1071,9 +1146,8 @@ public void verificaPresenzaStato(String stato) { } public void verificaNotificaCreata() { - RestNotification restNotification = new RestNotification(); String notificationRequestId = ""; - for (NetWorkInfo netWorkInfo : netWorkInfos) { + for (NetWorkInfo netWorkInfo : webDriverConfig.getNetWorkInfos()) { if (netWorkInfo.getRequestUrl().contains("bff/v1/notifications/sent") && netWorkInfo.getRequestMethod().equals("POST")) { if (netWorkInfo.getResponseStatus().equals("202") && !netWorkInfo.getResponseBody().isEmpty()) { notificationRequestId = netWorkInfo.getResponseBody().split("\"notificationRequestId\":\"")[1].split("\"")[0]; @@ -1082,21 +1156,21 @@ public void verificaNotificaCreata() { } } } - Assert.assertFalse("NotificationRequestId non trovato, il codice della risposta al url bff/v1/notifications/sent è diverso di 202 ", notificationRequestId.isEmpty()); + Assertions.assertFalse(notificationRequestId.isEmpty(), "NotificationRequestId non trovato, il codice della risposta al url bff/v1/notifications/sent è diverso di 202 "); LinkedTreeMap notificationData; String notificationStatus; String notificationIUN; int maximumRetry = 0; do { - Assert.assertTrue("La notifica risulta ancora in stato WAITING dopo 5 tentativi", maximumRetry <= 5); + Assertions.assertTrue(maximumRetry <= 5, "La notifica risulta ancora in stato WAITING dopo 5 tentativi"); notificationData = restNotification.getNotificationStatus(notificationRequestId); notificationStatus = notificationData.get("notificationRequestStatus").toString(); if (notificationStatus.equals("ACCEPTED")) { notificationIUN = notificationData.get("iun").toString(); - notificationSingleton.setScenarioIun(Hooks.getScenario(), notificationIUN); + notificationSingleton.setScenarioIun(HooksNew.getScenario(), notificationIUN); return; } else { - WebTool.waitTime(90); + webTool.waitTime(90); logger.info("Tentativo n.{} - Stato notifica: {}", maximumRetry, notificationStatus); maximumRetry++; } @@ -1107,10 +1181,10 @@ public void verificaNotificaCreata() { public void clickSuNotifica() { - String iun = notificationSingleton.getIun(Hooks.scenario); + String iun = notificationSingleton.getIun(HooksNew.scenario); logger.info("iun notifica {}", iun); //By notification = By.xpath("//table[@id='notifications-table']//tr[.//button[contains(text(),'" + iun + "')]]"); - WebTool.waitTime(10); + webTool.waitTime(10); WebElement notification = driver.findElement(By.xpath("//table[@id='notifications-table']//tr[.//button[contains(text(),'" + iun + "')]]")); getWebDriverWait(30).withMessage("notifica non esistente").until(ExpectedConditions.visibilityOf(notification)); notification.click(); @@ -1118,7 +1192,7 @@ public void clickSuNotifica() { public void checkStatoNotifica(String stato) { driver.navigate().refresh(); - WebTool.waitTime(10); + webTool.waitTime(10); WebElement notificationLine = notificationsTableLines.get(0); WebElement chipStatus = notificationLine.findElement(By.id("status-chip-" + stato)); getWebDriverWait(10).withMessage("La notifica non ha lo stato " + stato).until(ExpectedConditions.visibilityOf(chipStatus)); @@ -1138,12 +1212,12 @@ public void selezionaNotificaConStato(String statoNotifica) { } catch (NoSuchElementException e) { logger.info("Dopo " + i + " tentativi la notifica non è ancora passata allo stato: " + statoNotifica); } - WebTool.waitTime(15); + webTool.waitTime(15); driver.navigate().refresh(); } if (!testSuccess) { logger.error("La notifica non è passata allo stato " + statoNotifica); - Assert.fail("La notifica non è passata allo stato " + statoNotifica); + Assertions.fail("La notifica non è passata allo stato " + statoNotifica); } } @@ -1161,12 +1235,12 @@ public void pollingSuStatoNotificaPerCompletamento(String statoNotifica) { } catch (NoSuchElementException e) { logger.info("Dopo " + i + " tentativi la notifica non è ancora passata allo stato: " + statoNotifica); } - WebTool.waitTime(15); + webTool.waitTime(15); driver.navigate().refresh(); } if (!testSuccess) { logger.error("La notifica non è passata allo stato " + statoNotifica); - Assert.fail("La notifica non è passata allo stato " + statoNotifica); + Assertions.fail("La notifica non è passata allo stato " + statoNotifica); } } @@ -1200,7 +1274,7 @@ public void clickBottoneAnnullaNotifica() { public void visualizzaTimelineTuttiDestinatari(Map destinatari) { logger.info("Si clicca vedi piu dettagli"); - WebTool.waitTime(10); + webTool.waitTime(10); List viewMore = driver.findElements(By.xpath("//*[@id='more-less-timeline-step']")); //Equals() method utilizzato per String. Per confrontare int variabile dobbiamo usare == String size = Integer.toString(viewMore.size()); @@ -1217,14 +1291,14 @@ public void visualizzaTimelineTuttiDestinatari(Map destinatari) logger.info("Si visualizza gli eventi relativi a tutti i destinatari"); } else { logger.error("Non si visualizza gli eventi relativi a tutti i destinatari"); - Assert.fail("Non si visualizza gli eventi relativi a tutti i destinatari"); + Assertions.fail("Non si visualizza gli eventi relativi a tutti i destinatari"); } logger.info("Si visualizza correttamente la timeline relativi a tutti i destinatari"); } public void visualizzaTimeline(String check) { - WebTool.waitTime(10); + webTool.waitTime(10); List viewMore = driver.findElements(By.xpath("//*[@id='more-less-timeline-step']")); viewMore.get(0).click(); String size = Integer.toString(viewMore.size()); @@ -1238,19 +1312,19 @@ public void visualizzaTimeline(String check) { logger.info("Si visualizza la timeline correttamente"); } else { logger.error("Non si visualizza la timeline correttamente"); - Assert.fail("Non si visualizza la timeline correttamente"); + Assertions.fail("Non si visualizza la timeline correttamente"); } } public void verificaTentativoSuccessivo(String check) { List findKeyWord = driver.findElements(By.xpath("//span[contains(text(),'" + check + "')]")); logger.info("//span[contains(text(),'" + check + "')]"); - logger.info("findkey "+findKeyWord.size()); + logger.info("findkey " + findKeyWord.size()); if (findKeyWord.get(0).isDisplayed()) { logger.info("Si visualizza la timeline correttamente"); } else { logger.error("Non si visualizza la timeline correttamente"); - Assert.fail("Non si visualizza la timeline correttamente"); + Assertions.fail("Non si visualizza la timeline correttamente"); } } @@ -1262,16 +1336,16 @@ public void verificaDestinatariNonRaggiungibili(Map destinatari) if (size.equals("2")) { viewMore.get(1).click(); } - WebTool.waitTime(2); + webTool.waitTime(2); WebElement destPF = driver.findElement(By.xpath("//p[contains(text(),'" + destinatari.get("PF") + " è fallito')]")); - WebTool.waitTime(2); + webTool.waitTime(2); WebElement destPG = driver.findElement(By.xpath("//p[contains(text(),'" + destinatari.get("PG") + " è fallito')]")); if (destPG.isDisplayed() && destPF.isDisplayed()) { logger.info("Entrambi destinatari non raggiungibili al primo tentativo"); } else { logger.error("Uno dei destinatari viene raggiunto al primo tentativo"); - Assert.fail("Uno dei destinatari viene raggiunto al primo tentativo"); + Assertions.fail("Uno dei destinatari viene raggiunto al primo tentativo"); } } @@ -1285,7 +1359,7 @@ public void checkAllegatoScaricabile(String descrizioneAllegato) { By linkAllegato = By.xpath("//button[contains(., '" + descrizioneAllegato + "') and @id='document-button']"); getWebDriverWait(10).withMessage("Non esiste il bottone per il download degli allegati, si procede con il test").until(ExpectedConditions.visibilityOfElementLocated(linkAllegato)); logger.error("Non è corretto che il bottone per il download dell'allegato sia visibile"); - Assert.fail("Non è corretto che il bottone per il download dell'allegato sia visibile"); + Assertions.fail("Non è corretto che il bottone per il download dell'allegato sia visibile"); } catch (TimeoutException e) { logger.info("Non è visibile il bottone per il download dell'allegato: " + e.getMessage()); } @@ -1333,15 +1407,15 @@ public void clickNotificaRicercata() { element(notitifcaRicercata).click(); } catch (TimeoutException e) { logger.error("Non si riesce a cliccare la notifica ricercata con errore: " + e.getMessage()); - Assert.fail("Non si riesce a cliccare la notifica ricercata con errore: " + e.getMessage()); + Assertions.fail("Non si riesce a cliccare la notifica ricercata con errore: " + e.getMessage()); } catch (InterruptedException e) { logger.error("Attesa per rendere cliccabile la notifica interrota con errore: " + e.getMessage()); - Assert.fail("Attesa per rendere cliccabile la notifica interrota con errore: " + e.getMessage()); + Assertions.fail("Attesa per rendere cliccabile la notifica interrota con errore: " + e.getMessage()); } } public void checkMessaggioErroreConCodice(int code) { - WebTool.waitTime(3); + webTool.waitTime(3); erroreMessaggio = driver.findElement(By.id("message")); switch (code) { case 19 -> { @@ -1349,7 +1423,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } case 20 -> { @@ -1357,7 +1431,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } case 21 -> { @@ -1365,7 +1439,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } case 22 -> { @@ -1373,7 +1447,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } case 23 -> { @@ -1381,7 +1455,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } case 25 -> { @@ -1389,7 +1463,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } case 30 -> { @@ -1397,7 +1471,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } case 1001 -> { @@ -1405,7 +1479,7 @@ public void checkMessaggioErroreConCodice(int code) { logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza il messaggio di errore"); - Assert.fail("Non si visualizza il messaggio di errore"); + Assertions.fail("Non si visualizza il messaggio di errore"); } } } @@ -1424,7 +1498,7 @@ public void checkClickDownloadRicevutePEC() { } public void verificaMittente(String ente) { - WebTool.waitTime(2); + webTool.waitTime(2); By mittente = By.id("row-value-1"); getWebDriverWait(10).withMessage("Mittente non trovato").until(ExpectedConditions.and( ExpectedConditions.visibilityOfElementLocated(mittente), @@ -1438,6 +1512,6 @@ public void checkBottoneAnnullaNotifica() { } catch (NoSuchElementException e) { isDisplayed = false; // Elemento non trovato } - Assert.assertFalse("Il bottone è visualizzabile", isDisplayed); + Assertions.assertFalse(isDisplayed, "Il bottone è visualizzabile"); } } \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/PreAccediAreaRiservataPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/PreAccediAreaRiservataPAPage.java index 9f8b32a2a..b2aa45329 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/PreAccediAreaRiservataPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/PreAccediAreaRiservataPAPage.java @@ -2,13 +2,16 @@ import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class PreAccediAreaRiservataPAPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("PreAccediAreaRiservataPAPage"); @@ -16,6 +19,7 @@ public class PreAccediAreaRiservataPAPage extends BasePage { @FindBy(id = "login-button") WebElement procediAlLoginButton; + @Autowired public PreAccediAreaRiservataPAPage(WebDriver driver) { super(driver); } @@ -27,7 +31,7 @@ public void waitLoadPreAccediAreaRiservataPAPage(){ logger.info("Il titolo della Pre Accedi Area Riservata PA Page è caricato"); }catch (TimeoutException e){ logger.error("Il titolo della Pre Accedi Area Riservata PA Page non caricato con errore : "+e.getMessage()); - Assert.fail("Il titolo della Pre Accedi Area Riservata PA Page non caricato con errore : "+e.getMessage()); + Assertions.fail("Il titolo della Pre Accedi Area Riservata PA Page non caricato con errore : "+e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/ScegliSpidPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/ScegliSpidPAPage.java index 3014a6be3..0f09515f9 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/ScegliSpidPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/ScegliSpidPAPage.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +10,15 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +/* +*Modifiche e Spiegazioni +Annotazione @Component: Marca la classe come un componente gestito da Spring, permettendo l’iniezione nei contesti necessari. +Costruttore con @Autowired: Permette a Spring di iniettare automaticamente WebDriver. +Logging migliorato: Utilizza il logger.error con {} per un’output più leggibile e facile da mantenere. +* */ +@Component public class ScegliSpidPAPage extends BasePage { private static final Logger logger = LoggerFactory.getLogger("ScegliSpidPAPage"); @@ -18,33 +26,34 @@ public class ScegliSpidPAPage extends BasePage { @FindBy(id = "xx_testenv2") WebElement testButton; + @Autowired public ScegliSpidPAPage(WebDriver driver) { super(driver); } - public void waitLoadScegliSpidPAPage(){ - try{ + public void waitLoadScegliSpidPAPage() { + try { By titlePage = By.cssSelector("div.MuiTypography-root.MuiTypography-h4"); - this.getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(titlePage)); - logger.info("il titolo Scegli Spid PA Page caricata"); - }catch (TimeoutException e){ - logger.error("Titlo della pagina Scegli Spid PA Page non caricato con errore : "+e.getMessage()); - Assert.fail("Titlo della pagina Scegli Spid PA Page non caricato con errore : "+e.getMessage()); - }catch(Exception e){ - logger.error("Scelta spid provider errore generico : "+e.getMessage()); - Assert.fail("Scelta spid provider errore generico : "+e.getMessage()); + getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(titlePage)); + logger.info("Il titolo della pagina Scegli Spid PA è stato caricato"); + } catch (TimeoutException e) { + logger.error("Il titolo della pagina Scegli Spid PA non è stato caricato con errore: {}", e.getMessage()); + Assertions.fail("Il titolo della pagina Scegli Spid PA non è stato caricato con errore: " + e.getMessage()); + } catch (Exception e) { + logger.error("Errore generico durante la scelta del provider SPID: {}", e.getMessage()); + Assertions.fail("Errore generico durante la scelta del provider SPID: " + e.getMessage()); } } - public void selezionareTestButton(){ - logger.info("Si clicca sul bottone Test dello spid"); - try{ + public void selezionareTestButton() { + logger.info("Si clicca sul bottone Test dello SPID"); + try { getWebDriverWait(60).until(ExpectedConditions.elementToBeClickable(this.testButton)); this.testButton.click(); - logger.info("click sul bottone TEST effetuato"); - }catch (TimeoutException e){ - logger.error("il bottone TEST non è cliccabile con errore : "+e.getMessage()); - Assert.fail("il bottone TEST non è cliccabile con errore : "+e.getMessage()); + logger.info("Click sul bottone TEST effettuato con successo"); + } catch (TimeoutException e) { + logger.error("Il bottone TEST non è cliccabile, errore: {}", e.getMessage()); + Assertions.fail("Il bottone TEST non è cliccabile, errore: " + e.getMessage()); } } -} +} \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/SelezionaEntePAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/SelezionaEntePAPage.java index aa74897f3..666f6a042 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/SelezionaEntePAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/SelezionaEntePAPage.java @@ -2,70 +2,96 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.List; - +/* +*Modifiche e Ottimizzazioni +Annotazione @Component: Integrazione della classe in Spring Boot per il dependency injection. +Miglioramento Logging: Utilizzo di placeholder ({}) in logger per gestire i messaggi in modo più efficiente. +Stream API in selezionareComune: Sostituisce il ciclo for con uno stream, semplificando il controllo della presenza e selezione del comune. +Verifica .ifPresentOrElse: Aggiunta di un messaggio di log per i casi in cui il comune non viene trovato. +Refactoring per Gestione delle Eccezioni: La gestione delle eccezioni è mantenuta invariata per chiarezza e robustezza del codice. +* +* +* */ +@Component public class SelezionaEntePAPage extends BasePage { - private static final Logger logger = LoggerFactory.getLogger("SelezionaEntePAPage"); + private static final Logger logger = LoggerFactory.getLogger(SelezionaEntePAPage.class); @FindBy(xpath = "//div[@role='button']//h6") - List comuneButton; + private List comuneButton; @FindBy(xpath = "//button[text()='Accedi']") - WebElement accediButton; + private WebElement accediButton; @FindBy(id = "search") - WebElement comuneSearchField; + private WebElement comuneSearchField; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public SelezionaEntePAPage(WebDriver driver) { super(driver); } public void waitLoadSelezionaEntePAPage() { try { - WebTool.waitTime(15); + webTool.waitTime(20); WebElement titlePage = driver.findElement(By.xpath("//h3[text()='Seleziona il tuo ente']")); - WebElement searchField = driver.findElement(By.id("search")); - this.getWebDriverWait(30).withMessage("Titolo 'Seleziona il tuo ente' della pagina non è visualizza").until(ExpectedConditions.visibilityOf(titlePage)); - this.getWebDriverWait(30).withMessage("Il campo cerca non è cliccabile nella pagina Seleziona Ente: ").until(ExpectedConditions.elementToBeClickable(searchField)); + WebElement searchField = driver.findElement(By.id("search")); + getWebDriverWait(30) + .withMessage("Titolo 'Seleziona il tuo ente' della pagina non è visibile") + .until(ExpectedConditions.visibilityOf(titlePage)); + getWebDriverWait(30) + .withMessage("Il campo cerca non è cliccabile nella pagina Seleziona Ente") + .until(ExpectedConditions.elementToBeClickable(searchField)); logger.info("Seleziona Utente PA Page caricata"); } catch (TimeoutException | NoSuchElementException | StaleElementReferenceException e) { - logger.error("Seleziona Utente PA Page non caricata con errore : " + e.getMessage()); - Assert.fail("Seleziona Utente PA Page non caricata con errore : " + e.getMessage()); + logger.error("Seleziona Utente PA Page non caricata con errore: {}", e.getMessage()); + Assertions.fail("Seleziona Utente PA Page non caricata con errore: " + e.getMessage()); } } - public void selezionareComune(String comune) { - for (WebElement element : this.comuneButton) { - if (element.getText().contains(comune)) { - getWebDriverWait(30).withMessage("L'Ente " + comune + " non è cliccabile nella pagina seleziona Ente ") - .until(ExpectedConditions.elementToBeClickable(element)); - this.js().executeScript("arguments[0].click()", element); - break; - } - } + comuneButton.stream() + .filter(element -> element.getText().contains(comune)) + .findFirst() + .ifPresentOrElse( + element -> { + getWebDriverWait(30) + .withMessage("L'Ente " + comune + " non è cliccabile nella pagina seleziona Ente") + .until(ExpectedConditions.elementToBeClickable(element)); + js().executeScript("arguments[0].click()", element); + }, + () -> logger.warn("Ente '{}' non trovato tra i comuni disponibili", comune) + ); } public void selezionaAccedi() { Actions actions = new Actions(driver); - getWebDriverWait(60).withMessage("il buttone Eccedi non è cliccabile") - .until(ExpectedConditions.elementToBeClickable(this.accediButton)); - actions.moveToElement(this.accediButton).click().perform(); + accediButton = driver.findElement(By.xpath("//button[text()='Accedi']")); + getWebDriverWait(60).withMessage("il buttone Accedi non è cliccabile") + .until(ExpectedConditions.elementToBeClickable(accediButton)); + actions.moveToElement(accediButton).click().perform(); } public void cercaComune(String comune) { - this.getWebDriverWait(30).withMessage("Il campo Comune non è visibile nella pagina seleziona un Ente") - .until(ExpectedConditions.visibilityOf(this.comuneSearchField)); - this.comuneSearchField.sendKeys(comune); + getWebDriverWait(30) + .withMessage("Il campo Comune non è visibile nella pagina seleziona un Ente") + .until(ExpectedConditions.visibilityOf(comuneSearchField)); + comuneSearchField.sendKeys(comune); } } diff --git a/src/main/java/it/pn/frontend/e2e/rest/RestContact.java b/src/main/java/it/pn/frontend/e2e/rest/RestContact.java index fe05a160e..1405f8f49 100644 --- a/src/main/java/it/pn/frontend/e2e/rest/RestContact.java +++ b/src/main/java/it/pn/frontend/e2e/rest/RestContact.java @@ -1,36 +1,52 @@ package it.pn.frontend.e2e.rest; import it.pn.frontend.e2e.config.CustomHttpClient; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.exceptions.RestContactException; import it.pn.frontend.e2e.exceptions.RestDelegationException; import it.pn.frontend.e2e.model.address.DigitalAddress; import it.pn.frontend.e2e.model.address.DigitalAddressResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; - +/* +*Modifiche principali: +Annotazioni @Autowired: Utilizzate per il caricamento automatico delle dipendenze CustomHttpClient e WebDriverConfig. +Costruttore per WebDriverConfig: La configurazione viene caricata tramite costruttore, impostando l’Authorization token per semplificare la gestione delle intestazioni. +Miglioramento gestione eccezioni: Le eccezioni sono lanciate per indicare fallimenti specifici nei metodi di gestione dei contatti digitali, come RestContactException e RestDelegationException, con log dettagliati. +Ottimizzazione dei metodi HTTP: I metodi HTTP GET e DELETE sono organizzati per fornire un output chiaro e gestibile, inclusi i log delle risposte. +* */ +@Component public class RestContact { - private static final Logger logger = LoggerFactory.getLogger("RestContact"); - final CustomHttpClient httpClient = CustomHttpClient.getInstance(); - private static RestContact instance; - final private String env = System.getProperty("environment"); - final private String token = System.getProperty("token"); - private Map headers = new HashMap<>(); - - public static synchronized RestContact getInstance() { - if (instance == null) { - instance = new RestContact(); - } - return instance; - } - public RestContact() { + private static final Logger logger = LoggerFactory.getLogger(RestContact.class); + + private final Map headers = new HashMap<>(); + + // Carica il token all'avvio della classe + private WebDriverConfig webDriverConfig; + + @Autowired + private CustomHttpClient customHttpClient; - this.httpClient.setBaseUrlApi("https://webapi." + env + ".notifichedigitali.it"); + private final CustomHttpClient httpClient; + + @Autowired + public RestContact(WebDriverConfig webDriverConfig, CustomHttpClient httpClient) { + this.httpClient = httpClient; + this.webDriverConfig = webDriverConfig; + this.httpClient.setBaseUrlApi("https://webapi." + this.webDriverConfig.getEnvironment() + ".notifichedigitali.it"); + + String token = System.getProperty("token"); if (token != null) { this.headers.put("Authorization", token); } else { @@ -38,97 +54,99 @@ public RestContact() { } } + + /** - * Remove the default digital address email from the contact - * - * @throws RestContactException if there is an error during the request + * Rimuove l'indirizzo email di cortesia predefinito. */ public void removeDigitalAddressCourtesyEmail() throws RestContactException { - String url = "https://webapi." + env + ".notifichedigitali.it/address-book/v1/digital-address/courtesy/default/EMAIL"; - String response = ""; + String url = "https://webapi." + webDriverConfig.getEnvironment() + ".notifichedigitali.it/address-book/v1/digital-address/courtesy/default/EMAIL"; try { - response = httpClient.sendHttpDeleteRequest(url, this.headers, String.class); + headers.put("Authorization", System.getProperty("token")); + String response = httpClient.sendHttpDeleteRequest(url, headers, String.class); logger.info("Risposta ricevuta: " + response); logger.info("Indirizzo digitale di cortesia rimosso con successo"); } catch (IOException e) { - logger.warn("Error during removeDigitalAdressCourtesyEmail: " + e.getMessage()); - logger.warn("Non è stato possibile rimuovere l'indirizzo digitale di cortesia"); + logger.error("Error during removeDigitalAdressCourtesyEmail: {}", e.getMessage()); + throw new RestContactException("Non è stato possibile rimuovere l'indirizzo digitale di cortesia", e); } } /** - * Remove the default digital address pec from the contact - * - * @throws RestContactException if there is an error during the request + * Rimuove l'indirizzo PEC legale predefinito. */ public void removeDigitalAddressLegalPec() throws RestContactException { - String url = "https://webapi." + env + ".notifichedigitali.it/bff/v1/addresses/LEGAL/default/PEC"; - String response = ""; + String url = "https://webapi." + webDriverConfig.getEnvironment() + ".notifichedigitali.it/bff/v1/addresses/LEGAL/default/PEC"; try { - response = httpClient.sendHttpDeleteRequest(url, this.headers, String.class); + headers.put("Authorization", System.getProperty("token")); + String response = httpClient.sendHttpDeleteRequest(url, headers, String.class); logger.info("Risposta ricevuta: " + response); - logger.info("Indirizzo digitale di cortesia rimosso con successo"); + logger.info("Indirizzo PEC legale rimosso con successo"); } catch (IOException e) { - logger.warn("Error during removeDigitalAdressLegalPec: " + e.getMessage()); - logger.warn("Non è stato possibile rimuovere l'indirizzo digitale di cortesia"); + logger.error("Error during removeDigitalAdressLegalPec: {}", e.getMessage()); + logger.error("Non è stato possibile rimuovere l'indirizzo PEC legale", e); + //throw new RestContactException("Non è stato possibile rimuovere l'indirizzo PEC legale", e); } } /** - * Remove the special contact from the contact - * - * @param digitalAddress the digital address to remove - * @throws RestDelegationException if there is an error during the request + * Rimuove un contatto speciale. */ public void removeSpecialContact(DigitalAddress digitalAddress) throws RestDelegationException { String channelType = digitalAddress.getChannelType().toString(); String addressType = digitalAddress.getAddressType().toString().toLowerCase(); - String url = "https://webapi." + env + ".notifichedigitali.it/address-book/v1/digital-address/" + String url = "https://webapi." +webDriverConfig.getEnvironment() + ".notifichedigitali.it/address-book/v1/digital-address/" + addressType + "/" + digitalAddress.getSenderId() + "/" + channelType; - String response = ""; + try { - response = httpClient.sendHttpDeleteRequest(url, this.headers, String.class); + headers.put("Authorization", System.getProperty("token")); + String response = httpClient.sendHttpDeleteRequest(url, headers, String.class); logger.info("Risposta ricevuta: " + response); logger.info("Indirizzo digitale di 'altri recapiti' rimosso con successo"); } catch (IOException e) { - logger.error("Error during removeSpecialContact: " + e.getMessage()); - logger.warn("Non è stato possibile rimuovere l'indirizzo digitale di 'altri recapiti'"); + logger.error("Error during removeSpecialContact: {}", e.getMessage()); + throw new RestDelegationException("Non è stato possibile rimuovere l'indirizzo digitale di 'altri recapiti'", e); } } + /** + * Ottiene l'indirizzo digitale di default. + */ public DigitalAddressResponse getDigitalAddress() throws RestContactException { - CustomHttpClient httpClientDigitalAddress = CustomHttpClient.getInstance(); - httpClientDigitalAddress.setBaseUrlApi("https://webapi." + env + ".notifichedigitali.it"); + CustomHttpClient httpClientDigitalAddress = customHttpClient; + httpClientDigitalAddress.setBaseUrlApi("https://webapi." + webDriverConfig.getEnvironment() + ".notifichedigitali.it"); String url = "/bff/v1/addresses/LEGAL/default/PEC"; + try { - DigitalAddressResponse response = httpClientDigitalAddress.sendHttpGetRequest(url, this.headers, DigitalAddressResponse.class); - logger.info("Risposta ricevuta: " + response); + logger.info("TOKEN..."+System.getProperty("token")); + headers.put("Authorization", System.getProperty("token")); + DigitalAddressResponse response = httpClientDigitalAddress.sendHttpGetRequest(url, headers, DigitalAddressResponse.class); + logger.info("Risposta ricevuta: {}", response); logger.info("Indirizzi digitali ricevuti con successo"); return response; } catch (IOException e) { logger.error("Error during getDigitalAddress", e); - logger.warn("Non è stato possibile ricevere gli indirizzi digitali"); + throw new RestContactException("Non è stato possibile ricevere gli indirizzi digitali", e); } - return null; } - + /** + * Ottiene tutti gli indirizzi digitali. + */ public List getAllDigitalAddress() throws RestContactException { - CustomHttpClient httpClientDigitalAddress = CustomHttpClient.getInstance(); - httpClientDigitalAddress.setBaseUrlApi("https://webapi." + env + ".notifichedigitali.it"); + CustomHttpClient httpClientDigitalAddress = customHttpClient; + httpClientDigitalAddress.setBaseUrlApi("https://webapi." + webDriverConfig.getEnvironment() + ".notifichedigitali.it"); String url = "/bff/v1/addresses"; try { - List response = httpClientDigitalAddress.sendHttpGetRequestListDigitalAddress(url, this.headers, DigitalAddress.class); - - logger.info("Risposta ricevuta: " + response); + headers.put("Authorization", System.getProperty("token")); + List response = httpClientDigitalAddress.sendHttpGetRequestListDigitalAddress(url, headers, DigitalAddress.class); + logger.info("Risposta ricevuta: {}", response); logger.info("Indirizzi digitali ricevuti con successo"); return response; } catch (IOException e) { - logger.error("Error during getDigitalAddress", e); - logger.warn("Non è stato possibile ricevere gli indirizzi digitali"); - return null; + logger.error("Error during getAllDigitalAddress", e); + throw new RestContactException("Non è stato possibile ricevere gli indirizzi digitali", e); } } - -} +} \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/rest/RestDelegation.java b/src/main/java/it/pn/frontend/e2e/rest/RestDelegation.java index 97fe0f59e..cc036f315 100644 --- a/src/main/java/it/pn/frontend/e2e/rest/RestDelegation.java +++ b/src/main/java/it/pn/frontend/e2e/rest/RestDelegation.java @@ -1,6 +1,7 @@ package it.pn.frontend.e2e.rest; import it.pn.frontend.e2e.config.CustomHttpClient; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.exceptions.RestDelegationException; import it.pn.frontend.e2e.model.delegate.DelegateRequestPF; import it.pn.frontend.e2e.model.delegate.DelegateRequestPG; @@ -8,125 +9,157 @@ import it.pn.frontend.e2e.model.delegate.DelegateResponsePG; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; - +/* +*Modifiche principali: +Iniezione delle dipendenze: Utilizza @Autowired per l’iniezione automatica di CustomHttpClient e WebDriverConfig, eliminando l'uso di un getInstance() statico. +Costruttore: Il costruttore viene utilizzato per impostare l'URL base e l'intestazione Authorization per tutte le richieste. +Miglioramento gestione errori: Log di errore e gestione delle eccezioni tramite RestDelegationException per comunicare i fallimenti specifici nei metodi. +Metodi ottimizzati: Tutti i metodi sono stati aggiornati per seguire la configurazione dell’intestazione e l’uso di CustomHttpClient. +* +* */ +@Component public class RestDelegation { - private static final Logger logger = LoggerFactory.getLogger("RestDelegation"); - final CustomHttpClient httpClientPF = CustomHttpClient.getInstance(); - final CustomHttpClient httpClientPG = CustomHttpClient.getInstance(); - - private static RestDelegation instance; - final private String env = System.getProperty("environment"); - final private String token = System.getProperty("token"); - private Map headers = new HashMap<>(); - - public static synchronized RestDelegation getInstance() { - if (instance == null) { - instance = new RestDelegation(); - } - return instance; + + private static final Logger logger = LoggerFactory.getLogger(RestDelegation.class); + + + + private WebDriverConfig webDriverConfig; + + private final Map headers = new HashMap<>(); + + private final CustomHttpClient httpClientPF; + private final CustomHttpClient httpClientPG; + + + + @Autowired + public RestDelegation( WebDriverConfig webDriverConfig, CustomHttpClient httpClientPF, CustomHttpClient httpClientPG) { + this.httpClientPF = httpClientPF; + this.httpClientPG = httpClientPG; + this.webDriverConfig = webDriverConfig; + initializeHeaders(); + setupHttpClients(); } - public RestDelegation() { - this.httpClientPF.setBaseUrlApi("https://webapi." + env + ".notifichedigitali.it"); + private void initializeHeaders() { + String token = System.getProperty("token"); if (token != null) { - this.headers.put("Authorization", token); + headers.put("Authorization", token); } else { logger.warn("Auth token non trovato, impossibile fare la richiesta HTTP in background!"); } } + private void setupHttpClients() { + String baseUrl = "https://webapi." + webDriverConfig.getEnvironment() + ".notifichedigitali.it"; + httpClientPF.setBaseUrlApi(baseUrl); + httpClientPG.setBaseUrlApi(baseUrl); + } + /** - * Add a new PF delegation + * Aggiunge una nuova delega PF. * - * @param delegateRequestPF DelegateRequest object with all the data - * @return DelegateResponse object with the response - * @throws RestDelegationException if there is an error during the request + * @param delegateRequestPF DelegateRequest con i dati della delega + * @param tokenExchange token per l'exchange JWT + * @return DelegateResponse con la risposta + * @throws RestDelegationException in caso di errore nella richiesta */ public DelegateResponsePF addDelegationPF(DelegateRequestPF delegateRequestPF, String tokenExchange) throws RestDelegationException { try { String jwtToken = httpClientPF.getJwtToken(tokenExchange); - this.headers.put("Authorization", "Bearer " + jwtToken); - DelegateResponsePF response = httpClientPF.sendHttpPostRequest("/mandate/api/v1/mandate", this.headers, delegateRequestPF, DelegateResponsePF.class); + headers.put("Authorization", "Bearer " + jwtToken); + DelegateResponsePF response = httpClientPF.sendHttpPostRequest("/mandate/api/v1/mandate", headers, delegateRequestPF, DelegateResponsePF.class); if (response != null) { - logger.info(String.valueOf(response)); + logger.info("Response: {}", response); return response; } } catch (IOException e) { - logger.error("Error during addDelegationPF", e); + logger.error("Errore durante addDelegationPF", e); + throw new RestDelegationException("Errore durante la richiesta di delega PF", e); } return null; } /** - * Add a new PG delegation + * Aggiunge una nuova delega PG. * - * @param delegateRequest DelegateRequest object with all the data - * @return DelegateResponse object with the response - * @throws RestDelegationException if there is an error during the request + * @param delegateRequest DelegateRequest con i dati della delega + * @param tokenExchange token per l'exchange JWT + * @return DelegateResponse con la risposta + * @throws RestDelegationException in caso di errore nella richiesta */ public DelegateResponsePG addDelegationPG(DelegateRequestPG delegateRequest, String tokenExchange) throws RestDelegationException { try { String jwtToken = httpClientPG.getJwtToken(tokenExchange); - this.headers.put("Authorization", "Bearer " + jwtToken); - DelegateResponsePG response = httpClientPG.sendHttpPostRequest("/mandate/api/v1/mandate", this.headers, delegateRequest, DelegateResponsePG.class); + headers.put("Authorization", "Bearer " + jwtToken); + DelegateResponsePG response = httpClientPG.sendHttpPostRequest("/mandate/api/v1/mandate", headers, delegateRequest, DelegateResponsePG.class); if (response != null) { - logger.info(String.valueOf(response)); + logger.info("Response: {}", response); return response; } } catch (IOException e) { - logger.error("Error during addDelegationPG", e); + logger.error("Errore durante addDelegationPG", e); + throw new RestDelegationException("Errore durante la richiesta di delega PG", e); } return null; } /** - * Revoke a PF delegation - *
- * Keep in mind this method works only for the annotation @After into Hooks.java, because there isn't a jwt token set - * if you don't invoke an "addDelegation" + * Revoca una delega. * - * @param mandateId String with the mandateId - * @throws RestDelegationException if there is an error during the request + * @param mandateId ID della delega da revocare + * @throws RestDelegationException in caso di errore nella richiesta */ public void revokeDelegation(String mandateId) throws RestDelegationException { try { - httpClientPF.sendHttpPatchRequest("/mandate/api/v1/mandate/" + mandateId + "/revoke", this.headers); + httpClientPF.sendHttpPatchRequest("/mandate/api/v1/mandate/" + mandateId + "/revoke", headers); + logger.info("Delega {} revocata con successo", mandateId); } catch (IOException e) { - logger.error("Error during revokeDelegation", e); + logger.error("Errore durante revokeDelegation", e); + throw new RestDelegationException("Errore durante la revoca della delega", e); } } /** - * Reject a delegation - *
- * Keep in mind this method works only for the annotation @After into Hooks.java, because there isn't a jwt token set - * if you don't invoke an "addDelegation" + * Rifiuta una delega. * - * @param mandateId String with the mandateId - * @throws RestDelegationException if there is an error during the request + * @param mandateId ID della delega da rifiutare + * @throws RestDelegationException in caso di errore nella richiesta */ public void rejectDelegation(String mandateId) throws RestDelegationException { try { - httpClientPG.sendHttpPatchRequest("/mandate/api/v1/mandate/" + mandateId + "/reject", this.headers); + httpClientPG.sendHttpPatchRequest("/mandate/api/v1/mandate/" + mandateId + "/reject", headers); + logger.info("Delega {} rifiutata con successo", mandateId); } catch (IOException e) { - logger.error("Error during rejectDelegation", e); + logger.error("Errore durante rejectDelegation", e); + throw new RestDelegationException("Errore durante il rifiuto della delega", e); } } + /** + * Ottiene le deleghe per il delegante corrente. + * + * @return lista di `DelegateResponsePF` con le deleghe + */ public List getDelegator() { try { - List response = httpClientPF.sendHttpGetRequestListDelegate("/mandate/api/v1/mandates-by-delegator", this.headers, DelegateResponsePF.class); + List response = httpClientPF.sendHttpGetRequestListDelegate("/mandate/api/v1/mandates-by-delegator", headers, DelegateResponsePF.class); if (response != null) { - logger.info(String.valueOf(response)); + logger.info("Response: {}", response); return response; } } catch (IOException e) { - logger.error("Error during getDelegator", e); + logger.error("Errore durante getDelegator", e); } return null; } diff --git a/src/main/java/it/pn/frontend/e2e/rest/RestIncident.java b/src/main/java/it/pn/frontend/e2e/rest/RestIncident.java index 0e2c80a6e..9e9adad8f 100644 --- a/src/main/java/it/pn/frontend/e2e/rest/RestIncident.java +++ b/src/main/java/it/pn/frontend/e2e/rest/RestIncident.java @@ -1,26 +1,37 @@ package it.pn.frontend.e2e.rest; import it.pn.frontend.e2e.config.CustomHttpClient; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.model.incidents.IncidentStatusResponse; import it.pn.frontend.e2e.model.incidents.NewIncidentRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +/*Modifiche principali +Iniezione delle dipendenze: @Autowired viene utilizzato per iniettare CustomHttpClient e WebDriverConfig. +Rimozione del Singleton: RestIncident è ora un @Component gestito da Spring, quindi non è necessario il metodo getInstance() o una gestione manuale dell'istanza. +Configurazione URL base: La configurazione dell'URL base è ora gestita nel costruttore per inizializzare httpClientIncident.*/ +@Component public class RestIncident { - private static final Logger logger = LoggerFactory.getLogger("RestIncident"); - final CustomHttpClient httpClientIncident = CustomHttpClient.getInstance(); - final private String env = System.getProperty("environment"); - private static RestIncident instance; + private static final Logger logger = LoggerFactory.getLogger(RestIncident.class); + + @Autowired + private CustomHttpClient httpClientIncident; + + @Autowired + private WebDriverConfig webDriverConfig; - public static synchronized RestIncident getInstance() { - if (instance == null) { - instance = new RestIncident(); - } - return instance; + @Autowired + public RestIncident(WebDriverConfig webDriverConfig) { + this.webDriverConfig = webDriverConfig; + setupHttpClient(); } - public RestIncident() { - this.httpClientIncident.setBaseUrlApi("https://api.bo." + env + ".notifichedigitali.it/"); + private void setupHttpClient() { + String baseUrl = "https://api.bo." + webDriverConfig.getEnvironment() + ".notifichedigitali.it/"; + httpClientIncident.setBaseUrlApi(baseUrl); + logger.info("Configured HTTP client for Incidents with base URL: {}", baseUrl); } } 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 7ba8e9789..fe762ca97 100644 --- a/src/main/java/it/pn/frontend/e2e/rest/RestNotification.java +++ b/src/main/java/it/pn/frontend/e2e/rest/RestNotification.java @@ -8,17 +8,21 @@ import it.pn.frontend.e2e.model.documents.PreLoadRequest; import it.pn.frontend.e2e.model.documents.PreLoadResponse; import lombok.extern.slf4j.Slf4j; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.io.File; import java.io.IOException; import java.util.List; @Slf4j +@Component public class RestNotification { public RestNotification() { } - + @Autowired + private CustomHttpClient customHttpClient; /** * Create a new notification with one recipient and one document * @@ -30,7 +34,7 @@ public NewNotificationResponse newNotificationWithOneRecipientAndDocument(NewNot final CustomHttpClient httpClient2 = new CustomHttpClient<>(); // Modifica qui try { NewNotificationResponse response = httpClient2.sendHttpPostRequest("/delivery/v2.3/requests", null, notification, NewNotificationResponse.class); - Assert.assertNotNull("Error during createNewNotification", response); + Assertions.assertNotNull( response,"Error during createNewNotification"); log.info(String.valueOf(response)); return response; } catch (IOException e) { @@ -53,27 +57,27 @@ public List preLoadDocument(List preLoadList) t } public void uploadDocument(String url, String secret, String sha256) throws RestNotificationException { - final CustomHttpClient httpClient2 = CustomHttpClient.getInstance(); + final CustomHttpClient httpClient2 = customHttpClient; try { httpClient2.sendHttpUpLoadPutRequest(url, secret, sha256, null); } catch (IOException e) { log.error("Error during document upload", e); - Assert.fail("Error during document upload" + e.getMessage()); + Assertions.fail("Error during document upload" + e.getMessage()); } } public void uploadDocumentF24(String url, String secret, String sha256, File metaDatiDocument) throws RestNotificationException { - final CustomHttpClient httpClient2 = CustomHttpClient.getInstance(); + final CustomHttpClient httpClient2 = customHttpClient; try { httpClient2.sendHttpUpLoadf24PutRequest(url, secret, sha256, null, metaDatiDocument); } catch (IOException e) { log.error("Error during F24 upload", e); - Assert.fail("Error during F24 upload" + e.getMessage()); + Assertions.fail("Error during F24 upload" + e.getMessage()); } } public LinkedTreeMap getNotificationStatus(String notificationRequestId) { - final CustomHttpClient httpClient2 = CustomHttpClient.getInstance(); // Modifica qui + final CustomHttpClient httpClient2 = customHttpClient; // Modifica qui httpClient2.setBaseUrlApi("https://api.test.notifichedigitali.it"); try { Object response = httpClient2.sendHttpGetRequest("/delivery/v2.3/requests?notificationRequestId=" + notificationRequestId, null, Object.class); diff --git a/src/main/java/it/pn/frontend/e2e/rest/RestRaddAlternative.java b/src/main/java/it/pn/frontend/e2e/rest/RestRaddAlternative.java index e422155d0..bcef2ba0c 100644 --- a/src/main/java/it/pn/frontend/e2e/rest/RestRaddAlternative.java +++ b/src/main/java/it/pn/frontend/e2e/rest/RestRaddAlternative.java @@ -1,59 +1,77 @@ package it.pn.frontend.e2e.rest; import it.pn.frontend.e2e.config.CustomHttpClient; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.model.radd.CompleteTransaction.CompleteTransactionRequest; import it.pn.frontend.e2e.model.radd.CompleteTransaction.CompleteTransactionResponse; import it.pn.frontend.e2e.model.radd.StartTransaction.StartTransactionRequest; import it.pn.frontend.e2e.model.radd.StartTransaction.StartTransactionResponse; import it.pn.frontend.e2e.model.singleton.NotificationSingleton; -import it.pn.frontend.e2e.utility.DataPopulation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; +/* + *Dettagli delle modifiche +Iniezione di NotificationSingleton e WebDriverConfig con @Autowired: Elimina la necessità di gestire manualmente le istanze, rendendo la classe più gestibile e scalabile. + +Logging degli errori: Per un'analisi degli errori migliorata, è stato aggiunto il logging dettagliato per gestire le eccezioni durante le richieste HTTP. + +Refactoring del costruttore: La variabile token è ora impostata tramite il costruttore e mantenuta come final per garantire che venga impostata solo una volta all'inizializzazione. + * + */ @Slf4j +@Component public class RestRaddAlternative { - NotificationSingleton notificationSingleton = NotificationSingleton.getInstance(); + private final Map headers = new HashMap<>(); - private final String token; - private final String env = System.getProperty("environment"); private final String uid = UUID.randomUUID().toString(); + private final String token; + + @Autowired + private NotificationSingleton notificationSingleton; + @Autowired + private WebDriverConfig webDriverConfig; public RestRaddAlternative(String token) { this.token = token; } public StartTransactionResponse startTransactionRaddAlternative(String tipoDestinatario, String codiceFiscale, String operationId) { - final CustomHttpClient httpClientStart = new CustomHttpClient<>(); - httpClientStart.setBaseUrlApi("https://api.radd."+ env + ".notifichedigitali.it"); - final StartTransactionRequest startTransactionRequest = new StartTransactionRequest(codiceFiscale,tipoDestinatario, notificationSingleton.getIun(Hooks.getScenario()),operationId); + CustomHttpClient httpClientStart = new CustomHttpClient<>(); + httpClientStart.setBaseUrlApi("https://api.radd." + webDriverConfig.getEnvironment() + ".notifichedigitali.it"); + StartTransactionRequest startTransactionRequest = new StartTransactionRequest(codiceFiscale, tipoDestinatario, notificationSingleton.getIun(HooksNew.getScenario()), operationId); + + headers.put("Authorization", this.token); + headers.put("uid", uid); try { - headers.put("Authorization", this.token); - headers.put("uid", uid); - StartTransactionResponse response = httpClientStart.sendHttpPostRequest("/radd-net/api/v1/act/transaction/start", headers, startTransactionRequest, StartTransactionResponse.class); - return response; + return httpClientStart.sendHttpPostRequest("/radd-net/api/v1/act/transaction/start", headers, startTransactionRequest, StartTransactionResponse.class); } catch (IOException e) { - throw new RuntimeException(e); + log.error("Errore nella richiesta di Start Transaction RADD", e); + throw new RuntimeException("Errore nella richiesta di Start Transaction RADD", e); } } public CompleteTransactionResponse completeTransactionRaddAlternative(String operationId) { - final CustomHttpClient httpClientComplete = new CustomHttpClient<>(); - final CompleteTransactionRequest completeTransactionRequest = new CompleteTransactionRequest(operationId); + CustomHttpClient httpClientComplete = new CustomHttpClient<>(); + CompleteTransactionRequest completeTransactionRequest = new CompleteTransactionRequest(operationId); + httpClientComplete.setBaseUrlApi("https://api.radd." + webDriverConfig.getEnvironment() + ".notifichedigitali.it"); - httpClientComplete.setBaseUrlApi("https://api.radd."+ env + ".notifichedigitali.it"); try { - CompleteTransactionResponse response = httpClientComplete.sendHttpPostRequest("/radd-net/api/v1/act/transaction/complete", headers, completeTransactionRequest, CompleteTransactionResponse.class); - return response; + return httpClientComplete.sendHttpPostRequest("/radd-net/api/v1/act/transaction/complete", headers, completeTransactionRequest, CompleteTransactionResponse.class); } catch (IOException e) { - throw new RuntimeException(e); + log.error("Errore nella richiesta di Complete Transaction RADD", e); + throw new RuntimeException("Errore nella richiesta di Complete Transaction RADD", e); } } -} +} \ No newline at end of file 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 7b35b09fb..1c8a08f68 100644 --- a/src/main/java/it/pn/frontend/e2e/section/CookiesSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/CookiesSection.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.section; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -11,7 +11,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class CookiesSection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("CookiesPage"); @@ -21,6 +24,7 @@ public class CookiesSection extends BasePage { @FindBy(xpath = "//button[@aria-label='Chiudi']") WebElement chiudiPagamentoPopupButton; + @Autowired public CookiesSection(WebDriver driver) { super(driver); } @@ -45,7 +49,7 @@ public void selezionaAccettaTuttiButton() { actions.moveToElement(this.accettaTuttiButton).click().perform(); } 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()); + Assertions.fail("Non è cliccabile il bottone accetta tutti i cookies" + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/HeaderPFSection.java b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/HeaderPFSection.java index 7d3809e03..4dca208eb 100644 --- a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/HeaderPFSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/HeaderPFSection.java @@ -1,7 +1,9 @@ package it.pn.frontend.e2e.section.destinatario.personaFisica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import it.pn.frontend.e2e.utility.WebTool; +import org.junit.jupiter.api.Assertions; +import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -9,9 +11,13 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.List; +@Component public class HeaderPFSection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("HeaderPFSection"); @@ -25,18 +31,26 @@ public class HeaderPFSection extends BasePage { @FindBy(xpath = "//ul[@role='menu']//li") List menuProfileItems; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public HeaderPFSection(WebDriver driver) { super(driver); } public void waitLoadHeaderDESection() { try { - this.getWebDriverWait(30).withMessage("il titolo del header non è visibile").until(ExpectedConditions.visibilityOf(titleLabel)); - this.getWebDriverWait(30).withMessage("menu dell'utente non è visibile").until(ExpectedConditions.visibilityOf(buttonProfile)); + webTool.waitTime(15); + titleLabel = driver.findElement(By.xpath("//a[@title='Sito di PagoPA S.p.A.']")); + buttonProfile = driver.findElement(By.xpath("//button[@aria-label='party-menu-button']")); + getWebDriverWait(30).withMessage("il titolo del header non è visibile").until(ExpectedConditions.visibilityOf(titleLabel)); + getWebDriverWait(30).withMessage("menu dell'utente non è visibile").until(ExpectedConditions.visibilityOf(buttonProfile)); logger.info("Header DE Section caricata"); } catch (TimeoutException e) { logger.error("Header DE Section non caricata con errore : " + e.getMessage()); - Assert.fail("Header DE Section non caricata con errore : " + e.getMessage()); + Assertions.fail("Header DE Section non caricata con errore : " + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/LeTueDelegheSection.java b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/LeTueDelegheSection.java index b5ada8dd0..f45e897e7 100644 --- a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/LeTueDelegheSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/LeTueDelegheSection.java @@ -2,7 +2,7 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -11,10 +11,14 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.time.LocalDate; import java.util.List; +@Component public class LeTueDelegheSection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("LeTueDelegheSection"); @@ -86,7 +90,11 @@ public class LeTueDelegheSection extends BasePage { @FindBy(xpath = "//tr[@data-testid='delegatorsTable.body.row']") List delegatorsTableRows; + @Autowired + @Lazy + private WebTool webTool; + @Autowired public LeTueDelegheSection(WebDriver driver) { super(driver); } @@ -101,7 +109,7 @@ public void waitNuovaDelegaSection() { logger.info("Le tue deleghe page caricata"); } catch (TimeoutException e) { logger.error("Le tue deleghe page non caricata con errore :" + e.getMessage()); - Assert.fail("Le tue deleghe page non caricata con errore :" + e.getMessage()); + Assertions.fail("Le tue deleghe page non caricata con errore :" + e.getMessage()); } } @@ -121,6 +129,8 @@ public void clickSulBottoneInviaRichiesta() { this.getWebDriverWait(10).withMessage("Invia richiesta button non è cliccabile o non trovato").until(ExpectedConditions.elementToBeClickable(this.inviaLaRichiestaButton)); logger.info("click su invia richiesta"); this.inviaLaRichiestaButton.click(); + webTool.waitTime(5); + tornaDelegheButton = driver.findElement(By.id("courtesy-page-button")); this.getWebDriverWait(10).withMessage("Torna deleghe button non è cliccabile o non è trovato").until(ExpectedConditions.elementToBeClickable(this.tornaDelegheButton)); this.tornaDelegheButton.click(); } @@ -193,12 +203,14 @@ public void messaggioDiErroreDelegaPresente() { logger.info("Il messaggio di errore viene visualizzato"); } catch (TimeoutException e) { logger.error("Il messaggio di errore NON viene visualizzato con errore: " + e.getMessage()); - Assert.fail("Il messaggio di errore NON viene visualizzato con errore: " + e.getMessage()); + Assertions.fail("Il messaggio di errore NON viene visualizzato con errore: " + e.getMessage()); } } public void clickOpzioneAccetta() { - this.accettaButton.click(); + webTool.waitTime(1); + By acceptDelegaButton = By.xpath("//*[@id='accept-button']"); + element(acceptDelegaButton).click(); } public void waitPopUpLoad() { @@ -208,7 +220,7 @@ public void waitPopUpLoad() { logger.info("Il pop-up per accettare la delega visualizzato correttamente"); } catch (TimeoutException e) { logger.error("Il pop-up per accettare la delega NON visualizzato correttamente con errore: " + e.getMessage()); - Assert.fail("Il pop-up per accettare la delega NON visualizzato correttamente con errore: " + e.getMessage()); + Assertions.fail("Il pop-up per accettare la delega NON visualizzato correttamente con errore: " + e.getMessage()); } } @@ -259,7 +271,7 @@ public void controlloStatoAttiva(String nome, String cognome) { logger.info("La delega ha lo stato Attiva"); } catch (TimeoutException e) { logger.error("La delega NON ha lo stato Attiva con errore: " + e.getMessage()); - Assert.fail("La delega NON ha lo stato Attiva con errore: " + e.getMessage()); + Assertions.fail("La delega NON ha lo stato Attiva con errore: " + e.getMessage()); } } @@ -278,7 +290,7 @@ public void controlloEsistenzaDelega(String nome, String cognome) { // logger.info("La delega con nome " + nome + " " + cognome + "è ancora presente"); } catch (TimeoutException e) { logger.error("La delega non è presente con errore: " + e.getMessage()); - Assert.fail("La delega non è presente con errore: " + e.getMessage()); + Assertions.fail("La delega non è presente con errore: " + e.getMessage()); } } @@ -350,12 +362,12 @@ public boolean verificaEsistenzaErroreCodiceSbagliato() { } public void checkIndicatoreNumerico(){ try { - WebTool.waitTime(10); + webTool.waitTime(10); By notificationNumber = By.xpath("//*[@data-testid='notifications']"); getWebDriverWait(5).withMessage("La notifica con il indicatore non è visibile").until(ExpectedConditions.visibilityOfElementLocated(notificationNumber)); }catch (RuntimeException e){ logger.error("Il indicatore numerico di notifica non è visibile"); - Assert.fail("Il indicatore numerico di notifica non è visibile"); + Assertions.fail("Il indicatore numerico di notifica non è visibile"); } } } diff --git a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/PopUpRevocaDelegaSection.java b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/PopUpRevocaDelegaSection.java index 671d5dbe2..8bd64abf3 100644 --- a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/PopUpRevocaDelegaSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaFisica/PopUpRevocaDelegaSection.java @@ -7,7 +7,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class PopUpRevocaDelegaSection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("RevocaDelegaSection"); @@ -16,7 +19,7 @@ public class PopUpRevocaDelegaSection extends BasePage { @FindBy(id = "dialog-action-button") WebElement revocaDialogAction; - + @Autowired public PopUpRevocaDelegaSection(WebDriver driver) { super(driver); } diff --git a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/AggiungiDelegaPGSection.java b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/AggiungiDelegaPGSection.java index 45d454979..0cc624c90 100644 --- a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/AggiungiDelegaPGSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/AggiungiDelegaPGSection.java @@ -2,20 +2,22 @@ import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; -import java.text.DateFormatSymbols; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; -import java.util.Locale; +@Component public class AggiungiDelegaPGSection extends BasePage { private final Logger logger = LoggerFactory.getLogger("AggiungiDelegaPGSection"); @@ -62,6 +64,10 @@ public class AggiungiDelegaPGSection extends BasePage { @FindBy(id = "expirationDate-helper-text") WebElement messaggioErroreData; + @Autowired + @Lazy + private WebTool webTool; + private boolean dataFineErrata; public AggiungiDelegaPGSection(WebDriver driver) { @@ -90,7 +96,7 @@ public void waitLoadAggiungiDelegaPage() { logger.info("Si visualizza correttamente la sezione Aggiungi una delega"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente la sezione Aggiungi una delega con errore: " + e.getMessage()); - Assert.fail("Non si visualizza correttamente la sezione Aggiungi una delega con errore: " + e.getMessage()); + Assertions.fail("Non si visualizza correttamente la sezione Aggiungi una delega con errore: " + e.getMessage()); } } @@ -99,6 +105,7 @@ public void clickSulBottoneInviaRichiesta() { this.getWebDriverWait(10).withMessage("Bottone invia la richiesta non visualizzato").until(ExpectedConditions.elementToBeClickable(this.inviaLaRichiestaButton)); logger.info("click invia richiesta"); this.inviaLaRichiestaButton.click(); + webTool.waitTime(3); this.getWebDriverWait(10).withMessage("Bottone torna alle deleghe non visualizzato").until(ExpectedConditions.elementToBeClickable(this.tornaDelegheButton)); this.tornaDelegheButton.click(); logger.info("click torna alle deleghe"); @@ -181,11 +188,11 @@ public boolean insertData(String dataInserita) { try { getWebDriverWait(10).withMessage("il campo data non è visibile nella pagina").until(ExpectedConditions.visibilityOf(this.dataTermineDelegaInput)); - WebTool.waitTime(15); + webTool.waitTime(15); dataTermineDelegaInput = getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(By.id("expirationDate"))); - WebTool.waitTime(10); + webTool.waitTime(10); String[] arraySplitDateDa = dataInserita.split("/"); List dataFieldList = driver.findElements(By.cssSelector(".MuiInputBase-input")); diff --git a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/DelegatiImpresaSection.java b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/DelegatiImpresaSection.java index 56f852732..312207bcb 100644 --- a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/DelegatiImpresaSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/DelegatiImpresaSection.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.section.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,9 +10,12 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; +@Component public class DelegatiImpresaSection extends BasePage { private final Logger logger = LoggerFactory.getLogger("DelegatiImpresaSection"); @@ -42,6 +45,7 @@ public class DelegatiImpresaSection extends BasePage { @FindBy(id = "notifications-table") WebElement tabelleDelleDelegheDellImpresa; + @Autowired public DelegatiImpresaSection(WebDriver driver) { super(driver); } @@ -53,7 +57,7 @@ public void waitLoadDelegatiImpresaPage() { logger.info("Delegati dall'impresa caricata correttamente"); } catch (TimeoutException e) { logger.error("Delegati dall'impresa non caricata correttamente con errore: " + e.getMessage()); - Assert.fail("Delegati dall'impresa non caricata correttamente con errore: " + e.getMessage()); + Assertions.fail("Delegati dall'impresa non caricata correttamente con errore: " + e.getMessage()); } } @@ -64,7 +68,7 @@ public void clickAggiungiDelegaButton() { this.addDelegheButton.click(); } catch (TimeoutException e) { logger.error("bottone non trovato: " + e.getMessage()); - Assert.fail("bottone non trovato: " + e.getMessage()); + Assertions.fail("bottone non trovato: " + e.getMessage()); } } @@ -84,7 +88,7 @@ public void controlloEsistenzaDelega(String ragioneSociale) { logger.info("Si visualizza la delega creata"); } catch (TimeoutException e) { logger.error("Non si visualizza correttamente la delega creata:"+e.getMessage()); - Assert.fail("Non si visualizza correttamente la delega creata:"+e.getMessage()); + Assertions.fail("Non si visualizza correttamente la delega creata:"+e.getMessage()); } } @@ -114,7 +118,7 @@ public void clickMenuDelega(String ragioneSociale) { logger.info("cliccato correttamente su menu delega button"); } catch (TimeoutException e) { logger.error("Menu delega button NON trovata con errore: " + e.getMessage()); - Assert.fail("Menu delega button NON trovata con errore: " + e.getMessage()); + Assertions.fail("Menu delega button NON trovata con errore: " + e.getMessage()); } } @@ -133,7 +137,7 @@ public void clickRevocaMenuButtonPG() { this.revocaMenuButton.click(); } catch (TimeoutException e) { logger.error("click sul bottone revoca non riuscito"); - Assert.fail("click sul bottone revoca non riuscito"); + Assertions.fail("click sul bottone revoca non riuscito"); } } @@ -146,7 +150,7 @@ public void waitPopUpRevoca(String ragionSociale) { logger.info("Il pop-up revoca si visualizza correttamente"); } catch (TimeoutException e) { logger.error("Il pop-up revoca NON si visualizza correttamente con errore: " + e.getMessage()); - Assert.fail("Il pop-up revoca NON si visualizza correttamente con errore: " + e.getMessage()); + Assertions.fail("Il pop-up revoca NON si visualizza correttamente con errore: " + e.getMessage()); } } @@ -158,7 +162,7 @@ public void esistenzaRevocaButton() { driver.navigate().refresh(); } catch(TimeoutException e){ logger.error("Bottone revoca non visualizzabile e non cliccabile con errore: " + e.getMessage()); - Assert.fail("Bottone revoca non visualizzabile e non cliccabile con errore: " + e.getMessage()); + Assertions.fail("Bottone revoca non visualizzabile e non cliccabile con errore: " + e.getMessage()); } } @@ -189,7 +193,7 @@ public void checkTabellaDelegheDellImpresa() { getWebDriverWait(10).withMessage("menu non caricato correttamente").until(ExpectedConditions.visibilityOfElementLocated(menuDelega)); }catch (TimeoutException e){ logger.error("tabella delegati dall imprese non caricata correttamente" + e.getMessage()); - Assert.fail("tabella delegati dall imprese non caricata correttamente" + e.getMessage()); + Assertions.fail("tabella delegati dall imprese non caricata correttamente" + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/HeaderPGSection.java b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/HeaderPGSection.java index a1b515443..e3243942f 100644 --- a/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/HeaderPGSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/destinatario/personaGiuridica/HeaderPGSection.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.section.destinatario.personaGiuridica; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,17 +10,22 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class HeaderPGSection extends BasePage { - private static final Logger logger = LoggerFactory.getLogger("HeaderPGSection"); + private static final Logger logger = LoggerFactory.getLogger(HeaderPGSection.class); - public HeaderPGSection(WebDriver driver) { + + @Autowired + public HeaderPGSection(WebDriver driver) { // Il costruttore ora usa l'annotazione @Autowired super(driver); } @FindBy(xpath = "//button[@title = 'Esci']") - WebElement esciButton; + private WebElement esciButton; public void waitLoadHeaderPGPage() { try { @@ -29,14 +34,13 @@ public void waitLoadHeaderPGPage() { getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(titlePageBy)); getWebDriverWait(30).until(ExpectedConditions.visibilityOfElementLocated(esciButtonBy)); logger.info("HeaderSectionPG caricata correttamente"); - } catch (TimeoutException e){ - logger.error("HeaderSectionPG non caricata correttamente con errrore: "+e.getMessage()); - Assert.fail("HeaderSectionPG non caricata correttamente con errrore: "+e.getMessage()); + } catch (TimeoutException e) { + logger.error("HeaderSectionPG non caricata correttamente con errore: " + e.getMessage()); + Assertions.fail("HeaderSectionPG non caricata correttamente con errore: " + e.getMessage()); } } public void clickEsciButton() { this.esciButton.click(); } - -} +} \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/AllegatiPASection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/AllegatiPASection.java index 330eef81b..8ed8fb86b 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/AllegatiPASection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/AllegatiPASection.java @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.section.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,9 +10,11 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; - +@Component public class AllegatiPASection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("AllegatiSection"); @@ -33,6 +35,7 @@ public class AllegatiPASection extends BasePage { @FindBy(id = "step-submit") WebElement inviaButton; + @Autowired public AllegatiPASection(WebDriver driver) { super(driver); } @@ -44,7 +47,7 @@ public void waitLoadAllegatiPASection() { logger.info("Allegati PA Section caricata"); }catch (TimeoutException e){ logger.error("Allegati PA Section non caricata con errore: "+e.getMessage()); - Assert.fail("Allegati PA Section non caricata con errore: "+e.getMessage()); + Assertions.fail("Allegati PA Section non caricata con errore: "+e.getMessage()); } } @@ -116,7 +119,7 @@ public void selectInviaButton() { logger.info("click avvenuto con successo su invio allegati"); }catch (TimeoutException e) { logger.error("click non avvenuto con successo su invio allegati con errore: "+e.getMessage()); - Assert.fail("click non avvenuto con successo su invio allegati con errore: "+e.getMessage()); } + Assertions.fail("click non avvenuto con successo su invio allegati con errore: "+e.getMessage()); } } public boolean verificaMessaggioErrore() { 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 cbb474057..fb2f83323 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 @@ -1,16 +1,19 @@ package it.pn.frontend.e2e.section.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; +@Component public class DestinatarioPASection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("DestinatarioPASection"); @@ -79,6 +82,7 @@ public class DestinatarioPASection extends BasePage { @FindBy(id = "add-digital-domicile") WebElement checkDomicilioDigitale; + @Autowired public DestinatarioPASection(WebDriver driver) { super(driver); } @@ -104,7 +108,7 @@ public void waitLoadDestinatarioPASection() { logger.info("Destinatario PA Section caricata "); } catch (TimeoutException e) { logger.error("Destinatario PA Section non caricata con errore : " + e.getMessage()); - Assert.fail("Destinatario PA Section non caricata con errore : " + e.getMessage()); + Assertions.fail("Destinatario PA Section non caricata con errore : " + e.getMessage()); } } @@ -259,7 +263,7 @@ private void inserireInfoMultiDestinatario(String xpath, String nomeDestinatario this.scrollToElementClickAndInsertText(listaNomeDestinatariField.get(listaNomeDestinatariField.size() - 1), nomeDestinatario); } catch (TimeoutException e) { logger.error("Xpath non trovato con errore: " + e.getMessage()); - Assert.fail("Xpath non trovato con errore: " + e.getMessage()); + Assertions.fail("Xpath non trovato con errore: " + e.getMessage()); } } @@ -278,7 +282,7 @@ public void waitMessaggioErrore() { logger.info("I messaggi di errore vengono visualizzati correttamente"); } catch (TimeoutException e) { logger.error("Il messaggio di errore non viene visualizzato con errore: " + e.getMessage()); - Assert.fail("Il messaggio di errore non viene visualizzato con errore: " + e.getMessage()); + Assertions.fail("Il messaggio di errore non viene visualizzato con errore: " + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java index 3a748eb06..589792f7f 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/DettaglioNotificaMittenteSection.java @@ -5,12 +5,15 @@ import it.pn.frontend.e2e.utility.WebTool; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.io.File; import java.io.IOException; @@ -21,6 +24,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +@Component public class DettaglioNotificaMittenteSection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("DettaglioNotificaSection"); @@ -65,7 +69,14 @@ public class DettaglioNotificaMittenteSection extends BasePage { WebElement apiKeyField; private int numeriStatiNotifica; + @Autowired + PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public DettaglioNotificaMittenteSection(WebDriver driver) { super(driver); } @@ -151,7 +162,7 @@ public boolean controlloTestoFile(String nameFile, String testoDaControllare) { pdfFile.close(); } catch (IOException e) { logger.error("File non trovato con errore: " + e.getMessage()); - Assert.fail("File non trovato con errore: " + e.getMessage()); + Assertions.fail("File non trovato con errore: " + e.getMessage()); } return false; } @@ -178,7 +189,7 @@ public boolean controlloSHAFile(String nameFile) { pdfFile.close(); } catch (IOException e) { logger.error("File non trovato con errore: " + e.getMessage()); - Assert.fail("File non trovato con errore: " + e.getMessage()); + Assertions.fail("File non trovato con errore: " + e.getMessage()); } return false; } @@ -205,7 +216,7 @@ public void siVisualizzaPercorsoNotifica() { } } catch (NoSuchElementException e) { logger.error("TA_QA: L'elenco completo degli stati NON presente con errore: " + e.getMessage()); - Assert.fail("TA_QA: L'elenco completo degli stati NON presentecon errore: " + e.getMessage()); + Assertions.fail("TA_QA: L'elenco completo degli stati NON presentecon errore: " + e.getMessage()); } } @@ -229,7 +240,7 @@ public boolean controlloTestoFileCodiceIUN(String fileName, String codiceIUN) { pdfFile.close(); } catch (IOException e) { logger.error("File non trovato con errore: " + e.getMessage()); - Assert.fail("File non trovato con errore: " + e.getMessage()); + Assertions.fail("File non trovato con errore: " + e.getMessage()); } return false; @@ -254,7 +265,7 @@ public boolean controlloTestoFileData(String fileName, String testoDaControllare pdfFile.close(); } catch (IOException e) { logger.error("File non trovato con errore: " + e.getMessage()); - Assert.fail("File non trovato con errore: " + e.getMessage()); + Assertions.fail("File non trovato con errore: " + e.getMessage()); } return false; } @@ -296,7 +307,7 @@ public void clickLinkAttestazioneOpponibile(String nomeFile) { } } catch (TimeoutException e) { logger.error("Non riuscito ad trovare il link con errore: " + e.getMessage()); - Assert.fail("Non riuscito ad trovare il link con errore: " + e.getMessage()); + Assertions.fail("Non riuscito ad trovare il link con errore: " + e.getMessage()); } } @@ -307,7 +318,7 @@ public void verificaInvioPECInCorso() { logger.info("La pec è in stato invio in corso"); } catch (TimeoutException e) { logger.error("La pec NON è in stato invio in corso con errore: " + e.getMessage()); - Assert.fail("La pec NON è in stato invio in corso con errore: " + e.getMessage()); + Assertions.fail("La pec NON è in stato invio in corso con errore: " + e.getMessage()); } } @@ -327,11 +338,11 @@ public void checkNumeroFallimentiInvioViaPEC(int numeroFallimenti) { logger.info("L'invio della notifica è fallito questo numero di volte: " + invioPECFallitoList.size()); if (invioPECFallitoList.size() != numeroFallimenti) { logger.error("L'invio della notifica non è fallito " + numeroFallimenti + " volta/e"); - Assert.fail("L'invio della notifica non è fallito " + numeroFallimenti + " volta/e"); + Assertions.fail("L'invio della notifica non è fallito " + numeroFallimenti + " volta/e"); } } catch (TimeoutException e) { logger.error("NON è fallito l'invio della notifica: " + e.getMessage()); - Assert.fail("NON è fallito l'invio della notifica: " + e.getMessage()); + Assertions.fail("NON è fallito l'invio della notifica: " + e.getMessage()); } } @@ -342,7 +353,7 @@ public void checkStatoTimeline(String statoTimeline){ logger.info("stato timeline checkato con successo avvenuta"); } catch (TimeoutException e) { logger.error("checkato stato timeline non avvenuta con errore: " + e.getMessage()); - Assert.fail("checkato stato timeline non avvenuta con errore: " + e.getMessage()); + Assertions.fail("checkato stato timeline non avvenuta con errore: " + e.getMessage()); } } @@ -356,7 +367,7 @@ public void siCliccaSuAllegatoInTimeline(String xpath) { logger.info("allegato timeline trovato con successo"); } catch (TimeoutException e) { logger.error("allegato timeline trovato non con successo: " + e.getMessage()); - Assert.fail("allegato timeline trovato non con successo: " + e.getMessage()); + Assertions.fail("allegato timeline trovato non con successo: " + e.getMessage()); } } @@ -374,7 +385,7 @@ public void checkInvioADomicilioDiPiattaforma(String domicilioDiPiattaforma) { getWebDriverWait(10).withMessage("Non si visualizza l'invio della notifica al domicilio di piattaforma nella timeline").until(ExpectedConditions.visibilityOfElementLocated(invioDomicilioDiPiattaformaBy)); } catch (TimeoutException e) { logger.error("L'invio della notifica al domicilio di piattaforma indicato non viene effettuato con errore: " + e.getMessage()); - Assert.fail("L'invio della notifica al domicilio di piattaforma indicato non viene effettuato con errore: " + e.getMessage()); + Assertions.fail("L'invio della notifica al domicilio di piattaforma indicato non viene effettuato con errore: " + e.getMessage()); } } @@ -386,11 +397,11 @@ public void checkDoppioFallimentoInvioViaPEC(int numeroFallimenti) { logger.info("L'invio della notifica è fallito questo numero di volte: " + invioPECFallitoList.size()); if (invioPECFallitoList.size() != numeroFallimenti) { logger.error("L'invio della notifica non è fallito " + numeroFallimenti + " volta/e"); - Assert.fail("L'invio della notifica non è fallito " + numeroFallimenti + " volta/e"); + Assertions.fail("L'invio della notifica non è fallito " + numeroFallimenti + " volta/e"); } } catch (TimeoutException e) { logger.error("NON è fallito l'invio della notifica: " + e.getMessage()); - Assert.fail("NON è fallito l'invio della notifica: " + e.getMessage()); + Assertions.fail("NON è fallito l'invio della notifica: " + e.getMessage()); } } @@ -401,7 +412,7 @@ public void checkInvioRaccomandataSemplice() { logger.info("L'invio della notifica avviene via raccomandata semplice"); } catch (TimeoutException e) { logger.error("L'invio della notifica per raccomandata non viene visualizzato: " + e.getMessage()); - Assert.fail("L'invio della notifica per raccomandata non viene visualizzato: " + e.getMessage()); + Assertions.fail("L'invio della notifica per raccomandata non viene visualizzato: " + e.getMessage()); } } @@ -411,7 +422,7 @@ public void checkTentatoInvioADomicilioSpeciale(String domicilioSpeciale) { getWebDriverWait(10).withMessage("Non si visualizza l'invio della notifica al domicilio speciale nella timeline").until(ExpectedConditions.visibilityOfElementLocated(invioDomicilioSpecialeBy)); } catch (TimeoutException e) { logger.error("L'invio della notifica al domicilio speciale indicato non viene effettuato con errore: " + e.getMessage()); - Assert.fail("L'invio della notifica al domicilio speciale indicato non viene effettuato con errore: " + e.getMessage()); + Assertions.fail("L'invio della notifica al domicilio speciale indicato non viene effettuato con errore: " + e.getMessage()); } } @@ -432,7 +443,7 @@ public void checkAvvisoPagoPa() { getWebDriverWait(10).withMessage("Non si visualizza l'avviso PagoPA per il pagamento della notifica").until(ExpectedConditions.visibilityOfElementLocated(boxPagamento)); } catch (TimeoutException e) { logger.error("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); - Assert.fail("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); + Assertions.fail("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); } } @@ -466,7 +477,7 @@ public void clickAvvisoPagoPa() { this.element(avvisoPagoPa).click(); } catch (TimeoutException e) { logger.error("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); - Assert.fail("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); + Assertions.fail("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage()); } } @@ -484,7 +495,7 @@ public void checkBoxModelloF24() { getWebDriverWait(10).withMessage("Non si visualizza il box allegati modelli F24").until(ExpectedConditions.visibilityOfElementLocated(boxModelloF24)); } catch (TimeoutException e) { logger.error("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); - Assert.fail("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); + Assertions.fail("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage()); } } @@ -501,7 +512,7 @@ public void checkBoxPagamentoMultiDestinatario() { getWebDriverWait(10).withMessage("Non si visualizza l'input per la selezione del destinatario").until(ExpectedConditions.visibilityOf(selectMultiDestinatario)); } catch (TimeoutException e) { logger.error("Dettaglio notifica multi destinatario non ancora pagata visualizzata non correttamente con errore: " + e.getMessage()); - Assert.fail("Dettaglio notifica multi destinatario non ancora pagata visualizzata non correttamente con errore: " + e.getMessage()); + Assertions.fail("Dettaglio notifica multi destinatario non ancora pagata visualizzata non correttamente con errore: " + e.getMessage()); } } @@ -515,7 +526,7 @@ public void clickMultiDestinatario() { selectOption.get(0).click(); } catch (TimeoutException e) { logger.error("Non è stato possibile selezionare un destinatario con errore: " + e.getMessage()); - Assert.fail("Non è stato possibile selezionare un destinatario con errore: " + e.getMessage()); + Assertions.fail("Non è stato possibile selezionare un destinatario con errore: " + e.getMessage()); } } @@ -525,7 +536,7 @@ public void checkAttestazionePresaInCarico() { getWebDriverWait(10).withMessage("Non si visualizza attestazione opponibile a terzi notifica presa in carico").until(ExpectedConditions.visibilityOfElementLocated(attestazionePresaInCarico)); } catch (TimeoutException e) { logger.error("Attestazione opponibile a terzi notifica presa in carico non visualizzato correttamente con errore: " + e.getMessage()); - Assert.fail("Attestazione opponibile a terzi notifica presa in carico non visualizzato correttamente con errore: " + e.getMessage()); + Assertions.fail("Attestazione opponibile a terzi notifica presa in carico non visualizzato correttamente con errore: " + e.getMessage()); } } @@ -551,12 +562,12 @@ public void checkInvioMessaggioDiCortesia() { } catch (NoSuchElementException e) { logger.info("Dopo " + (i + 1) + " tentativi l'invio del messaggio al contatto di cortesia non è avvenuto"); } - WebTool.waitTime(15); + webTool.waitTime(15); driver.navigate().refresh(); } if (!testSuccess) { logger.error("L'invio del messaggio al contatto di cortesia non è avvenuto"); - Assert.fail("L'invio del messaggio al contatto di cortesia non è avvenuto"); + Assertions.fail("L'invio del messaggio al contatto di cortesia non è avvenuto"); } } @@ -576,19 +587,18 @@ public void insertIunSalvatoAndRicercaOnPage(String iun) { this.getWebDriverWait(30).withMessage("bottone per la ricerca non trovato").until(ExpectedConditions.elementToBeClickable(buttonRicerca)); buttonRicerca.click(); - WebTool.waitTime(3); + webTool.waitTime(3); } public void sceglieEnte(String nomeEnte){ logger.info("Si sceglie ente: " + nomeEnte); enteButton.click(); - WebTool.waitTime(1); + webTool.waitTime(1); By ente = By.xpath("//h6[contains(text(), '" + nomeEnte + "')]"); element(ente).click(); } public void ricercaNotificaConIunSalvato(String iun){ - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.inserimentoCodiceIUN(iun); piattaformaNotifichePage.selectFiltraNotificaButtonMittente(); } diff --git a/src/main/java/it/pn/frontend/e2e/section/mittente/GeneraApiKeySection.java b/src/main/java/it/pn/frontend/e2e/section/mittente/GeneraApiKeySection.java index 887b824a6..599967173 100644 --- a/src/main/java/it/pn/frontend/e2e/section/mittente/GeneraApiKeySection.java +++ b/src/main/java/it/pn/frontend/e2e/section/mittente/GeneraApiKeySection.java @@ -1,18 +1,22 @@ package it.pn.frontend.e2e.section.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class GeneraApiKeySection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("GeneraApiKeySection"); + @Autowired public GeneraApiKeySection(WebDriver driver) { super(driver); } @@ -25,7 +29,7 @@ public void waitLoadGeneraApiKey() { logger.info("Api Key caricata"); }catch (TimeoutException e){ logger.error("Genera Api Key NON caricata con errore : "+e.getMessage()); - Assert.fail("Genera Api Key NON caricata con errore : "+e.getMessage()); + Assertions.fail("Genera Api Key NON caricata con errore : "+e.getMessage()); } } } 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 d7cfca55a..44400d5f6 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 @@ -1,7 +1,8 @@ package it.pn.frontend.e2e.section.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import it.pn.frontend.e2e.utility.WebTool; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -10,7 +11,11 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; +@Component public class HeaderPASection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("HeaderPASection"); @@ -18,6 +23,11 @@ public class HeaderPASection extends BasePage { @FindBy(xpath = "//button[contains(text(),'Esci')]") WebElement esciButton; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public HeaderPASection(WebDriver driver) { super(driver); } @@ -29,18 +39,19 @@ public void waitLoadHeaderSection() { 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()); + Assertions.fail("Il titolo nel Header: 'Sito di PagoPA S.p.A.' non è caricato con errore : " + e.getMessage()); } } public void selezionaEsciButton() { try { + esciButton = driver.findElement(By.xpath("//button[contains(text(),'Esci')]")); getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(esciButton)); //this.js().executeScript("arguments[0].scrollIntoView(true);", this.esciButton); esciButton.click(); } catch (TimeoutException e) { logger.error("Il bottone esci non cliccabile con errore: " + e.getMessage()); - Assert.fail("Il bottone esci non cliccabile con errore: " + e.getMessage()); + Assertions.fail("Il bottone esci non cliccabile 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 ec9116ac5..3e8491710 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 @@ -1,8 +1,9 @@ package it.pn.frontend.e2e.section.mittente; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -11,9 +12,13 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.util.Map; +@Component public class InformazioniPreliminariPASection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("InformazioniPreliminariPASection"); @@ -39,6 +44,14 @@ public class InformazioniPreliminariPASection extends BasePage { @FindBy(xpath = "//input[@value='REGISTERED_LETTER_890']") WebElement registeredLetter890Button; + @Autowired + private WebDriverConfig webDriverConfig; + + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public InformazioniPreliminariPASection(WebDriver driver) { super(driver); } @@ -56,7 +69,7 @@ public void waitLoadInformazioniPreliminariPASection() { logger.info("Informazioni preliminari PA Section caricata"); } catch (TimeoutException e) { logger.error("Informazioni preliminari PA Section non caricata. L'elemento NumProtocollo, Ogetto, descrizione o codicetassonometrico non caricato con errore : " + e.getMessage()); - Assert.fail("Informazioni preliminari PA Section non caricata con errore : " + e.getMessage()); + Assertions.fail("Informazioni preliminari PA Section non caricata con errore : " + e.getMessage()); } } @@ -103,7 +116,7 @@ public void insertGruppo(String gruppo) { 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()); + Assertions.fail("gruppo " + gruppo + " NON trovato con errore : " + e.getMessage()); } } @@ -123,14 +136,14 @@ public void selectRegisteredLetter890() { } public void compilazioneInformazioniPreliminari(Map datiNotificaMap) { String gruppo = ""; - switch (System.getProperty("environment")) { + switch (webDriverConfig.getEnvironment()) { case "dev" -> gruppo = datiNotificaMap.get("gruppoDev"); case "test", "uat" -> gruppo = datiNotificaMap.get("gruppoTest"); } insertNumeroDiProtocollo(WebTool.generatePaProtocolNumber()); insertOggettoNotifica(datiNotificaMap.get("oggettoDellaNotifica")); insertDescrizione(datiNotificaMap.get("descrizione")); - WebTool.waitTime(2); + webTool.waitTime(2); insertGruppo(gruppo); insertCodiceTassonometrico(datiNotificaMap.get("codiceTassonometrico")); if (datiNotificaMap.get("modello").equals("AR")){ 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 863dd915f..950228b69 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 @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.section.mittente; import it.pn.frontend.e2e.common.BasePage; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -9,7 +9,10 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class SuccessPASection extends BasePage { private static final Logger logger = LoggerFactory.getLogger("SuccessPASection"); @@ -20,6 +23,7 @@ public class SuccessPASection extends BasePage { @FindBy(id = "title-sync-feedback") WebElement successCheckBy; + @Autowired public SuccessPASection(WebDriver driver) { super(driver); } @@ -30,7 +34,7 @@ public void waitLoadSuccessPASection() { 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()); + Assertions.fail("TA_QA: Il titolo della Success PA section non caricata con errore: " + e.getMessage()); } } diff --git a/src/main/java/it/pn/frontend/e2e/utility/CookieConfig.java b/src/main/java/it/pn/frontend/e2e/utility/CookieConfig.java index 3fbf851db..1f8babed0 100644 --- a/src/main/java/it/pn/frontend/e2e/utility/CookieConfig.java +++ b/src/main/java/it/pn/frontend/e2e/utility/CookieConfig.java @@ -1,24 +1,45 @@ package it.pn.frontend.e2e.utility; +import it.pn.frontend.e2e.config.WebDriverConfig; import org.openqa.selenium.Cookie; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.*; +@Component public class CookieConfig { private static final Logger logger = LoggerFactory.getLogger("CookieConfig"); - private static final String env = System.getProperty("environment"); + // @Autowired + // @Lazy + // private WebDriverConfig webDriverConfig; + // private static final String env = System.getProperty("environment"); private final Map> cookieMap; + @Value("${environment}") + private String environment; + @Value("${cookie.config}") + private String cookie; + + @Autowired public CookieConfig() { this.cookieMap = new HashMap<>(); } - public static boolean isCookieEnabled() { - String isCookieEnabled = System.getProperty("cookie.config"); + + + public boolean isCookieEnabled() { + //String isCookieEnabled = System.getProperty("cookie.config"); + logger.info("COOOKIE....: "); + logger.info("COOOKIE....: "+ cookie); + String isCookieEnabled = cookie; if (isCookieEnabled == null || isCookieEnabled.equals("false")) { logger.info("Cookies are disabled"); return false; @@ -31,6 +52,7 @@ public void addCookie() { // Check if the cookie property is enabled if (isCookieEnabled()) { // Based on the environment, the cookie is added to the map + String env = environment; switch (env) { case "test": this.setUpCookieTest(); diff --git a/src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java b/src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java index ab4810597..f9abc1dd4 100644 --- a/src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java +++ b/src/main/java/it/pn/frontend/e2e/utility/DataPopulation.java @@ -5,9 +5,11 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; import lombok.Setter; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + import java.io.File; import java.io.IOException; @@ -15,6 +17,7 @@ import java.util.HashMap; import java.util.Map; +@Component public class DataPopulation { private static final Logger logger = LoggerFactory.getLogger("DataPopulation"); @@ -49,7 +52,7 @@ public Map readDataPopulation(String dpFile) { return objectMapper.readValue(new File("src/test/resources/dataPopulation/" + dpFile), typeReference); } catch (IOException e) { logger.error(e.getMessage()); - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } return readValue; } @@ -60,7 +63,7 @@ public void writeDataPopulation(String dpFile, Map dp) { this.objectMapper.writeValue(new File("src/test/resources/dataPopulation/" + dpFile), dp); } catch (IOException e) { logger.error(e.getMessage()); - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } } } diff --git a/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java b/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java index 46bf7f97d..56673e724 100644 --- a/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java +++ b/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java @@ -3,157 +3,116 @@ import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; import it.pn.frontend.e2e.common.BasePage; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.listeners.NetWorkInfo; import org.apache.commons.io.FileUtils; import org.json.JSONArray; import org.json.JSONObject; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; -import java.util.List; - -import static it.pn.frontend.e2e.listeners.Hooks.netWorkInfos; - +import java.util.Optional; + +/* +Principali Miglioramenti: +try-with-resources: Per la gestione automatica delle risorse come BufferedInputStream e BufferedOutputStream. +Uso di Optional: Per evitare possibili null pointer exception e migliorare la sicurezza del codice. +Rimozione di variabili ridondanti: Ho migliorato la leggibilità del codice eliminando dichiarazioni di variabili duplicate e accorpando operazioni dove possibile. +stream() e findFirst(): Ho usato le Stream API di Java 8+ per migliorare la ricerca di elementi, riducendo il numero di cicli e rendendo il codice più leggibile. +Gestione delle eccezioni: Ho migliorato il tracciamento delle eccezioni, fornendo messaggi più descrittivi e chiari quando si verifica un errore. +* +* */ + +@Component public class DownloadFile extends BasePage { private static final Logger logger = LoggerFactory.getLogger("DownloadFile"); + @Autowired + private WebDriverConfig webDriverConfig; + + @Autowired public DownloadFile(WebDriver driver) { super(driver); } - BufferedInputStream input = null; - BufferedOutputStream bufferOut = null; - - public void download(String urlLink, File fileLoc, boolean healdess) { - if (healdess) { - try { - byte[] buffer = new byte[1024]; - double TotalDownload = 0.00; - int readbyte = 0; //Stores the number of bytes written in each iteration. - double percentOfDownload = 0.00; - URL url = new URL(urlLink); - HttpURLConnection http = (HttpURLConnection) url.openConnection(); - double filesize = (double) http.getContentLengthLong(); - - http.setRequestProperty("Authorization", getBearerSessionToken()); - - BufferedInputStream input = new BufferedInputStream(http.getInputStream()); - FileOutputStream outputFile = new FileOutputStream(fileLoc); + public void download(String urlLink, File fileLoc, boolean headless) { + if (headless) { + downloadInHeadlessMode(urlLink, fileLoc); + } else { + downloadInNonHeadlessMode(fileLoc); + } + } - while ((readbyte = input.read(buffer, 0, 1024)) >= 0) { + private void downloadInHeadlessMode(String urlLink, File fileLoc) { + try (var outputFile = new FileOutputStream(fileLoc); + var input = new BufferedInputStream(new URL(urlLink).openStream()); + var bufferOut = new BufferedOutputStream(outputFile, 1024)) { + + var http = (HttpURLConnection) new URL(urlLink).openConnection(); + http.setRequestProperty("Authorization", getBearerSessionToken()); + byte[] buffer = new byte[1024]; + double totalDownload = 0.00; + int bytesRead; + double fileSize = (double) http.getContentLengthLong(); + + while ((bytesRead = input.read(buffer, 0, 1024)) >= 0) { + bufferOut.write(buffer, 0, bytesRead); + totalDownload += bytesRead; + double percentOfDownload = (totalDownload * 100) / fileSize; + logger.info("Downloaded {}%", String.format("%.2f", percentOfDownload)); + } + logger.info("Your download is now complete."); - bufferOut = new BufferedOutputStream(outputFile, 1024); - while ((readbyte = input.read(buffer, 0, 1024)) >= 0) { - //Writing the content onto the file. - bufferOut.write(buffer, 0, readbyte); - //TotalDownload is the total bytes written onto the file. - TotalDownload += readbyte; - //Calculating the percentage of download. - percentOfDownload = (TotalDownload * 100) / filesize; - //Formatting the percentage up to 2 decimal points. - String percent = String.format("%.2f", percentOfDownload); - System.out.println("Downloaded " + percent + "%"); - } + } catch (IOException e) { + throw new RuntimeException("Error downloading file in headless mode", e); + } + } - System.out.println("Your download is now complete."); - bufferOut.flush(); - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - bufferOut.close(); - input.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - } else { - try { - String url = this.driver.getCurrentUrl(); - URL urlPDF = new URL(this.driver.getCurrentUrl()); - File pdf = new File(fileLoc.getAbsolutePath()); - FileUtils.copyURLToFile(urlPDF, pdf, 1000, 1000); - } catch (IOException e) { - throw new RuntimeException(e); - } + private void downloadInNonHeadlessMode(File fileLoc) { + try { + URL url = new URL(driver.getCurrentUrl()); + FileUtils.copyURLToFile(url, fileLoc, 1000, 1000); + } catch (IOException e) { + throw new RuntimeException("Error downloading file in non-headless mode", e); } } public void downloadAttestazioneDisservizi(String urlLink, File fileLoc, boolean headless) throws IOException { if (headless) { - try { - byte[] buffer = new byte[1024]; - double totalDownload = 0.00; - int readBytes; // Stores the number of bytes read in each iteration. - double percentOfDownload = 0.00; - - URL url = new URL(urlLink); - HttpURLConnection http = (HttpURLConnection) url.openConnection(); - - http.setRequestProperty("Authorization", getBearerSessionToken(".notifichedigitali.it/bff/v1/downtime/history?")); - double fileSize = (double) http.getContentLengthLong(); - - BufferedInputStream input = new BufferedInputStream(http.getInputStream()); - FileOutputStream output = new FileOutputStream(fileLoc); - BufferedOutputStream bufferOut = new BufferedOutputStream(output, 1024); - - while ((readBytes = input.read(buffer, 0, 1024)) >= 0) { - // Writing the content onto the file. - bufferOut.write(buffer, 0, readBytes); - // TotalDownload is the total bytes written onto the file. - totalDownload += readBytes; - // Calculating the percentage of download. - percentOfDownload = (totalDownload * 100) / fileSize; - // Formatting the percentage up to 2 decimal points. - String percent = String.format("%.2f", percentOfDownload); - System.out.println("Downloaded " + percent + "%"); - } - - System.out.println("Your download is now complete."); - - // Closing streams - bufferOut.close(); - input.close(); - } catch (IOException e) { - e.printStackTrace(); - } + downloadInHeadlessMode(urlLink, fileLoc); } else { try { URL url = new URL(urlLink); FileUtils.copyURLToFile(url, fileLoc, 1000, 1000); } catch (IOException e) { - throw new RuntimeException(e); + throw new RuntimeException("Error downloading attestazione disservizi", e); } } } public void controlloDownload(String path, int numberOfFile) { File directory = new File(path); + File[] fList = Optional.ofNullable(directory.listFiles(File::isFile)) + .orElse(new File[]{}); - File[] fList = directory.listFiles(File::isFile); - - if (fList != null && fList.length != 0) { + if (fList.length != 0) { for (File file : fList) { - if (file.getName().endsWith(".pdf")) { - String filename = file.getName(); - boolean result = file.delete(); - if (result) { - logger.info("File: " + filename + " è stato scaricato e eliminato "); - } + if (file.getName().endsWith(".pdf") && file.delete()) { + logger.info("File: {} è stato scaricato e eliminato", file.getName()); } } } else { - logger.error("File non scaricato o non completo numberOfFile=" + numberOfFile); - Assert.fail("File non scaricato"); + logger.error("File non scaricato o non completo numberOfFile={}", numberOfFile); + Assertions.fail("File non scaricato"); } } @@ -162,32 +121,25 @@ public boolean controlloEsistenzaCartella(File cartella) { } public String getUrl(String urlChiamata) { - String url = ""; - for (NetWorkInfo netWorkInfo : netWorkInfos) { - if (netWorkInfo.getRequestUrl().contains(urlChiamata) && netWorkInfo.getRequestMethod().equals("GET")) { - if (!netWorkInfo.getResponseStatus().equals("200")) { - logger.error("La chiamata " + netWorkInfo.getRequestUrl() + "ha risposto con questo codice: " + netWorkInfo.getResponseStatus()); - } - String values = netWorkInfo.getResponseBody(); - List results = Splitter.on(CharMatcher.anyOf(",;:")).splitToList(values); - - for (String result : results) { - if (result.startsWith("//")) { - url = result; - break; - } - } - if (url.endsWith("}")) { - url = "https:" + url.substring(0, url.length() - 2); - } else { - url = "https:" + url.substring(0, url.length() - 1); - } - logger.info("url: " + url); - } - } + String url = webDriverConfig.getNetWorkInfos().stream() + .filter(netWorkInfo -> netWorkInfo.getRequestUrl().contains(urlChiamata) && + netWorkInfo.getRequestMethod().equals("GET") && + netWorkInfo.getResponseStatus().equals("200")) + .map(NetWorkInfo::getResponseBody) + .flatMap(values -> Splitter.on(CharMatcher.anyOf(",;:")).splitToList(values).stream()) + .filter(result -> result.startsWith("//")) + .findFirst() + .orElse(""); + if (url.isEmpty()) { - logger.error("Non è stata trovata la chiamata " + urlChiamata); + logger.error("Non è stata trovata la chiamata {}", urlChiamata); + } else if (url.endsWith("}")) { + url = "https:" + url.substring(0, url.length() - 2); + } else { + url = "https:" + url.substring(0, url.length() - 1); } + + logger.info("URL: {}", url); return url; } @@ -199,20 +151,19 @@ public String getLegalFactId() { con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Authorization", getBearerSessionToken(".notifichedigitali.it/bff/v1/downtime/history?")); - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer response = new StringBuffer(); - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } - in.close(); + try (var in = new BufferedReader(new InputStreamReader(con.getInputStream()))) { + StringBuilder response = new StringBuilder(); + String inputLine; + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } - JSONObject jsonResponse = new JSONObject(response.toString()); - JSONArray resultArray = jsonResponse.getJSONArray("result"); - if (!resultArray.isEmpty()) { - JSONObject firstResult = resultArray.getJSONObject(0); - return firstResult.getString("legalFactId"); + JSONArray resultArray = new JSONObject(response.toString()).getJSONArray("result"); + if (!resultArray.isEmpty()) { + return resultArray.getJSONObject(0).getString("legalFactId"); + } } + } catch (Exception e) { throw new RuntimeException("Failed to fetch legalFactId", e); } @@ -220,30 +171,22 @@ public String getLegalFactId() { } private String getBearerSessionToken() { - List netWorkInfos = Hooks.netWorkInfos; - String bearerToken = ""; - for (NetWorkInfo netWorkInfo : netWorkInfos) { - String variabileAmbiente = System.getProperty("environment"); - String urlChiamata = "https://webapi." + variabileAmbiente + ".notifichedigitali.it/delivery/notifications/received?"; - if (netWorkInfo.getRequestUrl().contains(urlChiamata)) { - bearerToken = netWorkInfo.getAuthorizationBearer(); - } - } - return bearerToken; + String environment = webDriverConfig.getEnvironment(); + String urlChiamata = "https://webapi." + environment + ".notifichedigitali.it/delivery/notifications/received?"; + return webDriverConfig.getNetWorkInfos().stream() + .filter(netWorkInfo -> netWorkInfo.getRequestUrl().contains(urlChiamata)) + .map(NetWorkInfo::getAuthorizationBearer) + .findFirst() + .orElse(""); } private String getBearerSessionToken(String url) { - List netWorkInfos = Hooks.netWorkInfos; - String bearerToken = ""; - for (NetWorkInfo netWorkInfo : netWorkInfos) { - logger.info(bearerToken = netWorkInfo.getAuthorizationBearer()); - String variabileAmbiente = System.getProperty("environment"); - String urlChiamata = "https://webapi." + variabileAmbiente + url; - if (netWorkInfo.getRequestUrl().contains(urlChiamata)) { - bearerToken = netWorkInfo.getAuthorizationBearer(); - } - } - return bearerToken; + String environment = webDriverConfig.getEnvironment(); + String urlChiamata = "https://webapi." + environment + url; + return webDriverConfig.getNetWorkInfos().stream() + .filter(netWorkInfo -> netWorkInfo.getRequestUrl().contains(urlChiamata)) + .map(NetWorkInfo::getAuthorizationBearer) + .findFirst() + .orElse(""); } } - diff --git a/src/main/java/it/pn/frontend/e2e/utility/NotificationBuilder.java b/src/main/java/it/pn/frontend/e2e/utility/NotificationBuilder.java index 417671e56..4147885a3 100644 --- a/src/main/java/it/pn/frontend/e2e/utility/NotificationBuilder.java +++ b/src/main/java/it/pn/frontend/e2e/utility/NotificationBuilder.java @@ -13,7 +13,9 @@ import it.pn.frontend.e2e.rest.RestNotification; import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.io.*; import java.security.MessageDigest; @@ -24,10 +26,12 @@ import java.util.Map; @Slf4j +@Component public class NotificationBuilder { public static final String APPLICATION_PDF = "application/pdf"; public static final String APPLICATION_JSON = "application/json"; - private final RestNotification restNotification = new RestNotification(); + @Autowired + private RestNotification restNotification; @Getter private String sha; @@ -91,7 +95,7 @@ public ArrayList preloadPagoPaPayment(ArrayList preLoadRequestList = new ArrayList<>(); preLoadRequestList.add(preLoadRequest); List response = restNotification.preLoadDocument(preLoadRequestList); - Assert.assertNotNull("La chiamata per il preload del documento non è andata a buon fine", response); + Assertions.assertNotNull(response,"La chiamata per il preload del documento non è andata a buon fine"); log.info("PreLoad del documento effettuato con successo"); if (costiNotifica.equalsIgnoreCase("false")) { PagoPaPayment avvisoPagoPa = new PagoPaPayment(WebTool.generateNoticeCodeNumber(), sha256, response.get(0).getKey(), "v1", false); @@ -123,7 +127,7 @@ public ArrayList preloadF24Payment(ArrayList preLoadRequestList = new ArrayList<>(); preLoadRequestList.add(preLoadRequest); List response = restNotification.preLoadDocument(preLoadRequestList); - Assert.assertNotNull("La chiamata per il preload dell'F24 non è andata a buon fine", response); + Assertions.assertNotNull(response,"La chiamata per il preload dell'F24 non è andata a buon fine"); log.info("PreLoad dell'F24 effettuato con successo"); if (costiNotifica.equalsIgnoreCase("false")) { F24Payment f24 = new F24Payment(sha256, response.get(0).getKey(), "v1", false); @@ -152,7 +156,7 @@ public ArrayList preloadDocument(int numeroDocumenti) { List sha256List = new ArrayList<>(); listForPreloadPopulation(numeroDocumenti, sha256List, preLoadRequestList); List response = restNotification.preLoadDocument(preLoadRequestList); - Assert.assertNotNull("La chiamata per il preload del documento non è andata a buon fine", response); + Assertions.assertNotNull(response,"La chiamata per il preload del documento non è andata a buon fine"); log.info("PreLoad del documento effettuato con successo"); ArrayList documents = new ArrayList<>(); for (int i = 0; i < numeroDocumenti; i++) { @@ -180,7 +184,7 @@ public String computeSha256(String resName) { return computeSha256(stream); } catch (IOException e) { log.error("Il preload non è andato a buon fine con errore: {}", e.getMessage()); - Assert.fail("Il preload non è andato a buon fine con errore: " + e.getMessage()); + Assertions.fail("Il preload non è andato a buon fine con errore: " + e.getMessage()); return null; } } diff --git a/src/main/java/it/pn/frontend/e2e/utility/WebTool.java b/src/main/java/it/pn/frontend/e2e/utility/WebTool.java index 16452a211..054b77e6c 100644 --- a/src/main/java/it/pn/frontend/e2e/utility/WebTool.java +++ b/src/main/java/it/pn/frontend/e2e/utility/WebTool.java @@ -1,7 +1,7 @@ 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.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.HooksNew; 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; @@ -10,86 +10,99 @@ import it.pn.frontend.e2e.section.destinatario.personaGiuridica.HeaderPGSection; import it.pn.frontend.e2e.section.mittente.HeaderPASection; import lombok.extern.slf4j.Slf4j; -import lombok.Getter; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.JavascriptExecutor; -import org.openqa.selenium.WebDriver; - +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.Date; -import java.util.List; import java.util.Random; import java.util.Set; import java.util.concurrent.TimeUnit; @Slf4j +@Component public class WebTool { + + @Autowired + @Lazy + private WebDriverConfig webDriverConfig; + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private HeaderPASection headerPASection; + @Autowired + private HeaderPFSection headerPFSection; + @Autowired + private HeaderPGSection headerPGSection; + @Autowired + private NotifichePFPage notifichePFPage; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private CookiesSection cookiesSection; + private static final Integer NOTICE_CODE_LENGTH = 18; - private static final WebDriver driver = Hooks.driver; - private final List netWorkInfos = Hooks.netWorkInfos; - private final String env = System.getProperty("environment"); + //private final String env1 = System.getProperty("environment"); - @Getter - private static final String apiBaseUrl = System.getProperty("apiBaseUrl"); + //@Getter + //private static final String apiBaseUrl = System.getProperty("apiBaseUrl"); - public static String switchToPortal(AppPortal portal) { + public String switchToPortal(AppPortal portal) { openNewTab(); switch (portal) { case PA -> { - driver.get(portal.url); - HeaderPASection headerPASection = new HeaderPASection(driver); + hooks.getDriver().get(portal.url); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); } case PF -> { - driver.get(portal.url); - HeaderPFSection headerPFSection = new HeaderPFSection(driver); + hooks.getDriver().get(portal.url); headerPFSection.waitLoadHeaderDESection(); - NotifichePFPage notifichePFPage = new NotifichePFPage(driver); notifichePFPage.waitLoadNotificheDEPage(); } case PG -> { - driver.get(portal.url); - HeaderPGSection headerPGSection = new HeaderPGSection(driver); + hooks.getDriver().get(portal.url); headerPGSection.waitLoadHeaderPGPage(); } case HELPDESK -> { - driver.get(portal.url); + hooks.getDriver().get(portal.url); } default -> { log.error("Tipologia di portale non specificato o errato!"); - Assert.fail("Tipologia di portale non specificato o errato!"); + Assertions.fail("Tipologia di portale non specificato o errato!"); } } - CookiesSection cookiesPage = new CookiesSection(driver); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } - return driver.getWindowHandle(); + return hooks.getDriver().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 void openNewTab() { + ((JavascriptExecutor) hooks.getDriver()).executeScript("window.open()"); + String newTab = hooks.getDriver().getWindowHandles().stream().reduce((first, second) -> second).orElse(null); + hooks.getDriver().switchTo().window(newTab); } - public static void closeTab() { + public void closeTab() { log.info("Si chiude la scheda corrente"); - driver.close(); - String newTab = driver.getWindowHandles().stream().reduce((first, second) -> second).orElse(null); - driver.switchTo().window(newTab); + hooks.getDriver().close(); + String newTab = hooks.getDriver().getWindowHandles().stream().reduce((first, second) -> second).orElse(null); + hooks.getDriver().switchTo().window(newTab); } - public static void switchToOtherTab(){ - String parentWindowHandle = driver.getWindowHandle(); - Set windowHandles = driver.getWindowHandles(); + public void switchToOtherTab(){ + String parentWindowHandle = hooks.getDriver().getWindowHandle(); + Set windowHandles = hooks.getDriver().getWindowHandles(); for (String handle : windowHandles) { if (!handle.equals(parentWindowHandle)) { - driver.switchTo().window(handle); + hooks.getDriver().switchTo().window(handle); break; } } @@ -134,7 +147,7 @@ public static String decodeNotificationRequestId(String NotificationRequestId) { * * @param seconds the number of seconds to wait */ - public static void waitTime(int seconds) { + public void waitTime(int seconds) { try { int minutes; int remainingSeconds; 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 be62bae88..96daae019 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 @@ -11,13 +11,16 @@ import org.apache.hc.core5.http.HttpHeaders; import org.apache.hc.core5.http.io.entity.EntityUtils; import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.io.IOException; import java.util.List; +@Component public class AccettazioneRichiestaNotifica { private static final Logger logger = LoggerFactory.getLogger("AccettazioneRichiestaNotifica"); @@ -33,6 +36,10 @@ public class AccettazioneRichiestaNotifica { private int responseCode; + @Autowired + public AccettazioneRichiestaNotifica() { + } + public boolean runGetRichiestaNotifica() { try { CloseableHttpClient httpclient = HttpClients.createDefault(); @@ -56,7 +63,7 @@ public boolean runGetRichiestaNotifica() { }); } catch (IOException e) { - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } return this.responseBody != null; } diff --git a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidAcsMittente.java b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidAcsMittente.java index 4040607eb..4692cc7fe 100644 --- a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidAcsMittente.java +++ b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidAcsMittente.java @@ -12,9 +12,9 @@ import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpHeaders; import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Assert; import java.io.IOException; import java.util.HashMap; @@ -62,7 +62,7 @@ public void runSpidAcs(){ }); }catch (IOException e){ - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } } diff --git a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidLoginMittente.java b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidLoginMittente.java index aff099fd5..cb78c3f6f 100644 --- a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidLoginMittente.java +++ b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidLoginMittente.java @@ -10,9 +10,11 @@ import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Assert; + + import java.io.IOException; public class SpidLoginMittente { @@ -46,7 +48,7 @@ public void runSpidLoginMittente() { httpclient.execute(httpGet, context, response -> { logger.info(response.getCode() + " " + response.getReasonPhrase()); - Assert.assertEquals(this.getSpidLoginMittenteEndPoint() + " risponde con : " + response.getCode(), response.getCode(), 200); + Assertions.assertEquals(response.getCode(), 200); final HttpEntity entity = response.getEntity(); this.responseBody = EntityUtils.toString(entity); this.cookieName = context.getCookieStore().getCookies().get(0).getName(); @@ -58,7 +60,7 @@ public void runSpidLoginMittente() { }); } catch (IOException e) { - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } } diff --git a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoContinueResponse.java b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoContinueResponse.java index 83c3564c4..beece3c3b 100644 --- a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoContinueResponse.java +++ b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoContinueResponse.java @@ -12,9 +12,9 @@ import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Assert; import java.io.IOException; import java.util.List; @@ -57,7 +57,7 @@ public void runSpidTestEnvWestEuropeAzureContainerIoContinueResponse(){ logger.info(cookie.getPath()); logger.info(String.valueOf(cookie.isHttpOnly())); } - Assert.assertEquals( this.spidTestEnvWestEuropeAzureContainerIoContinueResponseEndPoint +" risponde con : "+classicHttpResponse.getCode(),classicHttpResponse.getCode(),200); + Assertions.assertEquals( classicHttpResponse.getCode(),200); final HttpEntity entity = classicHttpResponse.getEntity(); String resultContent = EntityUtils.toString(entity); logger.info(resultContent); diff --git a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoLogin.java b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoLogin.java index 740d539ed..ca2bd16e0 100644 --- a/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoLogin.java +++ b/src/test/java/it/pn/frontend/e2e/api/mittente/SpidTestEnvWestEuropeAzureContainerIoLogin.java @@ -12,9 +12,10 @@ import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Assert; + import java.io.IOException; import java.util.List; @@ -77,7 +78,7 @@ public void runSpidTestEnvWestEuropeAzureContainerIoLogin(){ logger.info(cookie.getPath()); logger.info(String.valueOf(cookie.isHttpOnly())); } - Assert.assertEquals(this.spidTestEnvWestEuropeAzureContainerIoLoginEndPoint +" risponde con : "+classicHttpResponse.getCode(), classicHttpResponse.getCode(),200); + Assertions.assertEquals(classicHttpResponse.getCode(),200); final HttpEntity entity = classicHttpResponse.getEntity(); String resultContent = EntityUtils.toString(entity); logger.info(resultContent); diff --git a/src/test/java/it/pn/frontend/e2e/api/personaFisica/RecuperoOTPRecapiti.java b/src/test/java/it/pn/frontend/e2e/api/personaFisica/RecuperoOTPRecapiti.java index 561682292..1de86ed55 100644 --- a/src/test/java/it/pn/frontend/e2e/api/personaFisica/RecuperoOTPRecapiti.java +++ b/src/test/java/it/pn/frontend/e2e/api/personaFisica/RecuperoOTPRecapiti.java @@ -10,10 +10,13 @@ import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.io.IOException; @Data +@Component public class RecuperoOTPRecapiti { private static final Logger logger = LoggerFactory.getLogger("RecuperoOTPRecapiti"); @@ -23,6 +26,10 @@ public class RecuperoOTPRecapiti { private String responseBody; private int responseCode; + @Autowired + public RecuperoOTPRecapiti() { + } + public boolean runRecuperoOTPRecapiti(String url) { try { CloseableHttpClient httpClient = HttpClients.createDefault(); diff --git a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidAcs.java b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidAcs.java index 552a83e2b..f72faceba 100644 --- a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidAcs.java +++ b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidAcs.java @@ -6,7 +6,7 @@ import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpHeaders; import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,7 +52,7 @@ public void runSpidAcs(){ return hm; }); }catch (IOException e){ - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } } diff --git a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoLogin.java b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoLogin.java index 89868d56d..b2cf4837a 100644 --- a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoLogin.java +++ b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoLogin.java @@ -9,9 +9,9 @@ import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Assert; import java.io.IOException; public class SpidDemoLogin { @@ -76,14 +76,14 @@ public void runSpidDemoLogin(){ .build(); this.responseBody = httpclient.execute(httpPost, classicHttpResponse -> { logger.info(classicHttpResponse.getCode() + " " + classicHttpResponse.getReasonPhrase()); - Assert.assertEquals(this.getSpidDemoLoginEndPoint()+" risponde con : "+classicHttpResponse.getCode(),classicHttpResponse.getCode(),200); + Assertions.assertEquals(classicHttpResponse.getCode(),200); final HttpEntity entity = classicHttpResponse.getEntity(); String resultContent = EntityUtils.toString(entity); logger.info(resultContent); return resultContent; }); } catch (IOException e){ - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } } diff --git a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoStart.java b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoStart.java index ee2728abe..d9e716f2b 100644 --- a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoStart.java +++ b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidDemoStart.java @@ -9,9 +9,9 @@ import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Assert; import java.io.IOException; @@ -53,14 +53,14 @@ public void runSpidDemoStart(){ .build(); this.responseBody = httpclient.execute(httpPost, classicHttpResponse -> { logger.info(classicHttpResponse.getCode() + " " + classicHttpResponse.getReasonPhrase()); - Assert.assertEquals(this.getSpidDemoStartEndPoint()+" risponde con : "+classicHttpResponse.getCode(), classicHttpResponse.getCode(),200); + Assertions.assertEquals(classicHttpResponse.getCode(),200); final HttpEntity entity = classicHttpResponse.getEntity(); String resultContent = EntityUtils.toString(entity); logger.info(resultContent); return resultContent; }); } catch (IOException e){ - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } } diff --git a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidLogin.java b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidLogin.java index e1d3c4eb5..df76a79fd 100644 --- a/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidLogin.java +++ b/src/test/java/it/pn/frontend/e2e/api/personaFisica/SpidLogin.java @@ -9,9 +9,10 @@ import org.apache.hc.core5.http.io.entity.EntityUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.junit.Assert; + public class SpidLogin { @@ -37,14 +38,14 @@ public void runSpidLogin() { .build(); this.responseBody = httpclient.execute(httpGet, response -> { logger.info(response.getCode() + " " + response.getReasonPhrase()); - Assert.assertEquals(this.getSpidLoginEndPoint()+" risponde con : "+response.getCode(), response.getCode(),200); + Assertions.assertEquals(response.getCode(),200); final HttpEntity entity = response.getEntity(); String resultContent = EntityUtils.toString(entity); logger.info(resultContent); return resultContent; }); } catch (IOException e) { - Assert.fail(e.getMessage()); + Assertions.fail(e.getMessage()); } } diff --git a/src/test/java/it/pn/frontend/e2e/run/RunCucumberTest.java b/src/test/java/it/pn/frontend/e2e/run/RunCucumberTest.java index 747b5c51b..9670f7825 100644 --- a/src/test/java/it/pn/frontend/e2e/run/RunCucumberTest.java +++ b/src/test/java/it/pn/frontend/e2e/run/RunCucumberTest.java @@ -1,78 +1,20 @@ package it.pn.frontend.e2e.run; -import io.cucumber.junit.Cucumber; -import io.cucumber.junit.CucumberOptions; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; +import org.junit.platform.suite.api.*; +import static io.cucumber.junit.platform.engine.Constants.*; -@RunWith(Cucumber.class) -@CucumberOptions( - features = "src/test/resources/feature", - glue = {"it/pn/frontend/e2e/listeners", "it/pn/frontend/e2e/stepDefinitions"}, - //tags = "@runner", - //plugin = { "pretty", "io.qameta.allure.cucumber7jvm.AllureCucumber7Jvm"} - plugin = {"pretty", - "json:target/cucumber-reports/report.json", - "html:target/cucumber-reports/report.html", - "junit:target/cucumber-reports/Cucumber.xml" - }, - monochrome = true -) -public class RunCucumberTest { - private static final String TEST_CONFIG_FILE = "test-config.properties"; - private static final Properties properties = new Properties(); - private static final Logger logger = LoggerFactory.getLogger("RunCucumberTest"); - private static String testSuite; - - private static boolean loadProperties() { - logger.info("load properties"); - try (InputStream input = RunCucumberTest.class.getClassLoader().getResourceAsStream(TEST_CONFIG_FILE)) { - if (input != null) { - properties.load(input); - logger.info(properties.getProperty("browser")); - return true; - } else { - System.err.println("Unable to find " + TEST_CONFIG_FILE); - return false; - } - } catch (IOException e) { - logger.info("Exception: " + e.getMessage()); - } - return false; - } +@Suite +@IncludeEngines("cucumber") +@SelectClasspathResource("feature") +@ConfigurationParameters({ + @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty"), + @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "json:target/cucumber-reports/report.json," + + "html:target/cucumber-reports/report.html"), + @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "it/pn/frontend/e2e/listeners ,it/pn/frontend/e2e/stepDefinitions") +}) - @BeforeClass - public static void startTestSuite() { - if (loadProperties()) { - logger.info("properties loaded"); - properties.forEach((property, value) -> { - String actualSystemProperty = System.getProperty(property.toString()); - if (actualSystemProperty == null) { - System.setProperty(property.toString(), value.toString()); - } - } - ); - } - if (System.getProperty("cucumber.filter.tags") != null) { - testSuite = System.getProperty("cucumber.filter.tags").substring(1); - logger.info("run test della test suite = " + testSuite); - } else { - logger.info("run tutti i test"); - } - logger.info("start the test suite = " + testSuite); - } - - @AfterClass - public static void finishTestSuite() { - logger.info("finish the test suite = " + testSuite); - } +public class RunCucumberTest { } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/CucumberSpringIntegration.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/CucumberSpringIntegration.java new file mode 100644 index 000000000..84624eda1 --- /dev/null +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/CucumberSpringIntegration.java @@ -0,0 +1,139 @@ +package it.pn.frontend.e2e.stepDefinitions; + +import io.cucumber.spring.CucumberContextConfiguration; +import it.pn.frontend.e2e.api.mittente.AccettazioneRichiestaNotifica; +import it.pn.frontend.e2e.api.personaFisica.RecuperoOTPRecapiti; +import it.pn.frontend.e2e.common.DettaglioNotificaSection; +import it.pn.frontend.e2e.common.HelpdeskPage; +import it.pn.frontend.e2e.common.NotificheDestinatarioPage; +import it.pn.frontend.e2e.common.RecapitiDestinatarioPage; +import it.pn.frontend.e2e.config.BearerTokenConfig; +import it.pn.frontend.e2e.config.CustomHttpClient; +import it.pn.frontend.e2e.config.UserPasswordConfig; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.LoggerStartupListener; +import it.pn.frontend.e2e.listeners.NetWorkInfo; +import it.pn.frontend.e2e.model.delegate.DelegateRequestPF; +import it.pn.frontend.e2e.model.delegate.DelegateRequestPG; +import it.pn.frontend.e2e.model.delegate.DelegateResponsePF; +import it.pn.frontend.e2e.model.delegate.DelegateResponsePG; +import it.pn.frontend.e2e.model.singleton.MandateSingleton; +import it.pn.frontend.e2e.model.singleton.NotificationSingleton; +import it.pn.frontend.e2e.pages.destinatario.DestinatarioPage; +import it.pn.frontend.e2e.pages.destinatario.personaFisica.*; +import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.*; +import it.pn.frontend.e2e.pages.mittente.*; +import it.pn.frontend.e2e.rest.RestContact; +import it.pn.frontend.e2e.rest.RestDelegation; +import it.pn.frontend.e2e.rest.RestNotification; +import it.pn.frontend.e2e.section.CookiesSection; +import it.pn.frontend.e2e.section.destinatario.personaFisica.HeaderPFSection; +import it.pn.frontend.e2e.pages.destinatario.personaFisica.ITuoiRecapitiPage; +import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.AccediAreaRiservataPGPage; +import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; +import it.pn.frontend.e2e.section.destinatario.personaFisica.LeTueDelegheSection; +import it.pn.frontend.e2e.section.destinatario.personaFisica.PopUpRevocaDelegaSection; +import it.pn.frontend.e2e.section.destinatario.personaGiuridica.AggiungiDelegaPGSection; +import it.pn.frontend.e2e.section.destinatario.personaGiuridica.DelegatiImpresaSection; +import it.pn.frontend.e2e.section.destinatario.personaGiuridica.HeaderPGSection; +import it.pn.frontend.e2e.section.mittente.*; +import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; +import it.pn.frontend.e2e.stepDefinitions.destinatario.personaFisica.LoginPersonaFisicaPagoPA; +import it.pn.frontend.e2e.stepDefinitions.destinatario.personaGiuridica.LoginPGPagoPATest; +import it.pn.frontend.e2e.stepDefinitions.mittente.NotificaMittentePagoPATest; +import it.pn.frontend.e2e.section.mittente.AllegatiPASection; +import it.pn.frontend.e2e.section.mittente.DestinatarioPASection; +import it.pn.frontend.e2e.section.mittente.DettaglioNotificaMittenteSection; +import it.pn.frontend.e2e.section.mittente.InformazioniPreliminariPASection; +import it.pn.frontend.e2e.utility.*; +import org.apache.hc.client5.http.cookie.BasicCookieStore; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.scheduling.annotation.EnableScheduling; + + +@CucumberContextConfiguration +@SpringBootTest(classes = { + CookieConfig.class, + LoggerStartupListener.class, + NetWorkInfo.class, + WebDriverConfig.class, + BearerTokenConfig.class, + UserPasswordConfig.class, + DataPopulation.class, + HeaderPGSection.class, + AccediAreaRiservataPGPage.class, + DisserviziAppPage.class, + PiattaformaNotifichePGPAPage.class, + DownloadFile.class, + AccediAPiattaformaNotifichePage.class, + DisserviziAppPAPage.class, + PiattaformaNotifichePage.class, + DettaglioNotificaMittenteSection.class, + AllegatiPASection.class, + DestinatarioPASection.class, + InformazioniPreliminariPASection.class, + NotificaMittentePagoPATest.class, + LoginPersonaFisicaPagoPA.class, + ScegliSpidPAPage.class, + LoginPAPage.class, + CookiesSection.class, + AreaRiservataPAPage.class, + NotifichePFPage.class, + HeaderPFSection.class, + SelezionaImpresaPage.class, + ScegliSpidPFPage.class, + LoginSpidPFPage.class, + ConfermaDatiSpidPFPage.class, + HomePagePG.class, + ScegliSpidPGPage.class, + LoginPGPagoPAPage.class, + AutorizzaInvioDatiPGPage.class, + DestinatarioPage.class, + HeaderPASection.class, + PreAccediAreaRiservataPAPage.class, + AutorizziInvioDatiPAPage.class, + SelezionaEntePAPage.class, + AcccediAreaRiservataPAPage.class, + DettaglioNotificaSection.class, + RecapitiDestinatarioPage.class, + ITuoiRecapitiPage.class, + LoginPGPagoPATest.class, + DeleghePGPagoPAPage.class, + DelegatiImpresaSection.class, + AggiungiDelegaPGSection.class, + LeTueDelegheSection.class, + PopUpRevocaDelegaSection.class, + DeleghePage.class, + NotificheDestinatarioPage.class, + HelpdeskPage.class, + ComeVuoiAccederePage.class, + DashboardPage.class, + NotificationSingleton.class, + SuccessPASection.class, + LoginPersonaFisicaPagoPA.class, + RestNotification.class, + NotificationBuilder.class, + MandateSingleton.class, + RestContact.class, + CustomHttpClient.class, + InvioNotifichePAPage.class, + BasicCookieStore.class, + AccettazioneRichiestaNotifica.class, + RecuperoOTPRecapiti.class, + BackgroundTest.class, + GeneraApiKeySection.class, + RestDelegation.class, + WebTool.class, + UtentiPGPage.class, + GruppiPGPage.class, + ApiKeyPAPage.class + +}) +@EnableScheduling +@EnableConfigurationProperties +public class CucumberSpringIntegration { + + +} + 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 99d30f82f..3e516490a 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 @@ -1,7 +1,7 @@ package it.pn.frontend.e2e.stepDefinitions.common; import it.pn.frontend.e2e.common.RecapitiDestinatarioPage; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.destinatario.personaFisica.ITuoiRecapitiPage; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.stepDefinitions.destinatario.personaFisica.DeleghePagoPATest; @@ -10,34 +10,68 @@ import it.pn.frontend.e2e.stepDefinitions.destinatario.personaGiuridica.*; import it.pn.frontend.e2e.stepDefinitions.mittente.NotificaMittentePagoPATest; import it.pn.frontend.e2e.utility.WebTool; -import org.openqa.selenium.WebDriver; - +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.util.HashMap; import java.util.Map; + public class BackgroundTest { - private final WebDriver driver = Hooks.driver; private final String nomeFileDatiNotifica = "datiNotifica"; private final String nomeFilePersonaFisica = "personaFisica"; private final String nomeFilePG = "personaGiuridica"; private final String nomeFileNuovaDelega = "nuova_delega"; private final String nomeFileNuovaDelegaPG = "nuovaDelegaPG"; private final String mittente = "mittente"; - private final DeleghePagoPATest deleghePagoPATest = new DeleghePagoPATest(); - - private final RecapitiPersonaFisicaTest recapitiPersonaFisicaTest = new RecapitiPersonaFisicaTest(); - private final LoginPGPagoPATest loginPGPagoPATest = new LoginPGPagoPATest(); - private final LoginPersonaFisicaPagoPA personaFisicaPagoPA = new LoginPersonaFisicaPagoPA(); - private final DeleghePGPagoPATest deleghePGPagoPATest = new DeleghePGPagoPATest(); - private final DisserviziAppPGTest disserviziAppPGTest = new DisserviziAppPGTest(); - private final HelpdeskTest helpdeskTest = new HelpdeskTest(); - private final NotifichePGPagoPATest notifichePGPagoPATest = new NotifichePGPagoPATest(); - private final RecapitiTest recapitiTest = new RecapitiTest(); private final Map datiPersonaFisica; - private final RecapitiDestinatarioPage recapitiDestinatarioPage = new RecapitiDestinatarioPage(driver); - private final ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(driver); + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + @Lazy + private DeleghePagoPATest deleghePagoPATest; + @Autowired + @Lazy + private RecapitiPersonaFisicaTest recapitiPersonaFisicaTest; + @Autowired + @Lazy + private LoginPGPagoPATest loginPGPagoPATest; + @Autowired + @Lazy + private LoginPersonaFisicaPagoPA personaFisicaPagoPA; + @Autowired + @Lazy + private DeleghePGPagoPATest deleghePGPagoPATest; + @Autowired + @Lazy + private DisserviziAppPGTest disserviziAppPGTest ; + @Autowired + @Lazy + private HelpdeskTest helpdeskTest; + @Autowired + @Lazy + private NotifichePGPagoPATest notifichePGPagoPATest; + @Autowired + @Lazy + private RecapitiTest recapitiTest; + @Autowired + @Lazy + private RecapitiDestinatarioPage recapitiDestinatarioPage ; + @Autowired + @Lazy + private ITuoiRecapitiPage iTuoiRecapitiPage; + @Autowired + @Lazy + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private NotificaMittentePagoPATest notificaMittentePagoPATest; + @Autowired + @Lazy + private WebTool webTool; + + @Autowired public BackgroundTest() { datiPersonaFisica = new HashMap<>(); datiPersonaFisica.put("nome", "Lucrezia"); @@ -49,7 +83,6 @@ public BackgroundTest() { public void invioNotificaErrorePec() { - NotificaMittentePagoPATest notificaMittentePagoPATest = new NotificaMittentePagoPATest(); notificaMittentePagoPATest.nellaPaginaPiattaformaNotificheSiRecuperaLUltimoNumeroProtocollo(); notificaMittentePagoPATest.nellaPaginaPiattaformaNotificheCliccareSulBottoneInviaUnaNuovaNotifica(); @@ -143,7 +176,7 @@ public void accettaDelegaPF() { public void aggiuntaEmailPF() { recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiInserisceLEmailDelPFECliccaSulBottoneAvvisamiViaEmail(nomeFilePersonaFisica); - recapitiPersonaFisicaTest.siVisualizzaCorrettamenteIlPopUpESiCliccaSuConferma(); + //recapitiPersonaFisicaTest.siVisualizzaCorrettamenteIlPopUpESiCliccaSuConferma(); recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailTramiteRequestMethod(nomeFilePersonaFisica); recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiInserisceLOTPRicevutoViaEmail(nomeFilePersonaFisica); recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiControllaCheLaEmailSiaPresente(); @@ -263,7 +296,7 @@ public void risoluzioneDisservizio() { public void aggiuntaEmailDiCortesia(String email) { recapitiTest.siInserisceLEmailDiCortesiaESiCliccaSulBottoneAvvisamiViaEmail(email); - recapitiTest.siVisualizzaIlPopUpDisclaimerSiCliccaLaCheckboxEIlBottoneConferma(); + // recapitiTest.siVisualizzaIlPopUpDisclaimerSiCliccaLaCheckboxEIlBottoneConferma(); recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlPopUpDiInserimentoOTP(); recapitiPersonaFisicaTest.nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequestDellEmailEVieneInserito(email); recapitiTest.siControllaCheLEmailInseritaSiaPresente(); @@ -271,7 +304,7 @@ public void aggiuntaEmailDiCortesia(String email) { public void siEliminaPecEsistenteEAltriRecapitiAssociati() { recapitiDestinatarioPage.clickSuEliminaPec(); - WebTool.waitTime(3); + webTool.waitTime(3); if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi PEC")) { recapitiDestinatarioPage.clickSuConfermaElimina(); } else { @@ -306,7 +339,7 @@ public void checkPECEsistentePerEliminazioneEInserimento(String emailPEC) { } siInserisceUnaPECConCampoInputVisibile(emailPEC); } - WebTool.waitTime(10); + webTool.waitTime(10); } public void checkEmailDiCortesiaPerEliminazioneEInserimento(String emailDiCortesia) { @@ -325,7 +358,7 @@ public void checkEmailDiCortesiaPerEliminazioneEInserimento(String emailDiCortes } aggiuntaEmailDiCortesia(emailDiCortesia); } - WebTool.waitTime(10); + webTool.waitTime(10); } public void inserimentoOTPErratoTreVolteEControlloMessaggio(String OTP) { @@ -338,24 +371,21 @@ public void inserimentoOTPErratoTreVolteEControlloMessaggio(String OTP) { } public void siFiltraLaTabellaDelleNotifichePerIUNDestinatario(String iun) { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.inserimentoCodiceIUN(iun); piattaformaNotifichePage.selectFiltraNotificaButtonDestinatario(); piattaformaNotifichePage.clickSuNotifica(); } public void siFiltraLaTabellaDelleNotificheDelDestinatarioPerIUN(String iun) { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.inserimentoCodiceIUN(iun); piattaformaNotifichePage.selectFiltraNotificaButtonDestinatario(); piattaformaNotifichePage.clickSuNotifica(); } public void siFiltraLaTabellaDelleNotifichePerIUNMittente(String iun) { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.inserimentoCodiceIUN(iun); piattaformaNotifichePage.selectFiltraNotificaButtonMittente(); - WebTool.waitTime(1); + webTool.waitTime(1); piattaformaNotifichePage.clickSuNotifica(); } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/ConfigFileReader.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/ConfigFileReader.java new file mode 100644 index 000000000..c43c4455a --- /dev/null +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/ConfigFileReader.java @@ -0,0 +1,65 @@ +package it.pn.frontend.e2e.stepDefinitions.common; + +import io.cucumber.java.After; +import io.cucumber.java.BeforeAll; +import org.junit.jupiter.api.AfterAll; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.*; +import java.util.Properties; + + +public class ConfigFileReader { + + private static final String TEST_CONFIG_FILE = "config/test-config.properties"; + private static final Properties properties = new Properties(); + private static final Logger logger = LoggerFactory.getLogger("ConfigFileReader"); + private static String testSuite; + + public static boolean loadProperties() { + logger.info("load properties"); + try (InputStream input = ConfigFileReader.class.getClassLoader().getResourceAsStream(TEST_CONFIG_FILE)) { + if (input != null) { + properties.load(input); + logger.info(properties.getProperty("browser")); + return true; + } else { + System.err.println("Unable to find " + TEST_CONFIG_FILE); + return false; + } + } catch (IOException e) { + logger.info("Exception: " + e.getMessage()); + } + return false; + } + + @BeforeAll + public static void startTestSuite() { + /** + if (loadProperties()) { + logger.info("properties loaded"); + properties.forEach((property, value) -> { + String actualSystemProperty = System.getProperty(property.toString()); + if (actualSystemProperty == null) { + System.setProperty(property.toString(), value.toString()); + } + } + ); + } + **/ + if (System.getProperty("cucumber.filter.tags") != null) { + testSuite = System.getProperty("cucumber.filter.tags").substring(1); + logger.info("run test della test suite = " + testSuite); + } else { + logger.info("run tutti i test"); + } + logger.info("start the test suite = " + testSuite); + } + + @AfterAll + public static void finishTestSuite() { + logger.info("finish the test suite = " + testSuite); + } + + +} \ No newline at end of file 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 181c9c436..b47b64e97 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 @@ -5,17 +5,23 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import it.pn.frontend.e2e.common.HelpdeskPage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.model.enums.Disservice; import it.pn.frontend.e2e.model.enums.Status; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; + +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; import java.awt.*; import java.io.IOException; @@ -26,24 +32,41 @@ import java.util.Set; import java.util.concurrent.TimeUnit; +@Primary public class HelpdeskTest { - private final WebDriver driver = Hooks.driver; - private final DataPopulation dataPopulation = new DataPopulation(); private final Logger logger = LoggerFactory.getLogger("HelpdeskAppTest"); - private HelpdeskPage helpdeskPage = new HelpdeskPage(this.driver); + + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private DataPopulation dataPopulation; + @Autowired + @Lazy + private WebDriverConfig webDriverConfig; + @Autowired + private HelpdeskPage helpdeskPage ; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + + @Autowired + @Lazy + private WebTool webTool; + private Map datiTestHelpdesk = new HashMap<>(); private Map datiPersonaFisica = new HashMap<>(); @Given("Login helpdesk con utente test {string}") public void loginHelpdeskConUtenteTest(String nameFile) { this.datiTestHelpdesk = this.dataPopulation.readDataPopulation(nameFile + ".yaml"); - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); switch (variabileAmbiente) { case "dev" -> helpdeskPage.changePage(this.datiTestHelpdesk.get("url").toString()); case "test", "uat" -> helpdeskPage.changePage(this.datiTestHelpdesk.get("url").toString().replace("dev", variabileAmbiente)); default -> - Assert.fail("Non è stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); + Assertions.fail("Non è stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); } helpdeskPage.checkForm(); switch (variabileAmbiente) { @@ -60,7 +83,7 @@ public void loginHelpdeskConUtenteTest(String nameFile) { helpdeskPage.insertPassword(this.datiTestHelpdesk.get("pwdUat").toString()); } default -> - Assert.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); + Assertions.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); } helpdeskPage.clickInviaButton(); } @@ -82,19 +105,19 @@ public void siVisualizzaCorrettamenteHomeMonitoraggio() { @And("Si crea il disservizio") public void siCreaIlDisservizio() { - WebTool.waitTime(5); + webTool.waitTime(5); if (!helpdeskPage.checkIsCreatedDisservizio()) { helpdeskPage.handleDisservizio(Disservice.CREAZIONE_NOTIFICHE, Status.KO); - WebTool.waitTime(5); + webTool.waitTime(5); } } @And("Si risolve il disservizio") public void siRisolveIlDisservizio() { - WebTool.waitTime(5); + webTool.waitTime(5); if (helpdeskPage.checkIsCreatedDisservizio()) { helpdeskPage.handleDisservizio(Disservice.CREAZIONE_NOTIFICHE,Status.OK); - WebTool.waitTime(5); + webTool.waitTime(5); } } @@ -105,13 +128,12 @@ public void siVerificaLaCreazioneDelDisservizio() { @And("Si annulla un disservizio in corso") public void annullamentoDisservizio() { - BackgroundTest backgroundTest = new BackgroundTest(); logger.info("Torno sulla scheda di helpdesk"); - String sendHandle = driver.getWindowHandle(); - Set windowHandles = driver.getWindowHandles(); + String sendHandle = hooks.getDriver().getWindowHandle(); + Set windowHandles = hooks.getDriver().getWindowHandles(); for (String handle : windowHandles) { if (!handle.equals(sendHandle)) { - this.driver.switchTo().window(handle); + hooks.getDriver().switchTo().window(handle); break; } } @@ -136,7 +158,7 @@ public void annullamentoDisservizio() { logger.info("Torno sulla piattaforma send per il logout"); for (String handle : windowHandles) { if (handle.equals(sendHandle)) { - this.driver.switchTo().window(handle); + hooks.getDriver().switchTo().window(handle); break; } } @@ -162,18 +184,18 @@ public void vieneInseritoCodiceFiscale(String nameFile) { public void vieneInseritoCodiceFiscaleSenzaRicerca(String CF) { helpdeskPage.insertCF(CF); } - + ///-*-*-**- @And("viene inserito codice IUN {string}") public void vieneInseritoIun(String iun) { - helpdeskPage.insertIunAndRicercaOnPage(iun); + String codiceIun = getCodiceIun(iun,"viene inserito codice IUN"); + helpdeskPage.insertIunAndRicercaOnPage(codiceIun); } - @And("viene inserito codice IUN senza ricerca {string}") public void vieneInseritoIunSenzaRicerca(String iun) { - helpdeskPage.insertIun(iun); + String codiceIun = getCodiceIun(iun,"viene inserito codice IUN senza ricerca"); + helpdeskPage.insertIun(codiceIun); } - @And("viene inserito numero ticket") public void vieneInseritoNumeroTicket() { helpdeskPage.insertNumeroTicket(); @@ -239,7 +261,7 @@ public void inseriscoPasswordEdEstraggoZip() throws IOException { @And("Controllo sia presente documento {string}") public void controlloPresenteDocumento(String docName) throws IOException { logger.info("Controllo sia presente documento" + docName); - Assert.assertTrue ("Documento " + docName + " non è trovato",helpdeskPage.trovaDocumentoConTitolo(docName)); + Assertions.assertTrue (helpdeskPage.trovaDocumentoConTitolo(docName), "Documento " + docName + " non è trovato"); logger.info("Documento " + docName + " è trovato"); } @@ -293,25 +315,23 @@ public void controlloCorrispondenzaCodiceFiscale() { @Given("Login helpdesk in nuova scheda") public void loginHelpdeskInNuovaScheda(Map login) { logger.info("Si apre una nuova finestra"); - JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver; + JavascriptExecutor javascriptExecutor = (JavascriptExecutor) hooks.getDriver(); javascriptExecutor.executeScript("window.open();"); logger.info("Si seleziona la nuova finestra aperta"); - ArrayList tabs = new ArrayList<>(driver.getWindowHandles()); - driver.switchTo().window(tabs.get(tabs.size() - 1)); + ArrayList tabs = new ArrayList<>(hooks.getDriver().getWindowHandles()); + hooks.getDriver().switchTo().window(tabs.get(tabs.size() - 1)); logger.info("Nella nuova finestra aperta si va sulla pagina di login di helpdesk"); - driver.get("https://helpdesk.test.notifichedigitali.it/login"); + hooks.getDriver().get(webDriverConfig.getUrlHelpdeskTestNotifichedigitali()); helpdeskPage.loginHelpdeskNuovaScheda(login); } @Given("Creazione disservizio su portale helpdesk") public void creazioneDisservizioSuPortaleHelpdesk() { - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.creazioneDisservizio(); } @And("Risoluzione disservizio su portale helpdesk") public void risoluzioneDisservizioSuPortaleHelpdesk() { - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.risoluzioneDisservizio(); } @@ -326,4 +346,27 @@ public void selezioneOttieniLogCompleti(){ helpdeskPage.selectOttieniLogCompleti(); } + private String getCodiceIun(String iun, String message) { + String codiceIun; + switch (iun) { + case "IUN0" -> { + codiceIun=webDriverConfig.getCodiceIun(); + } + case "IUN1" -> { + codiceIun=webDriverConfig.getCodiceIunN1(); + } + case "IUN2" -> { + codiceIun=webDriverConfig.getCodiceIunN2(); + } + case "IUN3" -> { + codiceIun=webDriverConfig.getCodiceIunN3(); + } + default -> { + logger.error(message); + throw new RuntimeException(message+" 'ERRATO'"); + } + } + return codiceIun; + } + } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/RecapitiTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/RecapitiTest.java index 7e74791bf..63c853357 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/RecapitiTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/RecapitiTest.java @@ -5,10 +5,13 @@ import it.pn.frontend.e2e.common.RecapitiDestinatarioPage; import it.pn.frontend.e2e.listeners.Hooks; import it.pn.frontend.e2e.pages.destinatario.personaFisica.ITuoiRecapitiPage; -import org.junit.Assert; + +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; public class RecapitiTest { @@ -16,10 +19,14 @@ public class RecapitiTest { private final String emailDiCortesia = "email di cortesia"; private final String ELIMINA = "Elimina"; private final Logger logger = LoggerFactory.getLogger("RecapitiTest"); - private final WebDriver driver = Hooks.driver; public static String OTP; - private final RecapitiDestinatarioPage recapitiDestinatarioPage = new RecapitiDestinatarioPage(this.driver); - private final ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); + @Autowired + private RecapitiDestinatarioPage recapitiDestinatarioPage ; + @Autowired + private ITuoiRecapitiPage iTuoiRecapitiPage ; + @Autowired + @Lazy + private BackgroundTest backgroundTest; @And("Nella pagina I Tuoi Recapiti si inserisce il numero di telefono {string} e si clicca sul bottone avvisami via SMS") public void nellaPaginaITuoiRecapitiSiInserisceIlNumeroDiTelefonoESiCliccaSulBottoneAvvisamiViaSMS(String cellulare) { @@ -61,14 +68,13 @@ public void nellaPaginITuoiRecapitiSiControllaCheIlNumeroDiCellulareNonSiaPresen @And("Nella pagina I Tuoi Recapiti si controlla che non ci sia già una {string} e si inserisce {string}") public void nellaPaginaITuoiRecapitiSiControllaCheCiSiaGiaUnaPECESiInserisce(String tipoContatto, String indirizzoMail) { logger.info("Si controlla che non ci sia già una " + tipoContatto + " e se ne inserisce una"); - BackgroundTest backgroundTest = new BackgroundTest(); if (PEC.equalsIgnoreCase(tipoContatto)){ backgroundTest.checkPECEsistentePerEliminazioneEInserimento(indirizzoMail); } else if (emailDiCortesia.equalsIgnoreCase(tipoContatto)){ backgroundTest.checkEmailDiCortesiaPerEliminazioneEInserimento(indirizzoMail); } else { logger.error("Errore nella scrittura del tipo di contatto da controllare e inserire"); - Assert.fail("Errore nella scrittura del tipo di contatto da controllare e inserire"); + Assertions.fail("Errore nella scrittura del tipo di contatto da controllare e inserire"); } } @@ -86,8 +92,8 @@ public void nellaPaginaITuoiRecapitiSiInserisceLEmailErrata(String emailErrata) @Then("Nella pagina I Tuoi Recapiti si visualizza correttamente il messaggio email errata") public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlMessaggioEmailErrata() { String errorMessageRead = recapitiDestinatarioPage.getEmailErrorMessage(); - if (!errorMessageRead.contains("Indirizzo e-mail non valido") && !errorMessageRead.contains("Scrivi massimo 254 caratteri")) { - Assert.fail("messaggio di errore letto : '" + errorMessageRead + "' non è uguale a : Indirizzo e-mail non valido o Scrivi massimo 254 caratteri"); + if (!errorMessageRead.contains("Indirizzo email non valido") && !errorMessageRead.contains("Scrivi massimo 254 caratteri")) { + Assertions.fail("messaggio di errore letto : '" + errorMessageRead + "' non è uguale a : Indirizzo e-mail non valido o Scrivi massimo 254 caratteri"); } } @@ -143,7 +149,7 @@ public void siControllaCheLEmailInseritaSiaPresente() { logger.info("Si controlla che la Email sia stata inserita correttamente"); if (!recapitiDestinatarioPage.verificaMailAssociata()) { logger.error("Email non è stata inserita correttamente"); - Assert.fail("Email non è stata inserita correttamente"); + Assertions.fail("Email non è stata inserita correttamente"); } } @@ -167,7 +173,6 @@ public void nellaPaginaITuoiRecapitiSiControllaCheNonCiSiaUnaEmailDiCortesiaImpo @And("Si inserisce il codice OTP errato {string} per tre volte e si controlla il messaggio di errore") public void siInserisceIlCodiceOTPErratoPerTreVolteESiControllaIlMessaggioDiErrore(String OTP) { logger.info("Si inserisce un codice OTP errato per 3 volte e si controlla il messaggio di errore"); - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.inserimentoOTPErratoTreVolteEControlloMessaggio(OTP); } 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 a44feca92..947c728dc 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 @@ -1,9 +1,10 @@ package it.pn.frontend.e2e.stepDefinitions.destinatario.personaFisica; import io.cucumber.java.en.And; +import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.model.delegate.DelegatePF; import it.pn.frontend.e2e.model.delegate.DelegateRequestPF; import it.pn.frontend.e2e.model.delegate.DelegateResponsePF; @@ -19,31 +20,49 @@ import it.pn.frontend.e2e.utility.WebTool; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.junit.Assert; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; - +import org.junit.jupiter.api.Assertions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; @Slf4j public class DeleghePagoPATest { - private final WebDriver driver = Hooks.driver; - private final LeTueDelegheSection leTueDelegheSection = new LeTueDelegheSection(this.driver); - private final PopUpRevocaDelegaSection popUpRevocaDelegaSection = new PopUpRevocaDelegaSection(this.driver); - private final DataPopulation dataPopulation = new DataPopulation(); - private final DeleghePage deleghePage = new DeleghePage(this.driver); - private final LoginPersonaFisicaPagoPA loginPersonaFisicaPagoPA = new LoginPersonaFisicaPagoPA(); - private final DestinatarioPage destinatarioPage = new DestinatarioPage(this.driver); - private final MandateSingleton mandateSingleton = MandateSingleton.getInstance(); - private final RestDelegation restDelegation = RestDelegation.getInstance(); + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private LeTueDelegheSection leTueDelegheSection; + @Autowired + private PopUpRevocaDelegaSection popUpRevocaDelegaSection; + @Autowired + private DataPopulation dataPopulation; + @Autowired + private DeleghePage deleghePage; + @Autowired + private LoginPersonaFisicaPagoPA loginPersonaFisicaPagoPA; + @Autowired + private DestinatarioPage destinatarioPage; + @Autowired + private NotifichePFPage notifichePFPage; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + + @Autowired + private MandateSingleton mandateSingleton; + + @Autowired + private RestDelegation restDelegation; + + @Autowired + @Lazy + private WebTool webTool; + Map deleghe = new HashMap<>(); @Setter private String codiceVerifica; @@ -51,7 +70,6 @@ public class DeleghePagoPATest { @When("Nella pagina Piattaforma Notifiche persona fisica click sul bottone Deleghe") public void waitDelegheButton() { log.info("Si clicca sul bottone deleghe"); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitESelectDelegheButton(); } @@ -79,7 +97,6 @@ public void nellaSezioneLeTueDelegheInserireIDati(Map personaFis String codiceFiscale = personaFisica.get("codiceFiscale"); String ente = personaFisica.get("ente"); - leTueDelegheSection.selectPersonaFisicaRadioButton(); leTueDelegheSection.insertNomeCognome(nome, cognome); @@ -94,12 +111,11 @@ public void nellaSezioneLeTueDelegheInserireIDati(Map personaFis public void nellaSezioneLeTueDelegheVerificareCheLaDataSiaCorretta() { log.info("Si controlla che la data visualizzata sia corretta"); - if (this.leTueDelegheSection.verificareCheLaDataSiaCorretta()) { log.info("La data inserita è corretta"); } else { log.error("La data inserita non è corretta"); - Assert.fail("La data inserita non è corretta"); + Assertions.fail("La data inserita non è corretta"); } } @@ -109,7 +125,6 @@ public void nellaSezioneLeTueDelegheSalvareIlCodiceVerificaAllInternoDelFile(Str deleghe = dataPopulation.readDataPopulation(dpFile + ".yaml"); - String codiceVerifica = this.leTueDelegheSection.salvataggioCodiceVerifica(); deleghe.put("codiceDelega", codiceVerifica); dataPopulation.writeDataPopulation(dpFile + ".yaml", deleghe); @@ -135,14 +150,14 @@ public void nellaSezioneDelegheSiVisualizzaLaDelegaInStatoDiAttesaDiConferma() { @And("Nella sezione Deleghe si clicca sul menu della delega") public void nellaSezioneDelegheSiCliccaSulMenuDellaDelega(Map personaFisica) { - log.info("Si clicca sul menu della delega"); + log.info("Nella sezione Deleghe si clicca sul menu della delega"); String fullName = personaFisica.get("nome") + " " + personaFisica.get("cognome"); deleghePage.clickMenuDelegante(fullName); } @And("Nella sezione Deleghe si clicca sul menu dei delegati") public void nellaSezioneDelegheSiCliccaSulMenuDeliDelegati(Map personaFisica) { - log.info("Si clicca sul menu della delega"); + log.info("Nella sezione Deleghe si clicca sul menu dei delegati"); String fullName = personaFisica.get("nome") + " " + personaFisica.get("cognome"); deleghePage.clickMenuDelegato(fullName); } @@ -156,14 +171,12 @@ public void nellaSezioneDelegheSiSceglieLOpzioneMostraCodice() { @Then("Si clicca sul bottone chiudi") public void siCliccaSulBottoneChiudi() { log.info("Si clicca sul bottone chiudi"); - deleghePage.siCliccaSulBottoneChiudi(); } @And("Nella sezione Deleghe si sceglie l'opzione revoca") public void nellaSezioneDelegheSiSceglieLOpzioneRevoca() { log.info("Si clicca sulla opzione revoca delega"); - deleghePage.clickOpzioneRevoca(); } @@ -183,7 +196,7 @@ public void nellaSezioneLeTueDelegheSiVisualizzaIlMessaggioDiErrore() { log.info("Si visualizza il messaggio di errore"); String actualErrorMessage = this.leTueDelegheSection.messaggioDiErrore().toLowerCase(); String expectedErrorMessage = "errore inserimento delega"; - Assert.assertEquals("Messeggio di Errore non è uguale a Codice fiscale non valido", expectedErrorMessage, actualErrorMessage); + Assertions.assertEquals(expectedErrorMessage, actualErrorMessage, "Messeggio di Errore non è uguale a Codice fiscale non valido"); } @And("Nella sezione Le Tue Deleghe si visualizza il messaggio di errore delega gia aggiunta") @@ -194,12 +207,11 @@ public void nellaSezioneLeTueDelegheSiVisualizzaIlMessaggioDiErroreDelegaGiaAggi @And("Si verifica sia presente una delega nella sezione Deleghe a Tuo Carico") public void siVerificaSiaPresenteUnaDelegaNellaSezioneDelegheATuoCarico(Map datiPersonaFisica) { - log.info("Si controlla che ci sia almeno una delega"); + log.info("Si verifica sia presente una delega nella sezione Deleghe a Tuo Carico"); String nome = datiPersonaFisica.get("nome"); String cognome = datiPersonaFisica.get("cognome"); - BackgroundTest backgroundTest = new BackgroundTest(); deleghePage.vaiInFondoAllaPagina(); boolean esistenzaDelega = deleghePage.siVisualizzaUnaDelegaConNomeDelegato(nome, cognome); String stato = ""; @@ -256,14 +268,14 @@ public void siInserisceIlCodiceErratoDelegaNelPopUp(String codice) { @And("Si inserisce il codice delega nel pop-up OTP {string}") public void siInserisceIlCodiceDelegaNelPopUpOTP(String data) { - log.info("Si inserisce il codice per accettare la delega"); + log.info("Si inserisce il codice delega nel pop-up OTP"); String verificationCode = ""; leTueDelegheSection.waitPopUpLoad(); if (data.equalsIgnoreCase("errato")) { verificationCode = "54321"; } else { - verificationCode = mandateSingleton.getVerificationCode(mandateSingleton.getMandateId(Hooks.getScenario())); + verificationCode = mandateSingleton.getVerificationCode(mandateSingleton.getMandateId(HooksNew.getScenario())); } leTueDelegheSection.inserireCodiceDelega(verificationCode); } @@ -297,10 +309,10 @@ public void creaInBackgroundUnaDelegaPerPersonaFisica(Map person String tokenExchange = loginPersonaFisicaPagoPA.getTokenExchangePFFromFile(personaFisica.get("accessoCome")); DelegateResponsePF response = restDelegation.addDelegationPF(delegateRequestPF, tokenExchange); if (response != null) { - mandateSingleton.setScenarioMandateId(Hooks.getScenario(), response.getMandateId()); - mandateSingleton.setScenarioVerificationCode(mandateSingleton.getMandateId(Hooks.getScenario()), response.getVerificationCode()); + mandateSingleton.setScenarioMandateId(HooksNew.getScenario(), response.getMandateId()); + mandateSingleton.setScenarioVerificationCode(mandateSingleton.getMandateId(HooksNew.getScenario()), response.getVerificationCode()); } - driver.navigate().refresh(); + hooks.getDriver().navigate().refresh(); } @And("Si clicca sul bottone Accetta") @@ -309,8 +321,8 @@ public void siCliccaSulBottoneAccetta() { this.leTueDelegheSection.clickAccettaButton(); if (this.leTueDelegheSection.verificaEsistenzaErroreCodiceSbagliato()) { - Assert.assertEquals("Il codice inserito è sbagliato", - "Il codice è sbagliato", this.leTueDelegheSection.getTextCodiceSbagliato()); + Assertions.assertEquals( + "Il codice è sbagliato", this.leTueDelegheSection.getTextCodiceSbagliato(),"Il codice inserito è sbagliato"); } } @@ -320,7 +332,7 @@ public void siVerificaIlMessaggioDiCodiceSbagliato() { log.info("Il messaggio di codice sbagliato è visualizzata"); } else { log.error("Il messaggio di codice sbagliato non è visualizzata"); - Assert.fail("Il messaggio di codice sbagliato non è visualizzata"); + Assertions.fail("Il messaggio di codice sbagliato non è visualizzata"); } } @@ -358,7 +370,7 @@ public void siVisualizzaIlTitolo() { log.info("Il titolo della sezione Deleghe si visualizza correttamente"); } else { log.error("Il titolo della sezione Deleghe NON si visualizza correttamente"); - Assert.fail("Il titolo della sezione Deleghe NON si visualizza correttamente"); + Assertions.fail("Il titolo della sezione Deleghe NON si visualizza correttamente"); } } @@ -368,7 +380,7 @@ public void siVisualizzaIlSottotitolo() { log.info("Il sottotitolo della sezione Deleghe si visualizza correttamente"); } else { log.error("Il sottotitolo della sezione Deleghe NON si visualizza correttamente"); - Assert.fail("Il sottotitolo della sezione Deleghe NON si visualizza correttamente"); + Assertions.fail("Il sottotitolo della sezione Deleghe NON si visualizza correttamente"); } } @@ -378,7 +390,7 @@ public void siVisualizzaIlBottoneAggiungiUnaDelega() { log.info("Il bottone aggiungi delega si visualizza correttamente"); } else { log.error("Il bottone aggiungi delega NON si visualizza correttamente"); - Assert.fail("Il bottone aggiungi delega NON si visualizza correttamente"); + Assertions.fail("Il bottone aggiungi delega NON si visualizza correttamente"); } } @@ -393,28 +405,28 @@ public void siVisualizzanoTuttiICampiDellElencoDeiDelegati() { log.info("Si visualizza correttamente il nome del delegato"); } else { log.error("NON si visualizza correttamente il nome del delegato"); - Assert.fail("NON si visualizza correttamente il nome del delegato"); + Assertions.fail("NON si visualizza correttamente il nome del delegato"); } if (this.leTueDelegheSection.siVisualizzaDataInizioDelega()) { log.info("Si visualizza correttamente la data di inizio della delega"); } else { log.error("NON si visualizza correttamente la data di inizio della delega"); - Assert.fail("NON Si visualizza correttamente la data di inizio della delega"); + Assertions.fail("NON Si visualizza correttamente la data di inizio della delega"); } if (this.leTueDelegheSection.siVisualizzaDataFinoDelega()) { log.info("Si visualizza correttamente la data di fine delle deleghe"); } else { log.error("NON si visualizza correttamente la data di fine delle deleghe"); - Assert.fail("NON si visualizza correttamente la data di fine delle deleghe"); + Assertions.fail("NON si visualizza correttamente la data di fine delle deleghe"); } if (this.leTueDelegheSection.siVisualizzaPermessiDelega()) { log.info("Si visualizza correttamente il permesso della delega"); } else { log.error("NON si visualizza correttamente il permesso della delega"); - Assert.fail("NON si visualizza correttamente il permesso della delega"); + Assertions.fail("NON si visualizza correttamente il permesso della delega"); } } @@ -471,7 +483,7 @@ public void siControllaCheLaDelegaNonSiaPiuPresenteNellaLista(String dpFile) { log.info("La delega non è più presente nella lista"); } else { log.error("La delega è ancora presente in lista"); - Assert.fail("La delega è ancora presente in lista"); + Assertions.fail("La delega è ancora presente in lista"); } } @@ -481,10 +493,9 @@ public void nellaSezioneDelegheSiVerificaSiaPresenteUnaDelega(Map datiPersonaFisica; private Map urlPersonaFisica; - private final WebDriver driver = Hooks.driver; - private final List netWorkInfos = Hooks.netWorkInfos; + + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + @Lazy + private WebDriverConfig webDriverConfig; + @Autowired + @Lazy + private WebTool webTool; + + //TODO Parametrizzare private Map datiDelegato; - private static final String FILE_TOKEN_LOGIN = "tokenLogin.yaml"; + @Autowired + private DataPopulation dataPopulation; + + @Autowired + private HeaderPFSection headerPFSection; + + @Autowired + private NotifichePFPage notifichePFPage; + + @Autowired + private ScegliSpidPFPage scegliSpidPFPage; + + @Autowired + private LoginSpidPFPage loginSpidPFPage; + + @Autowired + private ConfermaDatiSpidPFPage confermaDatiSpidPFPage; + + @Autowired + private AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage; + + @Autowired + private CookiesSection cookiesSection; + + @Autowired + private ComeVuoiAccederePage comeVuoiAccederePage; + + @Given("Login Page persona fisica {string} viene visualizzata") public void loginPageDestinatarioVieneVisualizzata(String datipersonaFisica) { - DataPopulation dataPopulation = new DataPopulation(); + //TODO Parametrizzzare..........eliminare la gestione file yaml.. this.datiPersonaFisica = dataPopulation.readDataPopulation(datipersonaFisica + ".yaml"); - String variabileAmbiente = System.getProperty("environment"); + // String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); switch (variabileAmbiente) { - case "dev" -> this.driver.get(this.datiPersonaFisica.get("url").toString()); + case "dev" -> this.hooks.getDriver().get(this.datiPersonaFisica.get("url").toString()); case "test", "uat" -> - this.driver.get(this.datiPersonaFisica.get("url").toString().replace("dev", variabileAmbiente)); + this.hooks.getDriver().get(this.datiPersonaFisica.get("url").toString().replace("dev", variabileAmbiente)); default -> - Assert.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); + Assertions.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); } } @Given("Login Page persona fisica test viene visualizzata") public void loginPageDestinatarioVieneVisualizzataConUrl() { + logger.info("ENVIROMENT...: "+ webDriverConfig.getEnvironment()); + String url = webDriverConfig.getBaseUrlPfTest(); - String url = "https://cittadini.test.notifichedigitali.it/"; - this.driver.get(url); + this.hooks.getDriver().get(url); } @Given("PF - Si effettua la login tramite token exchange come {string}, e viene visualizzata la dashboard") public void loginMittenteConTokenExchange(String personaFisica) { - DataPopulation dataPopulation = new DataPopulation(); - String environment = System.getProperty("environment"); + String environment = webDriverConfig.getEnvironment(); String token = ""; switch (environment) { case "dev" -> token = personaFisica.equalsIgnoreCase("delegante") ? - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPFDelegante").toString() + webDriverConfig.getTokendevPFDelegante() : - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPFDelegato").toString(); + webDriverConfig.getTokendevPGDelegato(); case "test" -> token = personaFisica.equalsIgnoreCase("delegante") ? - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPFDelegante").toString() + webDriverConfig.getTokentestPFDelegante() : - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPFDelegato").toString(); + webDriverConfig.getTokentestPFDelegato(); default -> { logger.error("Ambiente non valido"); - Assert.fail("Ambiente non valido o non trovato!"); + Assertions.fail("Ambiente non valido o non trovato!"); } } // Si effettua il login con token exchange String urlLogin = "https://cittadini." + environment + ".notifichedigitali.it/#token=" + token; - this.driver.get(urlLogin); + this.hooks.getDriver().get(urlLogin); logger.info("Login effettuato con successo"); - WebTool.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); headerPFSection.waitLoadHeaderDESection(); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadNotificheDEPage(); } @When("Login con persona fisica {string}") public void loginConDestinatario(String datipersonaFisica) { - logger.info("user persona fisica : " + this.datiPersonaFisica.get("user").toString()); - DataPopulation dataPopulation = new DataPopulation(); + logger.info("user persona fisica : " + webDriverConfig.getUserCesare()); this.datiPersonaFisica = dataPopulation.readDataPopulation(datipersonaFisica + ".yaml"); logger.info("cookies start"); - CookiesSection cookiesPage; - if (!CookieConfig.isCookieEnabled()) { - cookiesPage = new CookiesSection(this.driver); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } } logger.info("cookies end"); - ComeVuoiAccederePage comeVuoiAccederePage = new ComeVuoiAccederePage(this.driver); comeVuoiAccederePage.waitLoadComeVuoiAccederePage(); comeVuoiAccederePage.selezionaSpidButton(); - ScegliSpidPFPage scegliSpidPFPage = new ScegliSpidPFPage(this.driver); scegliSpidPFPage.waitLoadScegliSpidDEPage(); scegliSpidPFPage.selezionareTestButton(); - LoginSpidPFPage loginSpidPFPage = new LoginSpidPFPage(this.driver); loginSpidPFPage.waitLoadLoginSpidDEPage(); - loginSpidPFPage.inserisciUtente(this.datiPersonaFisica.get("user").toString()); - loginSpidPFPage.inserisciPassword(this.datiPersonaFisica.get("pwd").toString()); + loginSpidPFPage.inserisciUtente(webDriverConfig.getUserCesare()); + loginSpidPFPage.inserisciPassword(webDriverConfig.getPwdCesare()); loginSpidPFPage.selezionaEntraConSpidButton(); - ConfermaDatiSpidPFPage confermaDatiSpidPFPage = new ConfermaDatiSpidPFPage(this.driver); confermaDatiSpidPFPage.waitLoadConfermaDatiSpidDEPage(); String nomeUtenteLetto = confermaDatiSpidPFPage.leggiNomeUtente(); if (nomeUtenteLetto.equals(this.datiPersonaFisica.get("name").toString())) { logger.info("nome utente letto : " + nomeUtenteLetto + " uguale a : " + this.datiPersonaFisica.get("name").toString()); } else { logger.error("nome utente letto : " + nomeUtenteLetto + " non è uguale a : " + this.datiPersonaFisica.get("name").toString()); - Assert.fail("nome utente letto : " + nomeUtenteLetto + " non è uguale a : " + this.datiPersonaFisica.get("name").toString()); + Assertions.fail("nome utente letto : " + nomeUtenteLetto + " non è uguale a : " + this.datiPersonaFisica.get("name").toString()); } String cognomeUtenteLetto = confermaDatiSpidPFPage.leggiCognomeUtente(); @@ -136,7 +167,7 @@ public void loginConDestinatario(String datipersonaFisica) { logger.info("cognome utente letto : " + cognomeUtenteLetto + " uguale a : " + this.datiPersonaFisica.get("familyName").toString()); } else { logger.error("cognome utente letto : " + cognomeUtenteLetto + " non uguale a : " + this.datiPersonaFisica.get("familyName").toString()); - Assert.fail("cognome utente letto : " + cognomeUtenteLetto + " non uguale a : " + this.datiPersonaFisica.get("familyName").toString()); + Assertions.fail("cognome utente letto : " + cognomeUtenteLetto + " non uguale a : " + this.datiPersonaFisica.get("familyName").toString()); } String numeroFiscaleLetto = confermaDatiSpidPFPage.leggiNumeroFiscale(); @@ -144,54 +175,46 @@ public void loginConDestinatario(String datipersonaFisica) { logger.info("numero fiscale letto : " + numeroFiscaleLetto + " uguale a : " + this.datiPersonaFisica.get("fiscalNumber").toString()); } else { logger.error("numero fiscale letto : " + numeroFiscaleLetto + " non uguale a : " + this.datiPersonaFisica.get("fiscalNumber").toString()); - Assert.fail("numero fiscale letto : " + numeroFiscaleLetto + " non uguale a : " + this.datiPersonaFisica.get("fiscalNumber").toString()); + Assertions.fail("numero fiscale letto : " + numeroFiscaleLetto + " non uguale a : " + this.datiPersonaFisica.get("fiscalNumber").toString()); } - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); confermaDatiSpidPFPage.selezionaConfermaButton(); headerPFSection.waitUrlToken(); } @When("Login con persona fisica") public void loginConDestinatario(Map datiPF) { - logger.info("user persona fisica : " + datiPF.get("user")); + logger.info("user persona fisica : " + webDriverConfig.getUserCesare()); logger.info("cookies start"); - CookiesSection cookiesPage; - if (!CookieConfig.isCookieEnabled()) { - cookiesPage = new CookiesSection(this.driver); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } } logger.info("cookies end"); - AccediAPiattaformaNotifichePage accediApiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); - accediApiattaformaNotifichePage.waitLoadAccediAPiattaformaNotifichePage(); - accediApiattaformaNotifichePage.selezionaAccediButton(); - if (!CookieConfig.isCookieEnabled()) { - cookiesPage = new CookiesSection(this.driver); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + accediAPiattaformaNotifichePage.waitLoadAccediAPiattaformaNotifichePage(); + accediAPiattaformaNotifichePage.selezionaAccediButton(); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } } - ScegliSpidPFPage scegliSpidPFPage = new ScegliSpidPFPage(this.driver); scegliSpidPFPage.waitLoadScegliSpidDEPage(); scegliSpidPFPage.selezionareTestButton(); - LoginSpidPFPage loginSpidPFPage = new LoginSpidPFPage(this.driver); loginSpidPFPage.waitLoadLoginSpidDEPage(); - loginSpidPFPage.inserisciUtente(datiPF.get("user")); - loginSpidPFPage.inserisciPassword(datiPF.get("pwd")); + loginSpidPFPage.inserisciUtente(webDriverConfig.getUserCesare()); + loginSpidPFPage.inserisciPassword(webDriverConfig.getPwdCesare()); loginSpidPFPage.selezionaEntraConSpidButton(); - ConfermaDatiSpidPFPage confermaDatiSpidPFPage = new ConfermaDatiSpidPFPage(this.driver); confermaDatiSpidPFPage.waitLoadConfermaDatiSpidDEPage(); String nomeUtenteLetto = confermaDatiSpidPFPage.leggiNomeUtente(); if (nomeUtenteLetto.equals(datiPF.get("name"))) { logger.info("nome utente letto : " + nomeUtenteLetto + " uguale a : " + datiPF.get("name")); } else { logger.error("nome utente letto : " + nomeUtenteLetto + " non è uguale a : " + datiPF.get("name")); - Assert.fail("nome utente letto : " + nomeUtenteLetto + " non è uguale a : " + datiPF.get("name")); + Assertions.fail("nome utente letto : " + nomeUtenteLetto + " non è uguale a : " + datiPF.get("name")); } @@ -200,7 +223,7 @@ public void loginConDestinatario(Map datiPF) { logger.info("cognome utente letto : " + cognomeUtenteLetto + " uguale a : " + datiPF.get("familyName")); } else { logger.error("cognome utente letto : " + cognomeUtenteLetto + " non uguale a : " + datiPF.get("familyName")); - Assert.fail("cognome utente letto : " + cognomeUtenteLetto + " non uguale a : " + datiPF.get("familyName")); + Assertions.fail("cognome utente letto : " + cognomeUtenteLetto + " non uguale a : " + datiPF.get("familyName")); } String numeroFiscaleLetto = confermaDatiSpidPFPage.leggiNumeroFiscale(); @@ -208,21 +231,18 @@ public void loginConDestinatario(Map datiPF) { logger.info("numero fiscale letto : " + numeroFiscaleLetto + " uguale a : " + datiPF.get("fiscalNumber")); } else { logger.error("numero fiscale letto : " + numeroFiscaleLetto + " non uguale a : " + datiPF.get("fiscalNumber")); - Assert.fail("numero fiscale letto : " + numeroFiscaleLetto + " non uguale a : " + datiPF.get("fiscalNumber")); + Assertions.fail("numero fiscale letto : " + numeroFiscaleLetto + " non uguale a : " + datiPF.get("fiscalNumber")); } - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); confermaDatiSpidPFPage.selezionaConfermaButton(); headerPFSection.waitUrlToken(); - WebTool.waitTime(2); + webTool.waitTime(2); } @Then("Home page persona fisica viene visualizzata correttamente") public void homePageDestinatarioVieneVisualizzataCorrettamente() { - CookiesSection cookiesSection; - if (!CookieConfig.isCookieEnabled()) { - cookiesSection = new CookiesSection(this.driver); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { cookiesSection.selezionaAccettaTuttiButton(); } @@ -246,23 +266,20 @@ public void homePageDestinatarioVieneVisualizzataCorrettamente() { } else { logger.warn("Http token persona fisica not found"); } - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); headerPFSection.waitLoadHeaderDESection(); - if (!CookieConfig.isCookieEnabled()) { - cookiesSection = new CookiesSection(this.driver); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { 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"); + Assertions.fail("text field codice iun non presente"); } try { @@ -271,23 +288,22 @@ public void homePageDestinatarioVieneVisualizzataCorrettamente() { throw new RuntimeException(e); } - String variabileAmbiente = System.getProperty("environment"); - String urlChiamata = WebTool.getApiBaseUrl() + "notifications/received?"; + String urlChiamata = webDriverConfig.getBaseUrl() + "notifications/received?"; int codiceRispostaChiamataApi = getCodiceRispostaChiamataApi(urlChiamata); if (codiceRispostaChiamataApi != 200 && codiceRispostaChiamataApi != 0) { logger.error("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); - Assert.fail("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); + Assertions.fail("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); } else if (codiceRispostaChiamataApi == 0) { logger.error("TA_QA: La chiamata, " + urlChiamata + " non trovata"); - Assert.fail("TA_QA: La chiamata, " + urlChiamata + " non trovata"); + Assertions.fail("TA_QA: La chiamata, " + urlChiamata + " non trovata"); } } private int getCodiceRispostaChiamataApi(String urlChiamata) { - logger.info("Recupero codice risposta della chiamata" + urlChiamata); + logger.info("Recupero codice risposta della chiamata " + urlChiamata); int codiceRispostaChiamataApi = 0; - for (NetWorkInfo chiamate : netWorkInfos) { + for (NetWorkInfo chiamate : webDriverConfig.getNetWorkInfos()) { if (chiamate.getRequestUrl().startsWith(urlChiamata) && chiamate.getRequestMethod().equals("GET")) { codiceRispostaChiamataApi = Integer.parseInt(chiamate.getResponseStatus()); break; @@ -298,16 +314,13 @@ private int getCodiceRispostaChiamataApi(String urlChiamata) { @And("Logout da portale persona fisica") public void logoutDaPortaleDestinatario() { - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); headerPFSection.waitLoadHeaderDESection(); headerPFSection.selezionaProfiloUtenteMenu(); headerPFSection.selezionaVoceEsci(); - ComeVuoiAccederePage comeVuoiAccederePage = new ComeVuoiAccederePage(this.driver); comeVuoiAccederePage.waitLoadComeVuoiAccederePage(); - if (!CookieConfig.isCookieEnabled()) { - CookiesSection cookiesSection = new CookiesSection(this.driver); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { logger.info("banner dei cookies visualizzato"); cookiesSection.selezionaAccettaTuttiButton(); @@ -324,7 +337,7 @@ public void logoutDaPortaleDestinatario() { logger.info("Spid Button nella pagina Come vuoi accedere portale persona fisica visualizzato"); } else { logger.info("Spid Button nella pagina Come vuoi accedere portale persona fisica non visualizzato"); - Assert.fail("Spid Button nella pagina Come vuoi accedere portale persona fisica non visualizzato"); + Assertions.fail("Spid Button nella pagina Come vuoi accedere portale persona fisica non visualizzato"); } try { @@ -335,9 +348,10 @@ public void logoutDaPortaleDestinatario() { } private boolean readHttpRequest() { - String variabileAmbiente = System.getProperty("environment"); + // String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); boolean urlFound = false; - for (NetWorkInfo netWorkInfo : netWorkInfos) { + for (NetWorkInfo netWorkInfo : webDriverConfig.getNetWorkInfos()) { logger.info(netWorkInfo.getRequestUrl()); logger.info(netWorkInfo.getResponseStatus()); String urlToFind = "https://webapi." + variabileAmbiente + ".notifichedigitali.it/token-exchange"; @@ -354,8 +368,8 @@ private boolean readHttpRequest() { public void loginPortaleDestinatarioTramiteRequestMethod() { boolean urlWithTokenFound = false; int numProvaLogin = 0; - String userPersonaFisica = this.datiPersonaFisica.get("user").toString(); - String pwdPersonaFisica = this.datiPersonaFisica.get("pwd").toString(); + String userPersonaFisica = webDriverConfig.getUserCesare(); + String pwdPersonaFisica = webDriverConfig.getPwdCesare(); while (numProvaLogin < 10) { this.readUrlLoginPersonaFisicaWithToken(userPersonaFisica, pwdPersonaFisica); if (this.urlPersonaFisica.get("responseCode").equalsIgnoreCase("301")) { @@ -374,58 +388,59 @@ public void loginPortaleDestinatarioTramiteRequestMethod() { logger.info("procedura di login from spid provata : " + numProvaLogin); } else { logger.error("procedura di login from spid provata : " + numProvaLogin); - Assert.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaFisica.get("urlPortale") + "' è : " + this.urlPersonaFisica.get("responseCode")); + Assertions.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaFisica.get("urlPortale") + "' è : " + this.urlPersonaFisica.get("responseCode")); } - this.driver.get(this.urlPersonaFisica.get("urlPortale")); + this.hooks.getDriver().get(this.urlPersonaFisica.get("urlPortale")); } private void readUrlLoginPersonaFisicaWithToken(String user, String pwd) { logger.info("spid-login"); - String variabileAmbiente = System.getProperty("environment"); + // String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); SpidLogin spidLogin = new SpidLogin("xx_testenv2", "SpidL2"); spidLogin.setSpidLoginEndPoint("https://hub-login.spid." + variabileAmbiente + ".notifichedigitali.it/login"); spidLogin.runSpidLogin(); if (spidLogin.getResponseBody() == null) { - Assert.fail(" api spid login risponde con body vuoto"); + Assertions.fail(" api spid login risponde con body vuoto"); } String samlRequestFromSpidLogin = spidLogin.getSamlRequest(); if (samlRequestFromSpidLogin != null) { logger.info("samlRequestFromSpidLogin = " + samlRequestFromSpidLogin); } else { - Assert.fail("samlRequestFromSpidLogin is null"); + Assertions.fail("samlRequestFromSpidLogin is null"); } String relayStateFromSpidLogin = spidLogin.getRelayState(); if (relayStateFromSpidLogin != null) { logger.info("relayStateFromSpidLogin = " + relayStateFromSpidLogin); } else { - Assert.fail("relayStateFromSpidLogin is null"); + Assertions.fail("relayStateFromSpidLogin is null"); } String sigAlgFromSpidLogin = spidLogin.getSigAlg(); if (sigAlgFromSpidLogin != null) { logger.info("sigAlgFromSpidLogin = " + sigAlgFromSpidLogin); } else { - Assert.fail("sigAlgFromSpidLogin is null"); + Assertions.fail("sigAlgFromSpidLogin is null"); } String signatureFromSpidLogin = spidLogin.getSignature(); if (signatureFromSpidLogin != null) { logger.info("signatureFromSpidLogin = " + signatureFromSpidLogin); } else { - Assert.fail("signatureFromSpidLogin is null"); + Assertions.fail("signatureFromSpidLogin is null"); } String bindingFromSpidLogin = spidLogin.getBinding(); if (bindingFromSpidLogin != null) { logger.info("bindingFromSpidLogin = " + bindingFromSpidLogin); } else { - Assert.fail("bindingFromSpidLogin is null"); + Assertions.fail("bindingFromSpidLogin is null"); } logger.info("spid demo start"); @@ -440,77 +455,77 @@ private void readUrlLoginPersonaFisicaWithToken(String user, String pwd) { spidDemoStart.runSpidDemoStart(); if (spidDemoStart.getResponseBody() == null) { - Assert.fail("api spid demo start risponde con body vuoto"); + Assertions.fail("api spid demo start risponde con body vuoto"); } String spidLevelFromSpidDemoStart = spidDemoStart.getSpidLevelOutput(); if (spidLevelFromSpidDemoStart != null) { logger.info("spidLevelFromSpidDemoStart = " + spidLevelFromSpidDemoStart); } else { - Assert.fail("spidLevelFromSpidDemoStart is null"); + Assertions.fail("spidLevelFromSpidDemoStart is null"); } String organizationDisplayNameFromSpidDemoStart = spidDemoStart.getOrganizationDisplayNameOutput(); if (organizationDisplayNameFromSpidDemoStart != null) { logger.info("organizationDisplayNameFromSpidDemoStart = " + organizationDisplayNameFromSpidDemoStart); } else { - Assert.fail("organizationDisplayNameFromSpidDemoStart is null"); + Assertions.fail("organizationDisplayNameFromSpidDemoStart is null"); } String samlRequestFromSpidDemoStart = spidDemoStart.getSamlRequestOutput(); if (samlRequestFromSpidDemoStart != null) { logger.info("samlRequestFromSpidDemoStart = " + samlRequestFromSpidDemoStart); } else { - Assert.fail("samlRequestFromSpidDemoStart is null"); + Assertions.fail("samlRequestFromSpidDemoStart is null"); } String relayStateFromSpidDemoStart = spidDemoStart.getRelayStateOutput(); if (relayStateFromSpidDemoStart != null) { logger.info("relayStateFromSpidDemoStart = " + relayStateFromSpidDemoStart); } else { - Assert.fail("relayStateFromSpidDemoStart is null"); + Assertions.fail("relayStateFromSpidDemoStart is null"); } String sigAlgFromSpidDemoStart = spidDemoStart.getSigAlgOutput(); if (sigAlgFromSpidDemoStart != null) { logger.info("sigAlgFromSpidDemoStart = " + sigAlgFromSpidDemoStart); } else { - Assert.fail("sigAlgFromSpidDemoStart is null"); + Assertions.fail("sigAlgFromSpidDemoStart is null"); } String signatureFromSpidDemoStart = spidDemoStart.getSignatureOutput(); if (signatureFromSpidDemoStart != null) { logger.info("signatureFromSpidDemoStart = " + signatureFromSpidDemoStart); } else { - Assert.fail("signatureFromSpidDemoStart is null"); + Assertions.fail("signatureFromSpidDemoStart is null"); } String purposeFromSpidDemoStart = spidDemoStart.getPurposeOutput(); if (purposeFromSpidDemoStart != null) { logger.info("purposeFromSpidDemoStart = " + purposeFromSpidDemoStart); } else { - Assert.fail("purposeFromSpidDemoStart is null"); + Assertions.fail("purposeFromSpidDemoStart is null"); } String minAgeFromSpidDemoStart = spidDemoStart.getMinAgeOutput(); if (minAgeFromSpidDemoStart != null) { logger.info("minAgeFromSpidDemoStart = " + minAgeFromSpidDemoStart); } else { - Assert.fail("minAgeFromSpidDemoStart is null"); + Assertions.fail("minAgeFromSpidDemoStart is null"); } String maxAgeFromSpidDemoStart = spidDemoStart.getMaxAgeOutput(); if (maxAgeFromSpidDemoStart != null) { logger.info("maxAgeFromSpidDemoStart = " + maxAgeFromSpidDemoStart); } else { - Assert.fail("maxAgeFromSpidDemoStart is null"); + Assertions.fail("maxAgeFromSpidDemoStart is null"); } String retryFromSpidDemoStart = spidDemoStart.getRetryOutput(); if (retryFromSpidDemoStart != null) { logger.info("retryFromSpidDemoStart = " + retryFromSpidDemoStart); } else { - Assert.fail("retryFromSpidDemoStart is null"); + Assertions.fail("retryFromSpidDemoStart is null"); } logger.info("spid-demo-login"); @@ -529,21 +544,21 @@ private void readUrlLoginPersonaFisicaWithToken(String user, String pwd) { spidDemoLogin.runSpidDemoLogin(); if (spidDemoLogin.getResponseBody() == null) { - Assert.fail("api spid demo login risponde con body vuoto"); + Assertions.fail("api spid demo login risponde con body vuoto"); } String relayStateFromSpidDemoLogin = spidDemoLogin.getRelayStateOutput(); if (relayStateFromSpidDemoLogin != null) { logger.info("relayStateFromSpidDemoLogin = " + relayStateFromSpidDemoLogin); } else { - Assert.fail("relayStateFromSpidDemoLogin is null"); + Assertions.fail("relayStateFromSpidDemoLogin is null"); } String samlResponseFromSpidDemoLogin = spidDemoLogin.getSAMLResponseOutput(); if (samlResponseFromSpidDemoLogin != null) { logger.info("samlResponseFromSpidDemoLogin = " + samlResponseFromSpidDemoLogin); } else { - Assert.fail("samlResponseFromSpidDemoLogin is null"); + Assertions.fail("samlResponseFromSpidDemoLogin is null"); } logger.info("spid-acs"); @@ -556,7 +571,7 @@ private void readUrlLoginPersonaFisicaWithToken(String user, String pwd) { if (urlPersonaFisica.get("urlPortale") != null) { logger.info("url persona fisica : " + urlPersonaFisica.get("urlPortale")); } else { - Assert.fail("url persona fisica è null "); + Assertions.fail("url persona fisica è null "); } } @@ -564,11 +579,10 @@ private void readUrlLoginPersonaFisicaWithToken(String user, String pwd) { public void loginPortaleDelegatoTramiteRequestMethod(String dpFile) { boolean urlWithTokenFound = false; int numProvaLogin = 0; - DataPopulation dataPopulation = new DataPopulation(); - this.datiDelegato = dataPopulation.readDataPopulation(dpFile + ".yaml"); + //this.datiDelegato = dataPopulation.readDataPopulation(dpFile + ".yaml"); - String userDelegato = this.datiDelegato.get("user").toString(); - String passwordDelegato = this.datiDelegato.get("pwd").toString(); + String userDelegato = webDriverConfig.getUserCesare(); + String passwordDelegato = webDriverConfig.getPwdCesare(); while (numProvaLogin < 10) { this.readUrlLoginPersonaFisicaWithToken(userDelegato, passwordDelegato); @@ -588,53 +602,52 @@ public void loginPortaleDelegatoTramiteRequestMethod(String dpFile) { logger.info("procedura di login from spid provata : " + numProvaLogin); } else { logger.error("procedura di login from spid provata : " + numProvaLogin); - Assert.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaFisica.get("urlPortale") + "' è : " + this.urlPersonaFisica.get("responseCode")); + Assertions.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaFisica.get("urlPortale") + "' è : " + this.urlPersonaFisica.get("responseCode")); } - this.driver.get(this.urlPersonaFisica.get("urlPortale")); + this.hooks.getDriver().get(this.urlPersonaFisica.get("urlPortale")); } @When("Login portale persona fisica tramite token exchange {string}") public void loginPortalePersonaFisicaTramiteTokenExchange(String dpFile) { - String variabileAmbiente = System.getProperty("environment"); - DataPopulation dataPopulation = new DataPopulation(); + String variabileAmbiente = webDriverConfig.getEnvironment(); String urlIniziale = "https://cittadini." + variabileAmbiente + ".notifichedigitali.it/#token="; - String user = dataPopulation.readDataPopulation(dpFile + ".yaml").get("user").toString(); + //TODO.... + //String user = dataPopulation.readDataPopulation(dpFile + ".yaml").get("user").toString(); String token; - if (user.equalsIgnoreCase("cesare")) { + if (webDriverConfig.getUserCesare().equalsIgnoreCase("cesare")) { if (variabileAmbiente.equalsIgnoreCase("test")) { - token = dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokentestPFDelegante").toString(); + token = webDriverConfig.getTokentestPFDelegante(); } else { - token = dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokendevPFDelegante").toString(); + token = token = webDriverConfig.getTokendevPFDelegante(); } } else { if (variabileAmbiente.equalsIgnoreCase("test")) { - token = dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokentestPFDelegato").toString(); + token = webDriverConfig.getTokentestPFDelegato(); } else { - token = dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokendevPFDelegato").toString(); + token = webDriverConfig.getTokendevPFDelegato(); } } String url = urlIniziale + token; - this.driver.get(url); + this.hooks.getDriver().get(url); } public String getTokenExchangePFFromFile(String personaFisica) { - DataPopulation dataPopulation = new DataPopulation(); - String environment = System.getProperty("environment"); + String environment = webDriverConfig.getEnvironment(); String token = ""; switch (environment) { case "dev" -> token = personaFisica.equalsIgnoreCase("delegante") ? - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPFDelegante").toString() + webDriverConfig.getTokendevPFDelegante() : - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPFDelegato").toString(); + webDriverConfig.getTokendevPGDelegato(); case "test" -> token = personaFisica.equalsIgnoreCase("delegante") ? - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPFDelegante").toString() + webDriverConfig.getTokentestPFDelegante() : - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPFDelegato").toString(); + webDriverConfig.getTokentestPFDelegato(); default -> { logger.error("Ambiente non valido"); - Assert.fail("Ambiente non valido o non trovato!"); + Assertions.fail("Ambiente non valido o non trovato!"); } } return token; 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 4b9929e73..12fdddc1e 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 @@ -4,24 +4,28 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import it.pn.frontend.e2e.common.DettaglioNotificaSection; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.HooksNew; 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.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.section.CookiesSection; import it.pn.frontend.e2e.section.destinatario.personaFisica.HeaderPFSection; -import it.pn.frontend.e2e.section.mittente.DettaglioNotificaMittenteSection; import it.pn.frontend.e2e.utility.CookieConfig; import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.DownloadFile; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; + +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; import java.io.File; import java.util.HashMap; @@ -29,43 +33,68 @@ import java.util.Map; import java.util.concurrent.TimeUnit; +@Primary public class NotifichePersonaFisicaPagoPATest { private static final Logger logger = LoggerFactory.getLogger("NotifichePersonaFisicaTest"); - private final WebDriver driver = Hooks.driver; + private Map personaFisica = new HashMap<>(); - private final PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); - private final DataPopulation dataPopulation = new DataPopulation(); - private final DestinatarioPage destinatarioPage = new DestinatarioPage(driver); - private final AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(driver); - private final NotifichePFPage notifichePFPage = new NotifichePFPage(driver); - private final DettaglioNotificaSection dettaglioNotifica = new DettaglioNotificaSection(driver); + @Autowired + @Lazy + private HooksNew hooks; + + @Autowired + private CookieConfig cookieConfig; + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + private NotifichePFPage notifichePFPage; + @Autowired + private AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage; + @Autowired + private DettaglioNotificaSection dettaglioNotifica; + @Autowired + private DestinatarioPage destinatarioPage; + @Autowired + private DataPopulation dataPopulation; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private CookiesSection cookiesSection; + @Autowired + private HeaderPFSection headerPFSection; + + @Autowired + private DownloadFile downloadFile; + + @Autowired + private DettaglioNotificaSection dettaglioNotificaSection; + @Autowired + @Lazy + private WebTool webTool; + @When("Nella pagina Piattaforma Notifiche persona fisica si clicca sul bottone Notifiche") public void nellaPiattaformaDestinatarioCliccareSulBottoneNotifiche() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); 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 (!cookieConfig.isCookieEnabled()) { 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"); + Assertions.fail("text field codice iun non presente"); } try { TimeUnit.SECONDS.sleep(5); @@ -76,57 +105,49 @@ public void paginaPiattaformaNotificheDestinatarioVieneVisualizzataCorrettamente @And("Si visualizza correttamente la Pagina Notifiche persona fisica") public void siVisualizzaCorrettamenteLaPaginaNotificheDestinatario() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.siVisualizzaPaginaNotifichePersonaFisica(); } @And("Nella Pagina Notifiche persona fisica si visualizzano correttamente i filtri di ricerca") public void nellaPaginaNotificheDestinatarioSiVisualizzanoCorrettamenteIFiltriDiRicerca() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.siVisualizzanoFiltriRicerca(); } @And("Nella Pagina Notifiche persona fisica si visualizza correttamente l elenco delle notifiche") public void nellaPaginaNotificheDestinatarioSiVisualizzaCorrettamenteLElencoDelleNotifiche() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.siVisualizzaElencoNotifiche(); } @And("Si visualizza l elenco delle notifiche relative al delegante") public void siVisualizzaLElencoDelleNotificheRelativeAlDelegante() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.siVisualizzaElencoNotifiche(); } @And("Si visualizza l elenco delle notifiche dell impresa") public void siVisualizzaLElencoDelleNotificheDellImpresa() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.siVisualizzaElencoNotifiche(); } @And("Si seleziona il nome del delegante nell elenco") public void siSelezionaIlNomeDelDeleganteNellElenco() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.clickNomeDelegante(); } @Then("Si visualizzano correttamente le notifiche in elenco paginato") public void siVisualizzanoCorrettamenteLeNotificheInElencoPaginato() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); int numeroRigheNotifiche = notifichePFPage.siVisualizzaNotifichePresenti(); if (numeroRigheNotifiche != 0) { logger.info("Si visualizza correttamente l'elenco notifiche"); } else { logger.error("NON visualizza correttamente l'elenco notifiche"); - Assert.fail("NON visualizza correttamente l'elenco notifiche"); + Assertions.fail("NON visualizza correttamente l'elenco notifiche"); } } @And("Si visualizzano le notifiche dalla piu recente") public void siVisualizzanoLeNotificheDallaPiuRecente() { - driver.navigate().refresh(); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); + hooks.getDriver().navigate().refresh(); List dateNotifiche = notifichePFPage.getDateNotifiche(); if (dateNotifiche.size() != 0) { @@ -135,56 +156,48 @@ public void siVisualizzanoLeNotificheDallaPiuRecente() { logger.info("Le date sono ordinate correttamente"); } else { logger.error("Le date NON sono ordinate correttamente"); - Assert.fail("Le date NON sono ordinate correttamente"); + Assertions.fail("Le date NON sono ordinate correttamente"); } } else { logger.error("Non sono presenti notifiche con date"); - Assert.fail("Non sono presenti notifiche con date"); + Assertions.fail("Non sono presenti notifiche con date"); } } @And("Si aggiorna la paginazione utilizzando le frecce") public void siAggiornaLaPaginazioneUtilizzandoLeFrecce() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.clickPaginaSuccessiva(); } @And("Si visualizza correttamente una pagina diversa dalla precedente") public void siVisualizzaCorrettamenteUnaPaginaDiversaDallaPrecedente() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadPaginaDifferente(); } @And("Si visualizza correttamente la prossima pagina") public void siVisualizzaCorrettamenteLaSecondaPagina() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadSecondaPagina(); } @And("Ci si posiziona su una pagina differente attraverso i numeri e si applica filtro {string}") public void ciSiPosizionaSuUnaPaginaDifferenteAttraversoINumeriESiApplicaFiltro(String dpFile) { - DataPopulation dataPopulation = new DataPopulation(); Map datiPg = dataPopulation.readDataPopulation(dpFile + ".yaml"); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.siSceglieUnaPaginaDiversaConNumeroESiFiltra(datiPg.get("codiceIUN").toString()); } @And("Si modifica il numero di notifiche visualizzate scegliendo un valore diverso da quello di default") public void siModificaIlNumeroDiNotificheVisualizzateScegliendoUnValoreDiversoDaQuelloDiDefault() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.modificaNumeroNotifichePagina(); } @And("Ci si posiziona su una pagina differente da quella di default e si aumenta il numero di modifiche visualizzate") public void ciSiPosizionaSuUnaPaginaDifferenteDaQuellaDiDefaultESiAumentaIlNumeroDiModificheVisualizzate() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.numeroDiversoPagine(); } @And("Si visualizza un numero di pagine visualizzate uguale a quello selezionato") public void siVisualizzaUnNumeroDiPagineVisualizzateUgualeAQuelloSelezionato() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { @@ -196,28 +209,24 @@ public void siVisualizzaUnNumeroDiPagineVisualizzateUgualeAQuelloSelezionato() { logger.info("Si visualizzano venti notifiche in elenco"); } else { logger.error("NON si visualizzano venti notifiche in elenco"); - Assert.fail("NON si visualizzano venti notifiche in elenco"); + Assertions.fail("NON si visualizzano venti notifiche in elenco"); } } @When("La persona fisica clicca sulla notifica restituita") public void ilDestinatarioCliccaSullaNotificaRestituita() { logger.info("Si clicca sulla notifica"); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.selezionaNotifica(); } @And("Si visualizza correttamente la section Dettaglio Notifica persona fisica") public void siVisualizzaCorrettamenteLaSectionDettaglioNotificaDestinatario() { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); dettaglioNotificaSection.waitLoadDettaglioNotificaDESection(); } @And("Si controlla sezione Pagamento se notifica prevede il pagamento") public void siControllaSezionePagamentoSeNotificaPrevedeIlPagamento() { - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); - boolean sezionePagamentoIsDisplayed = accediAPiattaformaNotifichePage.sezionePagamentoDisplayed(); if (!sezionePagamentoIsDisplayed) { @@ -236,7 +245,7 @@ public void siControllaSezionePagamentoSeNotificaPrevedeIlPagamento() { logger.info("Sezione titolo di pagamento è visualizzato"); } else { logger.error("Sezione titolo di pagamento non è visualizzato"); - Assert.fail("Sezione titolo di pagamento non è visualizzato"); + Assertions.fail("Sezione titolo di pagamento non è visualizzato"); } boolean codiceAvvisoIsDisplayed = accediAPiattaformaNotifichePage.codiceAvvisoDisplayed(); @@ -244,7 +253,7 @@ public void siControllaSezionePagamentoSeNotificaPrevedeIlPagamento() { logger.info("Sezione codice avviso è visualizzato"); } else { logger.error("Sezione codice avviso non è visualizzato"); - Assert.fail("Sezione codice avviso non è visualizzato"); + Assertions.fail("Sezione codice avviso non è visualizzato"); } boolean modelloF24IsDisplayed = accediAPiattaformaNotifichePage.modelloF24Displayed(); @@ -252,7 +261,7 @@ public void siControllaSezionePagamentoSeNotificaPrevedeIlPagamento() { logger.info("Sezione scarica modello F24 è visualizzato"); } else { logger.error("Sezione scarica modello F24 non è visualizzato"); - Assert.fail("Sezione scarica modello F24 non è visualizzato"); + Assertions.fail("Sezione scarica modello F24 non è visualizzato"); } boolean scaricaAvvisoDisplayed = accediAPiattaformaNotifichePage.scaricaAvvisoDisplayed(); @@ -260,7 +269,7 @@ public void siControllaSezionePagamentoSeNotificaPrevedeIlPagamento() { logger.info("Sezione scarica avviso è visualizzato"); } else { logger.error("Sezione scarica avviso non è visualizzato"); - Assert.fail("Sezione scarica avviso non è visualizzato"); + Assertions.fail("Sezione scarica avviso non è visualizzato"); } boolean pagaAvvisoDisplayed = accediAPiattaformaNotifichePage.pagaAvvisoDisplayed(); @@ -268,33 +277,30 @@ public void siControllaSezionePagamentoSeNotificaPrevedeIlPagamento() { logger.info("Sezione paga avviso è visualizzato"); } else { logger.error("Sezione paga avviso non è visualizzato"); - Assert.fail("Sezione paga avviso non è visualizzato"); + Assertions.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}") public void siSelezionanoIFileAttestazioniOpponibiliDaScaricareAllInternoDellaNotificaDestinatarioESiControllaCheIlDownloadSiaAvvenuto(String dpFile) { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); int numeroLinkAttestazioniOpponibile = dettaglioNotificaSection.getLinkAttestazioniOpponibili(); - DownloadFile downloadFile = new DownloadFile(this.driver); - DataPopulation dataPopulation = new DataPopulation(); Map datiNotifica = dataPopulation.readDataPopulation(dpFile + ".yaml"); String workingDirectory = System.getProperty("user.dir"); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = webDriverConfig.getHeadless().equalsIgnoreCase("true"); File pathCartella = new File(workingDirectory + "/src/test/resources/dataPopulation/downloads"); if (!downloadFile.controlloEsistenzaCartella(pathCartella)) { pathCartella.mkdirs(); } for (int i = 0; i < numeroLinkAttestazioniOpponibile; i++) { dettaglioNotificaSection.clickLinkAttestazioniOpponibile(i); - WebTool.waitTime(5); + webTool.waitTime(5); String urlFileAttestazioneOppponibile = downloadFile.getUrl("https://webapi.test.notifichedigitali.it/delivery-push/" + datiNotifica.get("codiceIUN").toString() + "/legal-facts/"); if (headless && urlFileAttestazioneOppponibile.isEmpty()) { String testoLink = dettaglioNotificaSection.getTextLinkAttestazioniOpponibili(i); logger.error("Non è stato recuperato url per il download per il link: " + testoLink); - Assert.fail("Non è stato recuperato url per il download per il link: " + testoLink); + Assertions.fail("Non è stato recuperato url per il download per il link: " + testoLink); } File file = new File(workingDirectory + "/src/test/resources/dataPopulation/downloads/notificaN" + i + ".pdf"); downloadFile.download(urlFileAttestazioneOppponibile, file, headless); @@ -307,18 +313,15 @@ public void siSelezionanoIFileAttestazioniOpponibiliDaScaricareAllInternoDellaNo @And("Si clicca sul opzione Vedi Dettaglio") public void siCliccaSulOpzioneVediDettaglio() { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(driver); dettaglioNotificaSection.selezioneVediDettaglioButton(); } @And("Si visualizza correttamente la Pagina Notifiche persona fisica delegante {string}") public void siVisualizzaCorrettamenteLaPaginaNotifichePersonaFisicaDelegante(String dpFile) { - DataPopulation dataPopulation = new DataPopulation(); Map personaFisicaDelgante = dataPopulation.readDataPopulation(dpFile + ".yaml"); String nome = personaFisicaDelgante.get("name").toString(); String cognome = personaFisicaDelgante.get("familyName").toString(); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadNotificheDEPageDelegante(nome, cognome); } @@ -370,7 +373,7 @@ public void siControllaCheNelPortaleDelDestinatarioLaNotificaSiaESiChiudeLaSched logger.info("Si controlla che anche nel portale del destinatario la notifica sia in stato " + statoNotifica + " e si chiude la scheda"); piattaformaNotifichePage.selezionaPrimaNotifica(); piattaformaNotifichePage.verificaPresenzaStato(statoNotifica); - WebTool.closeTab(); + webTool.closeTab(); } @And("Si verifica che gli allegati denominati {string} non sono scaricabili") @@ -401,7 +404,7 @@ public void siVerificaCheNonSiaPossibileScaricareLeRicevutePEC() { public void siControllaTestoSiaNelBoxPagamento(String xpath) { boolean isPresent = dettaglioNotifica.isFieldDisplayed(By.xpath(xpath)); if (!isPresent) { - Assert.fail("L'elemento non esiste"); + Assertions.fail("L'elemento non esiste"); } } @@ -411,7 +414,7 @@ public void siControllaTestoNonSiaNelBoxPagamento(String xpathString) { boolean isNotPresent = dettaglioNotifica.isFieldNotDisplayed(xpath); if (!isNotPresent) { - Assert.fail("L'elemento esiste"); + Assertions.fail("L'elemento esiste"); } } @@ -424,7 +427,6 @@ public void nellaPaginaPiattaformaNotificheVisualizzanoCorrettamenteIFiltriDiRic @Then("Si visualizza correttamente la section Dettaglio Notifica annullata") public void siVisualizzaCorrettamenteLaSectionDettaglioNotificaAnnullata() { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); dettaglioNotificaSection.waitLoadDettaglioNotificaAnnullataDESection(); } @@ -460,7 +462,7 @@ public void siControllaDiAverApertoLAvvisoPagoPa() { @And("Si torna alla pagina precedente") public void siTornaAllaPaginaPrecedente() { logger.info("Si torna alla pagina precedente"); - driver.navigate().back(); + hooks.getDriver().navigate().back(); } @And("Si controlla non sia presente il bottone paga") @@ -478,13 +480,13 @@ public void siControllaCostiDiNotifica() { logger.info("Costi di notifica non inclusi"); }else { logger.error("Costi di notifica inclusi"); - Assert.fail("Costi di notifica inclusi"); + Assertions.fail("Costi di notifica inclusi"); } } @And("Cliccare sul bottone Paga") public void cliccaBottonePaga(){ - WebTool.waitTime(5); + webTool.waitTime(5); accediAPiattaformaNotifichePage.cliccaPaga(); } @@ -501,9 +503,8 @@ public void siVisualizzaStatoPagato(){ @And("Verifica nome ente mittente {string}") public void verificaNomeEnteMittente(String nomeEnte){ - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); Map infoNotifiche = dettaglioNotificaSection.recuperoInfoNotificheDestinatario(); - Assert.assertTrue(infoNotifiche.get("mittente").equalsIgnoreCase(nomeEnte)); + Assertions.assertTrue(infoNotifiche.get("mittente").equalsIgnoreCase(nomeEnte)); } } 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 84baec822..daac5a880 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 @@ -5,19 +5,18 @@ import io.cucumber.java.en.When; import it.pn.frontend.e2e.api.personaFisica.RecuperoOTPRecapiti; import it.pn.frontend.e2e.common.RecapitiDestinatarioPage; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.listeners.NetWorkInfo; import it.pn.frontend.e2e.pages.destinatario.personaFisica.ITuoiRecapitiPage; import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; -import it.pn.frontend.e2e.stepDefinitions.mittente.NotificaMittentePagoPATest; import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.util.List; import java.util.Map; @@ -27,77 +26,88 @@ public class RecapitiPersonaFisicaTest { private static final Logger logger = LoggerFactory.getLogger("InserimentoOTPSbagliato"); - public static String OTP; - private final WebDriver driver = Hooks.driver; - private final RecapitiDestinatarioPage recapitiDestinatarioPage = new RecapitiDestinatarioPage(this.driver); - private final DataPopulation dataPopulation = new DataPopulation(); - private final List netWorkInfos = Hooks.netWorkInfos; + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + @Autowired + private RecapitiDestinatarioPage recapitiDestinatarioPage ; + @Autowired + private DataPopulation dataPopulation; + @Autowired + private ITuoiRecapitiPage iTuoiRecapitiPage; + @Autowired + private RecuperoOTPRecapiti recuperoOTPRecapiti; + + @Autowired + @Lazy + private WebTool webTool; - private final NotificaMittentePagoPATest notificaMittentePagoPATest = new NotificaMittentePagoPATest(); - private final ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); + public static String OTP; @When("Nella pagina Piattaforma Notifiche persona fisica si clicca sul bottone I Tuoi Recapiti") public void nellaPaginaPiattaformaNotifichePersonaFisicaSiCliccaSulBottoneITuoiRecapiti() { logger.info("Si cerca di cliccare il bottone I Tuoi Recapiti"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(driver); iTuoiRecapitiPage.iTuoiRecapitiButtonClick(); } @And("Si visualizza correttamente la pagina I Tuoi Recapiti") public void siVisualizzaCorrettamenteLaPaginaITuoiRecapiti() { logger.info("Si controlla che si visualizza correttamente la pagina I Tuoi Recapiti"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.waitLoadITuoiRecapitiPage(); } @And("Nella pagina I Tuoi Recapiti si visualizza correttamente la sezione 'E-mail o numero di cellulare'") public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteLaSezioneEmailONumeroDiCellulare() { logger.info("Si controlla che si visualizza correttamente la sezione 'E-mail o numero di cellulare'"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.waitLoadCourtesyContacts(); } @And("Nella pagina I Tuoi Recapiti si inserisce la PEC {string}") - public void nellaPaginaITuoiRecapitiSiInserisceLaPECDelDestinatario(String emailPec ) { + public void nellaPaginaITuoiRecapitiSiInserisceLaPECDelDestinatario(String emailPec) { logger.info("Si inserisce la email PEC"); recapitiDestinatarioPage.insertEmailPEC(emailPec); } @And("Nella pagina I Tuoi Recapiti si inserisce l'email {string} per la PEC del destinatario") public void nellaPaginaITuoiRecapitiSiInserisceLEmailPerLaPECDelDestinatario(String emailPEC) { - logger.info("Si inserisce la email PEC"); + logger.info("Si inserisce la email PEC del destinatario"); 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"); + logger.info("Nella pagina I Tuoi Recapiti si inserisce l'indirizzo della 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"); - WebTool.waitTime(10); + webTool.waitTime(10); recapitiDestinatarioPage.confermaButtonClick(); } @And("Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP") public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlPopUpDiInserimentoOTP() { logger.info("Si visualizza correttamente il pop-up di inserimento OTP"); - String url = WebTool.getApiBaseUrl() + "addresses"; + String url = webDriverConfig.getBaseUrl() + "addresses"; recapitiDestinatarioPage.waitLoadPopUp(); - WebTool.waitTime(3); + webTool.waitTime(3); if (verificaChiamataEmail(url)) { logger.info("La chiamata per inviare l'otp è stata effettuata"); } else { logger.error("La chiamata per inviare l'otp NON è stata effettuata"); - Assert.fail("La chiamata per inviare l'otp NON è stata effettuata"); + Assertions.fail("La chiamata per inviare l'otp NON è stata effettuata"); } } private boolean verificaChiamataEmail(String url) { - for (NetWorkInfo info : netWorkInfos) { + for (NetWorkInfo info : webDriverConfig.getNetWorkInfos()) { if (info.getRequestUrl().contains(url) && info.getResponseStatus().equals("200")) { logger.info("La chiamata per inviare email é utilizzabile"); return true; @@ -120,13 +130,13 @@ public void nellaPaginaITuoiRecapitiSiInserisceOTPSbagliato3Volte(String otp) { while (attempts < 3) { recapitiDestinatarioPage.sendOTP(otp); recapitiDestinatarioPage.confermaButtonClickPopUp(); - WebTool.waitTime(2); + webTool.waitTime(2); recapitiDestinatarioPage.clearOTP(); attempts++; } recapitiDestinatarioPage.sendOTP(otp); recapitiDestinatarioPage.confermaButtonClickPopUp(); - WebTool.waitTime(2); + webTool.waitTime(2); } @And("Si visualizza correttamente il messaggio di errore") @@ -135,14 +145,13 @@ public void siVisualizzaCorrettamenteIlMessaggioDiErrore() { if (!recapitiDestinatarioPage.waitMessaggioErrore()) { logger.error("Il messaggio di errore non viene visualizzato"); - Assert.fail("Il messaggio di errore non viene visualizzato"); + Assertions.fail("Il messaggio di errore non viene visualizzato"); } } @And("Cliccare sul bottone Annulla") public void cliccareSulBottoneAnnulla() { logger.info("Si clicca sul bottone Annulla"); - recapitiDestinatarioPage.annullaButtonClick(); } @@ -150,7 +159,6 @@ public void cliccareSulBottoneAnnulla() { @And("Nella pagina I Tuoi Recapiti clicca sul bottone conferma") public void nellaPaginaITuoiRecapitiCliccaSulBottoneConferma() { logger.info("Si cerca di cliccare sul bottone conferma"); - recapitiDestinatarioPage.confermaButtonClickPopUp(); } @@ -162,26 +170,25 @@ public void nellaPaginaITuoiRecapitiSiInserisceLaPECErrata(String pecErrata) { @Then("Si visualizza correttamente il messaggio di pec errata") public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlMessaggioDiPecErrata() { + webTool.waitTime(3); String errorMessageRead = recapitiDestinatarioPage.getPecErrorMessage(); - Assert.assertEquals("messaggio di errore letto : '" + errorMessageRead + "' non è uguale a : Indirizzo PEC non valido", "Indirizzo PEC non valido", errorMessageRead); + Assertions.assertEquals("Indirizzo PEC non valido", errorMessageRead, "messaggio di errore letto : '" + errorMessageRead + "' non è uguale a : Indirizzo PEC non valido"); } @And("Si controlla che il tasto conferma sia bloccato") public void nellaPaginaITuoiRecapitiSiControllaCheIlTastoConfermaSiaBloccato() { - Assert.assertTrue("il buttone Conferma non è disabilitato", recapitiDestinatarioPage.verificaBottoneConfermaDisabilitato()); + Assertions.assertTrue(recapitiDestinatarioPage.verificaBottoneConfermaDisabilitato(), "il buttone Conferma non è disabilitato"); } @And("Si controlla che il tasto avvisami via email sia bloccato") public void nellaPaginaITuoiRecapitiSiControllaCheIlTastoAvvisamiViaEmailSiaBloccato() { - - Assert.assertTrue("il bottone avvisami via email non è disabilitato", recapitiDestinatarioPage.avvisamiViaEmailIsDisabled()); + Assertions.assertTrue(recapitiDestinatarioPage.avvisamiViaEmailIsDisabled(), "il bottone avvisami via email non è disabilitato"); } @And("Si inserisce l'email della {string} e si clicca sul bottone avvisami via email") public void nellaPaginaITuoiRecapitiSiInserisceLEmailDelPFECliccaSulBottoneAvvisamiViaEmail(String dpFile) { logger.info("Si inserisce la email"); - DataPopulation dataPopulation = new DataPopulation(); Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); String email = personaFisica.get("mail").toString(); @@ -192,7 +199,6 @@ public void nellaPaginaITuoiRecapitiSiInserisceLEmailDelPFECliccaSulBottoneAvvis @And("Si inserisce l'email {string} e si clicca sul bottone avvisami via email") public void nellaPaginaITuoiRecapitiSiInserisceLEmailDelPFECliccaSulBottoneAvvisami(String email) { logger.info("Si inserisce la email"); - recapitiDestinatarioPage.insertEmail(email); recapitiDestinatarioPage.clickAvvisamiViaEmail(); } @@ -200,9 +206,8 @@ public void nellaPaginaITuoiRecapitiSiInserisceLEmailDelPFECliccaSulBottoneAvvis @And("Si visualizza correttamente il pop-up e si clicca su conferma") public void siVisualizzaCorrettamenteIlPopUpESiCliccaSuConferma() { logger.info("click pop-up conferma email"); - - Assert.assertFalse("il popup Conferma email non si visualizza", recapitiDestinatarioPage.verificaPopUpConfermaEmail()); - recapitiDestinatarioPage.clickHoCapitoCheckBoxPopup(); + //Assert.assertFalse("il popup Conferma email non si visualizza", recapitiDestinatarioPage.verificaPopUpConfermaEmail()); + // recapitiDestinatarioPage.clickHoCapitoCheckBoxPopup(); recapitiDestinatarioPage.confermaEmailPopup(); } @@ -211,21 +216,16 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlNumeroDiTelefonoDelPF(String dp logger.info("Si inserisce il numero di telefono PF"); - DataPopulation dataPopulation = new DataPopulation(); Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); String phoneNumber = personaFisica.get("telefono").toString(); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.insertTelephoneNumber(phoneNumber); iTuoiRecapitiPage.clickAvvisamiViaSMS(); } @And("Nella pagina I Tuoi Recapiti si inserisce il numero di telefono PF {string} e clicca sul bottone avvisami via SMS") public void nellaPaginaITuoiRecapitiSiInserisceIlNumeroDiTelefonoPF(String phoneNumber) { - logger.info("Si inserisce il numero di telefono PF"); - - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.insertTelephoneNumber(phoneNumber); iTuoiRecapitiPage.clickAvvisamiViaSMS(); @@ -233,29 +233,25 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlNumeroDiTelefonoPF(String phone @And("Nella pagina I Tuoi Recapiti si inserisce il numero di telefono errato {string}") public void nellaPaginaITuoiRecapitiSiInserisceIlNumeroDiTelefonoErrato(String numeroErrato) { - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.insertTelephoneNumber(numeroErrato); } @Then("Nella pagina I Tuoi Recapiti si visualizza correttamente il messaggio di numero di telefono errato") public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlMessaggioDiNumeroDiTelefonoErrato() { - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); String errorMessageRead = iTuoiRecapitiPage.getPhoneErrorMessage(); - Assert.assertEquals("messaggio di errore letto : '" + errorMessageRead + "' non è uguale a : Numero di cellulare non valido", "Numero di cellulare non valido", errorMessageRead); + Assertions.assertEquals("Numero di cellulare non valido", errorMessageRead, "messaggio di errore letto : '" + errorMessageRead + "' non è uguale a : Numero di cellulare non valido"); } @And("Nella pagina I Tuoi Recapiti si controlla che il tasto avvisami via sms sia bloccato") public void nellaPaginaITuoiRecapitiSiControllaCheIlTastoAvvisamiViaSmsSiaBloccato() { - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); - Assert.assertTrue("il bottone avvisami via SMS non è disabilitato", iTuoiRecapitiPage.avvisamiViaSMSIsDisabled()); + Assertions.assertTrue(iTuoiRecapitiPage.avvisamiViaSMSIsDisabled(), "il bottone avvisami via SMS non è disabilitato"); } @And("Nella pagina I Tuoi Recapiti si recupera il codice OTP tramite chiamata request {string}") public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequest(String dpFile) { Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); String startUrl = "http://localhost:8887/"; String url = startUrl + recuperoOTPRecapiti.getUrlEndPoint() + personaFisica.get("emailPec"); @@ -265,7 +261,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequest( personaFisica.put("OTPpec", OTP); dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); if (variabileAmbiente.equalsIgnoreCase("test")) { startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; } else if (variabileAmbiente.equalsIgnoreCase("dev")) { @@ -275,12 +271,12 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequest( results = recuperoOTPRecapiti.runRecuperoOTPRecapiti(url); if (results) { String OTP = recuperoOTPRecapiti.getResponseBody(); - logger.info("OTTTPPP"+OTP); + logger.info("OTTTPPP" + OTP); personaFisica.put("OTPpec", OTP); dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { logger.error("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); - Assert.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); + Assertions.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); } } } @@ -288,9 +284,6 @@ 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); @@ -300,10 +293,10 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequestD recapitiDestinatarioPage.confermaButtonClickPopUp(); if (recapitiDestinatarioPage.waitMessaggioErrore()) { logger.error("Il codice OTP inserito è sbagliato"); - Assert.fail("Il codice OTP inserito è sbagliato"); + Assertions.fail("Il codice OTP inserito è sbagliato"); } } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); if (variabileAmbiente.equalsIgnoreCase("test")) { startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; } else if (variabileAmbiente.equalsIgnoreCase("dev")) { @@ -317,11 +310,11 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPTramiteChiamataRequestD recapitiDestinatarioPage.confermaButtonClickPopUp(); if (recapitiDestinatarioPage.waitMessaggioErrore()) { logger.error("Il codice OTP inserito è sbagliato"); - Assert.fail("Il codice OTP inserito è sbagliato"); + Assertions.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()); + Assertions.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); } } } @@ -331,12 +324,11 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTP(String dpFile) { logger.info("Si inserisce il codice OTP di verifica"); String otp = dataPopulation.readDataPopulation(dpFile + ".yaml").get("OTPpec").toString(); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.sendOTP(otp); recapitiDestinatarioPage.confermaButtonClickPopUp(); if (recapitiDestinatarioPage.waitMessaggioErrore()) { logger.error("Il codice OTP inserito è sbagliato"); - Assert.fail("Il codice OTP inserito è sbagliato"); + Assertions.fail("Il codice OTP inserito è sbagliato"); } } @@ -344,22 +336,21 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTP(String dpFile) { @And("Nella pagina I Tuoi Recapiti si inserisce il codice OTP") public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTP() { logger.info("Si inserisce il codice OTP di verifica"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); - WebTool.waitTime(2); + webTool.waitTime(2); iTuoiRecapitiPage.sendOTP(OTP); recapitiDestinatarioPage.confermaButtonClickPopUp(); if (recapitiDestinatarioPage.waitMessaggioErrore()) { logger.error("Il codice OTP inserito è sbagliato"); - Assert.fail("Il codice OTP inserito è sbagliato"); + Assertions.fail("Il codice OTP inserito è sbagliato"); } } @And("Si verifica se popup conferma presente") - public void verificaPopupConferma(){ + public void verificaPopupConferma() { if (recapitiDestinatarioPage.siVisualizzaPopUpConferma()) { logger.info("Si clicca su conferma nel pop-up"); recapitiDestinatarioPage.clickConfermaButton(); - driver.navigate().refresh(); + hooks.getDriver().navigate().refresh(); } } @@ -374,18 +365,17 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTPScaduto() throws Inter @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(15); - driver.navigate().refresh(); - if (!recapitiDestinatarioPage.verificaPecAssociata()) { - logger.error("Pec non associata con errore"); - Assert.fail("Pec non associata con errore"); - } + webTool.waitTime(15); + hooks.getDriver().navigate().refresh(); + if (!recapitiDestinatarioPage.verificaPecAssociata()) { + logger.error("Pec non associata con errore"); + Assertions.fail("Pec non associata con errore"); + } } @And("Nella pagina I Tuoi Recapiti si recupera l'OTP della Email tramite request method {string}") public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailTramiteRequestMethod(String dpFile) { Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { @@ -400,7 +390,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailTramiteRequestMethod personaFisica.put("OTPmail", OTP); dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); if (variabileAmbiente.equalsIgnoreCase("test")) { startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; } else if (variabileAmbiente.equalsIgnoreCase("dev")) { @@ -414,7 +404,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailTramiteRequestMethod dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { logger.error("La chiamata non ha risposto correttamente con codice:" + recuperoOTPRecapiti.getResponseCode()); - Assert.fail("La chiamata non ha risposto correttamentecon codice:" + recuperoOTPRecapiti.getResponseCode()); + Assertions.fail("La chiamata non ha risposto correttamentecon codice:" + recuperoOTPRecapiti.getResponseCode()); } } } @@ -422,7 +412,6 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailTramiteRequestMethod @And("Nella pagina I Tuoi Recapiti si recupera l'OTP della Email 'altri recapiti' tramite request method {string}") public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailAltriRecapitiTramiteRequestMethod(String dpFile) { Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { @@ -437,7 +426,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailAltriRecapitiTramite personaFisica.put("OTPmail", OTP); dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); if (variabileAmbiente.equalsIgnoreCase("test")) { startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; } else if (variabileAmbiente.equalsIgnoreCase("dev")) { @@ -451,7 +440,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaEmailAltriRecapitiTramite dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { logger.error("La chiamata non ha risposto correttamente con codice:" + recuperoOTPRecapiti.getResponseCode()); - Assert.fail("La chiamata non ha risposto correttamentecon codice:" + recuperoOTPRecapiti.getResponseCode()); + Assertions.fail("La chiamata non ha risposto correttamentecon codice:" + recuperoOTPRecapiti.getResponseCode()); } } } @@ -461,7 +450,6 @@ public void nellaPaginaITuoiRecapitiSiInserisceLOTPRicevutoViaEmail(String dpFil logger.info("Si inserisce il codice OTP di verifica"); String otp = dataPopulation.readDataPopulation(dpFile + ".yaml").get("OTPmail").toString(); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.sendOTP(otp); recapitiDestinatarioPage.confermaButtonClickPopUp(); } @@ -471,28 +459,25 @@ public void nellaPaginaITuoiRecapitiSiControllaCheLaEmailSiaPresente() { logger.info("Si controlla che la Email sia stata inserita correttamente"); if (!recapitiDestinatarioPage.verificaMailAssociata()) { logger.error("Email non è stata inserita correttamente"); - Assert.fail("Email non è stata inserita correttamente"); + Assertions.fail("Email non è stata inserita correttamente"); } } @And("Nella pagina I Tuoi Recapiti si controlla che ci sia già una Email") public void nellaPaginaITuoiRecapitiSiControllaCheCiSiaGiaUnaEmail() { logger.info("Si controlla che che ci sia già una Email"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(driver); iTuoiRecapitiPage.waitLoadITuoiRecapitiPage(); Map personaFisica = dataPopulation.readDataPopulation("personaFisica.yaml"); String email = personaFisica.get("mail").toString(); - BackgroundTest backgroundTest = new BackgroundTest(); - if (!recapitiDestinatarioPage.verificaMailAssociata()) { logger.info("verifica mail associata, step 1"); backgroundTest.aggiuntaEmailPF(); } else if (recapitiDestinatarioPage.controlloEmailAssociata(email)) { logger.info("verifica mail associata, step 2"); iTuoiRecapitiPage.eliminaEmailEsistente(); - WebTool.waitTime(3); + webTool.waitTime(3); if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi e-mail")) { logger.info("verifica mail associata, step 3"); @@ -512,7 +497,6 @@ public void nellaPaginaITuoiRecapitiSiControllaCheCiSiaGiaUnaEmail() { @And("Nella pagina I Tuoi Recapiti si clicca sul bottone modifica") public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneModifica() { logger.info("Si clicca sul bottone modifica"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.waitLoadITuoiRecapitiPage(); recapitiDestinatarioPage.clickSuModifica(); } @@ -521,7 +505,6 @@ public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneModifica() { public void nellaPaginaITuoiRecapitiSiInserisceLaNuovaEmailDelPFECliccaSulBottoneAvvisamiViaEmail(String dpFile) { logger.info("Si inserisce la nuova Email e si clicca sul bottone avvisami via email"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.waitLoadITuoiRecapitiPage(); iTuoiRecapitiPage.cancellaTesto(); @@ -535,15 +518,12 @@ public void nellaPaginaITuoiRecapitiSiInserisceLaNuovaEmailDelPFECliccaSulBotton @Then("Nella pagina I Tuoi Recapiti si controlla che la Email sia stata modificata") public void nellaPaginaITuoiRecapitiSiControllaCheLaEmailSiaStataModificata() { logger.info("Si controlla che la Email sia stata modificata"); - - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.verificaEmailModificata(); } @And("Nella pagina I Tuoi Recapiti si recupera l'OTP della nuova Email tramite request method {string}") public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaNuovaEmailTramiteRequestMethod(String dpFile) { Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); try { TimeUnit.SECONDS.sleep(3); @@ -560,7 +540,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaNuovaEmailTramiteRequestM personaFisica.put("OTPmail", OTP); dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); if (variabileAmbiente.equalsIgnoreCase("test")) { startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; } else if (variabileAmbiente.equalsIgnoreCase("dev")) { @@ -574,7 +554,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaNuovaEmailTramiteRequestM dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { logger.error("La chiamata con url: " + url + " ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); - Assert.fail("La chiamata con url: " + url + " ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); + Assertions.fail("La chiamata con url: " + url + " ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); } } } @@ -582,10 +562,9 @@ public void nellaPaginaITuoiRecapitiSiRecuperaLOTPDellaNuovaEmailTramiteRequestM @And("Nella pagina I Tuoi Recapiti si clicca sul bottone elimina email e si conferma nel pop up") public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneEliminaEmailESiConfermaNelPopUp() { logger.info("Si clicca sul bottone elimina email"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.eliminaEmailEsistente(); - if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi e-mail")) { + if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi email")) { recapitiDestinatarioPage.confermaButtonEliminaClick(); } else { recapitiDestinatarioPage.clickSuChiudiPopUp(); @@ -598,10 +577,9 @@ public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneEliminaEmailESiConfermaNel @And("Nella pagina I Tuoi Recapiti si clicca sul bottone elimina email e si annulla nel pop up") public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneEliminaEmailESiAnnullaNelPopUp() { logger.info("Si clicca sul bottone elimina email"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.eliminaEmailEsistente(); - if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi e-mail")) { + if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi email")) { recapitiDestinatarioPage.clickButtonAnnullaEliminazioneInPopUp(); } else { recapitiDestinatarioPage.clickSuChiudiPopUp(); @@ -618,7 +596,7 @@ public void nellaPaginaITuoiRecapitiSiControllaCheLIndirizzoEmailNonSiaPresente( logger.info("Email è stata eliminata correttamente"); } else { logger.error("Email non è stata eliminata"); - Assert.fail("Email non è stata eliminata"); + Assertions.fail("Email non è stata eliminata"); } } @@ -629,23 +607,20 @@ public void nellaPaginaITuoiRecapitiSiControllaCheLIndirizzoEmailNonEStataElemin logger.info("L'email non è stata eliminata"); } else { logger.error("L'email è stata eliminata"); - Assert.fail("L'email è stata eliminata"); + Assertions.fail("L'email è stata eliminata"); } } @And("Nella pagina I Tuoi Recapiti si visualizza correttamente la sezione altri recapiti") public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteLaSezioneAltriRecapiti() { logger.info("Si controlla che l'indirizzo Email non sia presente"); - recapitiDestinatarioPage.visualizzazioneSezioneAltriRecapiti(); - } @And("Nella pagina I Tuoi Recapiti di PF, si controlla che ci sia già una pec {string}") public void nellaPaginaITuoiRecapitiDiPfSiControllaCheCiSiaGiaUnaPec(String pec) { 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.aggiungiPECPF(); } else if (!recapitiDestinatarioPage.siControllaPECModificata(pec)) { @@ -675,13 +650,13 @@ public void nellaPaginaITuoiRecapitiSiVerificaCheLaPecSiaStataModificata(String recapitiDestinatarioPage.clickConfermaButton(); recapitiDestinatarioPage.visualizzaValidazione(); } else { - WebTool.waitTime(5); - driver.navigate().refresh(); + webTool.waitTime(5); + hooks.getDriver().navigate().refresh(); if (recapitiDestinatarioPage.siControllaPECModificata(pec)) { logger.info("La PEC è stata modificata"); } else { logger.error("La pec non è stata modificata"); - Assert.fail("La pec non è stata modificata"); + Assertions.fail("La pec non è stata modificata"); } } } @@ -700,7 +675,6 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaPECTramiteChi Map personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); String pec = personaFisica.get("pec").toString(); - RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); String startUrl = "http://localhost:8887/"; String url = startUrl + recuperoOTPRecapiti.getUrlEndPoint() + pec; @@ -710,14 +684,14 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaPECTramiteChi personaFisica.put("OTPpec", OTP); dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); 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() + personaFisica.get("pec"); - logger.info("Chiamata verifica PEC :"+ url); + logger.info("Chiamata verifica PEC :" + url); results = recuperoOTPRecapiti.runRecuperoOTPRecapiti(url); if (results) { String OTP = recuperoOTPRecapiti.getResponseBody(); @@ -725,7 +699,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaPECTramiteChi dataPopulation.writeDataPopulation(dpFile + ".yaml", personaFisica); } else { logger.error("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); - Assert.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); + Assertions.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); } } @@ -733,10 +707,9 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaPECTramiteChi @And("Nella pagina I Tuoi Recapiti si recupera il codice OTP della nuova PEC {string} tramite chiamata request") public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaEmailPECTramiteChiamataRequest(String emailPec) { - logger.info("Si recupera il codice OTP della nuova pec"); + logger.info("Nella pagina I Tuoi Recapiti si recupera il codice OTP della nuova PEC tramite chiamata request"); String pec = emailPec; - RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); String startUrl = "http://localhost:8887/"; String url = startUrl + recuperoOTPRecapiti.getUrlEndPoint() + pec; @@ -744,7 +717,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaEmailPECTrami if (results) { OTP = recuperoOTPRecapiti.getResponseBody(); } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente =webDriverConfig.getEnvironment(); if (variabileAmbiente.equalsIgnoreCase("test")) { startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; } else if (variabileAmbiente.equalsIgnoreCase("dev")) { @@ -756,15 +729,15 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaEmailPECTrami OTP = recuperoOTPRecapiti.getResponseBody(); } else { logger.error("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); - Assert.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); + Assertions.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); } } } + @And("Nella pagina I Tuoi Recapiti si recupera il codice OTP della nuova Email {string} tramite chiamata request") public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaEmailTramiteChiamataRequest(String mail) { logger.info("Si recupera il codice OTP della nuova email"); - RecuperoOTPRecapiti recuperoOTPRecapiti = new RecuperoOTPRecapiti(); String startUrl = "http://localhost:8887/"; String url = startUrl + recuperoOTPRecapiti.getUrlEndPoint() + mail; @@ -772,7 +745,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaEmailTramiteC if (results) { OTP = recuperoOTPRecapiti.getResponseBody(); } else { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); if (variabileAmbiente.equalsIgnoreCase("test")) { startUrl = "http://internal-pn-ec-Appli-L4ZIDSL1OIWQ-1000421895.eu-south-1.elb.amazonaws.com:8080/"; } else if (variabileAmbiente.equalsIgnoreCase("dev")) { @@ -784,7 +757,7 @@ public void nellaPaginaITuoiRecapitiSiRecuperaIlCodiceOTPDellaNuovaEmailTramiteC OTP = recuperoOTPRecapiti.getResponseBody(); } else { logger.error("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); - Assert.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); + Assertions.fail("La chiamata ha risposto con questo codice: " + recuperoOTPRecapiti.getResponseCode()); } } @@ -801,7 +774,7 @@ public void nellaPaginaITuoiRecapitiSiCliccaSulBottoneEliminaPEC() { @And("Nel pop up elimina indirizzo pec si clicca sul bottone conferma") public void nelPopUpEliminaIndirizzoPecSiCliccaSulBottoneConferma() { logger.info("Si clicca sul bottone conferma"); - WebTool.waitTime(3); + webTool.waitTime(3); if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi PEC")) { recapitiDestinatarioPage.clickSuConfermaElimina(); } else { @@ -832,7 +805,7 @@ public void nellaPaginaITuoiRecapitiSiControllaCheLIndirizzoPecNonSiaPresente() logger.info("La PEC è stata eliminata correttamente"); } else { logger.error("La PEC non è stata eliminata"); - Assert.fail("La PEC non è stata eliminata"); + Assertions.fail("La PEC non è stata eliminata"); } } @@ -844,26 +817,21 @@ public void nellaPaginaITuoiRecapitiSiControllaCheLIndirizzoPecPresente() { logger.info("La PEC non è stata eliminata"); } else { logger.error("La PEC è stata eliminata"); - Assert.fail("La PEC è stata eliminata"); + Assertions.fail("La PEC è stata eliminata"); } } @And("Nella sezione altri recapiti si seleziona l'ente {string}") public void nellaSezioneAltriRecapitiSiSelezionaLEnte(String dpFile) { logger.info("Si sceglie l'ente"); - Map mittente = dataPopulation.readDataPopulation(dpFile + ".yaml"); - recapitiDestinatarioPage.insertEnte(mittente.get("comune").toString()); - } @And("Nella pagina Recapiti si inserisce il numero di telefono {string} e clicca sul bottone avvisami via SMS") public void nellaPaginaRecapitiSiInserisceIlNumeroDiTelefono(String numero) { logger.info("Si inserisce il numero di telefono"); - - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.insertTelephoneNumber(numero); iTuoiRecapitiPage.clickAvvisamiViaSMS(); } @@ -877,9 +845,7 @@ public void nellaSezioneAltriRecapitiPGSiSelezionaLEnte(String ente) { @And("Nella sezione altri recapiti si seleziona il tipo di indirizzo") public void nellaSezioneAltriRecapitiSiSelezionaIlTipoDiIndirizzo() { logger.info("Si selezione il tipo di indirizzo come PEC"); - recapitiDestinatarioPage.clickSuIndirizzoPEC(); - } @And("Nella sezione altri recapiti si inserisce la PEC aggiuntiva de persona fisica {string}") @@ -908,11 +874,11 @@ public void nellaSezioneAltriRecapitiSiControllaCheLaPecAggiuntivaSiaStataInseri recapitiDestinatarioPage.waitLoadPage(); } String pec = dataPopulation.readDataPopulation("personaFisica.yaml").get("additionalEmail").toString(); - driver.navigate().refresh(); - WebTool.waitTime(10); + hooks.getDriver().navigate().refresh(); + webTool.waitTime(10); if (!recapitiDestinatarioPage.verificaNuovaEmailEPEC(pec)) { logger.error("La email PEC non è stata associata correttamente"); - Assert.fail("La email PEC non è stata associata correttamente"); + Assertions.fail("La email PEC non è stata associata correttamente"); } } @@ -927,7 +893,6 @@ public void nellaSezioneAltriRecapitiSiInserisceLaEmailAggiuntivaDellaPersonaFis @And("Nella sezione altri recapiti si seleziona il tipo di indirizzo scegliendo {string}") public void nellaSezioneAltriRecapitiSiSelezionaIlTipoDiIndirizzoScegliendoEmail(String tipoIndirizzo) { logger.info("Si seleziona il tipo di indirizzo scegliendo email"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); if (tipoIndirizzo.equalsIgnoreCase("PEC")) iTuoiRecapitiPage.selezionaTipoPec(); else { @@ -946,7 +911,6 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTPDellaEmail(String dpFi logger.info("Si inserisce il codice OTP di verifica"); String otp = dataPopulation.readDataPopulation(dpFile + ".yaml").get("OTPmail").toString(); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.sendOTP(otp); recapitiDestinatarioPage.confermaButtonClickPopUp(); } @@ -954,7 +918,6 @@ public void nellaPaginaITuoiRecapitiSiInserisceIlCodiceOTPDellaEmail(String dpFi @And("Nella pagina I Tuoi Recapiti si controlla che non ci sia già una pec") public void nellaPaginaITuoiRecapitiSiControllaCheNonCiSiaGiaUnaPec() { logger.info("Si controlla che non ci sia una pec"); - BackgroundTest backgroundTest = new BackgroundTest(); if (recapitiDestinatarioPage.verificaPecAssociata()) { backgroundTest.siEliminaPecEsistenteEAltriRecapitiAssociati(); } @@ -974,7 +937,6 @@ public void nellaSezioneAltriRecapitiSiControllaLEsistenzaDiUnaEmail(String dpFi @And("Nella pagina I Tuoi Recapiti si controlla che non ci sia già una email") public void nellaPaginaITuoiRecapitiSiControllaCheNonCiSiaGiaUnaEmail() { logger.info("Si controlla che non ci sia già una email"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); if (recapitiDestinatarioPage.verificaMailAssociata()) { iTuoiRecapitiPage.eliminaEmailEsistente(); if (recapitiDestinatarioPage.waitLoadPopUpElimina().equalsIgnoreCase("Rimuovi e-mail")) { @@ -1001,7 +963,6 @@ public void nellaSezioneAltriRecapitiSiControllaLEsistenzaDiUnaPEC(String dpFile @And("si verifica esistenza due pec") public void siVerificaEsistenzaDuePEC() { if (!recapitiDestinatarioPage.siVisualizzaPecInserita()) { - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.aggiungiNuovaPECPF(); backgroundTest.aggiungiPecSezioneGiaAssociati(); } @@ -1010,12 +971,8 @@ public void siVerificaEsistenzaDuePEC() { @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"); - - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.waitLoadITuoiRecapitiPage(); - BackgroundTest backgroundTest = new BackgroundTest(); - if (!recapitiDestinatarioPage.verificaMailAssociata()) { backgroundTest.aggiuntaEmailPF(); } @@ -1031,14 +988,12 @@ public void siCliccaSulBottoneAnnullaPerAnnullareLaModificaDellaPEC() { @And("Si visualizzano correttamente i pulsanti modifica, elimina ed è possibile modificare l'email") public void siVisualizzanoCorrettamenteGliElementiPostModifica() { logger.info("Si controlla che si visualizzano correttamente i pulsanti modifica, elimina ed è possibile modificare l'email"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.checkPostModifica(); } @When("Nella pagina I Tuoi Recapiti si visualizza correttamente il riquadro relativo alla PEC") public void nellaPaginaITuoiRecapitiSiVisualizzaCorrettamenteIlRiquadroRelativoAllaPEC() { logger.info("Si visualizza correttamente il riquadro relativo alla PEC"); - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); iTuoiRecapitiPage.checkRiquadroPEC(); } @@ -1050,7 +1005,6 @@ public void nellaSezioneAltriRecapitiSiCliccaSulBottoneConfermaPerInserireUnReca @And("Si verifica siano presenti recapiti digitali") public void siVerificaSianoPresentiRecapitiDigitali(Map datiPF) { - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(driver); String email = datiPF.get("email"); if (recapitiDestinatarioPage.siVisualizzaPecInserita()) { diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RicercaNotifichePersonaFisicaPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RicercaNotifichePersonaFisicaPATest.java index 15c775360..12f7e3f9a 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RicercaNotifichePersonaFisicaPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaFisica/RicercaNotifichePersonaFisicaPATest.java @@ -4,7 +4,7 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import it.pn.frontend.e2e.common.NotificheDestinatarioPage; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.model.singleton.NotificationSingleton; import it.pn.frontend.e2e.pages.destinatario.DestinatarioPage; import it.pn.frontend.e2e.pages.destinatario.personaFisica.NotifichePFPage; @@ -12,32 +12,57 @@ import it.pn.frontend.e2e.section.destinatario.personaFisica.HeaderPFSection; import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; import it.pn.frontend.e2e.utility.DataPopulation; -import net.bytebuddy.asm.Advice; -import org.junit.Assert; -import org.openqa.selenium.WebDriver; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import java.time.LocalDate; import java.util.HashMap; import java.util.Map; +/* +*Modifiche principali +Autowired per il driver Web e per altre classi: Integrato @Autowired per NotificationSingleton, PiattaformaNotifichePage, DestinatarioPage e WebDriver, mantenendo i metodi invariati. +Component: Aggiunta annotazione @Component per permettere l’iniezione automatica di Spring Boot in questa classe di step definiti in Cucumber. +* Pattern Matching for Switch: Utilizzato il switch pattern matching per selezionare la URL appropriata in collegarsiLink. +Uso di var per Tipi Locali: Refactoring con var per variabili locali ove il tipo è ovvio, semplificando la lettura. +* +* */ public class RicercaNotifichePersonaFisicaPATest { private static final Logger logger = LoggerFactory.getLogger("RicercaNotifichePersonaFisicaTest"); - private final WebDriver driver = Hooks.driver; - private final NotificationSingleton notificationSingleton = NotificationSingleton.getInstance(); - private final PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - private final DestinatarioPage destinatarioPage = new DestinatarioPage(this.driver); private Map datiNotifica = new HashMap<>(); private Map datiNotificaNonValidoPF; + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private NotificationSingleton notificationSingleton; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private DestinatarioPage destinatarioPage; + @Autowired + private HeaderPFSection headerPFSection; + @Autowired + private NotifichePFPage notifichePFPage; + @Autowired + private NotificheDestinatarioPage notificheDestinatarioPage; + + @Autowired + private DataPopulation dataPopulation; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + + @When("Si visualizza correttamente la pagina Piattaforma Notifiche persona fisica") public void siVisualizzaCorrettamenteLaPaginaPiattaformaNotificheDestinatario() { logger.info("Verifica visualizzazione piattaforma notifiche persona fisica"); - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); headerPFSection.waitLoadHeaderDESection(); - - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadNotificheDEPage(); } @@ -45,28 +70,28 @@ public void siVisualizzaCorrettamenteLaPaginaPiattaformaNotificheDestinatario() public void collegarsiLink(int code) { switch (code) { case 19 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=19"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=19"); } case 20 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=20"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=20"); } case 21 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=21"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=21"); } case 22 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=22"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=22"); } case 23 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=23"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=23"); } case 25 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=25"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=25"); } case 30 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=30"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=30"); } case 1001 -> { - this.driver.get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=1001"); + this.hooks.getDriver().get("https://cittadini.test.notifichedigitali.it/auth/login/error?errorCode=1001"); } } } @@ -79,97 +104,77 @@ public void siVisualizzaMessaggioErroreConCodice(int code) { @And("Nella pagina Piattaforma Notifiche persona fisica inserire il codice IUN {string}") public void nellaPaginaPiattaformaNotificheDestinatarioInserireIlCodiceIUN(String IUN) throws InterruptedException { logger.info("Si inserisce il codice IUN"); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadPage(); - - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(this.driver); notificheDestinatarioPage.inserisciCodiceIUN(IUN); } @And("Cliccare sul bottone Filtra persona fisica") public void cliccareSulBottoneFiltra() { logger.info("Si clicca sul tasto filtra"); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.selectFiltraButton(); } @Then("Nella pagina Piattaforma Notifiche persona fisica vengo restituite tutte le notifiche con il codice IUN della notifica {string}") public void nellaPaginaPiattaformaNotificheDestinatarioVengoRestituiteTutteLeNotificheConIlCodiceIUNDellaNotifica(String dpDatiNotifica) { logger.info("Si verificano i risultati restituiti"); - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); headerPFSection.waitLoadHeaderDESection(); - - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadNotificheDEPage(); - - DataPopulation dataPopulation = new DataPopulation(); this.datiNotifica = dataPopulation.readDataPopulation(dpDatiNotifica + ".yaml"); String codiceIUNInserito = datiNotifica.get("codiceIUN").toString(); - - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(this.driver); boolean result = notificheDestinatarioPage.verificaCodiceIUN(codiceIUNInserito); + if (result) { logger.info("Il risultato é coerente con il codice IUN inserito"); } else { logger.error("Il risultato NON é coerente con il codice IUN inserito"); - Assert.fail("Il risultato NON é coerente con il coodice IUN inserito"); + Assertions.fail("Il risultato NON é coerente con il codice IUN inserito"); } } @Then("Nella pagina Piattaforma Notifiche persona fisica vengo restituite tutte le notifiche con il codice IUN {string}") public void nellaPaginaPiattaformaNotificheDestinatarioVengoRestituiteTutteLeNotificheConIlCodiceIUN(String IUN) { logger.info("Si verificano i risultati restituiti"); - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); headerPFSection.waitLoadHeaderDESection(); - - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadNotificheDEPage(); - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(this.driver); boolean result = notificheDestinatarioPage.verificaCodiceIUN(IUN); if (result) { logger.info("Il risultato é coerente con il codice IUN inserito"); } else { logger.error("Il risultato NON é coerente con il codice IUN inserito"); - Assert.fail("Il risultato NON é coerente con il coodice IUN inserito"); + Assertions.fail("Il risultato NON é coerente con il codice IUN inserito"); } } @And("Nella pagina Piattaforma Notifiche mittente inserire un arco temporale") public void nellaPaginaPiattaformaNotificheMittenteInserireUnaDataDaDAAA(Map date) { logger.info("Si inserisce l'arco temporale su cui effettuare la ricerca "); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); LocalDate dataFine = LocalDate.of(date.get("annoA"), date.get("meseA"), date.get("giornoA")); LocalDate dataInizio = LocalDate.of(date.get("annoDa"), date.get("meseDa"), date.get("giornoDa")); String dataDA = notifichePFPage.controlloDateInserite(dataInizio.toString()); String dataA = notifichePFPage.controlloDateInserite(dataFine.toString()); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.inserimentoArcoTemporale(dataDA, dataA); } @And("Nella pagina Piattaforma Notifiche mittente inserire un arco temporale di maggiore di 120 giorni") public void nellaPaginaPiattaformaNotificheMittenteInserireUnaDataDaDAAA120Giorni() { - logger.info("Si inserisce l'arco temporale su cui effettuare la ricerca 120 giorni "); + logger.info("Si inserisce l'arco temporale su cui effettuare la ricerca 120 giorni"); - LocalDate dateNow = LocalDate.now(); - LocalDate dateA = dateNow.minusDays(150); + var dateNow = LocalDate.now(); + var dateA = dateNow.minusDays(150); + var dateDa = dateA.minusDays(30); - LocalDate dateDa = dateA.minusDays(30); - - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - String dataa = piattaformaNotifichePage.conversioneFormatoDate(dateA.toString()); - String datada = piattaformaNotifichePage.conversioneFormatoDate(dateA.toString()); - logger.info("ARCO TEMPORRALE SETTATO: "+dataa +" - "+datada); - piattaformaNotifichePage.inserimentoArcoTemporale(dataa, datada); + var dataa = piattaformaNotifichePage.conversioneFormatoDate(dateA.toString()); + var datada = piattaformaNotifichePage.conversioneFormatoDate(dateDa.toString()); + logger.info("ARCO TEMPORRALE SETTATO: " + datada + " - " + dataa); + piattaformaNotifichePage.inserimentoArcoTemporale(datada, dataa); } @And("Se i risultati sono contenuti in più pagine persona fisica è possibile effettuare il cambio pagina") public void seIRisultatiSonoContenutiInPiuPagineDestinatarioEPossibileEffettuareIlCambioPagina() { logger.info("Se i risultati sono contenuti in più pagine è possibile effettuare il cambio pagina"); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); if (piattaformaNotifichePage.verificaEsistenzaEPassaggioPagina()) { logger.info("Bottone pagina 2 trovato e cliccato"); - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); headerPFSection.waitLoadHeaderDESection(); notifichePFPage.waitLoadNotificheDEPage(); } else { @@ -179,78 +184,67 @@ public void seIRisultatiSonoContenutiInPiuPagineDestinatarioEPossibileEffettuare @And("Cliccare sul bottone Rimuovi filtri persona fisica") public void cliccareSulBottoneRimuoviFiltriPersonaFisica() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.clickRimuoviFiltriButton(); } @And("Nella pagina Piattaforma Notifiche persona fisica inserire il codice IUN non valido da dati notifica {string}") public void nellaPaginaPiattaformaNotifichePersonaGiuridicaInserireIlCodiceIunNonValidoDaDatiNotifica(String datiNotificaNonValidoPF) throws InterruptedException { logger.info("Si inserisce il codice IUN non valido"); - DataPopulation dataPopulation = new DataPopulation(); this.datiNotificaNonValidoPF = dataPopulation.readDataPopulation(datiNotificaNonValidoPF + ".yaml"); - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(this.driver); + notificheDestinatarioPage.inserisciCodiceIUN(this.datiNotificaNonValidoPF.get("codiceIUN").toString()); notificheDestinatarioPage.inserisciCodiceIUN(this.datiNotificaNonValidoPF.get("codiceIUN").toString()); } @Then("Nella pagina Piattaforma Notifiche persona fisica viene visualizzato un messaggio in rosso di errore sotto il campo errato e il rettangolo diventa rosso e il tasto Filtra è disattivo") public void NellaPaginaPiattaformaNotifichePersonaFisicaVieneVisualizzatoUnMessaggioInRossoDiErroreSottoIlCampoErratoEIlRettangoloDiventaRossoEIlTastoFiltraEDisattivo() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); - boolean isErrorMessageDisplayed = notifichePFPage.isErrorMessageDisplayed(); if (isErrorMessageDisplayed) { logger.info("il messaggio di errore é visualizzato"); } else { - logger.error("il messaggio di errore non é visualizzato"); - Assert.fail("il messaggio di errore non é visualizzato"); + logger.error("Il messaggio di errore non è visualizzato"); + Assertions.fail("Il messaggio di errore non è visualizzato"); } - boolean isTextBoxInValid = notifichePFPage.isTextBoxInvalid(); - - if (isTextBoxInValid) { - logger.info("IUN text box non é valido"); + if (notifichePFPage.isTextBoxInvalid()) { + logger.info("IUN text box non è valido"); } else { - logger.error("IUN text box non é passato allo stato non valido"); - Assert.fail("IUN text box non é passato allo stato non valido"); - + logger.error("IUN text box non è passato allo stato non valido"); + Assertions.fail("IUN text box non è passato allo stato non valido"); } notifichePFPage.clickFiltraButton(); - boolean isErrorMessageStillDisplayed = notifichePFPage.isErrorMessageDisplayed(); - if (isErrorMessageStillDisplayed) { - logger.info("Il bottone Filtra é dissativato"); + if (notifichePFPage.isErrorMessageDisplayed()) { + logger.info("Il bottone Filtra è disattivato"); } else { - logger.error("Il bottone Filtra é attivo"); - Assert.fail("Il bottone Filtra é attivo"); + logger.error("Il bottone Filtra è attivo"); + Assertions.fail("Il bottone Filtra è attivo"); } } @And("Si clicca su pagina diversa dalla prima") public void siCliccaSupaginaDiversaDallaPrima() { - logger.info("si clicca su una pagina diversa dalla prima"); + logger.info("Si clicca su una pagina diversa dalla prima"); piattaformaNotifichePage.clickPagina(3); } @And("Si verifica che visualizza la prima pagina") public void siVerificaCheVisualizzaLaPrimaPagina() { - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.firstPageDisplayed(); } @Then("Vengono visualizzate correttamente le notifiche comprese nell'arco temporale inserito") public void vengonoVisualizzateCorrettamenteLeNotificheCompreseNellArcoTemporaleInserito() { - HeaderPFSection headerPFSection = new HeaderPFSection(this.driver); headerPFSection.waitLoadHeaderDESection(); - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); notifichePFPage.waitLoadNotificheDEPage(); - boolean result = notifichePFPage.getListData(); - if (result) { - logger.info("Il risultato é coerente con le date inserite"); + + if (notifichePFPage.getListData()) { + logger.info("Il risultato è coerente con le date inserite"); } else { - logger.error("Il risultato NON é coerente con le date inserite"); - Assert.fail("Il risultato NON é coerente con le date inserite"); + logger.error("Il risultato NON è coerente con le date inserite"); + Assertions.fail("Il risultato NON è coerente con le date inserite"); } } @@ -263,16 +257,13 @@ public void ilRettangoloDelCampoErratoDiventaRosso() { @And("Nella pagina piattaforma notifiche destinatario si effettua la ricerca per codice IUN {string}") public void nellaPaginaPiattaformaNotificheDestinatarioSiEffettuaLaRicercaPerCodiceIUN(String codiceIUN) { logger.info("Si cerca una notifica tramite IUN: " + codiceIUN); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.inserimentoCodiceIUN(codiceIUN); piattaformaNotifichePage.selectFiltraNotificaButtonDestinatario(); } @And("Si seleziona la notifica destinatario") public void siSelezionaLaNotificaDestinatario() { - BackgroundTest backgroundTest = new BackgroundTest(); - String iun = notificationSingleton.getIun(Hooks.scenario); + String iun = notificationSingleton.getIun(HooksNew.getScenario()); backgroundTest.siFiltraLaTabellaDelleNotificheDelDestinatarioPerIUN(iun); } } - 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 7d670e7fc..cac1cd092 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 @@ -3,6 +3,7 @@ import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.model.delegate.DelegatePG; import it.pn.frontend.e2e.model.delegate.DelegateRequestPG; import it.pn.frontend.e2e.model.delegate.DelegateResponsePG; @@ -16,10 +17,13 @@ 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.junit.jupiter.api.Assertions; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -27,21 +31,50 @@ import java.util.HashMap; import java.util.Map; +import org.openqa.selenium.WebDriver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + + public class DeleghePGPagoPATest { private final Logger logger = LoggerFactory.getLogger("DeleghePGPagoPATest"); - private final WebDriver driver = Hooks.driver; - private final DeleghePGPagoPAPage deleghePGPagoPAPage = new DeleghePGPagoPAPage(this.driver); - private final DeleghePagoPATest deleghePagoPATest = new DeleghePagoPATest(); - private final DelegatiImpresaSection delegatiImpresaSection = new DelegatiImpresaSection(this.driver); - private final AggiungiDelegaPGSection aggiungiDelegaPGSection = new AggiungiDelegaPGSection(this.driver); - private final DataPopulation dataPopulation = new DataPopulation(); + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private DeleghePGPagoPAPage deleghePGPagoPAPage; + @Autowired + private DeleghePagoPATest deleghePagoPATest; + @Autowired + private DelegatiImpresaSection delegatiImpresaSection; + @Autowired + private AggiungiDelegaPGSection aggiungiDelegaPGSection; + @Autowired + private DataPopulation dataPopulation; + @Autowired + private LoginPGPagoPATest loginPGPagoPaTest; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + private Map datiDelega = new HashMap<>(); - Map datiPersonaFisica = new HashMap<>(); - private final MandateSingleton mandateSingleton = MandateSingleton.getInstance(); + private Map datiPersonaFisica = new HashMap<>(); + @Autowired + private MandateSingleton mandateSingleton; - private final RestDelegation restDelegation = RestDelegation.getInstance(); + @Autowired + private RestDelegation restDelegation; + @Autowired + @Lazy + private WebTool webTool; - private LoginPGPagoPATest loginPGPagoPaTest = new LoginPGPagoPATest(); private boolean dataFineErrata; @And("Si visualizza correttamente la pagina Deleghe sezione Deleghe a Carico dell impresa") @@ -111,7 +144,7 @@ public void nellaSezioneLeTueDeleghePersonaGiuridicaVerificareCheLaDataSiaCorret logger.info("La data di fine delega è corretta"); } else { logger.error("La data di fine delega non è corretta"); - Assert.fail("La data di fine delega non è corretta"); + Assertions.fail("La data di fine delega non è corretta"); } } @@ -130,7 +163,6 @@ public void nellaSezioneLeTueDeleghePersonaGiuridicaSalvareIlCodiceVerificaAllIn @And("Nella sezione Aggiungi Delega persona giuridica click sul bottone Invia richiesta e sul bottone torna alle deleghe") public void nellaSezioneLeTueDeleghePersonaGiuridicaclickSulBottoneInviaRichiestaESulBottoneTornaAlleDeleghe() { logger.info("Si clicca sul bottone invia richiesta"); - aggiungiDelegaPGSection.clickSulBottoneInviaRichiesta(); } @@ -171,8 +203,7 @@ public void nellaSezioneLeTueDelegheInserireUnaDataConFormatoErratoEAntecedenteA @And("Verifica che non è possibile selezionare una data Fine antecedente ad oggi") public void verificaArcoTemporaleSelezionato() { logger.info("Si controlla l'arco temporale che sia errato su cui effettuare la ricerca"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - Assert.assertFalse(dataFineErrata); + Assertions.assertFalse(dataFineErrata); } @And("Nella sezione Le Tue Deleghe inserire una data") @@ -187,14 +218,13 @@ public void nellaSezioneLeTueDelegheInserireUnaData() { public void nellaSezioneLeTueDelegheSiVisualizzaIlMessaggioDiErroreDataErrata() { logger.info("Si controlla che si veda il messaggio di errore"); - Assert.assertEquals("il messaggio di errore previsto: Data errata è diverso dell'attuale " + aggiungiDelegaPGSection.waitMessaggioErroreData(), "Data errata", aggiungiDelegaPGSection.waitMessaggioErroreData()); + Assertions.assertEquals( "Data errata", aggiungiDelegaPGSection.waitMessaggioErroreData(), "il messaggio di errore previsto: Data errata è diverso dell'attuale " + aggiungiDelegaPGSection.waitMessaggioErroreData()); logger.info("il messaggio di errore 'Data errata' è presente"); } @And("Nella pagina Deleghe si clicca su Deleghe a carico dell impresa") public void nellaPaginaDelegheSiCliccaSuDelegheACaricoDellImpresa() { logger.info("Si clicca sul tab Deleghe a carico dell'impresa"); - deleghePGPagoPAPage.clickSuDelegheCaricoDellImpresa(); } @@ -207,9 +237,7 @@ public void nellaPaginaDelegheSezioneDelegheACaricoDellImpresaSiInserisceIlCodic @And("Nella pagina Deleghe sezione Deleghe a Carico dell impresa si clicca su bottone Filtra") public void nellaPaginaDelegheSezioneDelegheACaricoDellImpresaSiCliccaSuBottoneFiltra() { logger.info("Si clicca filtra button"); - this.deleghePGPagoPAPage.clickFiltraButton(); - } @And("Nella pagina Deleghe sezione Deleghe a Carico dell impresa si controlla che venga restituita la delega con il codice fiscale inserito {string}") @@ -219,15 +247,13 @@ public void nellaPaginaDelegheSezioneDelegheACaricoDellImpresaSiControllaCheVeng this.logger.info("La delega restituita è corretta"); } else { this.logger.error("La delega restituita NON è corretta"); - Assert.fail("La delega restituita NON è corretta"); + Assertions.fail("La delega restituita NON è corretta"); } } @And("Nella pagina Deleghe sezione Deleghe dell impresa si verifica sia presente una delega") public void nellaPaginaDelegheSezioneDelegheDellImpresaSiVerificaSiaPresenteUnaDelega() { logger.info("Si controlla che ci sia almeno una delega"); - BackgroundTest backgroundTest = new BackgroundTest(); - if (!this.delegatiImpresaSection.siVisualizzaUnaDelega()) { backgroundTest.aggiuntaNuovaDelegaDellImpresaPG(); } @@ -236,7 +262,6 @@ public void nellaPaginaDelegheSezioneDelegheDellImpresaSiVerificaSiaPresenteUnaD @And("Nella pagina Deleghe sezione Deleghe a carico dell'impresa clicca sul menu della delega {string}") public void nellaPaginaDelegheSezioneDelegheAcaricoDellImpresaSiCliccaSulMenuDellaDelega(String dpFile) { logger.info("Si clicca sul menu delle delega"); - this.datiDelega = dataPopulation.readDataPopulation(dpFile + ".yaml"); this.delegatiImpresaSection.clickMenuDelega(datiDelega.get("ragioneSociale").toString()); } @@ -259,7 +284,6 @@ public void nellaPaginaDelegheSezioneDelegheDellImpresaSiSceglieLOpzioneMostraCo @And("Nella sezione Deleghe persona giuridica si sceglie l'opzione revoca") public void nellaSezioneDeleghePersonaGiuridicaSiSceglieLOpzioneRevoca() { logger.info("Si clicca sull'opzione revoca del menu"); - delegatiImpresaSection.clickRevocaMenuButtonPG(); } @@ -275,7 +299,7 @@ public void nellaSezioneDelegheSezioneDelegheDellImpresaSiControllaCheNonSiaPiuP logger.info("La delega è stata revocata correttamente"); } else { logger.error("La delega NON è stata revocata correttamente"); - Assert.fail("La delega NON è stata revocata correttamente"); + Assertions.fail("La delega NON è stata revocata correttamente"); } } @@ -300,11 +324,10 @@ public void siAssegnaUnGruppoAllaDelega(String gruppo) { @And("Si clicca sul bottone conferma gruppo") public void siCliccaSulBottoneConfermaGruppo() { logger.info("Si seleziona il bottone conferma"); - deleghePGPagoPAPage.clickBottoneConferma(); if (this.deleghePGPagoPAPage.verificaEsistenzaErroreCodiceSbagliato()) { logger.error("il codice inserito è sbagliato"); - Assert.fail("il codice inserito è sbagliato"); + Assertions.fail("il codice inserito è sbagliato"); } } @@ -318,7 +341,6 @@ public void siControllaCheLaDelegaPGALoStatoAttiva(String ragioneSociale) { @And("Si clicca sul bottone conferma gruppo errato") public void siCliccaSulBottoneConfermaGruppoErrato() { logger.info("Si seleziona il bottone conferma"); - deleghePGPagoPAPage.clickBottoneConferma(); deleghePGPagoPAPage.verificaEsistenzaErroreCodiceSbagliato(); } @@ -326,14 +348,12 @@ public void siCliccaSulBottoneConfermaGruppoErrato() { @And("Nella sezione Deleghe si clicca sul bottone rifiuta") public void nellaSezioneDelegheSiCliccaSulBottoneRifiuta() { logger.info("Si clicca su l'opzione rifiuta"); - deleghePGPagoPAPage.clickOpzioneRifiuta(); } @And("Si clicca sul bottone rifiuta delega") public void siCliccaSulBottoneRifiutaDelega() { logger.info("Si clicca su bottone rifiuta del pop-up"); - deleghePGPagoPAPage.waitLoadPopUpRevoca(); deleghePGPagoPAPage.clickBottoneRifiuta(); } @@ -350,7 +370,7 @@ public void siControllaCheLaDelegaNonSiPiuPresenteInElenco() { logger.info("La delega è stata rifiutata correttamente"); } else { logger.error("La delega NON è stata rifiutata correttamente"); - Assert.fail("La delega NON è stata rifiutata correttamente"); + Assertions.fail("La delega NON è stata rifiutata correttamente"); } } @@ -384,7 +404,7 @@ public void siCliccaSuConfermaInAssegnazioneGruppo() { deleghePGPagoPAPage.clickBottoneConferma(); if (this.deleghePGPagoPAPage.verificaEsistenzaErroreCodiceSbagliato()) { logger.error("il codice inserito è sbagliato"); - Assert.fail("il codice inserito è sbagliato"); + Assertions.fail("il codice inserito è sbagliato"); } } @@ -398,7 +418,7 @@ public void siControllaCheLaDelegaHaCambiatoStato() { logger.info("La delega ha un gruppo"); } else { logger.error("La delega NON ha un gruppo"); - Assert.fail("La delega NON ha un gruppo"); + Assertions.fail("La delega NON ha un gruppo"); } } @@ -422,7 +442,7 @@ public void siControllaCheLaDelegaNonAbbiaPiuIlGruppo() { logger.info("La delega non ha più gruppo"); } else { logger.error("La delega ha ancora il gruppo"); - Assert.fail("La delega ha ancora il gruppo"); + Assertions.fail("La delega ha ancora il gruppo"); } } @@ -459,9 +479,10 @@ public void creoInBackgroundUnaDelegaPerPersonaGiuridica(Map per .build(); String tokenExchange = loginPGPagoPaTest.getTokenExchangePGFromFile(personaGiuridica.get("accessoCome")); DelegateResponsePG response = restDelegation.addDelegationPG(delegateRequestPG, tokenExchange); - mandateSingleton.setScenarioMandateId(Hooks.getScenario(),response.getMandateId()); - mandateSingleton.setScenarioVerificationCode(mandateSingleton.getMandateId(Hooks.getScenario()),response.getVerificationCode()); - driver.navigate().refresh(); + mandateSingleton.setScenarioMandateId(HooksNew.getScenario(),response.getMandateId()); + mandateSingleton.setScenarioVerificationCode(mandateSingleton.getMandateId(HooksNew.getScenario()),response.getVerificationCode()); + hooks.getDriver().navigate().refresh(); + webTool.waitTime(2); } @And("Si clicca sul bottone accetta delega dopo aver inserito il codice di verifica") @@ -471,45 +492,40 @@ public void siCliccaSulBottoneAccettaDelegaDopoAverInseritoIlCodiceDiVerifica() deleghePGPagoPAPage.clickBottoneConfermaDelega(); if (this.deleghePGPagoPAPage.verificaEsistenzaErroreCodiceSbagliato()) { logger.error("il codice inserito è sbagliato"); - Assert.fail("il codice inserito è sbagliato"); + Assertions.fail("il codice inserito è sbagliato"); } } public void siCliccaSulBottoneAccettaDelega() { logger.info("Si clicca su conferma del pop-up"); - deleghePGPagoPAPage.clickBottoneConfermaDelega(); } @And("Si accetta la delega senza gruppo") public void siAccettaLaDelegaSenzaGruppo() { - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.accettazioneDelegaSceltaGruppo(false,null); } @And("Si accetta la delega senza gruppo PF") public void siAccettaLaDelegaSenzaGruppoPF() { - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.accettazioneDelegaSceltaGruppoPF(false,null); - WebTool.waitTime(2); + webTool.waitTime(2); } @And("Si inserisce il codice della delega a carico dell impresa nella modale") public void siInserisceIlCodiceDellaDelegaACaricoDellImpresaNellaModale() { - String verificationCode = mandateSingleton.getVerificationCode(mandateSingleton.getMandateId(Hooks.getScenario())); + String verificationCode = mandateSingleton.getVerificationCode(mandateSingleton.getMandateId(HooksNew.getScenario())); logger.info(verificationCode); deleghePGPagoPAPage.inserimentoCodiceDelegaACaricoDellImpresaAPI(verificationCode); } @And("Si ripristina lo stato iniziale delle deleghe dall impresa {string}") public void siRipristinaLoStatoInizialeDelleDelegheDallImpresa(String ragioneSociale) { - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.revocaDelegaPG(ragioneSociale); } @And("Si accetta la delega con gruppo {string}") public void siAccettaLaDelegaGruppo(String gruppo) { - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.accettazioneDelegaSceltaGruppo(true,gruppo); } @@ -525,8 +541,6 @@ public void nonSiAssegnaUnGruppoAllaDelegaCheLoRichiede() { @And("Si emula accettazione della delega con gruppo con errore") public void siEmulaAccettazioneDellaDelegaConGruppoConErrore() { - BackgroundTest backgroundTest = new BackgroundTest(); - backgroundTest.checkDelegaSceltaGruppoEInserimentoCodiceErrata(); } @@ -544,8 +558,8 @@ public void siCliccaSulBottoneIndietroInAssegnazioneGruppo() { @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(); + webTool.waitTime(61 * 15); + hooks.getDriver().navigate().refresh(); deleghePGPagoPAPage.waitLoadDeleghePage(); } @@ -574,7 +588,7 @@ public void nellaPaginaDelegheSezioneDelegheACaricoDellImpresaSiControllaCheCiSi this.logger.info("La delega restituita è corretta"); } else { this.logger.error("La delega restituita NON è corretta"); - Assert.fail("La delega restituita NON è corretta"); + Assertions.fail("La delega restituita NON è corretta"); } } @@ -582,7 +596,7 @@ public void nellaPaginaDelegheSezioneDelegheACaricoDellImpresaSiControllaCheCiSi public void siRevocaDelegaComeDelegantConApi() { loginPGPagoPaTest.getTokenExchangePGFromFile("delegante"); - String mandateId = mandateSingleton.getMandateId(Hooks.getScenario()); + String mandateId = mandateSingleton.getMandateId(HooksNew.getScenario()); restDelegation.revokeDelegation(mandateId); } @@ -601,7 +615,6 @@ public void siControllaLaTabellaDelegatiDallImpresa() { @And("Nella sezione Delegati dall impresa si visualizza correttamente una delega in stato di attesa di conferma {string}") public void nellaSezioneDelegatiDallImpresaSiVisualizzaCorrettamenteUnaDelegaInStatoDiAttesaConferma(String ragioneSociale) { logger.info("Si controlla che la delega sia in stato attesa di conferma"); - delegatiImpresaSection.waitLoadDelegatiImpresaPage(); delegatiImpresaSection.controlloEsistenzaDelega(ragioneSociale); } 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 4da7a8bce..8332e4fb4 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 @@ -2,29 +2,43 @@ import io.cucumber.java.en.And; import io.cucumber.java.en.Given; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; 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.WebTool; -import org.junit.Assert; -import org.openqa.selenium.WebDriver; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; import java.util.Set; +@Primary public class DisserviziAppPGTest { - private final WebDriver driver = Hooks.driver; private final Logger logger = LoggerFactory.getLogger("DisserviziAppPGTest"); - private final DisserviziAppPage disserviziAppPage = new DisserviziAppPage(this.driver); + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private DisserviziAppPage disserviziAppPage; + @Autowired + private PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + @Autowired + @Lazy + private WebTool webTool; @Given("Nella dashboard persona giuridica clicca su disservizi app") public void nellaDashboardPersonaGiuridicaCliccaSuDisserviziApp() { - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); + logger.info("click sul bottone disservisi nel menu laterale"); piattaformaNotifichePGPAPage.clickOnButtonEnterIntoDisservizi(); } @@ -48,20 +62,19 @@ public void siVisualizzaStoricoDisservizi() { @And("Si verifica avvenuto disservizio in pagina stato piattaforma") public void siVerificaAvvenutoDisservizioInPaginaStatoPiattaforma() { - BackgroundTest backgroundTest = new BackgroundTest(); logger.info("Torno sulla scheda della piattaforma send"); - String helpdeskHandle = driver.getWindowHandle(); - Set windowHandles = driver.getWindowHandles(); + String helpdeskHandle = hooks.getDriver().getWindowHandle(); + Set windowHandles = hooks.getDriver().getWindowHandles(); for (String handle : windowHandles) { if (!handle.equals(helpdeskHandle)) { - this.driver.switchTo().window(handle); + this.hooks.getDriver().switchTo().window(handle); break; } } backgroundTest.getStatoDellaPiattaformaPage(); boolean res = false; for (int i = 0; i < 2; i++) { - WebTool.waitTime(30); + webTool.waitTime(30); disserviziAppPage.aggiornamentoPagina(); if (disserviziAppPage.checkDisservizioInCorso()) { res = true; @@ -70,9 +83,11 @@ public void siVerificaAvvenutoDisservizioInPaginaStatoPiattaforma() { } if (!res) { logger.error("dopo aver atteso alcuni secondi il disservizio non è stato ancora creato"); - Assert.fail("dopo aver atteso alcuni secondi il disservizio non è stato ancora creato"); + Assertions.fail("dopo aver atteso alcuni secondi il disservizio non è stato ancora creato"); } disserviziAppPage.waitLoadStatoDellaPiattaformaPage(); } + + } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/GruppiPGPagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/GruppiPGPagoPATest.java index 1a83eda9c..604c16194 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/GruppiPGPagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/GruppiPGPagoPATest.java @@ -8,14 +8,19 @@ import it.pn.frontend.e2e.utility.WebTool; import lombok.extern.slf4j.Slf4j; import org.openqa.selenium.WebDriver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.util.Map; @Slf4j public class GruppiPGPagoPATest { - private final WebDriver driver = Hooks.driver; - private final GruppiPGPage gruppiPGPage = new GruppiPGPage(this.driver); + @Autowired + @Lazy + private WebTool webTool; + @Autowired + private GruppiPGPage gruppiPGPage; @When("Nella pagina Piattaforma Notifiche persona giuridica si clicca sul bottone Gruppi") public void nellaPaginaPiattaformaNotifichePersonaGiuridicaSiCliccaSulBottoneGruppi() { @@ -155,7 +160,7 @@ public void siVerificaCheVengaMostratoCorrettamenteIlPopupDiEliminazione() { @And("Si {string} il gruppo {string} creato inizialmente") public void siIlGruppoCreatoInizialmente(String azioneGruppo, String nomeGruppo) { log.info("Si elimina il gruppo {} creato all'inizio del test", nomeGruppo); - WebTool.waitTime(3); + webTool.waitTime(3); gruppiPGPage.eliminaGruppoDaPaginaIniziale(azioneGruppo, nomeGruppo); } } 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 6403cbb8d..daa493551 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 @@ -8,11 +8,9 @@ import it.pn.frontend.e2e.api.mittente.SpidLoginMittente; import it.pn.frontend.e2e.api.mittente.SpidTestEnvWestEuropeAzureContainerIoContinueResponse; import it.pn.frontend.e2e.api.mittente.SpidTestEnvWestEuropeAzureContainerIoLogin; -import it.pn.frontend.e2e.config.CustomHttpClient; -import it.pn.frontend.e2e.listeners.Hooks; -import it.pn.frontend.e2e.listeners.NetWorkInfo; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.destinatario.DestinatarioPage; -import it.pn.frontend.e2e.pages.destinatario.personaFisica.ComeVuoiAccederePage; import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.*; import it.pn.frontend.e2e.section.CookiesSection; import it.pn.frontend.e2e.section.destinatario.personaGiuridica.HeaderPGSection; @@ -21,97 +19,129 @@ 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; -import org.openqa.selenium.WebDriver; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +//@Component inserire in un secondo momenti +@Primary public class LoginPGPagoPATest { - private final Logger logger = LoggerFactory.getLogger("LoginPGPagoPATest"); - private final WebDriver driver = Hooks.driver; + + private final Logger logger = LoggerFactory.getLogger(LoginPGPagoPATest.class); private Map datiPersonaGiuridica = new HashMap<>(); private Map urlPersonaGiuridica; - private final DataPopulation dataPopulation = new DataPopulation(); - private final HeaderPGSection headerPGSection = new HeaderPGSection(this.driver); - private final AccediAreaRiservataPGPage accediAreaRiservataPGPage = new AccediAreaRiservataPGPage(this.driver); - private final List netWorkInfos = Hooks.netWorkInfos; - private final String FILE_TOKEN_LOGIN = "tokenLogin.yaml"; - private final String RAGIONE_SOCIALE_BALDASSARRE = "Comune di Milano"; - private final String URL_LOGIN_PG = "https://imprese.dev.notifichedigitali.it/"; + + @Autowired + private HeaderPGSection headerPGSection; + @Autowired + private AccediAreaRiservataPGPage accediAreaRiservataPGPage; + @Autowired + @Lazy + private WebDriverConfig webDriverConfig; + @Autowired + @Lazy + private HooksNew hooks; + + //TODO da rimuovere anche il discorso dei file yaml.. + @Autowired + private DataPopulation dataPopulation; + + @Autowired + private SelezionaImpresaPage selezionaImpresaPage; + + @Autowired + private PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage; + + @Autowired + private HomePagePG homePagePG; + + @Autowired + private ScegliSpidPGPage scegliSpidPGPage; + + @Autowired + private LoginPGPagoPAPage loginPGPagoPAPage; + + @Autowired + private AutorizzaInvioDatiPGPage autorizzaInvioDatiPGPage; + + @Autowired + private DestinatarioPage destinatarioPage; + + @Autowired + private CookiesSection cookiesSection; + + @Autowired + @Lazy + private WebTool webTool; @Given("Login Page persona giuridica viene visualizzata") public void loginPagePersonaGiuridicaVieneVisualizzata() { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); switch (variabileAmbiente) { - case "dev" -> driver.get(URL_LOGIN_PG); + case "dev" -> hooks.getDriver().get(webDriverConfig.getBaseUrlPgDev()); case "test", "uat" -> - driver.get(URL_LOGIN_PG.replace("dev", variabileAmbiente)); + hooks.getDriver().get(webDriverConfig.getBaseUrlPgDev().replace("dev", variabileAmbiente)); default -> - Assert.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); + Assertions.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); } } @Given("PG - Si effettua la login tramite token exchange come {string}, e viene visualizzata la dashboard") public void loginMittenteConTokenExchange(String personaGiuridica) { - DataPopulation dataPopulation = new DataPopulation(); - - String environment = System.getProperty("environment"); + String environment = webDriverConfig.getEnvironment(); String token = ""; switch (environment) { case "dev" -> token = personaGiuridica.equalsIgnoreCase("delegante") ? - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPGDelegante").toString() + webDriverConfig.getTokendevPGDelegante() : - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPGDelegato").toString(); - case "test" -> { - if(personaGiuridica.equalsIgnoreCase("delegante")){ - token = dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPGDelegante").toString(); - } else if (personaGiuridica.equalsIgnoreCase("baldassarre")) { - token = dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPGBaldassarre").toString(); - } else{ - token = dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPGDelegato").toString(); - } - } + webDriverConfig.getTokendevPGDelegato(); + case "test" -> token = personaGiuridica.equalsIgnoreCase("delegante") ? + webDriverConfig.getTokentestPGDelegante() + : + webDriverConfig.getTokentestPGDelegato(); default -> { logger.error("Ambiente non valido"); - Assert.fail("Ambiente non valido o non trovato!"); + Assertions.fail("Ambiente non valido o non trovato!"); } } - // Si effettua il login con token exchange + String urlLogin = "https://imprese." + environment + ".notifichedigitali.it/#selfCareToken=" + token; - this.driver.get(urlLogin); + hooks.getDriver().get(urlLogin); logger.info("Login effettuato con successo"); - WebTool.waitTime(10); - PiattaformaNotifichePGPAPage notifichePGPage = new PiattaformaNotifichePGPAPage(this.driver); + + webTool.waitTime(10); headerPGSection.waitLoadHeaderPGPage(); - // Si visualizza la dashboard e si verifica che gli elementi base siano presenti (header e title della pagina) if (personaGiuridica.equalsIgnoreCase("delegante")) { Map personaGiuridicaFile = dataPopulation.readDataPopulation("personaGiuridica.yaml"); - notifichePGPage.waitLoadPiattaformaNotificaPage(personaGiuridicaFile.get("ragioneSociale").toString()); - } else if(personaGiuridica.equalsIgnoreCase("baldassarre")) { - notifichePGPage.waitLoadPiattaformaNotificaPage(RAGIONE_SOCIALE_BALDASSARRE); - }else { + piattaformaNotifichePGPAPage.waitLoadPiattaformaNotificaPage(personaGiuridicaFile.get("ragioneSociale").toString()); + } else if (personaGiuridica.equalsIgnoreCase("baldassarre")) { + piattaformaNotifichePGPAPage.waitLoadPiattaformaNotificaPage(webDriverConfig.getRagioneSocialeBaldassarre()); + } else { Map personaGiuridicaFile = dataPopulation.readDataPopulation("delegatoPG.yaml"); - notifichePGPage.waitLoadPiattaformaNotificaPage(personaGiuridicaFile.get("ragioneSociale").toString()); + piattaformaNotifichePGPAPage.waitLoadPiattaformaNotificaPage(personaGiuridicaFile.get("ragioneSociale").toString()); } } @When("Login portale persona giuridica tramite request method") public void loginPortalePersonaGiuridicaTramiteRequestMethod() { - this.datiPersonaGiuridica = dataPopulation.readDataPopulation("personaGiuridica.yaml"); - String userMittente = this.datiPersonaGiuridica.get("user").toString(); - String pwdMittente = this.datiPersonaGiuridica.get("pwd").toString(); + // this.datiPersonaGiuridica = dataPopulation.readDataPopulation("personaGiuridica.yaml"); + String userMittente = webDriverConfig.getUserDante(); + String pwdMittente = webDriverConfig.getPwdDante(); this.readUrlPortaleMittente(userMittente, pwdMittente); + boolean urlWithTokenFound = false; int numProvaLogin = 0; + while (numProvaLogin < 10) { this.readUrlPortaleMittente(userMittente, pwdMittente); if (this.urlPersonaGiuridica.get("responseCode").equalsIgnoreCase("301")) { @@ -130,81 +160,38 @@ public void loginPortalePersonaGiuridicaTramiteRequestMethod() { logger.info("procedura di login from spid provata : " + numProvaLogin); } else { logger.error("procedura di login from spid provata : " + numProvaLogin); - Assert.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaGiuridica.get("urlPortale") + "' è : " + this.urlPersonaGiuridica.get("responseCode")); - + Assertions.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaGiuridica.get("urlPortale") + "' è : " + this.urlPersonaGiuridica.get("responseCode")); } - this.driver.get(this.urlPersonaGiuridica.get("urlPortale")); + hooks.getDriver().get(this.urlPersonaGiuridica.get("urlPortale")); - if (!CookieConfig.isCookieEnabled()) { - CookiesSection cookiesPage = new CookiesSection(this.driver); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } } - SelezionaImpresaPage impresaPage = new SelezionaImpresaPage(this.driver); - impresaPage.clickSuImpresa(this.datiPersonaGiuridica.get("ragioneSociale").toString()); - impresaPage.clickAccediButton(); + + selezionaImpresaPage.clickSuImpresa(this.datiPersonaGiuridica.get("ragioneSociale").toString()); + selezionaImpresaPage.clickAccediButton(); } private void readUrlPortaleMittente(String user, String password) { - SpidLoginMittente spidLoginMittente = new SpidLoginMittente("xx_testenv2", "SpidL2"); spidLoginMittente.setSpidLoginMittenteEndPoint("https://api-pnpg.uat.selfcare.pagopa.it/spid/v1/login"); spidLoginMittente.runSpidLoginMittente(); + if (spidLoginMittente.getResponseBody() == null) { - Assert.fail("api spid login risponde con body vuoto"); + Assertions.fail("api spid login risponde con body vuoto"); } String cookiesNameFromSpidLoginMittente = spidLoginMittente.getCookieName(); - if (cookiesNameFromSpidLoginMittente != null) { - logger.info("cookiesNameFromSpidLoginMittente : " + cookiesNameFromSpidLoginMittente); - } else { - Assert.fail("cookiesNameFromSpidLoginMittente is null"); - } - String cookiesValueFromSpidLoginMittente = spidLoginMittente.getCookieValue(); - if (cookiesValueFromSpidLoginMittente != null) { - logger.info("cookiesValueFromSpidLoginMittente : " + cookiesValueFromSpidLoginMittente); - } else { - Assert.fail("cookiesValueFromSpidLoginMittente is null"); - } - String cookiesDomainFromSpidLoginMittente = spidLoginMittente.getCookieDomain(); - if (cookiesDomainFromSpidLoginMittente != null) { - logger.info("cookiesDomainFromSpidLoginMittente : " + cookiesDomainFromSpidLoginMittente); - } else { - Assert.fail("cookiesDomainFromSpidLoginMittente is null"); - } - String cookiesPathFromSpidLoginMittente = spidLoginMittente.getCookiePath(); - if (cookiesPathFromSpidLoginMittente != null) { - logger.info("cookiesPathFromSpidLoginMittente : " + cookiesPathFromSpidLoginMittente); - } else { - Assert.fail("cookiesPathFromSpidLoginMittente is null"); - } - boolean cookiesHttOnlyFromSpidLoginMittente = spidLoginMittente.getCookieHttpOnly(); - if (cookiesHttOnlyFromSpidLoginMittente) { - logger.info("cookiesHttOnlyFromSpidLoginMittente : " + cookiesHttOnlyFromSpidLoginMittente); - } else { - Assert.fail("cookiesHttOnlyFromSpidLoginMittente : " + cookiesHttOnlyFromSpidLoginMittente); - } - String requestKeyFromSpidLoginMittente = spidLoginMittente.getRequestKey(); - if (requestKeyFromSpidLoginMittente != null) { - logger.info("requestKeyFromSpidLoginMittente : " + requestKeyFromSpidLoginMittente); - } else { - Assert.fail("requestKeyFromSpidLoginMittente is null"); - } - String relayStateFromSpidLoginMittente = spidLoginMittente.getRelayState(); - if (relayStateFromSpidLoginMittente != null) { - logger.info("relayStateFromSpidLoginMittente : " + relayStateFromSpidLoginMittente); - } else { - Assert.fail("relayStateFromSpidLoginMittente is null"); - } BasicCookieStore cookieStore = new BasicCookieStore(); BasicClientCookie cookie = new BasicClientCookie(cookiesNameFromSpidLoginMittente, cookiesValueFromSpidLoginMittente); @@ -224,16 +211,10 @@ private void readUrlPortaleMittente(String user, String password) { spidTestEnvWestEuropeAzureContainerIoLogin.runSpidTestEnvWestEuropeAzureContainerIoLogin(); if (spidTestEnvWestEuropeAzureContainerIoLogin.getResponseBody() == null) { - Assert.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/login ha risposto con body vuoto"); + Assertions.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/login ha risposto con body vuoto"); } String requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin = spidTestEnvWestEuropeAzureContainerIoLogin.getRequestKeyOutput(); - if (requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin != null) { - logger.info("requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin : " + requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin); - } else { - Assert.fail("requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin is null"); - } - SpidTestEnvWestEuropeAzureContainerIoContinueResponse spidTestEnvWestEuropeAzureContainerIoContinueResponse = new SpidTestEnvWestEuropeAzureContainerIoContinueResponse( requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin, cookieStore @@ -241,23 +222,13 @@ private void readUrlPortaleMittente(String user, String password) { spidTestEnvWestEuropeAzureContainerIoContinueResponse.setSpidTestEnvWestEuropeAzureContainerIoContinueResponseEndPoint("https://selc-u-pnpg-spid-testenv.westeurope.azurecontainer.io/continue-response"); spidTestEnvWestEuropeAzureContainerIoContinueResponse.runSpidTestEnvWestEuropeAzureContainerIoContinueResponse(); + if (spidTestEnvWestEuropeAzureContainerIoContinueResponse.getResponseBody() == null) { - Assert.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/continue-response"); + Assertions.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/continue-response"); } String samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse = spidTestEnvWestEuropeAzureContainerIoContinueResponse.getSamlResponseOutput(); - if (samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse != null) { - logger.info("samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse : " + samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse); - } else { - Assert.fail("samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse is null"); - } - String relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse = spidTestEnvWestEuropeAzureContainerIoContinueResponse.getRelayStateOutput(); - if (relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse != null) { - logger.info("relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse : " + relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse); - } else { - Assert.fail("relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse is null"); - } SpidAcsMittente spidAcsMittente = new SpidAcsMittente( samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse, @@ -272,49 +243,40 @@ private void readUrlPortaleMittente(String user, String password) { if (this.urlPersonaGiuridica.get("urlPortale") != null) { logger.info("urlPersonaGiuridica : " + this.urlPersonaGiuridica.get("urlPortale")); } else { - Assert.fail("urlPersonaGiuridica è null "); + Assertions.fail("urlPersonaGiuridica è null "); } } @Then("Home page persona giuridica viene visualizzata correttamente") public void homePagePersonaGiuridicaVieneVisualizzataCorrettamente() { headerPGSection.waitLoadHeaderPGPage(); - HomePagePG homePagePG = new HomePagePG(this.driver); homePagePG.waitLoadHomePagePGPage(); - } @When("Login con persona giuridica") - public void loginConPersonaGiuridica(Map datiPG) { + public void loginConPersonaGiuridica(Map datiPG) { logger.info("La persona guiridica cerca di fare il login"); - - CookiesSection cookiesSection; - - if (!CookieConfig.isCookieEnabled()) { - cookiesSection = new CookiesSection(this.driver); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { cookiesSection.selezionaAccettaTuttiButton(); } } + accediAreaRiservataPGPage.waitLoadAccediAreaRiservataPGPage(); accediAreaRiservataPGPage.clickSpidButton(); - ScegliSpidPGPage scegliSpidPGPage = new ScegliSpidPGPage(this.driver); scegliSpidPGPage.clickTestButton(); - LoginPGPagoPAPage loginPGPagoPAPage = new LoginPGPagoPAPage(this.driver); loginPGPagoPAPage.waitLoadLoginPGPage(); - loginPGPagoPAPage.insertUsername(datiPG.get("user")); - loginPGPagoPAPage.insertPassword(datiPG.get("pwd")); + loginPGPagoPAPage.insertUsername(webDriverConfig.getUserDante()); + loginPGPagoPAPage.insertPassword(webDriverConfig.getPwdDante()); loginPGPagoPAPage.clickInviaButton(); - AutorizzaInvioDatiPGPage autorizzaInvioDatiPGPage = new AutorizzaInvioDatiPGPage(this.driver); autorizzaInvioDatiPGPage.waitLoadAutorizzaInvioDatiPGPage(); autorizzaInvioDatiPGPage.clickInviaButton(); - SelezionaImpresaPage selezionaImpresaPage = new SelezionaImpresaPage(this.driver); selezionaImpresaPage.waitLoadSelezionaImpresaPage(); if(selezionaImpresaPage.clickSuImpresa(datiPG.get("ragioneSociale"))){ logger.info("click su impresa"); @@ -326,21 +288,22 @@ public void loginConPersonaGiuridica(Map datiPG) { public void logoutDaPortalePersonaGiuridica() { headerPGSection.waitLoadHeaderPGPage(); headerPGSection.clickEsciButton(); - WebTool.waitTime(5); - + webTool.waitTime(5); accediAreaRiservataPGPage.waitLoadAccediAreaRiservataPGPage(); - WebTool.waitTime(5); + webTool.waitTime(5); } @When("Login {string} portale persona giuridica tramite request method") public void loginPortalePersonaGiuridicaTramiteRequestMethod(String dpFile) { this.datiPersonaGiuridica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - String userMittente = this.datiPersonaGiuridica.get("user").toString(); - String pwdMittente = this.datiPersonaGiuridica.get("pwd").toString(); + String userMittente = webDriverConfig.getUserDante(); + String pwdMittente = webDriverConfig.getPwdDante(); this.readUrlPortaleMittente(userMittente, pwdMittente); + boolean urlWithTokenFound = false; int numProvaLogin = 0; + while (numProvaLogin < 10) { this.readUrlPortaleMittente(userMittente, pwdMittente); if (this.urlPersonaGiuridica.get("responseCode").equalsIgnoreCase("301")) { @@ -359,66 +322,59 @@ public void loginPortalePersonaGiuridicaTramiteRequestMethod(String dpFile) { logger.info("procedura di login from spid provata : " + numProvaLogin); } else { logger.error("procedura di login from spid provata : " + numProvaLogin); - Assert.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaGiuridica.get("urlPortale") + "' è : " + this.urlPersonaGiuridica.get("responseCode")); + Assertions.fail("Codice risposta ricevuto per questo end point: '" + this.urlPersonaGiuridica.get("urlPortale") + "' è : " + this.urlPersonaGiuridica.get("responseCode")); } - this.driver.get(this.urlPersonaGiuridica.get("urlPortale")); + hooks.getDriver().get(this.urlPersonaGiuridica.get("urlPortale")); - if (!CookieConfig.isCookieEnabled()) { - CookiesSection cookiesPage = new CookiesSection(this.driver); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } } - SelezionaImpresaPage impresaPage = new SelezionaImpresaPage(this.driver); - impresaPage.clickSuImpresa(this.datiPersonaGiuridica.get("ragioneSociale").toString()); - impresaPage.clickAccediButton(); + selezionaImpresaPage.clickSuImpresa(this.datiPersonaGiuridica.get("ragioneSociale").toString()); + selezionaImpresaPage.clickAccediButton(); } @When("Login portale persona giuridica tramite token exchange {string}") public void loginPortalePersonaGiuridicaTramiteTokenExchange(String dpFile) { logger.info("Si effettua il login PG tramite token"); - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); String urlIniziale = "https://imprese." + variabileAmbiente + ".notifichedigitali.it/#selfCareToken="; String token; - String user = this.dataPopulation.readDataPopulation(dpFile + ".yaml").get("user").toString(); + String user = webDriverConfig.getUserDante(); if (user.equalsIgnoreCase("DanteAlighieri")) { - if (variabileAmbiente.equalsIgnoreCase("test")) { - token = this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokentestPGDelegante").toString(); - } else { - token = this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokendevPGDelegante").toString(); - } + token = variabileAmbiente.equalsIgnoreCase("test") ? + this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokentestPGDelegante").toString() : + this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokendevPGDelegante").toString(); } else { - if (variabileAmbiente.equalsIgnoreCase("test")) { - token = this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokentestPGDelegato").toString(); - } else { - token = this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokendevPGDelegato").toString(); - } + token = variabileAmbiente.equalsIgnoreCase("test") ? + this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokentestPGDelegato").toString() : + this.dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokendevPGDelegato").toString(); } String url = urlIniziale + token; - this.driver.get(url); + this.hooks.getDriver().get(url); } public String getTokenExchangePGFromFile(String personaGiuridica) { - DataPopulation dataPopulation = new DataPopulation(); - String environment = System.getProperty("environment"); + String environment = webDriverConfig.getEnvironment(); String token = ""; switch (environment) { case "dev" -> token = personaGiuridica.equalsIgnoreCase("delegante") ? - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPGDelegante").toString() + webDriverConfig.getTokendevPGDelegante() : - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevPGDelegato").toString(); + webDriverConfig.getTokendevPGDelegato(); case "test" -> token = personaGiuridica.equalsIgnoreCase("delegante") ? - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPGDelegante").toString() + webDriverConfig.getTokentestPGDelegante() : - dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestPGDelegato").toString(); + webDriverConfig.getTokentestPGDelegato(); default -> { logger.error("Ambiente non valido"); - Assert.fail("Ambiente non valido o non trovato!"); + Assertions.fail("Ambiente non valido o non trovato!"); } } return token; @@ -426,7 +382,6 @@ public String getTokenExchangePGFromFile(String personaGiuridica) { @And("Si clicca su prodotto {string}") public void siCliccaSuProdotto(String xpath) { - DestinatarioPage destinatarioPage = new DestinatarioPage(driver); destinatarioPage.clickProdotto(xpath); } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/NotifichePGPagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/NotifichePGPagoPATest.java index 950b69cd5..2ebbdd9b9 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/NotifichePGPagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/NotifichePGPagoPATest.java @@ -5,7 +5,9 @@ import io.cucumber.java.en.When; import it.pn.frontend.e2e.common.DettaglioNotificaSection; import it.pn.frontend.e2e.common.NotificheDestinatarioPage; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.listeners.NetWorkInfo; import it.pn.frontend.e2e.pages.destinatario.DestinatarioPage; import it.pn.frontend.e2e.pages.destinatario.personaFisica.AccediAPiattaformaNotifichePage; @@ -19,15 +21,17 @@ import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; import it.pn.frontend.e2e.utility.*; import org.apache.commons.io.FileUtils; -import org.junit.Assert; + +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.awt.*; import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.List; @@ -36,35 +40,71 @@ public class NotifichePGPagoPATest { private final Logger logger = LoggerFactory.getLogger("NotifichePGPagoPATest"); - private final WebDriver driver = Hooks.driver; - private final LeTueDelegheSection leTueDelegheSection = new LeTueDelegheSection(this.driver); - private final PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); - private final PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - private final DestinatarioPage destinatarioPage = new DestinatarioPage(this.driver); - List netWorkInfos = Hooks.netWorkInfos; - DeleghePGPagoPAPage deleghePage = new DeleghePGPagoPAPage(this.driver); + + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private LeTueDelegheSection leTueDelegheSection; + @Autowired + private PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private DestinatarioPage destinatarioPage ; +// List netWorkInfos = Hooks.netWorkInfos; + @Autowired + private DeleghePGPagoPAPage deleghePage; + Map personaGiuridica = new HashMap<>(); + @Autowired + private CookieConfig cookieConfig; + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + private HomePagePG homePagePG; + @Autowired + private DettaglioNotificaSection dettaglioNotificaSection; + @Autowired + private CookiesSection cookiesSection; + @Autowired + private DownloadFile downloadFile; + @Autowired + private DataPopulation dataPopulation; + @Autowired + private AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage; + @Autowired + private NotificheDestinatarioPage notificheDestinatarioPage; + @Autowired + private DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + @Autowired + @Lazy + private WebTool webTool; + + + @And("Nella Home page persona giuridica si clicca su Send Notifiche Digitali") public void clickSendNotificheDigitali() { this.logger.info("Si clicca su Send Notifiche Digitali"); - HomePagePG homePagePG = new HomePagePG(this.driver); homePagePG.waitLoadHomePagePGPage(); - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); switch (variabileAmbiente) { case "dev" -> homePagePG.clickSendNotificheDigitali(5); case "test" -> homePagePG.clickSendNotificheDigitali(6); default -> - Assert.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); + Assertions.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); } } @And("Si visualizza correttamente la Pagina Notifiche persona giuridica {string}") public void siVisualizzaCorrettamenteLaPaginaNotifichePersonaGiuridica(String ragioneSociale) { - if (!CookieConfig.isCookieEnabled()) { - CookiesSection cookiesSection = new CookiesSection(this.driver); + if (!cookieConfig.isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { logger.info("Si accettano i cookies"); cookiesSection.selezionaAccettaTuttiButton(); @@ -72,15 +112,15 @@ public void siVisualizzaCorrettamenteLaPaginaNotifichePersonaGiuridica(String ra } piattaformaNotifichePGPAPage.waitLoadPiattaformaNotificaPage(ragioneSociale); - String urlChiamata = WebTool.getApiBaseUrl() + "notifications/received?"; + String urlChiamata = webDriverConfig.getBaseUrl() + "notifications/received?"; int codiceRispostaChiamataApi = getCodiceRispostaChiamataApi(urlChiamata); if (codiceRispostaChiamataApi != 200 && codiceRispostaChiamataApi != 0) { logger.error("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); - Assert.fail("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); + Assertions.fail("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); } else if (codiceRispostaChiamataApi == 0) { logger.error("TA_QA: La chiamata, " + urlChiamata + " non trovata"); - Assert.fail("TA_QA: La chiamata, " + urlChiamata + " non trovata"); + Assertions.fail("TA_QA: La chiamata, " + urlChiamata + " non trovata"); } } @@ -88,7 +128,7 @@ private int getCodiceRispostaChiamataApi(String urlChiamata) { logger.info("Recupero codice risposta della chiamata" + urlChiamata); int codiceRispostaChiamataApi = 0; - for (NetWorkInfo chiamate : netWorkInfos) { + for (NetWorkInfo chiamate : webDriverConfig.getNetWorkInfos()) { if (chiamate.getRequestUrl().startsWith(urlChiamata) && chiamate.getRequestMethod().equals("GET")) { codiceRispostaChiamataApi = Integer.parseInt(chiamate.getResponseStatus()); break; @@ -114,13 +154,19 @@ public void visualizzaDelegheSection() { public void nellaPaginaNotifichePersonaGiuridicaSiCliccaSuNotificheDelegate() { logger.info("Si clicca correttamente su notifiche delegate"); - piattaformaNotifichePGPAPage.clickNotificheDelegate(); + piattaformaNotifichePGPAPage.clickNotificheENotificheDelegate(); } + + @And("Nella Pagina Notifiche destinatario si clicca solo su notifiche delegate") + public void nellaPaginaNotifichePersonaGiuridicaSiCliccaSoloSuNotificheDelegate() { + logger.info("Si clicca correttamente su notifiche delegate"); + + piattaformaNotifichePGPAPage.clickNotificheDelegate(); + } @And("Nella sezione Deleghe si verifica sia presente una delega accettata per PG") public void nellaSezioneDelegheSiVerificaSiaPresenteUnaDelegaAccettataPerPG() { logger.info("Si controlla che sia presente una delega"); - BackgroundTest backgroundTest = new BackgroundTest(); if (!this.deleghePage.siVisualizzaUnaDelegaPG()) { backgroundTest.loginPGDeleghe("personaGiuridica"); backgroundTest.aggiuntaNuovaDelegaDellImpresaPG(); @@ -130,7 +176,7 @@ public void nellaSezioneDelegheSiVerificaSiaPresenteUnaDelegaAccettataPerPG() { } else if (this.leTueDelegheSection.controlloPresenzaBottoneAccetta()) { backgroundTest.accettazioneDelegaPG(); } - this.driver.navigate().refresh(); + this.hooks.getDriver().navigate().refresh(); } @And("Si visualizza correttamente la Pagina Notifiche persona giuridica sezione notifiche delegate {string}") @@ -147,25 +193,22 @@ public void nellaPaginaPiattaformaNotifichePersonaGiuridicaSiCliccaSulBottoneITu @Then("Si selezionano i file attestazioni opponibili da scaricare, all'interno della notifica persona giuridica, e si controlla che il download sia avvenuto {string}") public void siSelezionanoIFileAttestazioniOpponibiliDaScaricareAllInternoDellaNotificaPersonaGiuridicaESiControllaCheIlDownloadSiaAvvenuto(String dpFile) { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); int numeroLinkAttestazioniOpponibile = dettaglioNotificaSection.getLinkAttestazioniOpponibili(); - DownloadFile downloadFile = new DownloadFile(this.driver); - DataPopulation dataPopulation = new DataPopulation(); Map datiNotifica = dataPopulation.readDataPopulation(dpFile + ".yaml"); String workingDirectory = System.getProperty("user.dir"); File pathCartella = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/destinatario/personaGiuridica"); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = webDriverConfig.getHeadless().equalsIgnoreCase("true"); if (!downloadFile.controlloEsistenzaCartella(pathCartella)) { pathCartella.mkdirs(); } for (int i = 0; i < numeroLinkAttestazioniOpponibile; i++) { dettaglioNotificaSection.clickLinkAttestazioniOpponibile(i); - WebTool.waitTime(5); + webTool.waitTime(5); String urlFileAttestazioneOppponubile = downloadFile.getUrl("https://webapi.test.notifichedigitali.it/bff/v1/notifications/received/" + datiNotifica.get("codiceIUN").toString() + "/documents/"); if (headless && urlFileAttestazioneOppponubile.isEmpty()) { String testoLink = dettaglioNotificaSection.getTextLinkAttestazioniOpponibili(i); logger.error("Non è stato recuperato url per il download per il link: " + testoLink); - Assert.fail("Non è stato recuperato url per il download per il link: " + testoLink); + Assertions.fail("Non è stato recuperato url per il download per il link: " + testoLink); } File file = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/destinatario/notificaN" + i + ".pdf"); downloadFile.download(urlFileAttestazioneOppponubile, file, headless); @@ -178,10 +221,10 @@ public void siSelezionanoIFileAttestazioniOpponibiliDaScaricareAllInternoDellaNo private String getBearerToken() { - List netWorkInfos = Hooks.netWorkInfos; + List netWorkInfos = webDriverConfig.getNetWorkInfos(); String bearerToken = ""; for (NetWorkInfo netWorkInfo : netWorkInfos) { - String urlChiamata = WebTool.getApiBaseUrl() + "notifications/received?"; + String urlChiamata = webDriverConfig.getBaseUrl() + "notifications/received?"; if (netWorkInfo.getRequestUrl().contains(urlChiamata)) { bearerToken = netWorkInfo.getAuthorizationBearer(); } @@ -191,11 +234,9 @@ private String getBearerToken() { public void siRecuperaBearerToken(String dpFile) { logger.info("Si recupera il bearer token"); - DataPopulation dataPopulation = new DataPopulation(); personaGiuridica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - if (!CookieConfig.isCookieEnabled()) { - CookiesSection cookiesSection = new CookiesSection(this.driver); + if (!cookieConfig.isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { logger.info("Si accettano i cookies"); cookiesSection.selezionaAccettaTuttiButton(); @@ -232,38 +273,34 @@ public void siVerificaLaPresenzaDelloStatoNellaTimelineDellaNotifica(String stat @And("Si clicca sul radio bottone di pagamento") public void siCliccaRadioButtonPagamento() { - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); piattaformaNotifichePGPAPage.clickRadioBoxButton(); } @And("Si controlla sia presente il modello F24 destinatario") public void siControllaSiaPresenteIlModelloF24Destinatario() { logger.info("Si controlla sia presente il modello F24 PG"); - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); if (piattaformaNotifichePGPAPage.modelloF24Displayed()) { logger.info("Il modello F24 è trovato"); } else { logger.error("Il modello F24 non è trovato"); - Assert.fail("Il modello F24 non è trovato"); + Assertions.fail("Il modello F24 non è trovato"); } } @And("Si controlla non sia presente il modello F24 destinatario") public void siControllaNonSiaPresenteIlModelloF24Destinatario() { logger.info("Si controlla non sia presente il modello F24 PG"); - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); if (!piattaformaNotifichePGPAPage.modelloF24Displayed()) { logger.info("Il modello F24 non è trovato"); } else { logger.error("Il modello F24 è trovato"); - Assert.fail("Il modello F24 è trovato"); + Assertions.fail("Il modello F24 è trovato"); } } @And("Si clicca sul modello F24 destinatario numero {int}") public void siCliccaIlModelloF24Destinatario(int numOfF24) { logger.info("Si clicca modello F24 destinatario"); - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); piattaformaNotifichePGPAPage.vaiInFondoAllaPagina(); piattaformaNotifichePGPAPage.clickModelloF24Numero(numOfF24); } @@ -272,19 +309,17 @@ public void siCliccaIlModelloF24Destinatario(int numOfF24) { @And("Si controlla sia presente l'avviso PagoPa destinatario") public void siControllaSiaPresenteLAvvisoPagoPaDestinatario() { logger.info("Si controlla la presenza del box per il pagamento della notifica"); - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); if (accediAPiattaformaNotifichePage.scaricaAvvisoDisplayed()) { logger.info("Avviso PagoPA è trovato"); } else { logger.error("Avviso PagoPA non è trovato"); - Assert.fail("Avviso PagoPA non è trovato"); + Assertions.fail("Avviso PagoPA non è trovato"); } } @And("Si controlla sia presente piu avvisi PagoPa PG") public void siControllaSiaPresentePiuAvvisiPagoPaPG() { - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); - Assert.assertTrue("Avvissi PagoPA non sono trovati", accediAPiattaformaNotifichePage.piuAvvisiDisplayed()); + Assertions.assertTrue(accediAPiattaformaNotifichePage.piuAvvisiDisplayed(),"Avvissi PagoPA non sono trovati"); logger.info("Avvissi PagoPA sono trovati"); } @@ -292,47 +327,43 @@ public void siControllaSiaPresentePiuAvvisiPagoPaPG() { @And("Si controlla sia presente l'avvisi PagoPa PG") public void siControllaSiaPresenteLAvvisiPagoPaPG() { logger.info("Si controlla la presenza del box per il pagamento della notifica"); - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); - Assert.assertTrue("Avviso PagoPA non è trovato", accediAPiattaformaNotifichePage.piuAvvisiDisplayed()); + Assertions.assertTrue(accediAPiattaformaNotifichePage.piuAvvisiDisplayed(),"Avviso PagoPA non è trovato"); logger.info("Avviso PagoPA è trovato"); } @And("Si controlla non sia presente l'avviso PagoPa") public void siControllaNonSiaPresenteLAvvisoPagoPa() { logger.info("Si controlla la presenza del box per il pagamento della notifica"); - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); - WebTool.waitTime(5); - Assert.assertTrue("Avviso PagoPA non sia presente", accediAPiattaformaNotifichePage.piuAvvisiDisplayed()); +// AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); + webTool.waitTime(5); + Assertions.assertTrue( accediAPiattaformaNotifichePage.piuAvvisiDisplayed(), "Avviso PagoPA non sia presente"); logger.info("Avviso PagoPA è presente"); } @And("Si controlla non sia presente l'allegato PagoPa") public void siControllaNonSiaPresenteLAllegatoPagoPa() { logger.info("Si controlla la presenza del box per il pagamento della notifica"); - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); - WebTool.waitTime(5); - Assert.assertTrue("Avviso PagoPA non sia presente", accediAPiattaformaNotifichePage.allegatoPagoPaDisplayed()); +// AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); + webTool.waitTime(5); + Assertions.assertTrue(accediAPiattaformaNotifichePage.allegatoPagoPaDisplayed(),"Avviso PagoPA non sia presente"); logger.info("Avviso PagoPA è presente"); } @And("Si clicca l'avviso PagoPa destinatario") public void siCliccaLAvvisoPagoPaDestinatario() { logger.info("Si clicca l'avviso PagoPa destinatario"); - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); accediAPiattaformaNotifichePage.clickAvvisoPagoPADestinatario(); } @And("Si controlla sia visualizza box allegati modelli F24 PG") public void siControllaSiaVisualizzaBoxF24PG() { logger.info("Si controlla sia presente il box allegati modelli F24"); - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); piattaformaNotifichePGPAPage.checkBoxModelloF24PG(); } @And("Nella pagina piattaforma notifiche PG si effettua la ricerca per codice IUN {string}") public void nellaPaginaPiattformaNotificheSiEffettuaLaRicercaPerCodiceIUN(String codiceIUN) { logger.info("Si cerca una notifica tramite IUN: " + codiceIUN); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.inserimentoCodiceIUN(codiceIUN); piattaformaNotifichePage.selectFiltraNotificaButtonDestinatario(); } @@ -340,39 +371,34 @@ public void nellaPaginaPiattformaNotificheSiEffettuaLaRicercaPerCodiceIUN(String @And("Si controlla la presenza di codice avviso") public void siControllaLaPresenzaDiCodiceAvviso() { logger.info("Si controlla la presenza di codice avviso"); - AccediAPiattaformaNotifichePage accediAPiattaformaNotifichePage = new AccediAPiattaformaNotifichePage(this.driver); if (accediAPiattaformaNotifichePage.codiceAvvisoDisplayed()) { logger.info("Codice avviso è visuallizato corrttamente"); } else { logger.error("Codice avviso non è visuallizato corrttamente"); - Assert.fail("Codice avviso non è visuallizato corrttamente"); + Assertions.fail("Codice avviso non è visuallizato corrttamente"); } } @And("controllo link per scaricare zip e scarico file Ricevuta di consegna") public void scaricaRicevutaDiConsegna() throws AWTException, IOException { - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); piattaformaNotifichePGPAPage.clickRicevutaDiConsegna(); } @And("controllo Ricevuta di consegna link cliccabile") public void controlloRicevutaDiConsegnaLinkCliccabile() { - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(this.driver); notificheDestinatarioPage.checkRicevutaConsegnaCliccabile(); } @And("Controllo sia presente documento pdf") public void controlloPresenteDocumento() throws IOException { - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); logger.info("Controllo sia presente documento pdf"); - Assert.assertTrue("Documento non è trovato", piattaformaNotifichePGPAPage.checkIfPdfExists()); + Assertions.assertTrue(piattaformaNotifichePGPAPage.checkIfPdfExists(), "Documento non è trovato"); logger.info("Documento è trovato"); } @And("estraggo il file zip") public void inseriscoPasswordEdEstraggoZip() throws IOException { logger.info("estraggo il file zip"); - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); piattaformaNotifichePGPAPage.extractZipWithoutPassword(); } @@ -380,16 +406,15 @@ public void inseriscoPasswordEdEstraggoZip() throws IOException { public void siSelezionanoIlFileDaScaricare(String nomeFile) throws IOException { logger.info("Si cerca di scaricare il file " + nomeFile); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); + boolean headless = webDriverConfig.getHeadless().equalsIgnoreCase("true"); dettaglioNotificaMittenteSection.clickLinkAttestazioneOpponibile(nomeFile); - WebTool.waitTime(5); - DownloadFile downloadFile = new DownloadFile(this.driver); + webTool.waitTime(5); +// DownloadFile downloadFile = new DownloadFile(this.driver); - final String url = downloadFile.getUrl(WebTool.getApiBaseUrl() + "notifications/received/"); + final String url = downloadFile.getUrl(webDriverConfig.getBaseUrl() + "notifications/received/"); if (headless && url.isEmpty()) { logger.error("Non è stato recuperato url per il download per il link: " + nomeFile); - Assert.fail("Non è stato recuperato url per il download per il link: " + nomeFile); + Assertions.fail("Non è stato recuperato url per il download per il link: " + nomeFile); } nomeFile = nomeFile.replace(" ", "_").replace(":", ""); File file = new File("src/test/resources/dataPopulation/downloadFileNotifica/mittente/" + nomeFile + ".pdf"); @@ -409,12 +434,11 @@ public void siControllaIlTestoAlSuoInternoDestonatario(String nomeFile) { @And("Si controlla il SHA all interno del file atteztazione") public void siControllaIlShaAllInternoAot() { logger.info("Si controlla che il testo al suo interno si corretto"); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); if (dettaglioNotificaMittenteSection.controlloSHAFile("Attestazione_opponibile_a_terzi_notifica_presa_in_carico")) { logger.info("Il codice SHA all'interno del file è corretto"); } else { logger.error("Il codice SHA all'interno del file NON è corretto"); - Assert.fail("Il codice SHA all'interno del file NON è corretto"); + Assertions.fail("Il codice SHA all'interno del file NON è corretto"); } } } 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 ffd6920da..959231b1d 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 @@ -4,23 +4,42 @@ import io.cucumber.java.en.Then; import it.pn.frontend.e2e.common.RecapitiDestinatarioPage; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.destinatario.personaFisica.ITuoiRecapitiPage; 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.junit.Assert; + +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; + import java.util.Map; public class RecapitiPGPagoPaTest { private final Logger logger = LoggerFactory.getLogger("RecapitiPGPagoPaTest"); - private final WebDriver driver = Hooks.driver; - DataPopulation dataPopulation = new DataPopulation(); - private final RecapitiPGPage recapitiPGPage = new RecapitiPGPage(this.driver); - private final RecapitiDestinatarioPage recapitiDestinatarioPage = new RecapitiDestinatarioPage(this.driver); + + @Autowired + private HooksNew hooks; + @Autowired + private DataPopulation dataPopulation; + @Autowired + private RecapitiPGPage recapitiPGPage; + @Autowired + private RecapitiDestinatarioPage recapitiDestinatarioPage; + @Autowired + private ITuoiRecapitiPage iTuoiRecapitiPage; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + @Autowired + @Lazy + private WebTool webTool; + @And("Si visualizza correttamente la pagina Recapiti persona giuridica") public void siVisualizzaRecapitiPagePersonaGiuridica(){ @@ -73,8 +92,8 @@ 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"); - WebTool.waitTime(10); - this.driver.navigate().refresh(); + webTool.waitTime(10); + this.hooks.getDriver().navigate().refresh(); recapitiDestinatarioPage.visualizzazioneCampiSezioneAltriRecapiti(); } @@ -82,7 +101,6 @@ public void siVisualizzanoCorrettamenteTuttiGliElementiDellaSezioneAltriRecapiti 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()) { backgroundTest.aggiungiPECPG(); } else if (!recapitiDestinatarioPage.siControllaPECModificata(pec)) { @@ -93,8 +111,6 @@ public void nellaPaginaITuoiRecapitiDiPgSiControllaCheCiSiaGiaUnaPec() { @And("Si clicca su elimina email") public void siCliccaSuEliminaEmail() { - ITuoiRecapitiPage iTuoiRecapitiPage = new ITuoiRecapitiPage(this.driver); - iTuoiRecapitiPage.eliminaEmailEsistente(); } @@ -118,7 +134,6 @@ public void siControllaPresenzaEmailPrecedentementeSalvata(String email) { @And("Nella sezione altri recapiti si inserisce un recapito") public void nellaSezioneAltriRecapitiSiInserisceUnRecapito(){ - BackgroundTest backgroundTest = new BackgroundTest(); backgroundTest.aggiungiPecSezioneGiaAssociati(); } @@ -191,7 +206,7 @@ public void nellaSezioneAltriRecapitiSiCliccaAnnullaPopup(){ public void nellaSezioneAltriRecapitiSiVisualizzaMessagioDiErrorePopup(){ if (!recapitiDestinatarioPage.waitErrorMessagePopupOTP()){ logger.error("Il messaggio di errore OTP popup non è visibile"); - Assert.fail("Il messaggio di errore OTP popup non è visibile"); + Assertions.fail("Il messaggio di errore OTP popup non è visibile"); } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RicercaNotifichePersonaGiuridicaPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RicercaNotifichePersonaGiuridicaPATest.java index b28d834c2..4097e7779 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RicercaNotifichePersonaGiuridicaPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/RicercaNotifichePersonaGiuridicaPATest.java @@ -4,7 +4,7 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import it.pn.frontend.e2e.common.NotificheDestinatarioPage; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.destinatario.DestinatarioPage; import it.pn.frontend.e2e.pages.destinatario.personaFisica.NotifichePFPage; import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.PiattaformaNotifichePGPAPage; @@ -12,20 +12,39 @@ import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.section.destinatario.personaGiuridica.HeaderPGSection; import it.pn.frontend.e2e.section.mittente.HeaderPASection; -import org.junit.Assert; + +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import java.time.LocalDate; import java.util.Map; public class RicercaNotifichePersonaGiuridicaPATest { private final Logger logger = LoggerFactory.getLogger("RicercaNotifichePersonaGiuridicaPATest"); - private final WebDriver driver = Hooks.driver; - private final PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - RicercaNotifichePGPage ricercaNotifichePGPage = new RicercaNotifichePGPage(this.driver); - DestinatarioPage destinatarioPage = new DestinatarioPage(this.driver); + + @Autowired + private HooksNew hooks; + + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private RicercaNotifichePGPage ricercaNotifichePGPage; + @Autowired + private DestinatarioPage destinatarioPage; + @Autowired + private NotificheDestinatarioPage notificheDestinatarioPage; + @Autowired + private PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage; + @Autowired + private HeaderPASection headerPASection; + @Autowired + private HeaderPGSection headerPGSection; + @Autowired + private NotifichePFPage notifichePFPage; + private Map datiNotificaPG; @When("Nella Pagina Notifiche persona giuridica si clicca su notifiche dell impresa") @@ -37,8 +56,6 @@ public void cliccareSuNotificheDellImpresa() { @And("Nella pagina Piattaforma Notifiche persona giuridica inserire il codice IUN da dati notifica {string}") public void nellaPaginaPiattaformaNotifichePersonaGiuridicaInserireIlCodiceIUNDaDatiNotifica(String iun) throws InterruptedException { logger.info("Si inserisce il codice IUN"); - - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(driver); notificheDestinatarioPage.inserisciCodiceIUN(iun); } @@ -49,7 +66,6 @@ public void ilPersonaGiuridicaCliccaSullaNotificaRestituita(String iun) { @And("La persona giuridica clicca sulla prima notifica restituita") public void laPersonaGiuridicaCliccaSullaPrimaNotificaRestituita() { - RicercaNotifichePGPage ricercaNotifichePGPage = new RicercaNotifichePGPage(this.driver); ricercaNotifichePGPage.cliccaSuPrimaNotifica(); } @@ -60,7 +76,6 @@ public void siVisualizzaCorrettamenteLaSectionDettaglioNotificaPersonaGiuridicaD @And("Si controlla se la notifica prevede il pagamento") public void siControllaSeLaNotificaPrevedeIlPagamento() { - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); boolean sezionePagamentoIsDisplayed = piattaformaNotifichePGPAPage.sezionePagamentoDisplayed(); if (!sezionePagamentoIsDisplayed) { logger.info("La notifica non prevede il pagamento "); @@ -77,7 +92,7 @@ public void siControllaSeLaNotificaPrevedeIlPagamento() { logger.info("Sezione titolo di pagamento è visualizzato"); } else { logger.error("Sezione titolo di pagamento non è visualizzato"); - Assert.fail("Sezione titolo di pagamento non è visualizzato"); + Assertions.fail("Sezione titolo di pagamento non è visualizzato"); } boolean codiceAvvisoIsDisplayed = piattaformaNotifichePGPAPage.codiceAvvisoDisplayed(); @@ -85,7 +100,7 @@ public void siControllaSeLaNotificaPrevedeIlPagamento() { logger.info("Sezione codice avviso è visualizzato"); } else { logger.error("Sezione codice avviso non è visualizzato"); - Assert.fail("Sezione codice avviso non è visualizzato"); + Assertions.fail("Sezione codice avviso non è visualizzato"); } boolean modelloF24IsDisplayed = piattaformaNotifichePGPAPage.modelloF24Displayed(); @@ -93,7 +108,7 @@ public void siControllaSeLaNotificaPrevedeIlPagamento() { logger.info("Sezione scarica modello F24 è visualizzato"); } else { logger.error("Sezione scarica modello F24 non è visualizzato"); - Assert.fail("Sezione scarica modello F24 non è visualizzato"); + Assertions.fail("Sezione scarica modello F24 non è visualizzato"); } } } @@ -109,20 +124,14 @@ public void nellaPaginaPiattaformaNotifichePersonaGiuridicaVengoRestituiteTutteL String iun = datiPG.get("iun"); String ragioneSociale = datiPG.get("ragioneSociale"); - - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); piattaformaNotifichePGPAPage.waitLoadPiattaformaNotificaPage(ragioneSociale); - - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(driver); boolean result = notificheDestinatarioPage.verificaCodiceIUN(iun); if (result) { logger.info("Il risultato é coerente con il codice IUN inserito"); } else { logger.error("Gli stati della notifica NON sono uguali a quelli selezionati"); - Assert.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); + Assertions.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); } } @@ -131,7 +140,6 @@ public void nellaPaginaPiattaformaNotifichePersonaGiuridicaInserireUnArcoTempora LocalDate dateA = LocalDate.now(); LocalDate dateDa = dateA.minusDays(5); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); String dataa = piattaformaNotifichePage.conversioneFormatoDate(dateA.toString()); String datada = piattaformaNotifichePage.conversioneFormatoDate(dateDa.toString()); piattaformaNotifichePage.inserimentoArcoTemporale(datada, dataa); @@ -139,19 +147,14 @@ public void nellaPaginaPiattaformaNotifichePersonaGiuridicaInserireUnArcoTempora @And("Nella pagina Piattaforma Notifiche persona giuridica vengo restituite tutte le notifiche con la data della notifica compresa con le date precedentemente inserite") public void nellaPaginaPiattaformaNotifichePersonaGiuridicaVengoRestituiteTutteLeNotificheConLaDataDellaNotificaCompresaConLeDatePrecedentementeInserite() { - HeaderPGSection headerPGSection = new HeaderPGSection(this.driver); headerPGSection.waitLoadHeaderPGPage(); - - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); piattaformaNotifichePGPAPage.waitLoadPiattaformaNotificaPage("Convivio Spa"); - - NotifichePFPage notifichePFPage = new NotifichePFPage(this.driver); boolean result = notifichePFPage.getListData(); if (result) { logger.info("Il risultato é coerente con le date inserite"); } else { logger.error("Il risultato NON é coerente con le date inserite"); - Assert.fail("Il risultato NON é coerente con le date inserite"); + Assertions.fail("Il risultato NON é coerente con le date inserite"); } } @@ -163,19 +166,17 @@ public void cliccareSulBottoneRimuoviFiltriPersonaGiuridica() { @And("Nella pagina Piattaforma Notifiche persona giuridica inserire il codice IUN non valido da dati notifica {string}") public void nellaPaginaPiattaformaNotifichePersonaGiuridicaInserireIlCodiceIunNonValidoDaDatiNotifica(String datiNotificaNonValidoPG) throws InterruptedException { logger.info("Si inserisce il codice IUN non valido"); - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(this.driver); notificheDestinatarioPage.inserisciCodiceIUN(datiNotificaNonValidoPG); } @Then("Viene visualizzato un messaggio in rosso di errore sotto il campo errato e il rettangolo diventa rosso e il tasto Filtra è disattivo") public void vieneVisualizzatoUnMessaggioInRossoDiErroreSottoIlCampoErratoEIlRettangoloDiventaRossoEIlTastoFiltraEDisattivo() { - NotificheDestinatarioPage notificheDestinatarioPage = new NotificheDestinatarioPage(this.driver); boolean isErrorMessageDisplayed = ricercaNotifichePGPage.isErrorMessageDisplayed(); if (isErrorMessageDisplayed) { logger.info("il messaggio di errore é visualizzato"); } else { logger.error("il messaggio di errore non é visualizzato"); - Assert.fail("il messaggio di errore non é visualizzato"); + Assertions.fail("il messaggio di errore non é visualizzato"); } boolean isTextBoxInValid = notificheDestinatarioPage.isTextBoxInvalid(); @@ -183,7 +184,7 @@ public void vieneVisualizzatoUnMessaggioInRossoDiErroreSottoIlCampoErratoEIlRett logger.info("IUN text box non é valido"); } else { logger.error("IUN text box non é passato allo stato non valido"); - Assert.fail("IUN text box non é passato allo stato non valido"); + Assertions.fail("IUN text box non é passato allo stato non valido"); } ricercaNotifichePGPage.clickFiltraButton(); boolean isErrorMessageStillDisplayed = ricercaNotifichePGPage.isErrorMessageDisplayed(); @@ -191,7 +192,7 @@ public void vieneVisualizzatoUnMessaggioInRossoDiErroreSottoIlCampoErratoEIlRett logger.info("Il bottone Filtra é dissativato"); } else { logger.error("Il bottone Filtra é attivo"); - Assert.fail("Il bottone Filtra é attivo"); + Assertions.fail("Il bottone Filtra é attivo"); } } @@ -200,7 +201,6 @@ public void seIRisultatiSonoContenutiInPiuPagineDestinatarioEPossibileEffettuare logger.info("Se i risultati sono contenuti in più pagine è possibile effettuare il cambio pagina"); if (piattaformaNotifichePage.verificaEsistenzaEPassaggioPagina()) { logger.info("Bottone pagina 2 trovato e cliccato"); - HeaderPGSection headerPGSection = new HeaderPGSection(this.driver); headerPGSection.waitLoadHeaderPGPage(); ricercaNotifichePGPage.waitLoadNotifichePGPage(); } else { @@ -223,7 +223,7 @@ public void nellaPaginaPiattaformaNotificheDestinatarioSiInserisceUnaDataConForm logger.info("Il bottone Filtra é disattivato"); } else { logger.error("Il bottone Filtra é attivo"); - Assert.fail("Il bottone Filtra é attivo"); + Assertions.fail("Il bottone Filtra é attivo"); } } } \ No newline at end of file diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/UtentiPGPagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/UtentiPGPagoPATest.java index 03fe80026..462135b33 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/UtentiPGPagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/destinatario/personaGiuridica/UtentiPGPagoPATest.java @@ -1,23 +1,32 @@ package it.pn.frontend.e2e.stepDefinitions.destinatario.personaGiuridica; + import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.HomePagePG; import it.pn.frontend.e2e.pages.destinatario.personaGiuridica.UtentiPGPage; import it.pn.frontend.e2e.utility.WebTool; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.util.Map; public class UtentiPGPagoPATest { private final Logger logger = LoggerFactory.getLogger("UtentiPGPagoPATest"); - private final WebDriver driver = Hooks.driver; - private final UtentiPGPage utentiPGPage = new UtentiPGPage(this.driver); - private final HomePagePG homePagePG = new HomePagePG(this.driver); + + @Autowired + @Lazy + private WebTool webTool; + @Autowired + private UtentiPGPage utentiPGPage; + @Autowired + private HomePagePG homePagePG; @And("Si visualizza correttamente la pagina utenti") public void siVisualizzaCorrettamenteLaPAginaUtenti() { @@ -31,7 +40,7 @@ public void siCliccaSulBottoneAggiungiUtente() { @And("Si visualizza correttamente la pagina aggiungi nuovo utente") public void siVisualizzaCorrettamenteLaPaginaAggiungiNuovoUtente() { - WebTool.waitTime(5); + webTool.waitTime(5); utentiPGPage.waitLoadAggiungiUtentePage(); } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/ApiKeysTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/ApiKeysTest.java index bd20b8634..293b5ac02 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/ApiKeysTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/ApiKeysTest.java @@ -3,28 +3,48 @@ import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.mittente.ApiKeyPAPage; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.section.mittente.GeneraApiKeySection; -import org.junit.Assert; + +import lombok.Getter; +import lombok.Setter; +import org.junit.jupiter.api.Assertions; +import org.modelmapper.internal.util.Assert; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.util.concurrent.TimeUnit; public class ApiKeysTest { private static final Logger logger = LoggerFactory.getLogger("ApiKeysTest"); - private final WebDriver driver = Hooks.driver; - private final ApiKeyPAPage apiKeyPAPage = new ApiKeyPAPage(this.driver); + + @Getter + @Setter + public static String ApiKey; + + @Autowired + @Lazy + HooksNew hooks; + + @Autowired + private WebDriverConfig webDriverConfig; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private ApiKeyPAPage apiKeyPAPage; + @Autowired + private GeneraApiKeySection generaApiKeySection; @And("Nella pagina Piattaforma Notifiche selezionare la voce Api Key nel menu") public void nellaPaginaPiattaformaNotificheSelezionareLaVoceApiKeyNelMenu() { logger.info("Si cerca di cliccare sulla voce ApiKeys"); - - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { @@ -37,16 +57,12 @@ public void nellaPaginaPiattaformaNotificheSelezionareLaVoceApiKeyNelMenu() { @And("Si visualizza correttamente la pagina Api Key") public void siVisualizzaCorrettamenteLaPaginaApiKey() { logger.info("Si visualizza correttamente la pagina Api Key"); - - ApiKeyPAPage apiKeyPAPage = new ApiKeyPAPage(this.driver); apiKeyPAPage.waitLoadApikeyPage(); } @When("Nella pagina Api Key si clicca sul bottone genera Api Key") public void nellaPaginaApiKeySiCliccaSulBottoneGeneraApiKey() { logger.info("Si clicca sul bottone genera ApiKey"); - - ApiKeyPAPage apiKeyPAPage = new ApiKeyPAPage(this.driver); apiKeyPAPage.waitLoadPage(); apiKeyPAPage.clickSulBottoneGeneraApiKey(); } @@ -54,8 +70,6 @@ public void nellaPaginaApiKeySiCliccaSulBottoneGeneraApiKey() { @Then("Si visualizza correttamente la sezione genera Api key") public void siVisualizzaCorrettamenteLaSezioneGeneraApiKey() { logger.info("Si visualizza correttamente la sezione genera Api Key"); - - GeneraApiKeySection generaApiKeySection = new GeneraApiKeySection(this.driver); generaApiKeySection.waitLoadGeneraApiKey(); } @@ -91,8 +105,6 @@ public void nellaPaginaDiConfermaCliccareSulBottoneTornaAAPIKey() { @Then("Si visualizza correttamente l api key {string} nell elenco in stato attivo") public void siVisualizzaCorrettamenteLApiKeyNellElencoInStatoAttivo(String nomeApiKey) { logger.info("Si controlla che sia stato creata l'api key"); - - ApiKeyPAPage apiKeyPAPage = new ApiKeyPAPage(this.driver); apiKeyPAPage.waitLoadApikeyPage(); apiKeyPAPage.siVisualizzaNuovaApiAttiva(nomeApiKey); } @@ -169,35 +181,35 @@ public void siVisualizzaCorrettamenteLaListaDelleApiKeyGenerate() { logger.info("Si visualizza correttamente l'Api Key delle Api Key"); } else { logger.error("NON si visualizza correttamente l'Api Key delle Api Key"); - Assert.fail("NON si visualizza correttamente l'Api Key delle Api Key"); + Assertions.fail("NON si visualizza correttamente l'Api Key delle Api Key"); } if (apiKeyPAPage.siVisualizzaNomeEDataConTesto()) { logger.info("Si visualizza correttamente le date delle Api Key"); } else { logger.error("NON si visualizza correttamente le date delle Api Key"); - Assert.fail("NON si visualizza correttamente le date delle Api Key"); + Assertions.fail("NON si visualizza correttamente le date delle Api Key"); } if (apiKeyPAPage.siVisualizzaGruppoConTesto()) { logger.info("Si visualizza correttamente il gruppo delle Api Key"); } else { logger.error("NON si visualizza correttamente il gruppo delle Api Key"); - Assert.fail("NON si visualizza correttamente il gruppo delle Api Key"); + Assertions.fail("NON si visualizza correttamente il gruppo delle Api Key"); } if (apiKeyPAPage.siVisualizzaStatoConTesto()) { logger.info("Si visualizza correttamente lo stato delle api key"); } else { logger.error("NON si visualizza correttamente lo stato delle api key"); - Assert.fail("NON si visualizza correttamente lo stato delle api key"); + Assertions.fail("NON si visualizza correttamente lo stato delle api key"); } if (apiKeyPAPage.siVisualizzaMenuApiKey()) { logger.info("Si visualizza correttamente il bottone del menu Api Key"); } else { logger.error("NON si visualizza correttamente il bottone del menu Api Key"); - Assert.fail("NON si visualizza correttamente il bottone del menu Api Key"); + Assertions.fail("NON si visualizza correttamente il bottone del menu Api Key"); } } @@ -209,7 +221,7 @@ public void nellaPaginaApiKeyPosizionareIlCursoreSulloStatoDellOperazione() { @And("Nella sezione genera Api Key inserire un gruppo") public void nellaSezioneGeneraApiKeyInserireUnGruppo() { - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); String gruppo = ""; String gruppo2 = ""; switch (variabileAmbiente) { @@ -283,4 +295,17 @@ public void nellaPaginaApiKeyPosizionareIlCursuoreSopraIlNumeroGruppi() { apiKeyPAPage.mouseHoverGroups(); apiKeyPAPage.waitLoadMessaggioData(); } + + @And("Si copia e salva API key generata") + public void siCopiaESalvaApiKeyGenearta(){ + logger.info("Si copia e salva API key generata"); + ApiKey = apiKeyPAPage.copiaApiKeyESalva(); + } + + @And("Si clicca visualizza codice e verifica che il valore dell'apikey copiato sia uguale") + public void siVerificaValoreApiKeyUguale(){ + logger.info("Verifica che il valore dell'apikey copiato sia uguale a quello visualizzato in elenco"); + String apiKeyDaElenco = apiKeyPAPage.visualizzaApiKeyInElenco(); + Assertions.assertTrue(ApiKey.equalsIgnoreCase(apiKeyDaElenco)); + } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DashboardMittentePagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DashboardMittentePagoPATest.java index 1a6e98ded..4e4be47e0 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DashboardMittentePagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DashboardMittentePagoPATest.java @@ -1,50 +1,34 @@ package it.pn.frontend.e2e.stepDefinitions.mittente; -import com.google.common.base.CharMatcher; -import com.google.common.base.Splitter; + import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -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.model.singleton.NotificationSingleton; -import it.pn.frontend.e2e.pages.mittente.AreaRiservataPAPage; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.mittente.DashboardPage; -import it.pn.frontend.e2e.pages.mittente.InvioNotifichePAPage; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; -import it.pn.frontend.e2e.section.CookiesSection; -import it.pn.frontend.e2e.section.mittente.*; -import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; -import it.pn.frontend.e2e.stepDefinitions.destinatario.personaFisica.LoginPersonaFisicaPagoPA; -import it.pn.frontend.e2e.stepDefinitions.destinatario.personaGiuridica.LoginPGPagoPATest; -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; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; import java.awt.*; -import java.io.File; -import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.TimeUnit; - -import static org.apache.commons.lang3.StringUtils.isNumeric; -import static org.apache.commons.lang3.StringUtils.substring; +@Primary public class DashboardMittentePagoPATest { private static final Logger logger = LoggerFactory.getLogger("DashboardMittentePagoPATest"); - private final WebDriver driver = Hooks.driver; - DashboardPage dashboardPage = new DashboardPage(this.driver); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); + + @Autowired + @Lazy + private HooksNew hooks; + + @Autowired + private DashboardPage dashboardPage; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; @When("Nella pagina Piattaforma Notifiche cliccare sul bottone Statistiche") @@ -119,7 +103,7 @@ public void nellaPaginaStatisticheNotificheDigitaliSiInserisceUnaDataErrata() { @And("Nella pagina Statistiche il bottone Filtra disabilitata") public void nellaPaginaStatisticheIlBottoneFiltraDisabilitata() { - Assert.assertTrue("il bottone Filtra è disabilitato", piattaformaNotifichePage.verificaBottoneFiltraDisabilitato()); + Assertions.assertTrue(piattaformaNotifichePage.verificaBottoneFiltraDisabilitato(),"il bottone Filtra è disabilitato"); } @And("Nella pagina Statistiche si clicca sul bottone Annulla filtri") diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java index 3d3149099..d8b0c09e3 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java @@ -3,24 +3,47 @@ import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.config.WebDriverConfig; import it.pn.frontend.e2e.pages.destinatario.personaFisica.AccediAPiattaformaNotifichePage; import it.pn.frontend.e2e.pages.mittente.DisserviziAppPAPage; import it.pn.frontend.e2e.utility.DownloadFile; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; -import org.openqa.selenium.WebDriver; +import lombok.Setter; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; import java.io.File; import java.io.IOException; +/* +*Iniezione delle Dipendenze con @Autowired: Abbiamo rimosso la creazione manuale delle istanze e invece abbiamo iniettato le dipendenze WebDriver, WebDriverConfig, AccediAPiattaformaNotifichePage, e DisserviziAppPAPage tramite @Autowired. +* Integrazione DownloadFile e WebTool: Poiché DownloadFile e WebTool vengono utilizzati internamente senza dipendenze da Spring, non è necessario modificarli; il loro uso rimane invariato. +* Annotazione @Component: La classe DisserviziAppPATest è stata annotata come componente Spring per consentire l'iniezione automatica delle dipendenze. */ +//@Component public class DisserviziAppPATest { - private static final Logger logger = LoggerFactory.getLogger("DisserviziAppPATest"); - private final WebDriver driver = Hooks.driver; - private final AccediAPiattaformaNotifichePage notifichePage = new AccediAPiattaformaNotifichePage(this.driver); - private final DisserviziAppPAPage disserviziAppPAPage = new DisserviziAppPAPage(this.driver); + + private static final Logger logger = LoggerFactory.getLogger(DisserviziAppPATest.class); + + @Value("${headless}") + private String headlessLoc; + @Value("${apiBaseUrl}") + private String baseUrl; + + @Autowired + private AccediAPiattaformaNotifichePage notifichePage; + + @Autowired + private DisserviziAppPAPage disserviziAppPAPage; + + @Autowired + private DownloadFile downloadFile; + @Autowired + @Lazy + private WebTool webTool; @When("Nella pagina Piattaforma Notifiche selezionare la voce 'stato della piattaforma'") public void nellaPaginaPiattaformaNotificheSelezionareLaVoceStatoDellaPiattaforma() { @@ -61,18 +84,18 @@ public void siVisualizzaUnRecordInElencoRelativoAdUnDisservizioRisolto(String ti @And("Si scarica attestazione opponibile, e si controlla che il download sia avvenuto") public void siScaricaAttestazioneOpponibileDisservizi() throws IOException { logger.info("Si scarica attestazione opponibile"); - DownloadFile downloadFile = new DownloadFile(this.driver); + String workingDirectory = System.getProperty("user.dir"); File pathCartella = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/destinatario/personaGiuridica"); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = headlessLoc.equalsIgnoreCase("true"); if (!downloadFile.controlloEsistenzaCartella(pathCartella)) { pathCartella.mkdirs(); } disserviziAppPAPage.clickLinkAttestazioniOpponibileDisservizi(0); - WebTool.waitTime(5); + webTool.waitTime(5); String legalFactId = downloadFile.getLegalFactId(); - String urlFileAttestazioneOpponibile = WebTool.getApiBaseUrl() + "downtime/legal-facts/" + legalFactId; + String urlFileAttestazioneOpponibile = baseUrl + "downtime/legal-facts/" + legalFactId; File file = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/destinatario/notificaN" + 0 + ".pdf"); downloadFile.downloadAttestazioneDisservizi(urlFileAttestazioneOpponibile, file, headless); @@ -96,7 +119,7 @@ public void controlloCorrispondenzaDatiConPdf() { boolean isCorrect = disserviziAppPAPage.confrontoFileConDisservizio(); if (!isCorrect) { logger.error("i dati del pdf non corrispondono a quelli della tabella"); - Assert.fail("i dati del pdf non corrispondono a quelli della tabella"); + Assertions.fail("i dati del pdf non corrispondono a quelli della tabella"); } } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java index edc16f606..31a579b8d 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java @@ -4,7 +4,7 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import it.pn.frontend.e2e.common.DettaglioNotificaSection; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.mittente.DisserviziAppPAPage; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.section.mittente.DettaglioNotificaMittenteSection; @@ -12,10 +12,14 @@ import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.DownloadFile; import it.pn.frontend.e2e.utility.WebTool; -import org.junit.Assert; -import org.openqa.selenium.WebDriver; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; import java.io.File; import java.util.HashMap; @@ -23,26 +27,63 @@ import java.util.Map; import java.util.concurrent.TimeUnit; - +@Primary public class DownloadFileMittentePagoPATest { + private static final Logger logger = LoggerFactory.getLogger("DownloadFileMittentePagoPATest"); - private final WebDriver driver = Hooks.driver; private Map datiNotifica = new HashMap<>(); + + @Value("${environment}") + private String environment; + + @Value("${cookie.config}") + private String cookie; + + @Value("${headless}") + private String headlessParam; + + @Value("${downloadFilePath}") + private String downloadFilePath; + + @Value("${loadComponentWaitTime}") + private String loadComponentWaitTime; + + @Value("${apiBaseUrl}") + private String baseUrl; + + + @Autowired + private DataPopulation dataPopulation; + @Autowired private DownloadFile downloadFile; + @Autowired + private HooksNew hooks; + @Autowired + private DisserviziAppPAPage disserviziAppPAPage; + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection; + @Autowired + private DettaglioNotificaSection dettaglioNotificaSection; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + @Autowired + @Lazy + private WebTool webTool; + @When("Nella pagina Piattaforma Notifiche si clicca sulla notifica restituita") public void clickNotificaRestituita() { logger.info("Si clicca sulla notifica restituita"); logger.info("GENERATED IUN: {}", System.getProperty("IUN")); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.selezionaNotificaIUN(System.getProperty("IUN")); } @And("Si visualizza correttamente la sezione Dettaglio Notifica") public void siVisualizzaCorrettamenteLaSezioneDettaglioNotifica() { logger.info("Viene caricato correttamente la sezione Dettaglio Notifica"); - - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); dettaglioNotificaMittenteSection.waitLoadDettaglioNotificaSection(); } @@ -50,17 +91,14 @@ public void siVisualizzaCorrettamenteLaSezioneDettaglioNotifica() { public void downloadECheckFile() { logger.info("Si scaricano tutti i file all'interno della notifica"); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); - DataPopulation dataPopulation = new DataPopulation(); - String workingDirectory = System.getProperty("user.dir"); File pathCartella = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente"); - downloadFile = new DownloadFile(this.driver); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + + boolean headless = headlessParam.equalsIgnoreCase("true"); if (!downloadFile.controlloEsistenzaCartella(pathCartella)) { pathCartella.mkdirs(); } + this.datiNotifica = dataPopulation.readDataPopulation("datiNotifica.yaml"); int count = 1; @@ -72,50 +110,43 @@ public void downloadECheckFile() { } else { codiceIUN = dettaglioNotificaMittenteSection.getInfoNotifica(4); } - dettaglioNotificaMittenteSection.clickLinkDocumentiAllegati(); - try { - TimeUnit.SECONDS.sleep(5); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + dettaglioNotificaMittenteSection.clickLinkDocumentiAllegati(); + webTool.waitTime(5); final String filepath = workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente/notificaN"; - final String urlDocumenti = WebTool.getApiBaseUrl() + "notifications/sent/" + codiceIUN + "/documents/"; + final String urlDocumenti = baseUrl + "notifications/sent/" + codiceIUN + "/documents/"; final String urlDocumentiAllegati = downloadFile.getUrl(urlDocumenti); File file = new File(filepath + count + ".pdf"); + if (headless && urlDocumentiAllegati.isEmpty()) { String testoLink = dettaglioNotificaMittenteSection.getTextDocumentiAllegati(); logger.error("Non è stato recuperato url per il download per il link: " + testoLink); - Assert.fail("Non è stato recuperato url per il download per il link: " + testoLink); + Assertions.fail("Non è stato recuperato url per il download per il link: " + testoLink); } + downloadFile.download(urlDocumentiAllegati, file, headless); if (!headless) { dettaglioNotificaSection.goBack(); } + dettaglioNotificaSection.waitLoadDettaglioNotificaDESection(); - count = count + 1; + count++; int numeroLinkAvvenutaRicezione = dettaglioNotificaMittenteSection.getLinkAvvenutaRicezione(); for (int i = 1; i < numeroLinkAvvenutaRicezione; i++) { dettaglioNotificaMittenteSection.clickLinkAvvenutaRicezione(i); - try { - TimeUnit.SECONDS.sleep(5); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - final String url = WebTool.getApiBaseUrl() + "notifications/sent/" + codiceIUN + "/documents/AAR?documentId=safestorage:"; + webTool.waitTime(5); + final String url = baseUrl + "notifications/sent/" + codiceIUN + "/documents/AAR?documentId=safestorage:"; final String urlAvvenutaRicezione = downloadFile.getUrl(url); if (headless && urlAvvenutaRicezione.isEmpty()) { String testoLink = dettaglioNotificaMittenteSection.getTextLinkAvvenutaRicezione(i); logger.error("Non è stato recuperato url per il download per il link: " + testoLink); - Assert.fail("Non è stato recuperato url per il download per il link: " + testoLink); + Assertions.fail("Non è stato recuperato url per il download per il link: " + testoLink); } file = new File(filepath + count + ".pdf"); - count = count + 1; - downloadFile.download(urlAvvenutaRicezione, file, headless); if (!headless) { dettaglioNotificaSection.goBack(); @@ -127,43 +158,33 @@ public void downloadECheckFile() { for (int i = 0; i < numeroLinkAttestazioniOpponibile; i++) { dettaglioNotificaSection.clickLinkAttestazioniOpponibile(i); - try { - TimeUnit.SECONDS.sleep(5); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - final String urlFileAttestazioneOppponibile = downloadFile.getUrl(WebTool.getApiBaseUrl()); - if (headless && urlFileAttestazioneOppponibile.isEmpty()) { + webTool.waitTime(5); + final String urlFileAttestazioneOpponibile = downloadFile.getUrl(baseUrl); + if (headless && urlFileAttestazioneOpponibile.isEmpty()) { String testoLink = dettaglioNotificaSection.getTextLinkAttestazioniOpponibili(i); logger.error("Non è stato recuperato url per il download per il link: " + testoLink); - Assert.fail("Non è stato recuperato url per il download per il link: " + testoLink); + Assertions.fail("Non è stato recuperato url per il download per il link: " + testoLink); } file = new File(filepath + count + ".pdf"); - count = count + 1; - downloadFile.download(urlFileAttestazioneOppponibile, file, headless); + downloadFile.download(urlFileAttestazioneOpponibile, file, headless); if (!headless) { dettaglioNotificaSection.goBack(); } dettaglioNotificaSection.waitLoadDettaglioNotificaDESection(); + count++; } - count = count - 1; final String pathOfDownloadedFile = workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente"; - downloadFile.controlloDownload(pathOfDownloadedFile, count); - + downloadFile.controlloDownload(pathOfDownloadedFile, count - 1); } + @And("Nella sezione Dettaglio Notifiche si scarica il documento allegato") public void downloadDocumentiAllegati() { logger.info("Si scaricano solo i documenti Allegati all'interno della notifica"); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); - DataPopulation dataPopulation = new DataPopulation(); - String workingDirectory = System.getProperty("user.dir"); File pathCartella = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente"); - DownloadFile downloadFile = new DownloadFile(this.driver); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = headlessParam.equalsIgnoreCase("true"); if (!downloadFile.controlloEsistenzaCartella(pathCartella)) { pathCartella.mkdirs(); } @@ -178,56 +199,51 @@ public void downloadDocumentiAllegati() { codiceIUN = dettaglioNotificaMittenteSection.getInfoNotifica(4); } dettaglioNotificaMittenteSection.clickLinkDocumentiAllegati(); - try { - TimeUnit.SECONDS.sleep(5); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + webTool.waitTime(5); final String filepath = workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente/notificaN"; - final String urlDocumenti = WebTool.getApiBaseUrl() + "notifications/sent/" + codiceIUN + "/attachments/documents/0"; + final String urlDocumenti = baseUrl + "notifications/sent/" + codiceIUN + "/attachments/documents/0"; final String urlDocumentiAllegati = downloadFile.getUrl(urlDocumenti); File file = new File(filepath + count + "PN_NOTIFICATION_ATTACHMENTS.pdf"); if (headless && urlDocumentiAllegati.isEmpty()) { logger.error("Non è stato recuperato l'URL per il download dei documenti Allegati."); - Assert.fail("Non è stato recuperato l'URL per il download dei documenti Allegati."); + Assertions.fail("Non è stato recuperato l'URL per il download dei documenti Allegati."); } downloadFile.download(urlDocumentiAllegati, file, headless); if (!headless) { dettaglioNotificaMittenteSection.goBack(); } dettaglioNotificaSection.waitLoadDettaglioNotificaDESection(); - count++; - final String pathOfDownloadedFile = workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente"; downloadFile.controlloDownload(pathOfDownloadedFile, count); } @Then("Si clicca sul documento allegato") public void clickDocumentoAllegato() { - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); dettaglioNotificaMittenteSection.clickLinkDocumentiAllegati(); - driver.navigate().back(); + hooks.getDriver().navigate().back(); } @Then("Si clicca sul documento AAR") public void clickDocumentoAAR() { - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); dettaglioNotificaMittenteSection.clickLinkAvvenutaRicezione(0); - driver.navigate().back(); + hooks.getDriver().navigate().back(); } @Then("Si clicca sul documento Attestazione") public void clickDocumentoAttestazione() { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); dettaglioNotificaSection.clickLinkAttestazioniOpponibile(0); - driver.navigate().back(); + hooks.getDriver().navigate().back(); + } + + @Then("Si verifica che il link sul documento Attestazione è cliccabile") + public void toBeClickableDocumentoAttestazioneCliccable() { + dettaglioNotificaSection.toBeClickableLinkAttestazioniOpponibile(0); } @Then("Si clicca sul documento Attestazione scaduta") public void clickDocumentoAttestazioneScaduta() { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); dettaglioNotificaSection.clickLinkAttestazioniOpponibile(0); } @@ -235,15 +251,10 @@ public void clickDocumentoAttestazioneScaduta() { public void downloadFileAAR() { logger.info("Si scaricano solo i file AAR all'interno della notifica"); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); - DataPopulation dataPopulation = new DataPopulation(); - String workingDirectory = System.getProperty("user.dir"); - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = environment; File pathCartella = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente"); - DownloadFile downloadFile = new DownloadFile(this.driver); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = headlessParam.equalsIgnoreCase("true"); if (!downloadFile.controlloEsistenzaCartella(pathCartella)) { pathCartella.mkdirs(); } @@ -260,13 +271,13 @@ public void downloadFileAAR() { int numeroLinkAvvenutaRicezione = dettaglioNotificaMittenteSection.getLinkAvvenutaRicezione(); for (int i = 1; i < numeroLinkAvvenutaRicezione; i++) { dettaglioNotificaMittenteSection.clickLinkAvvenutaRicezione(i); - WebTool.waitTime(5); + webTool.waitTime(5); final String url = "https://webapi." + variabileAmbiente + ".notifichedigitali.it/delivery-push/" + codiceIUN + "/document/AAR?documentId=safestorage:"; final String urlAvvenutaRicezione = downloadFile.getUrl(url); if (urlAvvenutaRicezione.isEmpty()) { String testoLink = dettaglioNotificaMittenteSection.getTextLinkAvvenutaRicezione(i); logger.error("Non è stato recuperato l'URL per il download per il link: " + testoLink); - Assert.fail("Non è stato recuperato l'URL per il download per il link: " + testoLink); + Assertions.fail("Non è stato recuperato l'URL per il download per il link: " + testoLink); } File file = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente/notificaN" + count + "Avviso_di_avvenuta_ricezione.pdf"); downloadFile.download(urlAvvenutaRicezione, file, headless); @@ -285,14 +296,10 @@ public void downloadFileAAR() { public void downloadAttestazioniOpponibili() { logger.info("Si scaricano solo i file per attestazioni opponibili all'interno della notifica"); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(this.driver); - DataPopulation dataPopulation = new DataPopulation(); - String workingDirectory = System.getProperty("user.dir"); File pathCartella = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente"); - DownloadFile downloadFile = new DownloadFile(this.driver); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + + boolean headless = headlessParam.equalsIgnoreCase("true"); if (!downloadFile.controlloEsistenzaCartella(pathCartella)) { pathCartella.mkdirs(); } @@ -314,11 +321,11 @@ public void downloadAttestazioniOpponibili() { } catch (InterruptedException e) { throw new RuntimeException(e); } - final String urlFileAttestazioneOpponibile = downloadFile.getUrl(WebTool.getApiBaseUrl()); + final String urlFileAttestazioneOpponibile = downloadFile.getUrl(baseUrl); if (urlFileAttestazioneOpponibile.isEmpty()) { String testoLink = dettaglioNotificaSection.getTextLinkAttestazioniOpponibili(i); logger.error("Non è stato recuperato l'URL per il download per il link: " + testoLink); - Assert.fail("Non è stato recuperato l'URL per il download per il link: " + testoLink); + Assertions.fail("Non è stato recuperato l'URL per il download per il link: " + testoLink); } File file = new File(workingDirectory + "/src/test/resources/dataPopulation/downloadFileNotifica/mittente/notificaN" + count + "Attestazioni_Opponoboli.pdf"); downloadFile.download(urlFileAttestazioneOpponibile, file, headless); @@ -336,19 +343,15 @@ public void downloadAttestazioniOpponibili() { @And("Nella sezione Dettaglio Notifiche si seleziona il file, {string}, da scaricare") public void siSelezionanoIlFileDaScaricare(String nomeFile) { logger.info("Si cerca di scaricare il file " + nomeFile); - - DataPopulation dataPopulation = new DataPopulation(); - boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + boolean headless = headlessParam.equalsIgnoreCase("true"); this.datiNotifica = dataPopulation.readDataPopulation("datiNotifica.yaml"); - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); dettaglioNotificaMittenteSection.clickLinkAttestazioneOpponibile(nomeFile); - WebTool.waitTime(5); - downloadFile = new DownloadFile(this.driver); + webTool.waitTime(5); - final String url = downloadFile.getUrl(WebTool.getApiBaseUrl() + "notifications/sent/"); + final String url = downloadFile.getUrl(baseUrl + "notifications/sent/"); if (headless && url.isEmpty()) { logger.error("Non è stato recuperato url per il download per il link: " + nomeFile); - Assert.fail("Non è stato recuperato url per il download per il link: " + nomeFile); + Assertions.fail("Non è stato recuperato url per il download per il link: " + nomeFile); } nomeFile = nomeFile.replace(" ", "_").replace(":", ""); File file = new File("src/test/resources/dataPopulation/downloadFileNotifica/mittente/" + nomeFile + ".pdf"); @@ -362,22 +365,20 @@ public void siSelezionanoIlFileDaScaricare(String nomeFile) { @Then("Si controlla il testo all interno del file {string}") public void siControllaIlTestoAlSuoInterno(String nomeFile) { logger.info("Si controlla che il testo al suo interno si corretto"); - - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); Map infoNotifiche = dettaglioNotificaMittenteSection.recuperoInfoNotifiche(); if (nomeFile.contains("PN_NOTIFICATION_ATTACHMENTS")) { if (dettaglioNotificaMittenteSection.controlloTestoFile(nomeFile, "A Simple PDF File")) { logger.info("Il testo all'interno del file è corretto"); } else { logger.error("Il testo all'interno del file NON è corretto"); - Assert.fail("Il testo all'interno del file NON è corretto"); + Assertions.fail("Il testo all'interno del file NON è corretto"); } } else if (nomeFile.contains("Avviso di avvenuta ricezione")) { if (dettaglioNotificaMittenteSection.controlloTestoFile(nomeFile, "A Simple PDF File")) { logger.info("Il testo all'interno del file è corretto"); } else { logger.error("Il testo all'interno del file NON è corretto"); - Assert.fail("Il testo all'interno del file NON è corretto"); + Assertions.fail("Il testo all'interno del file NON è corretto"); } } else { if (nomeFile.equals("Attestazione_opponibile_a_terzi_notifica_presa_in_carico")) { @@ -385,7 +386,7 @@ public void siControllaIlTestoAlSuoInterno(String nomeFile) { logger.info("Il nome del mittente all'interno del file è corretto"); } else { logger.error("Il nome del mittente all'interno del file NON è corretto"); - Assert.fail("Il nome del mittente all'interno del file NON è corretto"); + Assertions.fail("Il nome del mittente all'interno del file NON è corretto"); } } @@ -393,28 +394,28 @@ public void siControllaIlTestoAlSuoInterno(String nomeFile) { logger.info("Il nome del destinatario all'interno del file è corretto"); } else { logger.error("Il nome del destinatario all'interno del file NON è corretto"); - Assert.fail("Il nome del destinatario all'interno del file NON è corretto"); + Assertions.fail("Il nome del destinatario all'interno del file NON è corretto"); } if (dettaglioNotificaMittenteSection.controlloTestoFile(nomeFile, infoNotifiche.get("codiceFiscale"))) { logger.info("Il codiceFiscale del destinatario all'interno del file è corretto"); } else { logger.error("Il codiceFiscale del destinatario all'interno del file NON è corretto"); - Assert.fail("Il codiceFiscale del destianatario all'interno del file NON è corretto"); + Assertions.fail("Il codiceFiscale del destianatario all'interno del file NON è corretto"); } if (dettaglioNotificaMittenteSection.controlloTestoFileData(nomeFile, infoNotifiche.get("data"))) { logger.info("La data della notifica all'interno del file è corretta"); } else { logger.error("La data della notifica all'interno del file NON è corretta"); - Assert.fail("La data della notifica all'interno del file NON è corretta"); + Assertions.fail("La data della notifica all'interno del file NON è corretta"); } if (dettaglioNotificaMittenteSection.controlloTestoFileCodiceIUN(nomeFile, infoNotifiche.get("codiceIUN"))) { logger.info("Il codice IUN della notifica all'interno del file è corretto"); } else { logger.error("Il codice IUN della notifica all'interno del file NON è corretto"); - Assert.fail("Il codice IUN della notifica all'interno del file NON è corretto"); + Assertions.fail("Il codice IUN della notifica all'interno del file NON è corretto"); } } } @@ -423,12 +424,10 @@ public void siControllaIlTestoAlSuoInterno(String nomeFile) { public void nellaPaginaPiattaformaNotificheSiRecuperaUnCodiceIUN() { logger.info("Nella pagina Piattaforma Notifiche si recupera un codice IUN"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.siCambiaIlNumeroElementiVisualizzatiAttraversoIlFiltro(); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); piattaformaNotifichePage.waitLoadingSpinner(); List codiciIun = piattaformaNotifichePage.getCodiceIunPersonaGiuridica(); - DataPopulation dataPopulation = new DataPopulation(); this.datiNotifica = dataPopulation.readDataPopulation("datiNotificaPG.yaml"); String codiceIun = this.datiNotifica.get("codiceIUN").toString(); @@ -444,10 +443,6 @@ public void nellaPaginaPiattaformaNotificheSiRecuperaUnCodiceIUN() { public void nellaPaginaPiattaformaNotificheSiVerificaLEsistenzaDellaNotificaConIlCodiceIUN() { logger.info("Si verifica l'esistenza della notifica con il codice IUN"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - BackgroundTest backgroundTest = new BackgroundTest(); - DataPopulation dataPopulation = new DataPopulation(); - List codiciIun = piattaformaNotifichePage.getCodiceIunPresenti(); Map personaFisica = dataPopulation.readDataPopulation("datiNotifica.yaml"); String codiceIun = personaFisica.get("codiceIUN").toString(); @@ -460,28 +455,30 @@ public void nellaPaginaPiattaformaNotificheSiVerificaLEsistenzaDellaNotificaConI public void downloadFileAttestazioneDisservizio() { logger.info("si effettua download del disservizio"); - DisserviziAppPAPage disserviziAppPAPage = new DisserviziAppPAPage(driver); - disserviziAppPAPage.downloadAttestazione(); - WebTool.waitTime(3); + webTool.waitTime(3); + } + + @And("Download file attestazione disservizio {int}") + public void downloadFileAttestazioneDisservizio(Integer index) { + logger.info("si effettua download del disservizio"); + + disserviziAppPAPage.downloadAttestazione(index); + webTool.waitTime(3); } @And("Nella pagina stato della piattaforma si cambia il numero elementi visualizzati attraverso il filtro") public void nellaPaginaStatoDellaPiattaformaSiCambiaIlNumeroElementiVisualizzatiAttraversoIlFiltroNumeroNotifiche() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.siCambiaIlNumeroElementiVisualizzatiAttraversoIlFiltro(); } @And("Nella pagina stato della piattaforma si cambia pagina utilizzando una freccetta") public void nellaPaginaStatoDellaPiattaformaSiCambiaPaginaUtilizzandoUnaFreccetta() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.siCambiaPaginaUtilizzandoUnaFrecetta(8); } @And("Si controlla che esista pop up scadenza") public void siControllaCheEsistaPopUpScadenza() { - DettaglioNotificaSection dettaglioNotificaSection = new DettaglioNotificaSection(driver); - dettaglioNotificaSection.checkMessaggioScadenzaDownload(); } 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 fe3186d91..5def4f37b 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 @@ -8,89 +8,144 @@ import it.pn.frontend.e2e.api.mittente.SpidLoginMittente; import it.pn.frontend.e2e.api.mittente.SpidTestEnvWestEuropeAzureContainerIoContinueResponse; import it.pn.frontend.e2e.api.mittente.SpidTestEnvWestEuropeAzureContainerIoLogin; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.pages.mittente.*; import it.pn.frontend.e2e.section.CookiesSection; 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; -import org.openqa.selenium.WebDriver; +import org.junit.jupiter.api.Assertions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; import java.util.Map; import java.util.concurrent.TimeUnit; - +//@Component +//@Scope("prototype") +@Primary public class LoginMittentePagoPA { private static final Logger logger = LoggerFactory.getLogger("LoginMittentePagoPA"); - private final WebDriver driver = Hooks.driver; - private final String FILE_TOKEN_LOGIN = "tokenLogin.yaml"; + + // WebDriver gestito con Spring, inizializzato in modo lazy per ottimizzare le risorse da capire? + //@Lazy + //@Autowired + //private WebDriver driver; + + @Autowired + private DataPopulation dataPopulation; + @Autowired + @Lazy + private WebTool webTool; + + // Percorso del file token specificato nelle configurazioni, con valore di default 'tokenLogin.yaml' + // @Value("${token.login.file:tokenLogin.yaml}") + // private String FILE_TOKEN_LOGIN; + private Map datiMittente; private Map urlMittente; + @Autowired + private HooksNew hooks; + + @Autowired + private WebDriverConfig webDriverConfig; + + @Autowired + private CookiesSection cookiesSection; + + @Autowired + private AcccediAreaRiservataPAPage acccediAreaRiservataPAPage; + + @Autowired + private ScegliSpidPAPage scegliSpidPAPage; + + @Autowired + private LoginPAPage loginPAPage; + + @Autowired + private HeaderPASection headerPASection; + + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + + @Autowired + private PreAccediAreaRiservataPAPage preAccediAreaRiservataPAPage; + + @Autowired + private AutorizziInvioDatiPAPage autorizziInvioDatiPAPage; + + @Autowired + private SelezionaEntePAPage selezionaEntePAPage; + + @Autowired + private AreaRiservataPAPage areaRiservataPAPage; + @Autowired + BasicCookieStore cookieStore; + + + + @Given("Login Page mittente {string} viene visualizzata") public void loginPageMittenteVieneVisualizzata(String datiMittenteFile) { - logger.info("Si recupera l'ambiente e si visualizza la pagina di login"); + logger.info("Si recupera l'ambiente e si visualizza la pagina di login 1"); - DataPopulation dataPopulation = new DataPopulation(); this.datiMittente = dataPopulation.readDataPopulation(datiMittenteFile + ".yaml"); - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); switch (variabileAmbiente) { - case "dev" -> this.driver.get(this.datiMittente.get("url").toString()); + case "dev" ->hooks.getDriver().get(webDriverConfig.getUrlMittente()); case "test", "uat" -> - this.driver.get(this.datiMittente.get("url").toString().replace("dev", variabileAmbiente)); + hooks.getDriver().get(webDriverConfig.getUrlMittente().replace("dev", variabileAmbiente)); default -> - Assert.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); + Assertions.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); } } @Given("Login Page mittente viene visualizzata") public void loginPageMittenteVieneVisualizzata(Map datiMittenteTable) { logger.info("Si recupera l'ambiente e si visualizza la pagina di login"); - String variabileAmbiente = System.getProperty("environment"); - DataPopulation dataPopulation = new DataPopulation(); - + String variabileAmbiente = webDriverConfig.getEnvironment(); this.datiMittente = dataPopulation.readDataPopulation("mittente.yaml"); switch (variabileAmbiente) { - case "dev" -> this.driver.get(datiMittenteTable.get("url")); + case "dev" -> hooks.getDriver().get(webDriverConfig.getUrlMittente()); case "test", "uat" -> - this.driver.get(datiMittenteTable.get("url").replace("dev", variabileAmbiente)); + hooks.getDriver().get(webDriverConfig.getUrlMittente().replace("dev", variabileAmbiente)); default -> - Assert.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); + Assertions.fail("Non stato possibile trovare l'ambiente inserito, Inserisci in -Denvironment test o dev o uat"); } } @Given("PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard") public void loginMittenteConTokenExchange() { - DataPopulation dataPopulation = new DataPopulation(); - String environment = System.getProperty("environment"); + + // String environment = System.getProperty("environment"); + String environment = webDriverConfig.getEnvironment(); String token = ""; switch (environment) { case "dev" -> - token = dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokendevMittente").toString(); + token = webDriverConfig.getTokendevMittente(); case "test" -> - token = dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestMittente").toString(); + token = webDriverConfig.getTokentestMittente(); default -> { logger.error("Ambiente non valido"); - Assert.fail("Ambiente non valido o non trovato!"); + Assertions.fail("Ambiente non valido o non trovato!"); } } // Si effettua il login con token exchange String urlLogin = "https://selfcare." + environment + ".notifichedigitali.it/#selfCareToken=" + token; - this.driver.get(urlLogin); + hooks.getDriver().get(urlLogin); logger.info("Login effettuato con successo"); - WebTool.waitTime(10); + // Attesa statica di 10 secondi - considerare l'uso di WebDriverWait per migliorare l'efficienza + 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); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); } @@ -98,44 +153,37 @@ public void loginMittenteConTokenExchange() { public void loginConMittente(String datiMittenteFile) { logger.info("Si effetua la Login dal portale mittente"); - DataPopulation dataPopulation = new DataPopulation(); this.datiMittente = dataPopulation.readDataPopulation(datiMittenteFile + ".yaml"); - PreAccediAreaRiservataPAPage preAccediAreaRiservataPAPage = new PreAccediAreaRiservataPAPage(this.driver); + // Creazione dell'oggetto pagina per la gestione del pre-accesso all'area riservata preAccediAreaRiservataPAPage.waitLoadPreAccediAreaRiservataPAPage(); preAccediAreaRiservataPAPage.selezionaProcediAlLoginButton(); - if (driver.getCurrentUrl().contains("https://uat.selfcare.pagopa.it/") || - !CookieConfig.isCookieEnabled()) { + // Verifica della presenza dell'URL e dei cookie per proseguire con l'accettazione dei cookie + if (hooks.getDriver().getCurrentUrl().contains(webDriverConfig.getUrlSelfCare()) || + !webDriverConfig.getCookieConfig().isCookieEnabled()) { logger.info("cookies start"); - CookiesSection cookiesPage; - cookiesPage = new CookiesSection(this.driver); - cookiesPage.selezionaAccettaTuttiButton(); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + + cookiesSection.selezionaAccettaTuttiButton(); + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } logger.info("cookies end"); } - AcccediAreaRiservataPAPage acccediAreaRiservataPAPage = new AcccediAreaRiservataPAPage(this.driver); acccediAreaRiservataPAPage.waitLoadLoginPageMittente(); acccediAreaRiservataPAPage.selezionareSpidButton(); - ScegliSpidPAPage scegliSpidPAPage = new ScegliSpidPAPage(this.driver); - scegliSpidPAPage.selezionareTestButton(); - LoginPAPage loginPAPage = new LoginPAPage(this.driver); loginPAPage.waitLoadLoginPAPage(); - loginPAPage.inserisciUtenete(this.datiMittente.get("user").toString()); - loginPAPage.inserisciPassword(this.datiMittente.get("pwd").toString()); + loginPAPage.inserisciUtenete(webDriverConfig.getUserMittente()); + loginPAPage.inserisciPassword(webDriverConfig.getPwdMittente()); loginPAPage.selezionaInviaDati(); - AutorizziInvioDatiPAPage autorizziInvioDatiPAPage = new AutorizziInvioDatiPAPage(this.driver); autorizziInvioDatiPAPage.waitLoadAutorizziInvioDatiPAPage(); autorizziInvioDatiPAPage.selezionareInvia(); - SelezionaEntePAPage selezionaEntePAPage = new SelezionaEntePAPage(this.driver); selezionaEntePAPage.waitLoadSelezionaEntePAPage(); selezionaEntePAPage.cercaComune(this.datiMittente.get("comune").toString()); selezionaEntePAPage.selezionareComune(this.datiMittente.get("comune").toString()); @@ -146,41 +194,32 @@ public void loginConMittente(String datiMittenteFile) { public void loginConMittente(Map datiMittenteFile) { logger.info("Si effetua la Login dal portale mittente"); - PreAccediAreaRiservataPAPage preAccediAreaRiservataPAPage = new PreAccediAreaRiservataPAPage(this.driver); preAccediAreaRiservataPAPage.waitLoadPreAccediAreaRiservataPAPage(); preAccediAreaRiservataPAPage.selezionaProcediAlLoginButton(); - if (driver.getCurrentUrl().contains("https://uat.selfcare.pagopa.it/") || - !CookieConfig.isCookieEnabled()) { + if (hooks.getDriver().getCurrentUrl().contains(webDriverConfig.getUrlSelfCare()) || + !webDriverConfig.getCookieConfig().isCookieEnabled()) { logger.info("cookies start"); - CookiesSection cookiesPage; - cookiesPage = new CookiesSection(this.driver); - cookiesPage.selezionaAccettaTuttiButton(); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + cookiesSection.selezionaAccettaTuttiButton(); + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } logger.info("cookies end"); } - AcccediAreaRiservataPAPage acccediAreaRiservataPAPage = new AcccediAreaRiservataPAPage(this.driver); acccediAreaRiservataPAPage.waitLoadLoginPageMittente(); acccediAreaRiservataPAPage.selezionareSpidButton(); - ScegliSpidPAPage scegliSpidPAPage = new ScegliSpidPAPage(this.driver); - scegliSpidPAPage.selezionareTestButton(); - LoginPAPage loginPAPage = new LoginPAPage(this.driver); loginPAPage.waitLoadLoginPAPage(); - loginPAPage.inserisciUtenete(datiMittenteFile.get("user")); - loginPAPage.inserisciPassword(datiMittenteFile.get("pwd")); + loginPAPage.inserisciUtenete(webDriverConfig.getUserMittente()); + loginPAPage.inserisciPassword( webDriverConfig.getPwdMittente()); loginPAPage.selezionaInviaDati(); - AutorizziInvioDatiPAPage autorizziInvioDatiPAPage = new AutorizziInvioDatiPAPage(this.driver); autorizziInvioDatiPAPage.waitLoadAutorizziInvioDatiPAPage(); autorizziInvioDatiPAPage.selezionareInvia(); - SelezionaEntePAPage selezionaEntePAPage = new SelezionaEntePAPage(this.driver); selezionaEntePAPage.waitLoadSelezionaEntePAPage(); selezionaEntePAPage.cercaComune(datiMittenteFile.get("comune")); selezionaEntePAPage.selezionareComune(datiMittenteFile.get("comune")); @@ -189,8 +228,8 @@ public void loginConMittente(Map datiMittenteFile) { @When("Login mittente tramite request method") public void portaleMittenteIsDisplayed() throws InterruptedException { - String userMittente = this.datiMittente.get("user").toString(); - String pwdMittente = this.datiMittente.get("pwd").toString(); + String userMittente = webDriverConfig.getUserMittente(); + String pwdMittente = webDriverConfig.getPwdMittente(); this.readurlPortaleMittente(userMittente, pwdMittente); boolean urlWithTokenFound = false; int numProvaLogin = 0; @@ -208,12 +247,11 @@ public void portaleMittenteIsDisplayed() throws InterruptedException { logger.info("procedura di login from spid provata : " + numProvaLogin); } else { logger.info("procedura di login from spid provata : " + numProvaLogin); - Assert.fail("Codice risposta ricevuto per questo end point: '" + this.urlMittente.get("urlPortale") + "' è : " + this.urlMittente.get("responseCode")); + Assertions.fail("Codice risposta ricevuto per questo end point: '" + this.urlMittente.get("urlPortale") + "' è : " + this.urlMittente.get("responseCode")); } - this.driver.get(this.urlMittente.get("urlPortale")); + hooks.getDriver().get(this.urlMittente.get("urlPortale")); - SelezionaEntePAPage selezionaEntePAPage = new SelezionaEntePAPage(this.driver); selezionaEntePAPage.waitLoadSelezionaEntePAPage(); selezionaEntePAPage.cercaComune(this.datiMittente.get("comune").toString()); selezionaEntePAPage.selezionareComune(this.datiMittente.get("comune").toString()); @@ -226,59 +264,58 @@ private void readurlPortaleMittente(String user, String password) { spidLoginMittente.setSpidLoginMittenteEndPoint("https://api.uat.selfcare.pagopa.it/spid/v1/login"); spidLoginMittente.runSpidLoginMittente(); if (spidLoginMittente.getResponseBody() == null) { - Assert.fail(" api spid login risponde con body vuoto"); + Assertions.fail(" api spid login risponde con body vuoto"); } String cookiesNameFromSpidLoginMittente = spidLoginMittente.getCookieName(); if (cookiesNameFromSpidLoginMittente != null) { logger.info("cookiesNameFromSpidLoginMittente : " + cookiesNameFromSpidLoginMittente); } else { - Assert.fail("cookiesNameFromSpidLoginMittente is null"); + Assertions.fail("cookiesNameFromSpidLoginMittente is null"); } String cookiesValueFromSpidLoginMittente = spidLoginMittente.getCookieValue(); if (cookiesValueFromSpidLoginMittente != null) { logger.info("cookiesValueFromSpidLoginMittente : " + cookiesValueFromSpidLoginMittente); } else { - Assert.fail("cookiesValueFromSpidLoginMittente is null"); + Assertions.fail("cookiesValueFromSpidLoginMittente is null"); } String cookiesDomainFromSpidLoginMittente = spidLoginMittente.getCookieDomain(); if (cookiesDomainFromSpidLoginMittente != null) { logger.info("cookiesDomainFromSpidLoginMittente : " + cookiesDomainFromSpidLoginMittente); } else { - Assert.fail("cookiesDomainFromSpidLoginMittente is null"); + Assertions.fail("cookiesDomainFromSpidLoginMittente is null"); } String cookiesPathFromSpidLoginMittente = spidLoginMittente.getCookiePath(); if (cookiesPathFromSpidLoginMittente != null) { logger.info("cookiesPathFromSpidLoginMittente : " + cookiesPathFromSpidLoginMittente); } else { - Assert.fail("cookiesPathFromSpidLoginMittente is null"); + Assertions.fail("cookiesPathFromSpidLoginMittente is null"); } boolean cookiesHttOnlyFromSpidLoginMittente = spidLoginMittente.getCookieHttpOnly(); if (cookiesHttOnlyFromSpidLoginMittente) { logger.info("cookiesHttOnlyFromSpidLoginMittente : " + cookiesHttOnlyFromSpidLoginMittente); } else { - Assert.fail("cookiesHttOnlyFromSpidLoginMittente : " + cookiesHttOnlyFromSpidLoginMittente); + Assertions.fail("cookiesHttOnlyFromSpidLoginMittente : " + cookiesHttOnlyFromSpidLoginMittente); } String requestKeyFromSpidLoginMittente = spidLoginMittente.getRequestKey(); if (requestKeyFromSpidLoginMittente != null) { logger.info("requestKeyFromSpidLoginMittente : " + requestKeyFromSpidLoginMittente); } else { - Assert.fail("requestKeyFromSpidLoginMittente is null"); + Assertions.fail("requestKeyFromSpidLoginMittente is null"); } String relayStateFromSpidLoginMittente = spidLoginMittente.getRelayState(); if (relayStateFromSpidLoginMittente != null) { logger.info("relayStateFromSpidLoginMittente : " + relayStateFromSpidLoginMittente); } else { - Assert.fail("relayStateFromSpidLoginMittente is null"); + Assertions.fail("relayStateFromSpidLoginMittente is null"); } - BasicCookieStore cookieStore = new BasicCookieStore(); BasicClientCookie cookie = new BasicClientCookie(cookiesNameFromSpidLoginMittente, cookiesValueFromSpidLoginMittente); cookie.setDomain(cookiesDomainFromSpidLoginMittente); cookie.setPath(cookiesPathFromSpidLoginMittente); @@ -296,14 +333,14 @@ private void readurlPortaleMittente(String user, String password) { spidTestEnvWestEuropeAzureContainerIoLogin.runSpidTestEnvWestEuropeAzureContainerIoLogin(); if (spidTestEnvWestEuropeAzureContainerIoLogin.getResponseBody() == null) { - Assert.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/login ha risposto con body vuoto"); + Assertions.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/login ha risposto con body vuoto"); } String requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin = spidTestEnvWestEuropeAzureContainerIoLogin.getRequestKeyOutput(); if (requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin != null) { logger.info("requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin : " + requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin); } else { - Assert.fail("requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin is null"); + Assertions.fail("requestKeyFromSpidTestEnvWestEuropeAzureContainerIoLogin is null"); } SpidTestEnvWestEuropeAzureContainerIoContinueResponse spidTestEnvWestEuropeAzureContainerIoContinueResponse = @@ -314,21 +351,21 @@ private void readurlPortaleMittente(String user, String password) { spidTestEnvWestEuropeAzureContainerIoContinueResponse.setSpidTestEnvWestEuropeAzureContainerIoContinueResponseEndPoint("https://selc-u-spid-testenv.westeurope.azurecontainer.io/continue-response"); spidTestEnvWestEuropeAzureContainerIoContinueResponse.runSpidTestEnvWestEuropeAzureContainerIoContinueResponse(); if (spidTestEnvWestEuropeAzureContainerIoContinueResponse.getResponseBody() == null) { - Assert.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/continue-response"); + Assertions.fail(" api selc-u-spid-testenv.westeurope.azurecontainer.io/continue-response"); } String samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse = spidTestEnvWestEuropeAzureContainerIoContinueResponse.getSamlResponseOutput(); if (samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse != null) { logger.info("samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse : " + samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse); } else { - Assert.fail("samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse is null"); + Assertions.fail("samlResponseFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse is null"); } String relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse = spidTestEnvWestEuropeAzureContainerIoContinueResponse.getRelayStateOutput(); if (relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse != null) { logger.info("relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse : " + relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse); } else { - Assert.fail("relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse is null"); + Assertions.fail("relayStateFromSpidTestEnvWestEuropeAzureContainerIoContinueResponse is null"); } SpidAcsMittente spidAcsMittente = new SpidAcsMittente( @@ -344,7 +381,7 @@ private void readurlPortaleMittente(String user, String password) { if (this.urlMittente.get("urlPortale") != null) { logger.info("urlMittente : " + this.urlMittente.get("urlPortale")); } else { - Assert.fail("urlMittente è null "); + Assertions.fail("urlMittente è null "); } } @@ -353,10 +390,8 @@ private void readurlPortaleMittente(String user, String password) { public void homePageMittenteVieneVisualizzataCorrettamente() { logger.info("Home page mittente viene visualizzata correttamente"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - AreaRiservataPAPage areaRiservataPAPage = new AreaRiservataPAPage(this.driver); areaRiservataPAPage.waitLoadAreaRiservataPAPage(); if (areaRiservataPAPage.verificaCodiceFiscale(this.datiMittente.get("codiceFiscale").toString())) { logger.info("Codice fiscale presente"); @@ -364,6 +399,7 @@ public void homePageMittenteVieneVisualizzataCorrettamente() { logger.info("Codice fiscale non presente o errato"); } + // Uso di attesa fissa di 5 secondi - considerare l'uso di WebDriverWait per migliorare la stabilità del test try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { @@ -371,29 +407,24 @@ public void homePageMittenteVieneVisualizzataCorrettamente() { } } - @And("Logout da portale mittente") public void logoutDaPortaleMittente() { logger.info("Si esce dal portale mittente"); - WebTool.waitTime(2); + webTool.waitTime(2); - - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); headerPASection.selezionaEsciButton(); - if (!CookieConfig.isCookieEnabled()) { - CookiesSection cookiesSection = new CookiesSection(this.driver); + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { cookiesSection.selezionaAccettaTuttiButton(); } } - AcccediAreaRiservataPAPage acccediAreaRiservataPAPage = new AcccediAreaRiservataPAPage(this.driver); acccediAreaRiservataPAPage.waitLoadLoginPageMittente(); - WebTool.waitTime(5); + webTool.waitTime(5); } @@ -402,36 +433,34 @@ public void logoutDaPortaleMittente() { public void loginConMittenteTramiteTokenExchange() { logger.info("Si effettua la login del mittente tramite token"); - String variabileAmbiente = System.getProperty("environment"); + String variabileAmbiente = webDriverConfig.getEnvironment(); String urlInziale = "https://selfcare." + variabileAmbiente + ".notifichedigitali.it/#selfCareToken="; String token; - DataPopulation dataPopulation = new DataPopulation(); + if (variabileAmbiente.equalsIgnoreCase("test")) { - token = dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokentestMittente").toString(); + token = webDriverConfig.getTokentestMittente(); } else { - token = dataPopulation.readDataPopulation("tokenLogin.yaml").get("tokendevMittente").toString(); + token = webDriverConfig.getTokendevMittente(); } String url = urlInziale + token; - driver.get(url); + hooks.getDriver().get(url); } @And("Si clicca sul bottone test") public void clickTestButton() { - AcccediAreaRiservataPAPage acccediAreaRiservataPAPage = new AcccediAreaRiservataPAPage(this.driver); acccediAreaRiservataPAPage.clickTestBottone(); } @And("Si clicca bottone accetta cookies") public void clickAcceptCookies() { - CookiesSection cookiesPage = new CookiesSection(this.driver); - if (cookiesPage.waitLoadCookiesPage()) { - cookiesPage.selezionaAccettaTuttiButton(); + // Gestione della sezione cookies, accettando i cookie se necessario + if (cookiesSection.waitLoadCookiesPage()) { + cookiesSection.selezionaAccettaTuttiButton(); } } @And("Si clicca sul bottone esci") public void siCLiccaSulBottoneEsci() { - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.selezionaEsciButton(); } } 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 e22f163fa..e091b95d5 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 @@ -3,15 +3,12 @@ import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import it.pn.frontend.e2e.listeners.Hooks; - import it.pn.frontend.e2e.pages.destinatario.DestinatarioPage; - import it.pn.frontend.e2e.utility.DataPopulation; import lombok.extern.slf4j.Slf4j; - -import org.junit.Assert; -import org.openqa.selenium.WebDriver; +import org.junit.jupiter.api.Assertions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import java.util.Map; @@ -19,10 +16,17 @@ @Slf4j public class NewNotifichePagoPATest { - private final WebDriver driver = Hooks.driver; private final String FILE_TOKEN_LOGIN = "tokenLogin.yaml"; - DestinatarioPage destinatarioPage = new DestinatarioPage(driver); + @Value("${environment}") + private String environmentParam; + + @Autowired + private DestinatarioPage destinatarioPage; + + @Autowired + private DataPopulation dataPopulation; + @Then("Creo in background una notifica per destinatario tramite API REST") public void creoUnaNotificaPerDestinatarioTramiteAPIREST(){ @@ -41,8 +45,7 @@ public void siInizializzanoIDatiPerLaNotifica(Map datiNotifica) @And("Si completa percorso RADD") public void siCompletaPercorsoRADD(Map datiDestinatario) { - DataPopulation dataPopulation = new DataPopulation(); - String environment = System.getProperty("environment"); + String environment = environmentParam; String token = ""; switch (environment) { case "dev" -> { @@ -52,7 +55,7 @@ public void siCompletaPercorsoRADD(Map datiDestinatario) { token = dataPopulation.readDataPopulation(FILE_TOKEN_LOGIN).get("tokentestRaddista1").toString(); default -> { log.error("Ambiente non valido"); - Assert.fail("Ambiente non valido o non trovato!"); + Assertions.fail("Ambiente non valido o non trovato!"); } } String operationId = UUID.randomUUID().toString(); 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 804ca742b..97f49121e 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 @@ -6,7 +6,8 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import it.pn.frontend.e2e.api.mittente.AccettazioneRichiestaNotifica; -import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.config.WebDriverConfig; +import it.pn.frontend.e2e.listeners.HooksNew; import it.pn.frontend.e2e.listeners.NetWorkInfo; import it.pn.frontend.e2e.model.enums.AppPortal; import it.pn.frontend.e2e.model.singleton.NotificationSingleton; @@ -18,15 +19,17 @@ import it.pn.frontend.e2e.stepDefinitions.common.BackgroundTest; import it.pn.frontend.e2e.stepDefinitions.destinatario.personaFisica.LoginPersonaFisicaPagoPA; import it.pn.frontend.e2e.stepDefinitions.destinatario.personaGiuridica.LoginPGPagoPATest; -import it.pn.frontend.e2e.utility.CookieConfig; import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.WebTool; +import lombok.Getter; import lombok.Setter; -import org.junit.Assert; -import org.openqa.selenium.WebDriver; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.WebElement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; import java.io.File; import java.text.DateFormat; @@ -37,39 +40,78 @@ import static org.apache.commons.lang3.StringUtils.isNumeric; import static org.apache.commons.lang3.StringUtils.substring; +@Primary public class NotificaMittentePagoPATest { private static final Logger logger = LoggerFactory.getLogger("NotificaMittentePagoPATest"); - private final WebDriver driver = Hooks.driver; - private final List netWorkInfos = Hooks.netWorkInfos; - private final PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - private final AllegatiPASection allegatiPASection = new AllegatiPASection(this.driver); - 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); - private final LoginPersonaFisicaPagoPA loginPersonaFisicaPagoPA = new LoginPersonaFisicaPagoPA(); - private final LoginPGPagoPATest loginPGPagoPATest = new LoginPGPagoPATest(); + private final String PF = "persona fisica"; private final String PG = "persona giuridica"; private final String PA = "pubblica amministrazione"; - private final NotificationSingleton notificationSingleton = NotificationSingleton.getInstance(); private Map datiNotifica = new HashMap<>(); private Map datiNotificaMap = new HashMap<>(); private Map personaFisica = new HashMap<>(); private Map personaGiuridica = new HashMap<>(); private Map personeFisiche = new HashMap<>(); - @Setter + @Getter @Setter private String Iun; - @Setter + @Getter @Setter private String ApiKey; + @Autowired + @Lazy + private WebTool webTool; + @Autowired + private NotificationSingleton notificationSingleton; + @Autowired + private CookiesSection cookiesSection; + @Autowired + private WebDriverConfig webDriverConfig; + // Iniettare il driver tramite constructor injection + @Autowired + @Lazy + private HooksNew hooks; + + @Autowired + private AreaRiservataPAPage areaRiservataPAPage; + + @Autowired + private HeaderPASection headerPASection; + + @Autowired + private SuccessPASection successPASection; + + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + @Autowired + private AllegatiPASection allegatiPASection; + @Autowired + private DestinatarioPASection destinatarioPASection; + @Autowired + private DataPopulation dataPopulation; + @Autowired + private DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection; + @Autowired + private InformazioniPreliminariPASection informazioniPreliminariPASection; + @Autowired + private LoginPersonaFisicaPagoPA loginPersonaFisicaPagoPA; + @Autowired + private LoginPGPagoPATest loginPGPagoPATest; + @Autowired + @Lazy + private BackgroundTest backgroundTest; + @Autowired + InvioNotifichePAPage invioNotifichePAPage; + @Autowired + AccettazioneRichiestaNotifica accettazioneRichiestaNotifica; + + + + @When("Nella Home page mittente cliccare sul bottone Gestisci di Piattaforma Notifiche") public void nellaHomePageMittenteCliccareSuGestisciDiPiattaforma() { - AreaRiservataPAPage areaRiservataPAPage = new AreaRiservataPAPage(this.driver); - logger.info("Cliccare sul bottone di Piattaforma Notifiche dell'Ambiente " + variabileAmbiente); - switch (variabileAmbiente) { + logger.info("Cliccare sul bottone di Piattaforma Notifiche dell'Ambiente " + webDriverConfig.getEnvironment()); + switch (webDriverConfig.getEnvironment()) { case "dev" -> areaRiservataPAPage.selezionaPiattaformaNotificaDev(); case "test" -> areaRiservataPAPage.selezionaPiattaformaNotificaTest(); case "uat" -> areaRiservataPAPage.selezionaPiattaformaNotificaUat(); @@ -79,8 +121,6 @@ public void nellaHomePageMittenteCliccareSuGestisciDiPiattaforma() { @And("Si visualizza correttamente la pagina Piattaforma Notifiche") public void siVisualizzaCorrettamenteLaPaginaPiattaformaNotifiche() { logger.info("Si visualizza correttamente la pagina Piattaforma Notifiche"); - - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); @@ -90,14 +130,14 @@ public void siVisualizzaCorrettamenteLaPaginaPiattaformaNotifiche() { throw new RuntimeException(e); } - String urlChiamata = WebTool.getApiBaseUrl() + "notifications/sent?"; + String urlChiamata = webDriverConfig.getBaseUrl() + "notifications/sent?"; int codiceRispostaChiamataApi = getCodiceRispostaChiamataApi(urlChiamata); if (codiceRispostaChiamataApi != 200 && codiceRispostaChiamataApi != 0) { logger.error("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); - Assert.fail("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); + Assertions.fail("TA_QA: La chiamata, " + urlChiamata + " è andata in errore"); } else if (codiceRispostaChiamataApi == 0) { logger.error("TA_QA: La chiamata, " + urlChiamata + " non trovata"); - Assert.fail("TA_QA: La chiamata, " + urlChiamata + " non trovata"); + Assertions.fail("TA_QA: La chiamata, " + urlChiamata + " non trovata"); } } @@ -105,7 +145,7 @@ private int getCodiceRispostaChiamataApi(String urlChiamata) { logger.info("Recupero codice risposta della chiamata" + urlChiamata); int codiceRispostaChiamataApi = 0; - for (NetWorkInfo chiamate : netWorkInfos) { + for (NetWorkInfo chiamate : webDriverConfig.getNetWorkInfos()) { if (chiamate.getRequestUrl().startsWith(urlChiamata) && chiamate.getRequestMethod().equals("GET")) { codiceRispostaChiamataApi = Integer.parseInt(chiamate.getResponseStatus()); break; @@ -118,9 +158,9 @@ public String getNumeroProtocollo() { logger.info("Si recupera l'ultimo numero protocollo utilizzato"); this.piattaformaNotifichePage.siCambiaIlNumeroElementiVisualizzatiAttraversoIlFiltro(); - WebTool.waitTime(5); - String urlNotifiche = WebTool.getApiBaseUrl() + "notifications/"; - for (NetWorkInfo netWorkInfo : netWorkInfos) { + webTool.waitTime(5); + String urlNotifiche = webDriverConfig.getBaseUrl() + "notifications/"; + for (NetWorkInfo netWorkInfo : webDriverConfig.getNetWorkInfos()) { if (netWorkInfo.getRequestUrl().contains(urlNotifiche) && netWorkInfo.getRequestUrl().endsWith("size=10")) { String responseBody = netWorkInfo.getResponseBody(); String[] allNotifiche = responseBody.split("],\"moreResult\":"); @@ -163,8 +203,6 @@ public void siFinalizzaLInvioDellaNotificaESiControllaCheVengaCreataCorrettament @And("Si visualizza correttamente la pagina Piattaforma Notifiche section Informazioni preliminari") public void siVisualizzaCorrettamenteLaPaginaPiattaformaNotificheSectionInformazioniPreliminari() { logger.info("Verifica visualizzazione section Informazioni preliminari"); - - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); informazioniPreliminariPASection.waitLoadInformazioniPreliminariPASection(); } @@ -175,7 +213,7 @@ public void nellaSectionInformazioniPreliminariInserireIDatiDellaNotificaSenzaPa aggiornamentoNumeroProtocollo(); this.datiNotifica = dataPopulation.readDataPopulation(datiNotificaFile + ".yaml"); String gruppo = ""; - switch (variabileAmbiente) { + switch (webDriverConfig.getEnvironment()) { case "dev" -> gruppo = datiNotifica.get("gruppoDev").toString(); case "test", "uat" -> gruppo = datiNotifica.get("gruppoTest").toString(); } @@ -204,7 +242,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(); } @@ -214,7 +251,7 @@ public void aspettaSecondi(int quantiSecondi) { try { TimeUnit.SECONDS.sleep(quantiSecondi); - driver.navigate().refresh(); + hooks.getDriver().navigate().refresh(); } catch (Exception exc) { logger.error(exc.toString()); throw new RuntimeException(exc); @@ -231,7 +268,6 @@ public void siVisualizzaCorrettamenteLaTimelineRelativiATuttiIDestinatari(Map listaOggetti = piattaformaNotifichePage.ricercaListaOggetti(); if (listaOggetti != null && listaOggetti.size() >= 1) { logger.info("La lista degli oggetti viene visualizzata correttamente"); } else { logger.error("La lista degli oggetti non viene visualizzata correttamente"); - Assert.fail("La lista degli oggetti non viene visualizzata correttamente"); + Assertions.fail("La lista degli oggetti non viene visualizzata correttamente"); } if (piattaformaNotifichePage.verificaEsistenzaCodiceIUNNotifiche()) { logger.info("La lista dei codici iun viene visualizzata correttamente"); } else { logger.error("La lista dei codici iun non viene visualizzata correttamente"); - Assert.fail("La lista dei codici iun non viene visualizzata correttamente"); + Assertions.fail("La lista dei codici iun non viene visualizzata correttamente"); } if (piattaformaNotifichePage.verificaEsistenzaGruppoNotifiche()) { logger.info("La lista dei gruppi vengono visualizzate correttamente"); } else { logger.error("La lista dei gruppi non vengono visualizzate correttamente"); - Assert.fail("La lista dei gruppi non vengono visualizzate correttamente"); + Assertions.fail("La lista dei gruppi non vengono visualizzate correttamente"); } if (piattaformaNotifichePage.verificaEsistenzaStatoNotifiche()) { logger.info("La lista degli stati viene visualizzata correttamente"); } else { logger.error("La lista degli stati non viene visualizzata correttamente"); - Assert.fail("La lista degli stati non viene visualizzata correttamente"); + Assertions.fail("La lista degli stati non viene visualizzata correttamente"); } } @@ -571,19 +595,17 @@ public void nellaSectionDestinatarioVieneVisualizzatoUnSoloDestinatario() { logger.info("Viene visualizzato un solo destinatario"); } else { logger.error("Viene visualizzato più di un destinatario"); - Assert.fail("Viene visualizzato più di un destinatario"); + Assertions.fail("Viene visualizzato più di un destinatario"); } } @And("Nella pagina Piattaforma Notifiche si visualizzano le notifiche a partire dalla più recente") public void nellaPaginaPiattaformaNotificheSiVisualizzanoLeNotificheAPartireDallaPiuRecente() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.controlloOrdineNotifiche(); } @And("Nella pagina Piattaforma Notifiche si scrolla fino alla fine della pagina") public void nellaPaginaPiattaformaNotificheSiScrollaFinoAllaFineDellaPagina() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.siScrollaFinoAllaFineDellaPagina(); } @@ -596,37 +618,32 @@ public void nellaPaginaPiattaformaNotificheSiControllaCheVenganoVisualizzateNoti logger.info("Il numero di notifiche é corretto"); } else { logger.error("Il numero di notifiche non é corretto"); - Assert.fail("Il numero di notifiche non é corretto"); + Assertions.fail("Il numero di notifiche non é corretto"); } } @And("Nella pagina Piattaforma Notifiche si cambia pagina utilizzando una freccetta") public void nellaPaginaPiattaformaNotificheSiCambiaPaginaUtilizzandoUnaFreccetta() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.siCambiaPaginaUtilizzandoUnaFrecetta(1); } @And("Nella pagina stato della piattaforma si cambia pagina utilizzando una freccetta {int}") public void nellaPaginaStatoDellaPiattaformaSiCambiaPaginaUtilizzandoUnaFreccetta(Integer numPage) { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.siCambiaPaginaUtilizzandoUnaFrecetta(numPage); } @And("Nella pagina stato della piattaforma si cambia pagina utilizzando una freccetta fino all'ultima") public void nellaPaginaStatoDellaPiattaformaSiCambiaPaginaUtilizzandoUnaFreccetta() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.selezionaUltimaPaginaUtilizzandoUnaFrecetta(); } @And("Nella pagina Piattaforma Notifiche si cambia pagina utilizzando un numero") public void nellaPaginaPiattaformaNotificheSiCambiaPaginaUtilizzandoUnNumero() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.siCambiaPaginaUtilizzandoUnNumero(); } @Then("Nella pagina Piattaforma Notifiche si cambia il numero elementi visualizzati attraverso il filtro") public void nellaPaginaPiattaformaNotificheSiCambiaIlNumeroElementiVisualizzatiAttraversoIlFiltroNumeroNotifiche() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.siCambiaIlNumeroElementiVisualizzatiAttraversoIlFiltro(); } @@ -638,7 +655,7 @@ public void nellaPaginaPiattaformaNotificheSiControllaCheVenganoVisualizzateTutt logger.info("Numero righe differente da quello di default"); } else { logger.error("Numero righe uguale da quello di default"); - Assert.fail("Numero righe uguale da quello di default"); + Assertions.fail("Numero righe uguale da quello di default"); } } @@ -666,11 +683,11 @@ public void nellaSectionDestinatarioInserireIDatiDelDestinatariAggiuntiviPerNume nPersoneFisicheInt = Integer.parseInt(npersoneFisiche) - 1; if (nPersoneFisicheInt > 4 || nPersoneFisicheInt == 0) { logger.error("Devi inserire un nummero da 1 a 5"); - Assert.fail("Devi inserire un nummero da 1 a 5"); + Assertions.fail("Devi inserire un nummero da 1 a 5"); } } else { logger.error("Formato non accettato. Devi inserire un numero da 1 a 5"); - Assert.fail("Formato non accettato. Devi inserire un numero da 1 a 5"); + Assertions.fail("Formato non accettato. Devi inserire un numero da 1 a 5"); } destinatarioPASection.inserimentoMultiDestinatario(this.personeFisiche, nPersoneFisicheInt); @@ -685,7 +702,7 @@ public void nellaSectionDestinatarioSiCercaDiAggiungereIlSestoDestinatario() { logger.info("Non si riesce ad aggiungere il sesto destinatario"); } else { logger.error("Si riesce ad aggiungere il sesto destinatario"); - Assert.fail("Si riesce ad aggiungere il sesto destinatario"); + Assertions.fail("Si riesce ad aggiungere il sesto destinatario"); } } @@ -705,7 +722,6 @@ public void siVisualizzaCorrettamenteLErroreDiStessoCodiceFiscale() { @And("Si verifica che la notifica sia nello stato avanzato") public void siVerificaCheLaNotificaSiaNelloStato() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage((this.driver)); this.datiNotifica = dataPopulation.readDataPopulation("datiNotifica.yaml"); boolean notificaTrovata = false; @@ -728,13 +744,12 @@ public void siVerificaCheLaNotificaSiaNelloStato() { } if (!notificaTrovata) { logger.error("La notifica non è stata trovata dopo 1m40s"); - Assert.fail("La notifica non è stata trovata dopo 1m40s"); + Assertions.fail("La notifica non è stata trovata dopo 1m40s"); } } @And("Si verifica che l'invio della pec sia in corso") public void siVerificaCheLInvioDellaPecSiaInCorso() { - DettaglioNotificaMittenteSection dettaglioNotificaMittenteSection = new DettaglioNotificaMittenteSection(this.driver); dettaglioNotificaMittenteSection.clickVediPiuDettaglio(); dettaglioNotificaMittenteSection.verificaInvioPECInCorso(); } @@ -742,7 +757,6 @@ public void siVerificaCheLInvioDellaPecSiaInCorso() { @And("Verifica dello stato della notifica inviata tramite pec come {string}") public void verificaDelloStatoDellaNotificaInviataTramitePecCome(String statoNotifica) { - this.datiNotifica = dataPopulation.readDataPopulation("datiNotifica.yaml"); this.personeFisiche = dataPopulation.readDataPopulation("personaFisicaPec.yaml"); @@ -751,11 +765,10 @@ public void verificaDelloStatoDellaNotificaInviataTramitePecCome(String statoNot String dataNotifica = dateFormat.format(date).replace("-", "/"); String codiceIUNOld = this.datiNotifica.get("codiceIUN").toString(); - CookiesSection cookiesSection = new CookiesSection(this.driver); for (int i = 0; i < 12; i++) { if (i >= 1) { piattaformaNotifichePage.aggiornamentoPagina(); - if (!CookieConfig.isCookieEnabled()) { + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { cookiesSection.selezionaAccettaTuttiButton(); } @@ -778,7 +791,7 @@ public void verificaDelloStatoDellaNotificaInviataTramitePecCome(String statoNot } logger.error("Il server ha impiegato troppo tempo nel generare la notifica"); - Assert.fail("Il server ha impiegato troppo tempo nel generare la notifica"); + Assertions.fail("Il server ha impiegato troppo tempo nel generare la notifica"); } @@ -796,7 +809,6 @@ public void nellaPaginaPiattaformaNotificheInserireIlCodiceIUNDellaNotificaPec(S @And("Nella section si prova ad cliccare sul tasto continua senza aver inserito nessun dato") public void nellaSectionInformazioniPreliminariSiProvaAdCliccareSulTastoContinuaSenzaAverInseritoNessunDato() { logger.info("Si clicca sul tasto continua senza aver inserito nessun dato"); - piattaformaNotifichePage.clickContinuaDisabled(); } @@ -816,14 +828,13 @@ public void nellaSectionInformazioniPreliminariSiVisualizzaUnMessaggioDiErrore() logger.info("Si visualizza correttamente il messaggio di errore"); } else { logger.error("Non si visualizza correttamente il messaggio di errore"); - Assert.fail("Non si visualizza correttamente il messaggio di errore"); + Assertions.fail("Non si visualizza correttamente il messaggio di errore"); } } @And("Nella section cliccare sul tasto indietro") public void nellaSectionInformazioniPreliminariCliccareSulTastoIndietro() { logger.info("Si clicca sul tasto indietro"); - piattaformaNotifichePage.clickIndietroButton(); } @@ -867,7 +878,6 @@ public void nellaSectionDestinatarioCliccareSuAggiungiIndirizzoFisicoCompilareID this.personaGiuridica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - destinatarioPASection.selezionaAggiungiUnIndirizzoFisico(); destinatarioPASection.inserireIndirizzo(this.personaGiuridica.get("indirizzo").toString()); destinatarioPASection.inserireNumeroCivico(this.personaGiuridica.get("numeroCivico").toString()); @@ -887,18 +897,16 @@ public void nellaSectionDestinatarioInserireIDatiErratiDallaPersonaGiuridica(Str destinatarioPASection.checkBoxAggiungiDomicilio(); destinatarioPASection.insertDomicilioDigitaleErrato(personaGiuridicaErrore1.get("emailPec").toString()); - Assert.assertEquals("l'errore attuale 'Indirizzo PEC non valido' è diverso di :" + destinatarioPASection.getDomicilioDigitaleError(), "Indirizzo PEC non valido", destinatarioPASection.getDomicilioDigitaleError()); + Assertions.assertEquals( "Indirizzo PEC non valido", destinatarioPASection.getDomicilioDigitaleError(),"l'errore attuale 'Indirizzo PEC non valido' è diverso di :" + destinatarioPASection.getDomicilioDigitaleError()); destinatarioPASection.insertCodiceFiscaleErrato(personaGiuridicaErrore1.get("codiceFiscale").toString()); - Assert.assertEquals("l'errore attuale 'Il valore inserito non è corretto' è diverso di :" + destinatarioPASection.getCodiceFiscaleError(), "Il valore inserito non è corretto", destinatarioPASection.getCodiceFiscaleError()); + Assertions.assertEquals( "Il valore inserito non è corretto", destinatarioPASection.getCodiceFiscaleError(),"l'errore attuale 'Il valore inserito non è corretto' è diverso di :" + destinatarioPASection.getCodiceFiscaleError()); } @And("Nella section Allegati caricare l'atto e inserire il nome atto con estenzione non valida") public void nellaSectionAllegatiCaricareLAttoEInserireIlNomeAttoConEstenzioneNonValida() { logger.info("Si inserisce un file con estensione sbagliata"); - - AllegatiPASection allegatiPASection = new AllegatiPASection(this.driver); String pathDocumentiFile = System.getProperty("user.dir") + "/src/test/resources/dataPopulation/fileUpload/semiOfficial1.jpg"; allegatiPASection.caricareNotificaPdfDalComputer(pathDocumentiFile); } @@ -911,7 +919,7 @@ public void siVisualizzaCorrettamenteIlMessaggioDiErroreEstensioneFileNonSupport logger.info("Si visualizza correttamente il messaggio di errore: Estensione file non supportata. Riprovare con un altro file."); } else { logger.error("Non si visualizza correttamente il messaggio di errore: Estensione file non supportata. Riprovare con un altro file."); - Assert.fail("Non si visualizza correttamente il messaggio di errore: Estensione file non supportata. Riprovare con un altro file."); + Assertions.fail("Non si visualizza correttamente il messaggio di errore: Estensione file non supportata. Riprovare con un altro file."); } } @@ -931,11 +939,11 @@ public void nellaSectionDestinatarioInserireIDatiDelDestinatariPersoneGiuridiche nDestinatariInt = Integer.parseInt(nDestinatari) - 1; if (nDestinatariInt > 4 || nDestinatariInt == 0) { logger.error("Devi inserire un nummero da 1 a 5"); - Assert.fail("Devi inserire un nummero da 1 a 5"); + Assertions.fail("Devi inserire un nummero da 1 a 5"); } } else { logger.error("Formato non accettato. Devi inserire un numero da 1 a 5"); - Assert.fail("Formato non accettato. Devi inserire un numero da 1 a 5"); + Assertions.fail("Formato non accettato. Devi inserire un numero da 1 a 5"); } destinatarioPASection.inserimentoMultiDestinatarioPG(personeGiuridiche, nDestinatariInt); @@ -967,12 +975,11 @@ public void verificaDelloStatoDellaNotificaPersonaGiuridicaComeDepositata(String String codiceFiscale = this.personaFisica.get("codiceFiscale").toString(); String codiceIUNOld = this.datiNotifica.get("codiceIUN").toString(); - CookiesSection cookiesSection = new CookiesSection(this.driver); String codiceIUN = ""; for (int i = 0; i < 12; i++) { if (i >= 1) { piattaformaNotifichePage.aggiornamentoPagina(); - if (!CookieConfig.isCookieEnabled()) { + if (!webDriverConfig.getCookieConfig().isCookieEnabled()) { if (cookiesSection.waitLoadCookiesPage()) { cookiesSection.selezionaAccettaTuttiButton(); } @@ -995,7 +1002,7 @@ public void verificaDelloStatoDellaNotificaPersonaGiuridicaComeDepositata(String } if (codiceIUN.equals("")) { logger.error("Notifica non trovata il sistema ha impiegato troppo tempo a rispondere"); - Assert.fail("Notifica non trovata il sistema ha impiegato troppo tempo a rispondere"); + Assertions.fail("Notifica non trovata il sistema ha impiegato troppo tempo a rispondere"); } } @@ -1088,7 +1095,7 @@ public void siVerificaCheIlFormDiInserimentoManualeDellaNotificaEVuoto() { logger.info("Il form di inserimento manuale della notifica è vuoto"); } else { logger.error("Il form di inserimento manuale della notifica non è vuoto"); - Assert.fail("Il form di inserimento manuale della notifica non è vuoto"); + Assertions.fail("Il form di inserimento manuale della notifica non è vuoto"); } } @@ -1103,7 +1110,7 @@ public void tuttiICampiPrecedentementeInseritiRisultanoAncoraPopolati() { logger.info("I campi sezione destinatario sono popolati"); } else { logger.error("I campi sezione destinatario non sono popolati"); - Assert.fail("I campi sezione destinatario non sono popolati"); + Assertions.fail("I campi sezione destinatario non sono popolati"); } } @@ -1138,7 +1145,7 @@ public void nellaSectionAllegatiSiCaricaUnAtto() { logger.info("File notifica.pdf caricato correttamente"); } else { logger.error("File notifica.pdf non caricato"); - Assert.fail("File notifica.pdf non caricato"); + Assertions.fail("File notifica.pdf non caricato"); } allegatiPASection.inserimentoNomeAllegato(datiNotificaMap.get("descrizione")); } @@ -1155,7 +1162,7 @@ public void siCaricaNuoviDocumenti() { logger.info("File notifica.pdf caricato correttamente"); } else { logger.error("File notifica.pdf non caricato"); - Assert.fail("File notifica.pdf non caricato"); + Assertions.fail("File notifica.pdf non caricato"); } allegatiPASection.inserimentoNomeSecondoAllegato(datiNotificaMap.get("descrizione")); } @@ -1172,7 +1179,7 @@ public void siCaricaTerzoDocumento() { logger.info("File notifica.pdf caricato correttamente"); } else { logger.error("File notifica.pdf non caricato"); - Assert.fail("File notifica.pdf non caricato"); + Assertions.fail("File notifica.pdf non caricato"); } allegatiPASection.inserimentoNomeTerzoAllegato(datiNotificaMap.get("descrizione")); } @@ -1212,39 +1219,39 @@ public void siVerificaCheLaNotificaEStataCreataCorrettamente() { @Then("In parallelo si effettua l'accesso al portale destinatario {string} e si apre la notifica ricevuta") public void inParalleloSiEffettuaLAccessoAlPortaleDestinatarioESiApreLaNotificaRicevuta(String destinatario) { if (PF.equalsIgnoreCase(destinatario)) { - WebTool.switchToPortal(AppPortal.PF); + webTool.switchToPortal(AppPortal.PF); } else { - WebTool.switchToPortal(AppPortal.PG); + webTool.switchToPortal(AppPortal.PG); } piattaformaNotifichePage.selezionaPrimaNotifica(); - WebTool.waitTime(5); - WebTool.closeTab(); + webTool.waitTime(5); + webTool.closeTab(); } @Then("In parallelo si effettua l'accesso al portale destinatario persona fisica e si verifica la timeline {string}") public void inParalleloSiEffettuaLAccessoAlPortaleDestinatarioPFESiVerificaLaTimeline(String messaggio) { - WebTool.switchToPortal(AppPortal.PF); + webTool.switchToPortal(AppPortal.PF); piattaformaNotifichePage.selezionaPrimaNotifica(); - WebTool.waitTime(5); + webTool.waitTime(5); piattaformaNotifichePage.visualizzaTimeline(messaggio); - WebTool.closeTab(); + webTool.closeTab(); } @Then("In parallelo si effettua l'accesso al portale destinatario persona giuridica e si apre la notifica ricevuta") public void inParalleloSiEffettuaLAccessoAlPortaleDestinatarioPGESiApreLaNotificaRicevuta() { - WebTool.switchToPortal(AppPortal.PG); + webTool.switchToPortal(AppPortal.PG); piattaformaNotifichePage.selezionaPrimaNotifica(); - WebTool.waitTime(5); - WebTool.closeTab(); + webTool.waitTime(5); + webTool.closeTab(); } @Then("In parallelo si effettua l'accesso al portale destinatario persona giuridica e si verifica la timeline {string}") public void inParalleloSiEffettuaLAccessoAlPortaleDestinatarioPGESiVerificaLaTimeline(String messagio) { - WebTool.switchToPortal(AppPortal.PG); + webTool.switchToPortal(AppPortal.PG); piattaformaNotifichePage.selezionaPrimaNotifica(); - WebTool.waitTime(5); + webTool.waitTime(5); piattaformaNotifichePage.visualizzaTimeline(messagio); - WebTool.closeTab(); + webTool.closeTab(); } @Then("In parallelo si effettua l'accesso al portale di {string}") @@ -1252,19 +1259,19 @@ public void inParalleloSiEffettuaLAccessoAlPortaleDestinatario(String portal) { portal = portal.toLowerCase(); switch (portal) { case PF: - WebTool.switchToPortal(AppPortal.PF); + webTool.switchToPortal(AppPortal.PF); break; case PG: - WebTool.switchToPortal(AppPortal.PG); + webTool.switchToPortal(AppPortal.PG); break; case PA: - WebTool.switchToPortal(AppPortal.PA); + webTool.switchToPortal(AppPortal.PA); break; default: logger.error("Tipologia di portale non specificato o errato!"); - Assert.fail("Tipologia di portale non specificato o errato!"); + Assertions.fail("Tipologia di portale non specificato o errato!"); } - WebTool.waitTime(5); + webTool.waitTime(5); } @And("Nella timeline della notifica si visualizza l'invio del messaggio di cortesia") @@ -1283,9 +1290,9 @@ public void siVerificaCheLaNotificaAbbiaLoStato(String stato) { public void siAnnullaLaNotifica() { logger.info("Si clicca sul pusante annulla notifica"); piattaformaNotifichePage.clickBottoneAnnullaNotifica(); - WebTool.waitTime(3); + webTool.waitTime(3); piattaformaNotifichePage.clickAnnullaNotificaModale(); - WebTool.waitTime(3); + webTool.waitTime(3); } @And("Il bottone annulla notifica non è visualizzabile nella descrizione della notifica") @@ -1304,7 +1311,7 @@ public void nellaPaginaPiattaformaNotificheLaNotificaPresentaLoStato(String stat public void siCliccaIlBottoneIndietroNellaDescrizioneDellaNotifica() { logger.info("Si clicca sul bottone indietro della pagina della descrizione della notifica"); dettaglioNotificaMittenteSection.clickIndietroButton(); - WebTool.waitTime(10); + webTool.waitTime(10); } @And("Si attende che lo stato della notifica sia {string}") @@ -1333,23 +1340,24 @@ public void siVerificaCheLInvioDellaNotificaSiaFallitoDueVolte(int numeroFallime @And("Si attende la visualizzazione corretta del dettaglio della notifica") public void siAttendeCompletamentoNotifica() { siVisualizzaCorrettamenteLaSectionDettaglioNotifica(); - WebTool.waitTime(400); - driver.navigate().refresh(); - WebTool.waitTime(3); + webTool.waitTime(400); + hooks.getDriver().navigate().refresh(); + webTool.waitTime(3); } @And("Si seleziona la notifica") public void siSelezionaLaNotifica() { - BackgroundTest backgroundTest = new BackgroundTest(); - String iun = notificationSingleton.getIun(Hooks.scenario); + String iun = notificationSingleton.getIun(HooksNew.scenario); backgroundTest.siFiltraLaTabellaDelleNotifichePerIUNDestinatario(iun); } @And("Si seleziona la notifica mittente") public void siSelezionaLaNotificaMittente() { - BackgroundTest backgroundTest = new BackgroundTest(); - String iun = notificationSingleton.getIun(Hooks.scenario); + logger.info("ATTENZIONE........."); + String iun = notificationSingleton.getIun(HooksNew.scenario); + logger.info("SCENARIO..."+HooksNew.scenario); + logger.info("SCENARIO..."+iun); backgroundTest.siFiltraLaTabellaDelleNotifichePerIUNMittente(iun); } @@ -1430,7 +1438,7 @@ public void siControllaLaPresenzaDiCodiceAvviso(){ @And("Si controlla non sia presente l'avviso PagoPa mittente") public void siControllaNonSiaPresenteLAvvisoPagoPaMittente() { logger.info("Si controlla la presenza del box per il pagamento della notifica"); - Assert.assertFalse( "Avviso PagoPA è trovato",dettaglioNotificaMittenteSection.checkAvvisoPagoPaVisibile()); + Assertions.assertFalse(dettaglioNotificaMittenteSection.checkAvvisoPagoPaVisibile(), "Avviso PagoPA è trovato"); logger.info("Avviso PagoPA non è trovato"); } @@ -1495,22 +1503,21 @@ public void siSelezionaUnDestinatario() { */ protected EsitoNotifica siVerificaEsitoNotifica(String dpFile) { logger.info("si verifica se la notifica è stata accettata o rifiutata"); - final String urlNotificationRequest = WebTool.getApiBaseUrl() + "notifications/sent"; - final String urlRichiestaNotifica = "https://api." + variabileAmbiente + ".notifichedigitali.it/delivery/v2.3/requests/"; - AccettazioneRichiestaNotifica accettazioneRichiestaNotifica = new AccettazioneRichiestaNotifica(); + final String urlNotificationRequest = webDriverConfig.getBaseUrl() + "notifications/sent"; + final String urlRichiestaNotifica = "https://api." + webDriverConfig.getEnvironment() + ".notifichedigitali.it/delivery/v2.3/requests/"; String codiceApi; - if (variabileAmbiente.equals("test")) { + if (webDriverConfig.getEnvironment().equals("test")) { codiceApi = "2b3d47f4-44c1-4b49-b6ef-54dc1c531311"; } else { codiceApi = "a9f0508d-c344-4347-807f-343bc8210996"; } accettazioneRichiestaNotifica.setxApikey(codiceApi); String statusNotifica = "WAITING"; - WebTool.waitTime(5); + webTool.waitTime(5); String notificationRequestId = getNotificationRequestId(urlNotificationRequest); if (notificationRequestId == null) { logger.error("NotificationRequestId non trovato, il codice della risposta al url " + urlNotificationRequest + " è diverso di 202 "); - Assert.fail("NotificationRequestId non trovato, il codice della risposta al url " + urlNotificationRequest + " è diverso di 202 "); + Assertions.fail("NotificationRequestId non trovato, il codice della risposta al url " + urlNotificationRequest + " è diverso di 202 "); } accettazioneRichiestaNotifica.setNotificationRequestId(notificationRequestId); accettazioneRichiestaNotifica.setRichiestaNotificaEndPoint(urlRichiestaNotifica); @@ -1527,7 +1534,7 @@ protected EsitoNotifica siVerificaEsitoNotifica(String dpFile) { } else { if (accettazioneRichiestaNotifica.getResponseCode() != 200) { logger.error("la risposta dell'accettazione della notifica " + notificationRequestId + " è: " + accettazioneRichiestaNotifica.getResponseCode()); - Assert.fail("la risposta dell'accettazione della notifica " + notificationRequestId + " è: " + accettazioneRichiestaNotifica.getResponseCode()); + Assertions.fail("la risposta dell'accettazione della notifica " + notificationRequestId + " è: " + accettazioneRichiestaNotifica.getResponseCode()); } } } while (statusNotifica.equals("WAITING")); @@ -1548,7 +1555,7 @@ public void siVerificaCheLaNotificaVieneCreataCorrettamente(String dpFile) { } } else { logger.error("La notifica " + esitoNotifica.notificationRequestId + " è stata rifiuta: " + esitoNotifica.accettazioneRichiestaNotifica.getResponseReasonPhrase()); - Assert.fail("La notifica " + esitoNotifica.notificationRequestId + " è stata rifiuta: " + esitoNotifica.accettazioneRichiestaNotifica.getResponseReasonPhrase()); + Assertions.fail("La notifica " + esitoNotifica.notificationRequestId + " è stata rifiuta: " + esitoNotifica.accettazioneRichiestaNotifica.getResponseReasonPhrase()); } } @@ -1560,7 +1567,7 @@ public void siVerificaCheLaNotificaVieneRifiutata(String dpFile) { } else { logger.error("La notifica " + esitoNotifica.notificationRequestId + " è stata accettata: " + esitoNotifica.statusNotifica); logger.error(esitoNotifica.accettazioneRichiestaNotifica.getResponseBody()); - Assert.fail("La notifica " + esitoNotifica.notificationRequestId + " è stata accettata: "); + Assertions.fail("La notifica " + esitoNotifica.notificationRequestId + " è stata accettata: "); } } @@ -1572,7 +1579,7 @@ private String getNotificationRequestId(String urlNotificationRequest) { * (2) no POST requests with the provided URL were found */ boolean foundRequestWithUndesiredStatus = false; - for (NetWorkInfo netWorkInfo : netWorkInfos) { + for (NetWorkInfo netWorkInfo : webDriverConfig.getNetWorkInfos()) { if (netWorkInfo.getRequestUrl().equals(urlNotificationRequest) && netWorkInfo.getRequestMethod().equals("POST") && netWorkInfo.getResponseStatus().equals("202")) { String values = netWorkInfo.getResponseBody(); List results = Splitter.on(CharMatcher.anyOf(",:")).splitToList(values); @@ -1620,8 +1627,6 @@ public void nellaPaginaPiattaformaNotificheSiRecuperaUnCodiceIUNValido() { public void siVerificaCheLaNotificaSiaNelloStatoConsegnata() { logger.info("Si verifica che la notifica sia nello stato consegnata"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage((this.driver)); - this.datiNotifica = dataPopulation.readDataPopulation("datiNotifica.yaml"); boolean notificaTrovata = false; piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); @@ -1643,7 +1648,7 @@ public void siVerificaCheLaNotificaSiaNelloStatoConsegnata() { } if (!notificaTrovata) { logger.error("La notifica non è stata trovata dopo 1m40s"); - Assert.fail("La notifica non è stata trovata dopo 1m40s"); + Assertions.fail("La notifica non è stata trovata dopo 1m40s"); } } @@ -1659,14 +1664,14 @@ public void inserimentoCodiceFiscaleSbagliato(String codiceFiscaleSbagliato) { public void nellaPiattaformaNotificheSiControllaEsistenzaMessaggioErroreCF() { logger.info("si controlla che si visualizza il messaggio di errore ‘Inserisci il codice per intero’ "); - Assert.assertTrue("Nessun errore visualizzato insirendo CF sbagliato", piattaformaNotifichePage.controlloEsistenzaMessagioErroreCF()); + Assertions.assertTrue(piattaformaNotifichePage.controlloEsistenzaMessagioErroreCF(), "Nessun errore visualizzato insirendo CF sbagliato"); } @And("Nella pagina Piattaforma Notifiche si controlla che il bottone Filtra sia attivo") public void nellaPaginaPiattaformaNotificheSiControllacheFiltraSiaDisattivo() { logger.info("Si controlla che il bottone Filtra sia attivo"); - Assert.assertFalse("il bottone Filtra è disabilitato", piattaformaNotifichePage.verificaBottoneFiltraDisabilitato()); + Assertions.assertFalse(piattaformaNotifichePage.verificaBottoneFiltraDisabilitato(),"il bottone Filtra è disabilitato"); } @And("Nella pagina Piattaforma Notifiche inserire il codice IUN sbagliato {string}") @@ -1681,7 +1686,7 @@ public void nellaPaginaPiattaformaNotificheInserireIUNsbagliato(String codiceIUN public void nellaPaginaPiattaformaNotificheSiVisualizzaIlMessaggioDiErroreIUN() { logger.info("si controlla esistenza messaggio di errore codice IUN"); - Assert.assertTrue("Nessun errore visualizzato insirendo IUN sbagliato", piattaformaNotifichePage.controlloEsistenzaMessagioErroreIUN()); + Assertions.assertTrue(piattaformaNotifichePage.controlloEsistenzaMessagioErroreIUN(), "Nessun errore visualizzato insirendo IUN sbagliato"); logger.info("Messaggio di errore 'Inserisci un codice IUN valido' trovato"); } @@ -1692,7 +1697,7 @@ public void nellaSectionSiVisualizzaCorrettamenteICampiVuoti() { if (piattaformaNotifichePage.verificaCampiPreliminariNotificaVuoti()) { logger.info("I campi sono vuoti"); } else { - Assert.fail("I campi non sono vuoti"); + Assertions.fail("I campi non sono vuoti"); } } @@ -1728,7 +1733,6 @@ public void siControllaCheLeRicevutePECSianoScaricabili() { @And("Creazione notifica completa") public void creazioneNotificaCompleta(Map datiNotificaMap) { logger.info("Inserimento dei dati della notifica senza pagamento " ); - AllegatiPASection allegatiPASection = new AllegatiPASection(driver); File notificaFile = new File("src/test/resources/notifichePdf/notifica.pdf"); datiNotifica = dataPopulation.readDataPopulation(datiNotificaMap.get("nomeFileYaml") + ".yaml"); @@ -1754,7 +1758,7 @@ public void creazioneNotificaCompleta(Map datiNotificaMap) { logger.info("File notifica.pdf caricato correttamente"); } else { logger.error("File notifica.pdf non caricato"); - Assert.fail("File notifica.pdf non caricato"); + Assertions.fail("File notifica.pdf non caricato"); } allegatiPASection.inserimentoNomeAllegato(datiNotificaMap.get("nomeDocumentoNotifica")); nellaSectionAllegatiCliccareSulBottoneInvia(); @@ -1767,7 +1771,7 @@ public void siControllaLoStatoTimelineInDettaglioNotifica(Map da String idStato = datiDettaglioNotifica.get("xpathStato"); String viewDetail = datiDettaglioNotifica.get("vediDettagli"); siVisualizzaCorrettamenteLElencoCompletoDegliStatiCheLaNotificaHaPercorso(); - WebTool.waitTime(2); + webTool.waitTime(2); if (viewDetail.equals("true")){ dettaglioNotificaMittenteSection.clickVediPiuDettaglio(); } @@ -1779,7 +1783,7 @@ public void siVerificaLaCliccabilitaDellaRicevutaDiPostalizzazione(Map personaFisica = new HashMap<>(); private Map datiNotifica = new HashMap<>(); private boolean dataFineErrata; + @Autowired + @Lazy + private HooksNew hooks; + @Autowired + private DestinatarioPASection destinatarioPASection; + + @Autowired + private PiattaformaNotifichePage piattaformaNotifichePage; + + @Autowired + private PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage; + + @Autowired + private HeaderPASection headerPASection; + @Autowired + DataPopulation dataPopulation; + @And("Nella pagina Piattaforma Notifiche inserire il codice fiscale della persona fisica {string}") public void inserireCodiceFiscale(String dpFile) { logger.info("Avvio ricerca tramite codice fiscale"); - DataPopulation dataPopulation = new DataPopulation(); this.personaFisica = dataPopulation.readDataPopulation(dpFile + ".yaml"); - DestinatarioPASection destinatarioPASection = new DestinatarioPASection(this.driver); String cf = destinatarioPASection.ricercaInformazione(personaFisica.get("codiceFiscale").toString().split(","), 0); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - piattaformaNotifichePage.insertCodiceFiscale(cf); } @@ -49,36 +66,32 @@ 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.selectFiltraNotificaButtonMittente(); } @And("Si verifica che non ci sono notifiche disponibili") public void siVerificaCheNonCiSonoNotifiche() { logger.info("Si verifica che non ci sono notifiche disponibili con i fitri applicati"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.verificaNotificheNonDisponibili(); } @And("Si visualizza correttamente box di pagamento") public void siVisualizzaBoxPagamento() { - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); if (piattaformaNotifichePGPAPage.sezionePagamentoDisplayed()) { logger.info("Si visualizza correttamente box di pagamento"); } else { logger.error("Non si visualizza correttamente box di pagamento"); - Assert.fail("Non si visualizza correttamente box di pagamento"); + Assertions.fail("Non si visualizza correttamente box di pagamento"); } } @And("Si visualizza correttamente il messaggio notifica annullata") public void siVisulizzaIlMessagioAnnullato() { - PiattaformaNotifichePGPAPage piattaformaNotifichePGPAPage = new PiattaformaNotifichePGPAPage(this.driver); if (piattaformaNotifichePGPAPage.messaggioNotificaAnnullataDisplayed()) { logger.info("Si visualizza correttamente il messaggio notifica annulata"); } else { logger.error("Non si visualizza correttamente il messaggio notifica annulata"); - Assert.fail("Non si visualizza correttamente il messaggio notifica annulata"); + Assertions.fail("Non si visualizza correttamente il messaggio notifica annulata"); } } @@ -88,12 +101,11 @@ public void siVisulizzaIlMessagioAnnullato() { public void siVerificaCheIlBottoneFiltraSiaDisabilitato() { logger.info("Si verifica che il bottone Filtra sia disabilitato"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); if (piattaformaNotifichePage.isFiltraButtonDisabled()) { logger.info("Il bottone Filtra è disabilitato"); } else { logger.error("Il bottone Filtra è abilitato"); - Assert.fail("Il bottone Filtra è abilitato"); + Assertions.fail("Il bottone Filtra è abilitato"); } } @@ -101,7 +113,6 @@ public void siVerificaCheIlBottoneFiltraSiaDisabilitato() { public void cliccareSulBottoneFiltraDelDelegato() { logger.info("Si clicca sul tasto filtra del delegante sotto notifiche"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.selectFiltraNotificaButtonDestinatario(); } @@ -109,10 +120,8 @@ public void cliccareSulBottoneFiltraDelDelegato() { public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConIlCodiceFiscaleDelDestinatario(String codiceFiscale) { logger.info("Si verifica i risultati restituiti"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); int listaCF = piattaformaNotifichePage.getListaCf(codiceFiscale); @@ -121,7 +130,7 @@ public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConIlC } else { logger.error("Codici fiscali non presenti o non uguali a quello selezionato " + codiceFiscale); - Assert.fail("Codici fiscali non presenti o non uguali a quello selezionato " + codiceFiscale); + Assertions.fail("Codici fiscali non presenti o non uguali a quello selezionato " + codiceFiscale); } } @@ -129,12 +138,9 @@ public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConIlC public void nellaPaginaPiattaformaNotificheIRisultatiSonoContenutiInUnaOPiuPagine() { logger.info("Se i risultati sono contenuti in più pagine è possibile effettuare il cambio pagina"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - if (piattaformaNotifichePage.verificaEsistenzaEPassaggioPagina()) { logger.info("Bottone pagina 2 trovato e cliccato"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); @@ -146,20 +152,15 @@ public void nellaPaginaPiattaformaNotificheIRisultatiSonoContenutiInUnaOPiuPagin @And("Nella pagina Piattaforma Notifiche inserire il codice IUN della notifica {string}") public void nellaPaginaPiattaformaNotificheInserireIlCodiceIUNDellaNotifica(String dpDatiNotifica) { logger.info("Si inserisce il codice IUN"); - DataPopulation dataPopulation = new DataPopulation(); this.datiNotifica = dataPopulation.readDataPopulation(dpDatiNotifica + ".yaml"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.inserimentoCodiceIUN(this.datiNotifica.get("codiceIUN").toString()); } @Then("Nella pagina Piattaforma Notifiche vengo restituite tutte le notifiche con il codice IUN della notifica") public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConIlCodiceIUNDellaNotifica() { logger.info("Si verifica i risultati restituiti"); - - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); String codiceIUNInserito = piattaformaNotifichePage.getCodiceIunInserito(); boolean result = piattaformaNotifichePage.verificaCodiceIUN(codiceIUNInserito); @@ -168,7 +169,7 @@ public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConIlC } else { logger.error("Notifica con codice IUN: " + codiceIUNInserito + " NON trovata"); - Assert.fail("Notifica con codice IUN: " + codiceIUNInserito + " NON trovata"); + Assertions.fail("Notifica con codice IUN: " + codiceIUNInserito + " NON trovata"); } } @@ -178,14 +179,13 @@ public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConIlC public void nellaPaginaPiattaformaNotificheInserireUnaDataDaDAAA(String dataDA, String dataA) { logger.info("Si inserisce l'arco temporale su cui effettuare la ricerca"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); if (!piattaformaNotifichePage.controlloDateInserite(dataDA)) { logger.error("Formato della data DA sbagliato. Deve essere dd/MM/yyyy"); - Assert.fail("Formato della data DA sbagliato. Deve essere dd/MM/yyyy"); + Assertions.fail("Formato della data DA sbagliato. Deve essere dd/MM/yyyy"); } if (!piattaformaNotifichePage.controlloDateInserite(dataA)) { logger.error("Formato della data A sbagliato. Deve essere dd/MM/yyyy"); - Assert.fail("Formato della data A sbagliato. Deve essere dd/MM/yyyy"); + Assertions.fail("Formato della data A sbagliato. Deve essere dd/MM/yyyy"); } piattaformaNotifichePage.inserimentoArcoTemporale(dataDA, dataA); } @@ -195,14 +195,13 @@ public void nellaPaginaPiattaformaNotificheInserireUnaDataDaDAAA(String dataDA, public void nellaPaginaPiattaformaNotificheInserireUnaDataDaDAAAErrata(String dataDA, String dataA) { logger.info("Si inserisce l'arco temporale su cui effettuare la ricerca"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); if (!piattaformaNotifichePage.controlloDateInserite(dataDA)) { logger.error("Formato della data DA sbagliato. Deve essere dd/MM/yyyy"); - Assert.fail("Formato della data DA sbagliato. Deve essere dd/MM/yyyy"); + Assertions.fail("Formato della data DA sbagliato. Deve essere dd/MM/yyyy"); } if (!piattaformaNotifichePage.controlloDateInserite(dataA)) { logger.error("Formato della data A sbagliato. Deve essere dd/MM/yyyy"); - Assert.fail("Formato della data A sbagliato. Deve essere dd/MM/yyyy"); + Assertions.fail("Formato della data A sbagliato. Deve essere dd/MM/yyyy"); } dataFineErrata = piattaformaNotifichePage.inserimentoArcoTemporaleErrato(dataDA, dataA); } @@ -210,8 +209,7 @@ public void nellaPaginaPiattaformaNotificheInserireUnaDataDaDAAAErrata(String da @And("Verifica che non è possibile selezionare una data Fine antecedente alla data Inizio") public void verificaArcoTemporaleSelezionato() { logger.info("Si controlla l'arco temporale che sia errato su cui effettuare la ricerca"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - Assert.assertFalse(dataFineErrata); + Assertions.assertFalse(dataFineErrata); } @@ -219,10 +217,8 @@ public void verificaArcoTemporaleSelezionato() { public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConLaDataDellaNotificaCompresaTraDaEA() { logger.info("Si verifica che le date restituite siano comprese nell'arco temporale"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); int results = piattaformaNotifichePage.getListDate(); @@ -230,7 +226,7 @@ public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConLaD logger.info("Sono presenti risultati per il filtro data"); } else { logger.error("Le date delle notifiche NON sono uguali a quelle selezionate"); - Assert.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); + Assertions.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); } } @@ -250,11 +246,10 @@ public void nellaPaginaPiattaformaNotificheSelezionareUnoStatoNotificaStato(Stri case "DESTINATARIO IRREPERIBILE" -> statoInserito = "UNREACHABLE"; default -> { logger.error("Stato notifica inserito non valido"); - Assert.fail("Stato notifica inserito non valido"); + Assertions.fail("Stato notifica inserito non valido"); } } - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.selezionareStatoNotifica(statoInserito); } @@ -263,18 +258,15 @@ public void nellaPaginaPiattaformaNotificheSelezionareUnoStatoNotificaStato(Stri public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConLoStatoDellaNotificaStato(String statoNotifica) { logger.info("Si controllano che gli stati delle notifiche siano uguali a quello selezionato"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - int numeroStatoNotifica = piattaformaNotifichePage.getListStato(statoNotifica.substring(1)); if (numeroStatoNotifica >= 1) { logger.info("Gli stati della notifica sono uguali a quelli selezionati"); } else { logger.error("Gli stati della notifica NON sono uguali a quelli selezionati"); - Assert.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); + Assertions.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); } @@ -284,8 +276,6 @@ public void nellaPaginaPiattaformaNotificheVengoRestituiteTutteLeNotificheConLoS public void nellaPaginaPiattaformaNotificheInserireLaDataInvioNotifica() { logger.info("Inserimento data invio notifica"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); - Date date = Calendar.getInstance().getTime(); DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy"); String dataNotifica = dateFormat.format(date).replace("-", "/"); @@ -297,7 +287,6 @@ public void nellaPaginaPiattaformaNotificheInserireLaDataInvioNotifica() { public void nellaPaginaPiattaformaNotificheSelezionareLoStatoNotifica() { logger.info("Si seleziona lo stato notifica Depositata"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.selezionareStatoNotifica("ACCEPTED"); } @@ -305,9 +294,8 @@ public void nellaPaginaPiattaformaNotificheSelezionareLoStatoNotifica() { @And("Nella pagina Piattaforma Notifiche inserire un arco temporale") public void nellaPaginaPiattaformaNotificheInserireUnArcoTemporale() { LocalDate dateA = LocalDate.now(); - LocalDate dateDa = dateA.minusDays(5); + LocalDate dateDa = dateA.minusDays(35); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); String dataa = piattaformaNotifichePage.conversioneFormatoDate(dateA.toString()); String datada = piattaformaNotifichePage.conversioneFormatoDate(dateDa.toString()); piattaformaNotifichePage.inserimentoArcoTemporale(datada, dataa); @@ -316,14 +304,11 @@ public void nellaPaginaPiattaformaNotificheInserireUnArcoTemporale() { @And("Il sistema restituisce notifiche con codice fiscale e arco temporale uguale a quelli inserito") public void ilSistemaRestituisceNotificheConCodiceFiscaleEArcoTemporaleUgualeAQuelliInserito() { logger.info("Si verifica i risultati restituiti"); - - HeaderPASection headerPASection = new HeaderPASection(this.driver); +; headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); - DataPopulation dataPopulation = new DataPopulation(); this.personaFisica = dataPopulation.readDataPopulation("personaFisica.yaml"); String cfInserito = this.personaFisica.get("codiceFiscale").toString(); @@ -334,7 +319,7 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEArcoTemporaleUgualeAQu } else { logger.error("Il codice fiscale della notifica NON è uguale a quello selezionato"); - Assert.fail("Il codice fiscale notifica NON è uguale a quello selezionato"); + Assertions.fail("Il codice fiscale notifica NON è uguale a quello selezionato"); } int results = piattaformaNotifichePage.controlloNumeroRisultatiDate(); @@ -342,7 +327,7 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEArcoTemporaleUgualeAQu logger.info("Sono presenti risultati per il filtro data"); } else { logger.error("Le date delle notifiche NON sono uguali a quelle selezionate"); - Assert.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); + Assertions.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); } } @@ -350,7 +335,6 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEArcoTemporaleUgualeAQu public void nellaPaginaPiattaformaNotificheInserireUnaData() { LocalDate data = LocalDate.now(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); String dataInserita = piattaformaNotifichePage.conversioneFormatoDate(data.toString()); piattaformaNotifichePage.inserimentoData(dataInserita); } @@ -360,10 +344,8 @@ public void nellaPaginaPiattaformaNotificheInserireUnaData() { public void ilSistemaRestituisceNotificheConDataEStatoUgualeAQuelliInseritoStato(String statoNotifica) { logger.info("Si verifica i risultati restituiti"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); int numeroStatoNotificha = piattaformaNotifichePage.getListStato(statoNotifica); @@ -373,7 +355,7 @@ public void ilSistemaRestituisceNotificheConDataEStatoUgualeAQuelliInseritoStato } else { logger.error("Gli stati della notifica NON sono uguali a quelli selezionati"); - Assert.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); + Assertions.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); } int results = piattaformaNotifichePage.controlloNumeroRisultatiDate(); @@ -381,7 +363,7 @@ public void ilSistemaRestituisceNotificheConDataEStatoUgualeAQuelliInseritoStato logger.info("Sono presenti risultati per il filtro data"); } else { logger.error("Le date delle notifiche NON sono uguali a quelle selezionate"); - Assert.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); + Assertions.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); } } @@ -389,17 +371,14 @@ public void ilSistemaRestituisceNotificheConDataEStatoUgualeAQuelliInseritoStato public void ilSistemaRestituisceNotificheConArcoTemporaleEStatoUgualeAQuelliInseritoStato(String statoNotifica) { logger.info("Si verifica i risultati restituiti"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); int results = piattaformaNotifichePage.controlloNumeroRisultatiDate(); if (results >= 1) { logger.info("Sono presenti risultati per il filtro data"); } else { logger.error("Le date delle notifiche NON sono uguali a quelle selezionate"); - Assert.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); + Assertions.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); } int numeroStatoNotificha = piattaformaNotifichePage.getListStato(statoNotifica); @@ -408,18 +387,17 @@ public void ilSistemaRestituisceNotificheConArcoTemporaleEStatoUgualeAQuelliInse } else { logger.error("Gli stati della notifica NON sono uguali a quelli selezionati"); - Assert.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); + Assertions.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); } } @And("Il sistema non restituisce notifiche") public void ilSistemaNonRestituisceNotifiche() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); if (piattaformaNotifichePage.verificaEsistenzaRisultati()) { logger.info("Il filtro non ha nessun risultato"); } else { logger.error("Il filtro ha portate qualche risultato"); - Assert.fail("Il filtro ha portate qualche risultato"); + Assertions.fail("Il filtro ha portate qualche risultato"); } } @@ -427,10 +405,8 @@ public void ilSistemaNonRestituisceNotifiche() { public void ilSistemaRestituisceNotificheConCodiceFiscaleEDataUgualeAQuelliInserito() { logger.info("Si verifica i risultati restituiti"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); DataPopulation dataPopulation = new DataPopulation(); @@ -444,7 +420,7 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEDataUgualeAQuelliInser } else { logger.error("Il codice fiscale della notifica NON è uguale a quello selezionato"); - Assert.fail("Il codice fiscale notifica NON è uguale a quello selezionato"); + Assertions.fail("Il codice fiscale notifica NON è uguale a quello selezionato"); } int results = piattaformaNotifichePage.controlloNumeroRisultatiDate(); @@ -452,7 +428,7 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEDataUgualeAQuelliInser logger.info("Sono presenti risultati per il filtro data"); } else { logger.error("Le date delle notifiche NON sono uguali a quelle selezionate"); - Assert.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); + Assertions.fail("Le date delle notifiche NON sono uguali a quelle selezionate"); } } @@ -460,10 +436,8 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEDataUgualeAQuelliInser public void ilSistemaRestituisceNotificheConCodiceFiscaleEStatoUgualeAQuelliInseritoStato(String statoNotifica) { logger.info("Si verifica i risultati restituiti"); - HeaderPASection headerPASection = new HeaderPASection(this.driver); headerPASection.waitLoadHeaderSection(); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.waitLoadPiattaformaNotifichePAPage(); DataPopulation dataPopulation = new DataPopulation(); @@ -477,7 +451,7 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEStatoUgualeAQuelliInse } else { logger.error("Il codice fiscale della notifica NON è uguale a quello selezionato"); - Assert.fail("Il codice fiscale notifica NON è uguale a quello selezionato"); + Assertions.fail("Il codice fiscale notifica NON è uguale a quello selezionato"); } int numeroStatoNotificha = piattaformaNotifichePage.getListStato(statoNotifica); @@ -486,13 +460,12 @@ public void ilSistemaRestituisceNotificheConCodiceFiscaleEStatoUgualeAQuelliInse } else { logger.error("Gli stati della notifica NON sono uguali a quelli selezionati"); - Assert.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); + Assertions.fail("Gli stati della notifica NON sono uguali a quelli selezionati"); } } @And("Nella pagina piattaforma Notifiche selezionare lo stato notifica {string}") public void nellaPaginaPiattaformaNotificheSelezionareLoStatoNotifica(String statoInserito) { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); switch (statoInserito.toUpperCase()) { case "TUTI GLI STATI" -> statoInserito = "All"; @@ -505,7 +478,7 @@ public void nellaPaginaPiattaformaNotificheSelezionareLoStatoNotifica(String sta case "DESTINATARIO IRREPERIBILE" -> statoInserito = "UNREACHABLE"; default -> { logger.error("Stato notifica inserito non valido"); - Assert.fail("Stato notifica inserito non valido"); + Assertions.fail("Stato notifica inserito non valido"); } } piattaformaNotifichePage.selezionareStatoNotifica(statoInserito); @@ -513,36 +486,32 @@ public void nellaPaginaPiattaformaNotificheSelezionareLoStatoNotifica(String sta @And("Nella pagina Piattaforma Notifiche inserire il codice IUN della notifica {string} con allegato") public void nellaPaginaPiattaformaNotificheInserireIlCodiceIUNDellaNotificaConAllegato(String codiceIUN) { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); piattaformaNotifichePage.inserimentoCodiceIUN(codiceIUN); } @And("Si verifica che i campi della ricerca delle date siano errate") public void siVerificaCheICampiDellaRicercaDelleDateSianoErrate() { - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(this.driver); if (piattaformaNotifichePage.controlloDateErrate()) { logger.info("Le date inserite sono errate"); } else { logger.error("Le date inserite sono corrette"); - Assert.fail("Le date inserite sono corrette"); + Assertions.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); if (piattaformaNotifichePage.controlloEsistenzaStato()) { logger.info("Campo stato notifica trovato"); } else { logger.error("Campo stato notifica NON trovato"); - Assert.fail("Campo stato notifica NON trovato"); + Assertions.fail("Campo stato notifica NON trovato"); } } @And("Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN {string}") public void nellaPaginaPiattformaNotificheSiEffettuaLaRicercaPerCodiceIUN(String codiceIUN) { logger.info("Si cerca una notifica tramite IUN: {}", codiceIUN); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.inserimentoCodiceIUN(codiceIUN); piattaformaNotifichePage.selectFiltraNotificaButtonMittente(); } @@ -551,14 +520,12 @@ public void nellaPaginaPiattformaNotificheSiEffettuaLaRicercaPerCodiceIUN(String @And("Si clicca la notifica ricercata") public void siCliccaLaNotificaRicercata() { logger.info("Se presente si clicca la notifica ricercata"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.clickNotificaRicercata(); } @And("Si clicca sul bottone vedi tutti") public void siCliccaVediTutti() { logger.info("Si clicca sul bottone vedi tutti"); - PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver); piattaformaNotifichePage.clickVediTutti(); } } diff --git a/src/test/resources/feature/1-Login/000_loginPagoPA.feature b/src/test/resources/feature/1-Login/000_loginPagoPA.feature index 5eb3c200a..919761f65 100644 --- a/src/test/resources/feature/1-Login/000_loginPagoPA.feature +++ b/src/test/resources/feature/1-Login/000_loginPagoPA.feature @@ -3,14 +3,13 @@ Feature: Login pagoPA @TA_loginMittente @TestSuite @loginFE - Scenario: Login pagoPA mittente Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | Then Home page mittente viene visualizzata correttamente And Logout da portale mittente diff --git a/src/test/resources/feature/2-mittente/1_invioNotifiche/annullamentoNotificaConControlloSuRecapiti.feature b/src/test/resources/feature/2-mittente/1_invioNotifiche/annullamentoNotificaConControlloSuRecapiti.feature index b57c91d45..f7753192e 100644 --- a/src/test/resources/feature/2-mittente/1_invioNotifiche/annullamentoNotificaConControlloSuRecapiti.feature +++ b/src/test/resources/feature/2-mittente/1_invioNotifiche/annullamentoNotificaConControlloSuRecapiti.feature @@ -71,7 +71,7 @@ Feature: Mittente invia una notifica analogica o digitale che viene annullata e And Logout da portale mittente @TA_annullamentoNotificaMittenteEControlloMailDiCortesia - @recapitiPF + Scenario: [TA-FE MITTENTE CREA E ANNULLA UNA NOTIFICA CON PAGAMENTO] - Mittente invia una notifica a destinatario con PEC impostata e la annulla, si controlla che le ricevute PEC sono scaricabili Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono diff --git a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaDigitaleADomicilio.feature b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaDigitaleADomicilio.feature index 376c99028..40329864d 100644 --- a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaDigitaleADomicilio.feature +++ b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaDigitaleADomicilio.feature @@ -1,7 +1,7 @@ Feature: Invio notifica digitale a destinatario con diversi tipi di domicilio impostati ogni volta @invioNotificaDigitaleADomicilioImpostato - @recapitiPF + Scenario: [TA-FE INVIO DI UNA NOTIFICA DIGITALE A DESTINATARIO CON DOMICILIO IMPOSTATO] - Il mittente invia una notifica digitale a destinatario con indirizzo mail di cortesia impostato Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono @@ -42,7 +42,7 @@ Feature: Invio notifica digitale a destinatario con diversi tipi di domicilio im And Si accede nuovamente al portale "persona fisica" con token "delegante" per eliminare i recapiti inseriti @invioNotificaDigitaleADomicilioImpostato - @recapitiPF + Scenario: [TA-FE INVIO DI UNA NOTIFICA DIGITALE A DESTINATARIO CON DOMICILIO IMPOSTATO] - Mittente invia una notifica digitale al destinatario con domicilio di piattaforma e attende lo stato consegnata Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono @@ -84,7 +84,7 @@ Feature: Invio notifica digitale a destinatario con diversi tipi di domicilio im And Si accede nuovamente al portale "persona fisica" con token "delegante" per eliminare i recapiti inseriti @invioNotificaDigitaleADomicilioImpostato - @recapitiPF + Scenario: [TA-FE INVIO DI UNA NOTIFICA DIGITALE A DESTINATARIO CON DOMICILIO IMPOSTATO] - Mittente invia una notifica digitale al destinatario con KO e invio raccomandata semplice Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono @@ -199,7 +199,7 @@ Feature: Invio notifica digitale a destinatario con diversi tipi di domicilio im And Logout da portale mittente @invioNotificaDigitaleADomicilioImpostato - @recapitiPF + Scenario: [TA-FE INVIO DI UNA NOTIFICA DIGITALE A DESTINATARIO CON DOMICILIO IMPOSTATO] - Mittente invia una notifica digitale a destinatario, KO invio a domicilio di piattaforma, OK invio a domicilio speciale Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono @@ -244,7 +244,7 @@ Feature: Invio notifica digitale a destinatario con diversi tipi di domicilio im And Si accede nuovamente al portale "persona fisica" con token "delegante" per eliminare i recapiti inseriti @invioNotificaDigitaleADomicilioImpostato - @recapitiPF + Scenario: [TA-FE INVIO DI UNA NOTIFICA DIGITALE A DESTINATARIO CON DOMICILIO IMPOSTATO] - Mittente invia una notifica digitale a destinatario, KO invio sia a domicilio di piattaforma che a domicilio speciale Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono diff --git a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPFNormalizzazioneKOLovelace.feature b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPFNormalizzazioneKOLovelace.feature index 95b2d9b56..6a6ee28e7 100644 --- a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPFNormalizzazioneKOLovelace.feature +++ b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPFNormalizzazioneKOLovelace.feature @@ -49,9 +49,9 @@ Feature: Mittente genera una notifica che non prevede pagamento @TestSuite @TA_InvioNotificaMonoPFNormalizzazioneKOLovelaceBis - Scenario: PN-9294 - Mittente genera una notifica mono destinatario a PF - Normalizzazione KO (indirizzo non trovato) + Scenario: PN-9294-bis - Mittente genera una notifica mono destinatario a PF - Normalizzazione KO (indirizzo non trovato) Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard - And Nella pagina piattaforma notifiche destinatario si effettua la ricerca per codice IUN "RZVD-VGVL-XZLK-202410-X-1" + And Mittente ricerca notifica con IUN salvato "RZVD-VGVL-XZLK-202410-X-1" And Si clicca la notifica ricercata And Si clicca sul opzione Vedi Dettaglio Then Si verifica che la notifica abbia lo stato "Destinatario irreperibile" diff --git a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPGDomicilioDigitaleKO.feature b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPGDomicilioDigitaleKO.feature index 5611d1bfe..b1dbf1207 100644 --- a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPGDomicilioDigitaleKO.feature +++ b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaMonoPGDomicilioDigitaleKO.feature @@ -41,7 +41,7 @@ Feature: Mittente genera una notifica che non prevede pagamento @TA_InvioNotificaMonoPGDomiccilioDigitaleKOBis Scenario: PN-9292-bis - Mittente genera una notifica mono destinatario a PG con domicilio digitale KO Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard - And Nella pagina piattaforma notifiche destinatario si effettua la ricerca per codice IUN "NPEW-ZPLE-NJAZ-202410-N-1" + And Mittente ricerca notifica con IUN salvato "NPEW-ZPLE-NJAZ-202410-N-1" And Si clicca la notifica ricercata And Si clicca sul opzione Vedi Dettaglio Then Si verifica che la notifica abbia lo stato "Destinatario irreperibile" diff --git a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaPrimoTentativo.feature b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaPrimoTentativo.feature index 02118ae36..93103e122 100644 --- a/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaPrimoTentativo.feature +++ b/src/test/resources/feature/2-mittente/1_invioNotifiche/invioNotificaPrimoTentativo.feature @@ -1,6 +1,6 @@ Feature: Mittente genera una notifica che non prevede pagamento -@parallel + @Parallel @TA_InviaNotificaConDestinatarioReperibileAlPrimoInvio Scenario: [TA-FE MITTENTE CREA NOTIFICA CON PAGAMENTO] - Mittente invia una notifica a destinatario disponibile al primo invio Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard diff --git a/src/test/resources/feature/2-mittente/3_downloadFile/103_scaricaAttestazioniOpponibiliNotificaAnnullata.feature b/src/test/resources/feature/2-mittente/3_downloadFile/103_scaricaAttestazioniOpponibiliNotificaAnnullata.feature index 3bf4dfc6d..79ba08239 100644 --- a/src/test/resources/feature/2-mittente/3_downloadFile/103_scaricaAttestazioniOpponibiliNotificaAnnullata.feature +++ b/src/test/resources/feature/2-mittente/3_downloadFile/103_scaricaAttestazioniOpponibiliNotificaAnnullata.feature @@ -4,10 +4,9 @@ Feature: Mittente visualizza correttamente la notifica in stato Annulato @TA_MittenteScaricaAttestazioniDellaNotificaAnnullata @mittente @visualizzazioneNotificheMittente - Scenario: PN-10245-B - Mittente scarica documento AAR della notifica annullata Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard - When Nella pagina Piattaforma Notifiche persona fisica inserire il codice IUN "WVEM-RAVW-HLYV-202405-T-1" + When Nella pagina Piattaforma Notifiche persona fisica inserire il codice IUN "NPMK-EKTP-AGAD-202410-N-1" And Cliccare sul bottone Filtra And Cliccare sulla notifica restituita And Si visualizza correttamente la section Dettaglio Notifica @@ -15,8 +14,5 @@ Feature: Mittente visualizza correttamente la notifica in stato Annulato And Si verifica che la ricevuta di postalizzazione sia cliccabile | xpathStato | //button[contains(text(),"Attestazione opponibile a terzi: notifica presa in carico")] | | vediDettagli | false | - Then Si clicca sul documento Attestazione - And Logout da portale mittente - - - + Then Si verifica che il link sul documento Attestazione è cliccabile + And Logout da portale mittente \ No newline at end of file diff --git a/src/test/resources/feature/2-mittente/3_downloadFile/104_downloadDocumentiNotificaInviata.feature b/src/test/resources/feature/2-mittente/3_downloadFile/104_downloadDocumentiNotificaInviata.feature index c767edb20..0a7113e71 100644 --- a/src/test/resources/feature/2-mittente/3_downloadFile/104_downloadDocumentiNotificaInviata.feature +++ b/src/test/resources/feature/2-mittente/3_downloadFile/104_downloadDocumentiNotificaInviata.feature @@ -4,7 +4,7 @@ Feature: il mittente download attestazione notifica presa in carico @TA_MittenteDownloadDocumentiNotificaInviata @mittente @DownloadFileMittente - + @120gg Scenario: PN-11678 - il mittente download documenti di una notifica inviata da oltre 120 giorni Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard When Nella pagina Piattaforma Notifiche selezionare la voce 'stato della piattaforma' @@ -12,7 +12,7 @@ Feature: il mittente download attestazione notifica presa in carico And Si visualizza correttamente la tabella dei disservizi And Nella pagina stato della piattaforma si cambia il numero elementi visualizzati attraverso il filtro And Nella pagina stato della piattaforma si cambia pagina utilizzando una freccetta fino all'ultima - And Download file attestazione disservizio + And Download file attestazione disservizio 4 And Si controlla che esista pop up scadenza And Nella pagina Piattaforma Notifiche selezionare la voce 'Notifiche' And Nella pagina Piattaforma Notifiche mittente inserire un arco temporale di maggiore di 120 giorni diff --git a/src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/016_visualizzazioneNotificaAnnullata.feature b/src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/016_visualizzazioneNotificaAnnullata.feature index 17c0be790..d83728945 100644 --- a/src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/016_visualizzazioneNotificaAnnullata.feature +++ b/src/test/resources/feature/2-mittente/4_visualizzazioneNotifiche/016_visualizzazioneNotificaAnnullata.feature @@ -17,7 +17,6 @@ Feature: Mittente visualizza correttamente la notifica in stato Annulato And Logout da portale mittente @TA_DelegvisualizzazioneDettaglioNotifichaAnnullata - @DeleghePF Scenario: [TA-FE INVIO DI UNA NOTIFICA E ANNULLAMENTO] - Mittente invia una notifica con delegato e la annulla, si verifica che sia visibile anche lato delegato Given PF - Si effettua la login tramite token exchange come "delegato", e viene visualizzata la dashboard When Nella pagina Piattaforma Notifiche persona fisica click sul bottone Deleghe diff --git a/src/test/resources/feature/2-mittente/5_apiKey/003_022_generaApiKeySenzaGruppo.feature b/src/test/resources/feature/2-mittente/5_apiKey/003_022_generaApiKeySenzaGruppo.feature index b0b5f9b3e..9fbb56eed 100644 --- a/src/test/resources/feature/2-mittente/5_apiKey/003_022_generaApiKeySenzaGruppo.feature +++ b/src/test/resources/feature/2-mittente/5_apiKey/003_022_generaApiKeySenzaGruppo.feature @@ -14,6 +14,9 @@ Feature: Mittente genera Api Key senza gruppo And Nella sezione genera Api Key inserire il nome "testAutomationFE" per l Api Key And Nella sezione genera Api Key cliccare bottone continua And Si visualizza correttamente la pagina di conferma + And Si copia e salva API key generata And Nella pagina di conferma cliccare sul bottone Torna a API key - Then Si visualizza correttamente l api key "testAutomationFE" nell elenco in stato attivo + And Si visualizza correttamente l api key "testAutomationFE" nell elenco in stato attivo + Then Si clicca visualizza codice e verifica che il valore dell'apikey copiato sia uguale + And Nella pop up cliccare sul tasto chiudi And Logout da portale mittente diff --git a/src/test/resources/feature/2-mittente/5_apiKey/004_023_generaApiKeyConGruppo.feature b/src/test/resources/feature/2-mittente/5_apiKey/004_023_generaApiKeyConGruppo.feature index 0876648a3..fc0d17970 100644 --- a/src/test/resources/feature/2-mittente/5_apiKey/004_023_generaApiKeyConGruppo.feature +++ b/src/test/resources/feature/2-mittente/5_apiKey/004_023_generaApiKeyConGruppo.feature @@ -15,6 +15,9 @@ Feature: Mittente genera Api Key con gruppo And Nella sezione genera Api Key inserire un gruppo And Nella sezione genera Api Key cliccare bottone continua And Si visualizza correttamente la pagina di conferma + And Si copia e salva API key generata And Nella pagina di conferma cliccare sul bottone Torna a API key Then Si visualizza correttamente l api key "testAutomationFE" nell elenco in stato attivo + And Si clicca visualizza codice e verifica che il valore dell'apikey copiato sia uguale + And Nella pop up cliccare sul tasto chiudi And Logout da portale mittente diff --git a/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature b/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature index 4fd2572d0..a11020008 100644 --- a/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature +++ b/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature @@ -19,7 +19,7 @@ Feature: Mittente effettua il download delle attestazioni dei disservizi risolti Then Si visualizza correttamente la pagina dello 'stato della piattaforma' di mittente And Si visualizza correttamente la tabella dei disservizi And Si visualizza un record in elenco relativo ad un disservizio risolto "Invio delle notifiche" - And Download file attestazione disservizio + And Download file attestazione disservizio 1 And Controllo corrispondenza dati con pdf And Logout da portale mittente diff --git a/src/test/resources/feature/2-mittente/6_disserviziAppPA/checkDownloadAOTDopo120gg.feature b/src/test/resources/feature/2-mittente/6_disserviziAppPA/checkDownloadAOTDopo120gg.feature index de1fe4880..5fd8dc35b 100644 --- a/src/test/resources/feature/2-mittente/6_disserviziAppPA/checkDownloadAOTDopo120gg.feature +++ b/src/test/resources/feature/2-mittente/6_disserviziAppPA/checkDownloadAOTDopo120gg.feature @@ -4,7 +4,7 @@ Feature: Mittente prova ad effettuare download AOT scaduti da 120gg @mittente @TA_MittenteVisualizzazioneDisservizi @TA_PA_DownloadDisserviziScadutiDa120gg - + @120gg Scenario: [TA-FE MITTENTE EFFETTUA DOWNLOAD DI AOT SCADUTO DA 120 GG] - mittente effettua download di aot scaduto da 120gg Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard When Nella pagina Piattaforma Notifiche selezionare la voce 'stato della piattaforma' @@ -12,7 +12,7 @@ Feature: Mittente prova ad effettuare download AOT scaduti da 120gg And Si visualizza correttamente la tabella dei disservizi And Nella pagina stato della piattaforma si cambia il numero elementi visualizzati attraverso il filtro And Nella pagina stato della piattaforma si cambia pagina utilizzando una freccetta fino all'ultima - And Download file attestazione disservizio + And Download file attestazione disservizio 0 And Si controlla che esista pop up scadenza And Logout da portale mittente diff --git a/src/test/resources/feature/2-mittente/ente_radice_e_ente_figlio.feature b/src/test/resources/feature/2-mittente/ente_radice_e_ente_figlio.feature index 09eb3bff9..c089b213a 100644 --- a/src/test/resources/feature/2-mittente/ente_radice_e_ente_figlio.feature +++ b/src/test/resources/feature/2-mittente/ente_radice_e_ente_figlio.feature @@ -6,11 +6,11 @@ Feature: Ente figlio e Ente radice @verificaAssenzaNotificheEnteRadice Scenario: PN-10413 - Ente Figlio - Verifica assenza notifiche ente radice Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies And Cliccare sulla notifica restituita @@ -24,11 +24,11 @@ Feature: Ente figlio e Ente radice @verificaAssenzaNotificheEnteFiglio Scenario: PN-10411 - Ente Radice - Verifica assenza notifiche ente figlio Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies And Si sceglie ente figlio "EDILIZIA PRIVATA E SUAP" @@ -43,11 +43,11 @@ Feature: Ente figlio e Ente radice @verificaAssenzaApikeyEnteFiglio Scenario: PN-10412 - Ente Radice - Verifica assenza apikey ente figlio Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies And Si sceglie ente figlio "EDILIZIA PRIVATA E SUAP" @@ -72,11 +72,11 @@ Feature: Ente figlio e Ente radice @verificaAssenzaApikeyEnteRadice Scenario: PN-10414 - Ente Figlio - Verifica assenza apikey ente radice Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies And Nella pagina Piattaforma Notifiche selezionare la voce Api Key nel menu @@ -102,11 +102,11 @@ Feature: Ente figlio e Ente radice @test5 Scenario: PN-10419 - Ente Figlio - Verifica presenza notifiche da parte del delegato Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies And Si sceglie ente figlio "EDILIZIA PRIVATA E SUAP" diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/005_034_NEG1_inserimentoOTPEmailSbagliato.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/005_034_NEG1_inserimentoOTPEmailSbagliato.feature index 219b755de..ee46859ef 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/005_034_NEG1_inserimentoOTPEmailSbagliato.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/005_034_NEG1_inserimentoOTPEmailSbagliato.feature @@ -12,7 +12,6 @@ Feature: la persona fisica inserisce un OTP email sbagliato And Si visualizza correttamente la pagina I Tuoi Recapiti And Nella pagina I Tuoi Recapiti si controlla che non ci sia già una email And Si inserisce l'email della "personaFisica" e si clicca sul bottone avvisami via email - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si inserisce OTP sbagliato "15494" And Nella pagina I Tuoi Recapiti clicca sul bottone conferma diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/007_034_inserimentoIndirizzoEmail.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/007_034_inserimentoIndirizzoEmail.feature index c00f41f25..bab73acad 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/007_034_inserimentoIndirizzoEmail.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/007_034_inserimentoIndirizzoEmail.feature @@ -10,10 +10,8 @@ Feature: la persona fisica inserisce una Email And Rimuovi tutti i recapiti se esistono When Nella pagina Piattaforma Notifiche persona fisica si clicca sul bottone I Tuoi Recapiti And Si visualizza correttamente la pagina I Tuoi Recapiti - And Nella pagina I Tuoi Recapiti si visualizza correttamente la sezione 'E-mail o numero di cellulare' And Nella pagina I Tuoi Recapiti si controlla che non ci sia già una email And Si inserisce l'email della "personaFisica" e si clicca sul bottone avvisami via email - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si recupera l'OTP della Email tramite request method "personaFisica" And Nella pagina I Tuoi Recapiti si inserisce l'OTP ricevuto via Email "personaFisica" diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/008_035_modificaIndirizzoEmail.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/008_035_modificaIndirizzoEmail.feature index 23b631e6c..6638c1271 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/008_035_modificaIndirizzoEmail.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/008_035_modificaIndirizzoEmail.feature @@ -1,6 +1,6 @@ Feature: la persona fisica modifica l'indirizzo Email - @TestSuite + #@TestSuite @TA_modificaEmailPF @PF @recapitiPF diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/009_037_NEG1_inserimentoOTPNumeroDiTelefonoSbagliato.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/009_037_NEG1_inserimentoOTPNumeroDiTelefonoSbagliato.feature index 15a9967e9..3cf887ce1 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/009_037_NEG1_inserimentoOTPNumeroDiTelefonoSbagliato.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/009_037_NEG1_inserimentoOTPNumeroDiTelefonoSbagliato.feature @@ -11,7 +11,6 @@ Feature: la persona fisica inserisce l'OTP numero di telefono errato When Nella pagina Piattaforma Notifiche persona fisica si clicca sul bottone I Tuoi Recapiti And Si visualizza correttamente la pagina I Tuoi Recapiti And Nella pagina I Tuoi Recapiti si inserisce il numero di telefono del PF "personaFisica" e clicca sul bottone avvisami via SMS - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si inserisce OTP sbagliato "15494" And Nella pagina I Tuoi Recapiti clicca sul bottone conferma diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/010_037_NEG_inserimentoNumeroDiTelefonoSbagliato.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/010_037_NEG_inserimentoNumeroDiTelefonoSbagliato.feature index 56f25c2b1..4b672a2fd 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/010_037_NEG_inserimentoNumeroDiTelefonoSbagliato.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/010_037_NEG_inserimentoNumeroDiTelefonoSbagliato.feature @@ -4,6 +4,7 @@ Feature: la persona fisica inserisce un numero di telefono errato @TA_inserimentoTelefonoErratoPF @PF @recapitiPF + Scenario: PN-9311-B37 - La persona fisica inserisce un numero di telefono errato Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/012_040_1_inserimentoIndirizzoEmailAggiuntivo.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/012_040_1_inserimentoIndirizzoEmailAggiuntivo.feature index 80943a57c..aad271258 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/012_040_1_inserimentoIndirizzoEmailAggiuntivo.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/012_040_1_inserimentoIndirizzoEmailAggiuntivo.feature @@ -1,6 +1,6 @@ Feature: la persona fisica inserisce un indirizzo Email aggiuntivo - @TestSuite + #@TestSuite @PF @TA_emailAggiuntivaPF @recapitiPF diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/013_040_inserimentoIndirizzoPECAggiuntivo.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/013_040_inserimentoIndirizzoPECAggiuntivo.feature index 5abeba036..025d7b204 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/013_040_inserimentoIndirizzoPECAggiuntivo.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/013_040_inserimentoIndirizzoPECAggiuntivo.feature @@ -1,6 +1,6 @@ Feature: la persona fisica inserisce un indirizzo pec aggiuntivo - @TestSuite + #@TestSuite @TA_PECAggiuntivaPF @recapitiPF @PF diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/014_041_visualizzazioneAltriRecapiti.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/014_041_visualizzazioneAltriRecapiti.feature index f2265ebca..299a5acc1 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/014_041_visualizzazioneAltriRecapiti.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/014_041_visualizzazioneAltriRecapiti.feature @@ -1,6 +1,6 @@ Feature: la persona fisica visualizza correttamente la sezione altri recapiti - @TestSuite + #@TestSuite @TA_visualizzazioneSezioneAltriRecapitiPF @PF @recapitiPF diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/017_001_inserimentoRecapitoSpecificoEnteRadice.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/017_001_inserimentoRecapitoSpecificoEnteRadice.feature index c46ec561c..134247064 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/017_001_inserimentoRecapitoSpecificoEnteRadice.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/017_001_inserimentoRecapitoSpecificoEnteRadice.feature @@ -1,6 +1,6 @@ Feature: la persona fisica inserisce un recapito aggiuntivo da un ente radice - @TestSuite + #@TestSuite @TA_inserimentoRecapitoAggiuntivoDaEnteRadicePF @PF @recapitiPF diff --git a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/211_A211_inserimentoOTPSbagliatoRecapiti.feature b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/211_A211_inserimentoOTPSbagliatoRecapiti.feature index a7e73f844..15c70501b 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/211_A211_inserimentoOTPSbagliatoRecapiti.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/altriRecapiti/211_A211_inserimentoOTPSbagliatoRecapiti.feature @@ -20,13 +20,11 @@ Feature:La persona fisica inserisce una OTP sbagliato PEC And Cliccare sul bottone Annulla And Nella pagina I Tuoi Recapiti si controlla che non ci sia già una email And Si inserisce l'email "email@test.it" e si clicca sul bottone avvisami via email - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si inserisce OTP sbagliato tre volte "15494" And Si visualizza correttamente il messaggio di errore And Cliccare sul bottone Annulla And Nella pagina I Tuoi Recapiti si inserisce il numero di telefono PF "3409876543" e clicca sul bottone avvisami via SMS - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si inserisce OTP sbagliato tre volte "15494" And Si visualizza correttamente il messaggio di errore diff --git a/src/test/resources/feature/3-destinatario/personaFisica/deleghe/013_001_delegatoPagaNotificaPF.feature b/src/test/resources/feature/3-destinatario/personaFisica/deleghe/013_001_delegatoPagaNotificaPF.feature index c3920fea0..773f754ba 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/deleghe/013_001_delegatoPagaNotificaPF.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/deleghe/013_001_delegatoPagaNotificaPF.feature @@ -7,13 +7,11 @@ Feature:Il delegato persona giuridica accede ad una delega Scenario: PN-10388 - Il delegato persona fisica paga una notifica Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard - And Aspetta 10 secondi And Nella pagina Piattaforma Notifiche persona fisica click sul bottone Deleghe And Nella pagina Piattaforma Notifiche persona fisica si vede la sezione Deleghe And Si controlla che non sia presente una delega con stesso nome | nome | Lucrezia | | cognome | Borgia | - And Aspetta 10 secondi And Nella sezione Deleghe click sul bottone aggiungi nuova delega And Si visualizza correttamente la pagina nuova delega And Nella sezione Le Tue Deleghe inserire i dati diff --git a/src/test/resources/feature/3-destinatario/personaFisica/disservizi/checkDownloadAOTDopo120gg.feature b/src/test/resources/feature/3-destinatario/personaFisica/disservizi/checkDownloadAOTDopo120gg.feature index 478c627a7..c9b3f7a6f 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/disservizi/checkDownloadAOTDopo120gg.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/disservizi/checkDownloadAOTDopo120gg.feature @@ -3,14 +3,14 @@ Feature: Persona Fisica prova ad effettuare download AOT scaduti da 120gg @TestSuite @PF @TA_PF_DownloadDisserviziScadutiDa120gg - + @120gg Scenario: [TA-FE PF EFFETTUA DOWNLOAD DI AOT SCADUTO DA 120 GG] - pf effettua download di aot scaduto da 120gg Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard When Nella pagina Piattaforma Notifiche selezionare la voce 'stato della piattaforma' And Si visualizza correttamente la tabella dei disservizi And Nella pagina stato della piattaforma si cambia il numero elementi visualizzati attraverso il filtro And Nella pagina stato della piattaforma si cambia pagina utilizzando una freccetta fino all'ultima - And Download file attestazione disservizio + And Download file attestazione disservizio 2 And Si controlla che esista pop up scadenza And Logout da portale persona fisica diff --git a/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/checkDownloadOltre120gg.feature b/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/checkDownloadOltre120gg.feature index 14ed26f5b..669859457 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/checkDownloadOltre120gg.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/checkDownloadOltre120gg.feature @@ -3,7 +3,7 @@ Feature: persona fisica scarica attestazioni all'interno di una notifica scaduta @TestSuite @TA_PFDownloadAttestazioniOltre120gg @PF - +@120gg Scenario: [TA-FE PF SCARICA ATTESTAZIONE SCADUTA]- persona fisica scarica attestazione scaduta da oltre 120 gg Given PF - Si effettua la login tramite token exchange come "delegato", e viene visualizzata la dashboard When Si visualizza correttamente la pagina Piattaforma Notifiche persona fisica @@ -17,7 +17,7 @@ Feature: persona fisica scarica attestazioni all'interno di una notifica scaduta # | giornoA |27 | And Cliccare sul bottone Filtra persona fisica Then Vengono visualizzate correttamente le notifiche comprese nell'arco temporale inserito - And Cliccare sulla notifica maggiore di 120 giorni + And Cliccare sulla notifica maggiore di 120 giorni 1 Then Si visualizza correttamente la section Dettaglio Notifica persona fisica And Si clicca sul documento Attestazione scaduta And Si controlla che esista pop up scadenza diff --git a/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/downloadAttestazioneOpponibilePresaInCarico.feature b/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/downloadAttestazioneOpponibilePresaInCarico.feature index 35d8e2582..7e19262f3 100644 --- a/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/downloadAttestazioneOpponibilePresaInCarico.feature +++ b/src/test/resources/feature/3-destinatario/personaFisica/downloadFile/downloadAttestazioneOpponibilePresaInCarico.feature @@ -39,11 +39,11 @@ Feature: persona fisica scarica attestazioni all'interno di una notifica @TA_PFDownloadAttestazioneOpponibilePresaInCaricoEVerificaEnte Scenario: PN-10428 - Persona fisica scarica Attestazione opponibile a terzi: notifica presa in carico Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies Then Home page mittente viene visualizzata correttamente @@ -81,14 +81,14 @@ Feature: persona fisica scarica attestazioni all'interno di una notifica And Logout da portale persona fisica - @@TA_PFVerificaEnteNelDettaglioNotifica + @TA_PFVerificaEnteNelDettaglioNotifica Scenario: PN-10427 - Persona fisica verifica concatenazione nome ente Radice e ente Figlio in dettaglio notifica Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies Then Home page mittente viene visualizzata correttamente diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/005_064_NEG1_inserimentoOTPSbagliatoEmailPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/005_064_NEG1_inserimentoOTPSbagliatoEmailPG.feature index 7826450d4..7117e4e86 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/005_064_NEG1_inserimentoOTPSbagliatoEmailPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/005_064_NEG1_inserimentoOTPSbagliatoEmailPG.feature @@ -2,7 +2,7 @@ Feature: la persona giuridica inserisce un OTP email sbagliato @TestSuite @PG - @TA_inserimentoOTPErratoPG + @TA_inserimentoOTPErratoEmailPG @recapitiPG Scenario: PN-9155-D63 - La persona giuridica inserisce un OTP email sbagliato @@ -12,7 +12,6 @@ Feature: la persona giuridica inserisce un OTP email sbagliato And Si visualizza correttamente la pagina Recapiti persona giuridica And Nella pagina I Tuoi Recapiti si controlla che non ci sia già una email And Si inserisce l'email della "personaGiuridica" e si clicca sul bottone avvisami via email - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si inserisce OTP sbagliato "15494" And Nella pagina I Tuoi Recapiti clicca sul bottone conferma diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/007_065_inserimentoEmailPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/007_065_inserimentoEmailPG.feature index 988865419..b636b6a30 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/007_065_inserimentoEmailPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/007_065_inserimentoEmailPG.feature @@ -12,7 +12,6 @@ Feature: La persona giuridica inserisce l'email And Si visualizza correttamente la pagina Recapiti persona giuridica And Nella pagina I Tuoi Recapiti si controlla che non ci sia già una email And Si inserisce l'email della "personaGiuridica" e si clicca sul bottone avvisami via email - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si recupera l'OTP della Email tramite request method "personaGiuridica" And Nella pagina I Tuoi Recapiti si inserisce l'OTP ricevuto via Email "personaGiuridica" 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 f536e36a9..5f08c30f3 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 @@ -1,6 +1,6 @@ Feature: La persona giuridica visualizza tutti gli elementi della sezione altri recapiti - @TestSuite + @TA_visualizzazioneSezioneAltriRecapitiPG @PG @recapitiPG diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/009_067_NEG1_inserimentoOTPSbagliatoNumeroDiTelefonoPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/009_067_NEG1_inserimentoOTPSbagliatoNumeroDiTelefonoPG.feature index 5425401ac..7ec24b824 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/009_067_NEG1_inserimentoOTPSbagliatoNumeroDiTelefonoPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/009_067_NEG1_inserimentoOTPSbagliatoNumeroDiTelefonoPG.feature @@ -11,7 +11,6 @@ Feature: la persona giuridica inserisce l'OTP numero di telefono errato 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 inserisce il numero di telefono del PG "personaGiuridica" e clicca sul bottone avvisami via SMS - And Si visualizza correttamente il pop-up e si clicca su conferma And Nella pagina I Tuoi Recapiti si visualizza correttamente il pop-up di inserimento OTP And Nella pagina I Tuoi Recapiti si inserisce OTP sbagliato "15494" And Nella pagina I Tuoi Recapiti clicca sul bottone conferma diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/010_067_NEG_inserimentoNumeroDiTelefonoSbagliatoPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/010_067_NEG_inserimentoNumeroDiTelefonoSbagliatoPG.feature index 299010d84..9c716cff9 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/010_067_NEG_inserimentoNumeroDiTelefonoSbagliatoPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/010_067_NEG_inserimentoNumeroDiTelefonoSbagliatoPG.feature @@ -5,7 +5,7 @@ Feature: la persona giuridica inserisce un numero di telefono errato @TA_inserimentoCellulareErratoPG @recapitiPG - Scenario: PN-9158-A66 - La persona giuridica inserisce un numero di telefono errato + Scenario: PN-9158-B66 - La persona giuridica inserisce un numero di telefono errato Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Rimuovi tutti i recapiti se esistono When Nella pagina Piattaforma Notifiche persona giuridica si clicca sul bottone I Tuoi Recapiti diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/012_066_eliminaEmailPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/012_066_eliminaEmailPG.feature index 33805cc90..e3c337aa2 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/012_066_eliminaEmailPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/012_066_eliminaEmailPG.feature @@ -15,6 +15,6 @@ Feature: La persona giuridica elimina l'indirizzo email And Si annulla eliminazione email And Si controlla presenza email precedentemente salvata "prova@test.it" And Si clicca su elimina email - And Si conferma "Rimuovi e-mail" nel pop up + And Si conferma "Rimuovi email" nel pop up Then Nella pagina I Tuoi Recapiti si controlla che l'indirizzo Email non sia presente And Logout da portale persona giuridica diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/014_064_modificaEmailPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/014_064_modificaEmailPG.feature index ef4e94134..c7a7f3e12 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/014_064_modificaEmailPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/014_064_modificaEmailPG.feature @@ -1,4 +1,4 @@ -Feature: La persona giuridica modifica l'email di cortesia + Feature: La persona giuridica modifica l'email di cortesia @TestSuite @TA_modificaEmailPG @@ -22,8 +22,6 @@ Feature: La persona giuridica modifica l'email di cortesia Then Nella pagina I Tuoi Recapiti si visualizza correttamente il messaggio email errata And Nella pagina I Tuoi Recapiti si inserisce la nuova email "provaemail@test.it" And Nella pagina I Tuoi Recapiti si preme sul bottone "Salva" dell'email di cortesia - And Nella pagina I Tuoi Recapiti si visualizza il pop up di disclaimer - And Nella pagina I Tuoi Recapiti si clicca sul bottone conferma del disclaimer 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 dell'email "provaemail@test.it" e viene inserito Then Nella pagina I Tuoi Recapiti si controlla che la Email sia stata modificata diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/015_210_inserimentoTreOTPErratiPerTuttiIRecapiti.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/015_210_inserimentoTreOTPErratiPerTuttiIRecapiti.feature index d209e54cd..0ea8df75a 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/015_210_inserimentoTreOTPErratiPerTuttiIRecapiti.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/015_210_inserimentoTreOTPErratiPerTuttiIRecapiti.feature @@ -16,10 +16,8 @@ Feature: La persona giuridica inserisce l'OTP errato 3 volte per i campi PEC, em And Si inserisce il codice OTP errato "11111" per tre volte e si controlla il messaggio di errore And Nella pagina I Tuoi Recapiti si controlla che non ci sia una email di cortesia impostata And Si inserisce l'email di cortesia "prova@test.it" e si clicca sul bottone avvisami via email - And Nella pagina I Tuoi Recapiti si clicca sul bottone conferma del disclaimer And Si inserisce il codice OTP errato "11111" per tre volte e si controlla il messaggio di errore And Nella pagina I Tuoi Recapiti si controlla che non ci sia un numero di cellulare di cortesia impostato And Nella pagina I Tuoi Recapiti si inserisce il numero di telefono "3334545889" e si clicca sul bottone avvisami via SMS - And Nella pagina I Tuoi Recapiti si clicca sul bottone conferma del disclaimer And Si inserisce il codice OTP errato "11111" per tre volte e si controlla il messaggio di errore And Logout da portale persona giuridica \ No newline at end of file diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/016_001_inserimentoRecapitoSpecificoEnteRadice.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/016_001_inserimentoRecapitoSpecificoEnteRadice.feature index b3e73e4dd..490d2d912 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/016_001_inserimentoRecapitoSpecificoEnteRadice.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/altriRecapiti/016_001_inserimentoRecapitoSpecificoEnteRadice.feature @@ -1,6 +1,5 @@ Feature: la persona giuridica inserisce un recapito aggiuntivo da un ente radice - @TestSuite @TA_inserimentoRecapitoAggiuntivoDaEnteRadicePG @PG @recapitiPG diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/018_001_delegatoPagaNotificaPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/018_001_delegatoPagaNotificaPG.feature index e429c0def..567f8ea67 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/018_001_delegatoPagaNotificaPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/018_001_delegatoPagaNotificaPG.feature @@ -40,18 +40,9 @@ Feature:Il delegato persona giuridica accede ad una delega And Nella sezione Deleghe si verifica sia presente una delega accettata per PG And PG - Si effettua la login tramite token exchange come "delegato", e viene visualizzata la dashboard - And Nella Pagina Notifiche destinatario si clicca su notifiche delegate + And Nella Pagina Notifiche destinatario si clicca solo su notifiche delegate And Si visualizza correttamente la Pagina Notifiche persona giuridica sezione notifiche delegate "Le Epistolae srl" And Aspetta 10 secondi And Si seleziona la notifica And Si verifica che visualizzato lo stato Pagato - And Logout da portale persona giuridica - - - - - #And Nella Pagina Notifiche destinatario si clicca su notifiche delegate - And Aspetta 1 secondi - # And La persona giuridica clicca sulla prima notifica restituita - #And Si verifica che visualizzato lo stato Pagato - #And Logout da portale persona giuridica \ No newline at end of file + And Logout da portale persona giuridica \ No newline at end of file diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/DelegheRuoloOperatore.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/DelegheRuoloOperatore.feature index 59e6a1b73..6357af079 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/DelegheRuoloOperatore.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/deleghe/DelegheRuoloOperatore.feature @@ -1,6 +1,6 @@ Feature:Deleghe lato ruolo operatore - @TestSuite + # Eliminated TestSuite tag until fix. Convivio spa is not visible for the user GabrieleDAnnunzio @DeleghePG @PG diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/disservizi/checkDownloadAOTDopo120gg.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/disservizi/checkDownloadAOTDopo120gg.feature index 3b75f46d0..512256020 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/disservizi/checkDownloadAOTDopo120gg.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/disservizi/checkDownloadAOTDopo120gg.feature @@ -3,14 +3,14 @@ Feature: Persona Giuridica prova ad effettuare download AOT scaduti da 120gg @TestSuite @PG @TA_PG_DownloadDisserviziScadutiDa120gg - + @120gg Scenario: [TA-FE PG EFFETTUA DOWNLOAD DI AOT SCADUTO DA 120 GG] - PG effettua download di aot scaduto da 120gg Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard When Nella pagina Piattaforma Notifiche selezionare la voce 'stato della piattaforma' And Si visualizza correttamente la tabella dei disservizi And Nella pagina stato della piattaforma si cambia il numero elementi visualizzati attraverso il filtro And Nella pagina stato della piattaforma si cambia pagina utilizzando una freccetta fino all'ultima - And Download file attestazione disservizio + And Download file attestazione disservizio 3 And Si controlla che esista pop up scadenza And Logout da portale persona giuridica diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/checkDownloadOltre120gg.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/checkDownloadOltre120gg.feature index 83a6d3c9d..eb3f16b2a 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/checkDownloadOltre120gg.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/checkDownloadOltre120gg.feature @@ -3,7 +3,7 @@ Feature: persona fisica scarica attestazioni all'interno di una notifica scaduta @TestSuite @TA_PGDownloadAttestazioniOltre120gg @PG - + @120gg Scenario: [TA-FE PG SCARICA ATTESTAZIONE SCADUTA]- persona giuridica scarica attestazione scaduta da oltre 120 gg Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard And Nella pagina Piattaforma Notifiche mittente inserire un arco temporale di maggiore di 120 giorni diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/downloadAOTPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/downloadAOTPG.feature index 01c5f38e6..cf6fae1a7 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/downloadAOTPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/downloadFile/downloadAOTPG.feature @@ -7,11 +7,11 @@ Feature: persona giuridica scarica attestazione opponibile Scenario: PN-10432 - Persona giuridica scarica Attestazione opponibile a terzi: notifica presa in carico Given Login Page mittente viene visualizzata - | url | https://selfcare.dev.notifichedigitali.it | + | url | https://selfcare.test.notifichedigitali.it | When Login con mittente - | user | ggiorgi | + | user | albino63 | | pwd | test | - | comune | Viggiu | + | comune | Verona | And Si clicca sul bottone test And Si clicca bottone accetta cookies Then Home page mittente viene visualizzata correttamente diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/001_verificaNomeEnteRadiceInNotifica.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/001_verificaNomeEnteRadiceInNotifica.feature index 43360369e..9e4cb7209 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/001_verificaNomeEnteRadiceInNotifica.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/001_verificaNomeEnteRadiceInNotifica.feature @@ -1,6 +1,6 @@ Feature: La persona fisica visualizza il nome concatenato dell'ente Radice nel campo mittente della notifica - @TestSuite + @Parallel @TA_PGVisualizzaNotifiche @verificaNomeEnteRadice @DeleghePG @@ -32,4 +32,17 @@ Feature: La persona fisica visualizza il nome concatenato dell'ente Radice nel c And Aspetta 60 secondi And Si visualizza correttamente la section Dettaglio Notifica Then Si verifica che il mittente sia "Comune di Palermo" + And Logout da portale persona giuridica + + + @TestSuite + @verificaNomeEnteRadiceBis + Scenario: PN-10431 - bis - La persona giuridica visualizza il campo mittente della notifica con il nome concatenato dell'ente Radice + Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard + Then Nella Pagina Notifiche persona fisica si visualizza correttamente l elenco delle notifiche + And Nella pagina Piattaforma Notifiche persona giuridica inserire il codice IUN da dati notifica "QPTV-HLXM-LGJE-202410-G-1" + And Cliccare sul bottone Filtra persona giuridica + When La persona giuridica clicca sulla notifica restituita "QPTV-HLXM-LGJE-202410-G-1" + And Si visualizza correttamente la section Dettaglio Notifica + Then Si verifica che il mittente sia "Comune di Palermo" And Logout da portale persona giuridica \ No newline at end of file diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/056_visualizzazioneNotifichePG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/056_visualizzazioneNotifichePG.feature index b7d5e871d..6f2b6137b 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/056_visualizzazioneNotifichePG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/056_visualizzazioneNotifichePG.feature @@ -6,7 +6,6 @@ Feature: La persona fisica visualizza la sezione notifiche #viene inserito il tag deleghe pg per eliminare la delega una volta creata @DeleghePG @PG - Scenario: PN-9147 - La persona giuridica visualizza la sezione notifiche Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard When Nella pagina Piattaforma Notifiche persona giuridica click sul bottone Deleghe diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaConSoloUnElementoInTimeline.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaConSoloUnElementoInTimeline.feature index afcf1cdce..8607cd0d3 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaConSoloUnElementoInTimeline.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaConSoloUnElementoInTimeline.feature @@ -1,6 +1,6 @@ Feature: PG visualizza il dettaglio di una notifica con solo un elemento in timeline - @TestSuite + @Parallel @TA_PGDettaglioNotificheConUnElementoInTimeline @PG @visualizzazioneNotifichePG @@ -31,6 +31,18 @@ Feature: PG visualizza il dettaglio di una notifica con solo un elemento in time And controllo Ricevuta di consegna link cliccabile And Logout da portale persona giuridica + @TestSuite + @VisualizzaNotificaMonoDestinatarioConUnElementoInTimelineARBis + Scenario: [TA-FE VISUALIZZAZIONE DETTAGLI DI NOTIFICA PG] - bis - PG Verifica presenza solo un elemento in timeline contenente la ricevuta di postalizzazione in formato zip - OK_AR_ZIP + Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard + And Nella pagina Piattaforma Notifiche persona giuridica inserire il codice IUN da dati notifica "QPTV-HLXM-LGJE-202410-G-1" + And Cliccare sul bottone Filtra persona giuridica + When La persona giuridica clicca sulla notifica restituita "QPTV-HLXM-LGJE-202410-G-1" + And Si visualizza correttamente la section Dettaglio Notifica + And controllo Ricevuta di consegna link cliccabile + And Logout da portale persona giuridica + + @VisualizzaNotificaMonoDestinatarioConUnElementoInTimeline890 Scenario: [TA-FE VISUALIZZAZIONE DETTAGLI DI NOTIFICA PG] - PG Verifica presenza solo un elemento in timeline contenente la ricevuta di postalizzazione in formato zip - OK_890_ZIP Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard diff --git a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaNonPagataPG.feature b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaNonPagataPG.feature index a54166448..ed81cd183 100644 --- a/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaNonPagataPG.feature +++ b/src/test/resources/feature/3-destinatario/personaGiuridica/visualizzaNotifiche/VisualizzaNotificaNonPagataPG.feature @@ -1,6 +1,6 @@ Feature: PG visualizza il dettaglio di una notifica con documenti allegati - @TestSuite + @Parallel @TA_PGDettaglioNotificheConDocumenti @PG @visualizzazioneNotifichePG @@ -36,6 +36,21 @@ Feature: PG visualizza il dettaglio di una notifica con documenti allegati Then Si torna alla pagina precedente And Logout da portale persona giuridica + @TestSuite + @CheckNotificaConDocumentiAllegatiPGBis + Scenario: [TA-FE VISUALIZZAZIONE DETTAGLI DI NOTIFICA PG NON PAGATA] - bis - PG scarica modello F24 + Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard + And Nella pagina Piattaforma Notifiche persona giuridica inserire il codice IUN da dati notifica "WZAT-VPJY-XAZL-202410-A-1" + And Cliccare sul bottone Filtra persona giuridica + When La persona giuridica clicca sulla notifica restituita "WZAT-VPJY-XAZL-202410-A-1" + And Si visualizza correttamente la section Dettaglio Notifica + And Si controlla sia presente l'avviso PagoPa destinatario + And Si controlla sia presente il modello F24 destinatario + And Si clicca sul modello F24 destinatario numero 1 + Then Si torna alla pagina precedente + And Logout da portale persona giuridica + + @CheckNotificaConDocumentiAllegatiPG Scenario: [TA-FE VISUALIZZAZIONE DETTAGLI DI NOTIFICA PG NON PAGATA] - PG scarica l'avviso PagoPa Given PG - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard diff --git a/src/test/resources/feature/4-helpdesk/005_078_scaricaZipInfoNotifica.feature b/src/test/resources/feature/4-helpdesk/005_078_scaricaZipInfoNotifica.feature index 06468196d..a67569b30 100644 --- a/src/test/resources/feature/4-helpdesk/005_078_scaricaZipInfoNotifica.feature +++ b/src/test/resources/feature/4-helpdesk/005_078_scaricaZipInfoNotifica.feature @@ -12,7 +12,7 @@ Feature: Utente helpdesk visualizza pagina sezione ricerca ed estrazione dati When Nella Home di helpdesk utente clicca su sezione ricerca ed estrazione dati And visualizzazione corretta pagina ricerca ed estrazione dati And Selezione ottieni notifica - And viene inserito codice IUN "YRUZ-NYXJ-DAJK-202405-N-1" + And viene inserito codice IUN "IUN1" And controllo messaggio di successo And controllo password And controllo link per scaricare zip e scarico file @@ -22,7 +22,7 @@ Feature: Utente helpdesk visualizza pagina sezione ricerca ed estrazione dati And Si elimina file estratto And Si clicca sul bottone resetta filtri And Selezione ottieni notifica - And viene inserito codice IUN "YRUZ-NYXJ-DAJK-202405-N-2" + And viene inserito codice IUN "IUN2" And controllo messaggio di successo And controllo password And controllo link per scaricare zip e scarico file diff --git a/src/test/resources/feature/4-helpdesk/007_080_ottenereIlTracciatoNotifica.feature b/src/test/resources/feature/4-helpdesk/007_080_ottenereIlTracciatoNotifica.feature index 588341b7d..986241cec 100644 --- a/src/test/resources/feature/4-helpdesk/007_080_ottenereIlTracciatoNotifica.feature +++ b/src/test/resources/feature/4-helpdesk/007_080_ottenereIlTracciatoNotifica.feature @@ -13,7 +13,7 @@ Feature: Utente helpdesk visualizza pagina sezione ricerca ed estrazione dati And visualizzazione corretta pagina ricerca ed estrazione dati And Selezione ottieni log completi And viene inserito numero ticket - And viene inserito codice IUN senza ricerca "YRUZ-NYXJ-DAJK-202405-N-1" + And viene inserito codice IUN senza ricerca "IUN1" And Spuntare la casella Deanonimizzazione dati And Cliccare sul bottone ricerca And controllo messaggio di successo @@ -26,12 +26,12 @@ Feature: Utente helpdesk visualizza pagina sezione ricerca ed estrazione dati And Si clicca sul bottone resetta filtri And Selezione ottieni log completi And viene inserito numero ticket - And viene inserito codice IUN "YRUZ-NYXJ-DAJK-20240" + And viene inserito codice IUN "IUN0" And viene visualizzato messaggio di errore IUN And Si clicca sul bottone resetta filtri And Selezione ottieni log completi And viene inserito numero ticket - And viene inserito codice IUN senza ricerca "YRUZ-NYXJ-DAJK-202405-N-3" + And viene inserito codice IUN senza ricerca "IUN3" And Cliccare sul bottone ricerca And controllo password # su aws non e possibile scaricare il zip con IUN non valido diff --git a/src/test/resources/feature/4-helpdesk/009_082_ottenereIlTracciatoNotificaAnonimizzato.feature b/src/test/resources/feature/4-helpdesk/009_082_ottenereIlTracciatoNotificaAnonimizzato.feature index 8fe9924c9..59f59608c 100644 --- a/src/test/resources/feature/4-helpdesk/009_082_ottenereIlTracciatoNotificaAnonimizzato.feature +++ b/src/test/resources/feature/4-helpdesk/009_082_ottenereIlTracciatoNotificaAnonimizzato.feature @@ -13,7 +13,7 @@ Feature: Utente helpdesk visualizza pagina sezione ricerca ed estrazione dati And visualizzazione corretta pagina ricerca ed estrazione dati And Selezione ottieni log completi And viene inserito numero ticket - And viene inserito codice IUN senza ricerca "YRUZ-NYXJ-DAJK-202405-N-1" + And viene inserito codice IUN senza ricerca "IUN1" And Cliccare sul bottone ricerca And controllo messaggio di successo And controllo password diff --git a/src/test/resources/feature/4-helpdesk/010_083_ResettareIlFormDiRicerca.feature b/src/test/resources/feature/4-helpdesk/010_083_ResettareIlFormDiRicerca.feature index e0f5ee1c1..241fd1790 100644 --- a/src/test/resources/feature/4-helpdesk/010_083_ResettareIlFormDiRicerca.feature +++ b/src/test/resources/feature/4-helpdesk/010_083_ResettareIlFormDiRicerca.feature @@ -13,7 +13,7 @@ Feature: Utente helpdesk visualizza pagina sezione ricerca ed estrazione dati And visualizzazione corretta pagina ricerca ed estrazione dati And Selezione ottieni log completi And viene inserito numero ticket - And viene inserito codice IUN senza ricerca "YRUZ-NYXJ-DAJK-202405-N-1" + And viene inserito codice IUN senza ricerca "IUN1" And Cliccare sul bottone ricerca And controllo messaggio di successo And Si clicca sul bottone resetta filtri diff --git a/src/test/resources/junit-platform.properties b/src/test/resources/junit-platform.properties new file mode 100644 index 000000000..4df645c5e --- /dev/null +++ b/src/test/resources/junit-platform.properties @@ -0,0 +1,11 @@ +cucumber.execution.parallel.enabled=false +cucumber.execution.parallel.config.strategy=fixed +#One for each feature file +#cucumber.execution.parallel.config.fixed.parallelism=39 +cucumber.execution.parallel.config.fixed.parallelism=2000 +cucumber.execution.execution-mode.feature=same_thread + + +#cucumber.execution.exclusive-resources..read-write= + +#junit-platform.properties=true \ No newline at end of file