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 072050f13..d3555db74 100644 --- a/src/main/java/it/pn/frontend/e2e/common/BasePage.java +++ b/src/main/java/it/pn/frontend/e2e/common/BasePage.java @@ -1,5 +1,8 @@ package it.pn.frontend.e2e.common; +import io.cucumber.java.Before; +import io.cucumber.java.Scenario; +import it.pn.frontend.e2e.listeners.Hooks; import org.openqa.selenium.*; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.ExpectedConditions; @@ -12,8 +15,10 @@ import java.util.concurrent.TimeUnit; public class BasePage { + protected WebDriver driver; + protected String scenarioName = Hooks.scenario; protected int loadComponentWaitTime = Integer.parseInt(System.getProperty("loadComponentWaitTime")); private static final Logger loggerBase = LoggerFactory.getLogger("BasePage"); 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 ca8c33599..d87d61943 100644 --- a/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java +++ b/src/main/java/it/pn/frontend/e2e/listeners/Hooks.java @@ -43,7 +43,10 @@ public class Hooks { private static final Logger logger = LoggerFactory.getLogger("Hooks"); public static WebDriver driver; public DevTools devTools; + public Map requests = new HashMap<>(); + + public static String scenario; public static List netWorkInfos = new ArrayList<>(); private String headless; private final CookieConfig cookieConfig = new CookieConfig(); @@ -175,6 +178,7 @@ protected void edge() { @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_")) { 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 58e405657..14f8ec790 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 @@ -4,11 +4,12 @@ import lombok.Getter; import lombok.Setter; -@Getter -@Setter +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + public class NotificationSingleton { - private String iun; + private Map scenarioIun = new ConcurrentHashMap<>(); private String notificationRequestId; private static NotificationSingleton instance; @@ -22,6 +23,11 @@ public static synchronized NotificationSingleton getInstance() { return instance; } + public void setScenarioIun(String scenarioName,String iun){ + scenarioIun.put(scenarioName,iun); + } - + public String getIun(String scenarioName){ + return scenarioIun.get(scenarioName); + } } 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 f1020cf44..f4b88e63a 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/PiattaformaNotifichePage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/PiattaformaNotifichePage.java @@ -1,6 +1,7 @@ package it.pn.frontend.e2e.pages.mittente; import com.google.gson.internal.LinkedTreeMap; +import io.cucumber.java.Scenario; import it.pn.frontend.e2e.common.BasePage; import it.pn.frontend.e2e.listeners.Hooks; import it.pn.frontend.e2e.listeners.NetWorkInfo; @@ -800,28 +801,30 @@ public void verificaNotificaCreata() { } } } + if (!notificationRequestId.isEmpty()) { - //LinkedTreeMap notificationData; - String notificationStatus; - //String notificationIUN; + LinkedTreeMap notificationData; + String notificationStatus; + String notificationIUN; int maximumRetry = 0; - do { + notificationStatus = restNotification.getNotificationStatus(notificationRequestId).get("notificationRequestStatus").toString(); + while (notificationStatus.equals("WAITING")){ if (maximumRetry > 4) { logger.error("Sono stati fatti 5 tentativi per verificare la creazione della notifica"); Assert.fail("La notifica risulta ancora in stato WAITING dopo 5 tentativi"); } - //notificationData = restNotification.getNotificationStatus(notificationRequestId); - notificationStatus = restNotification.getNotificationStatus(notificationRequestId).get("notificationRequestStatus").toString(); - //notificationIUN = notificationData.get("iun").toString(); - //if (notificationStatus.equals("ACCEPTED")){ - // notificationSingleton.setIun(notificationIUN); - //}else{ - WebTool.waitTime(90); - logger.info("Tentativo n. " + maximumRetry + " - Stato notifica: " + notificationStatus); - maximumRetry++; - // } - } while (notificationStatus.equals("WAITING")); - notificationSingleton.setIun(restNotification.getNotificationStatus(notificationRequestId).get("iun").toString()); + notificationData = restNotification.getNotificationStatus(notificationRequestId); + notificationStatus = notificationData.get("notificationRequestStatus").toString(); + if(notificationStatus.equals("ACCEPTED")){ + notificationIUN = notificationData.get("iun").toString(); + notificationSingleton.setScenarioIun(scenarioName,notificationIUN); + }else{ + WebTool.waitTime(90); + logger.info("Tentativo n. " + maximumRetry + " - Stato notifica: " + notificationStatus); + maximumRetry++; + } + } + //notificationSingleton.setScenarioIun(scenario.getName(),restNotification.getNotificationStatus(notificationRequestId).get("iun").toString()); driver.navigate().refresh(); logger.info("La notifica è stata creata correttamente"); } else { @@ -844,7 +847,7 @@ public void checkNotifica() { } public void clickSuNotifica() { - String iun = notificationSingleton.getIun(); + String iun = notificationSingleton.getIun(scenarioName); try{ By notification = By.xpath("//table[@id='notifications-table']//tr[.//button[contains(text(),'"+iun+"')]]"); getWebDriverWait(30).withMessage("notifica non esistente").until(ExpectedConditions.visibilityOfElementLocated(notification)); 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 49d101084..2966e6dea 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 @@ -1,12 +1,14 @@ package it.pn.frontend.e2e.section.mittente; import it.pn.frontend.e2e.common.BasePage; +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.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.Wait; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -265,8 +267,8 @@ public String getTextDocumentiAllegati() { public void checkStatoTimeline(String statoTimeline){ try { - By testIrreperibilita = By.id("Destinatario irreperibile-status"); - this.getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(testIrreperibilita)); + By testIrreperibilita = By.id(statoTimeline); + getWebDriverWait(10).until(ExpectedConditions.visibilityOfElementLocated(testIrreperibilita)); logger.info("irreperibilitá avvenuta"); } catch (TimeoutException e) { logger.error("irreperibilitá non avvenuta 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 f969aa85b..a749ccfba 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 @@ -85,7 +85,7 @@ public void insertGruppo(String gruppo) { try { By gruppoBy = By.xpath("//li[contains(text(),'" + gruppo + "')]"); - this.getWebDriverWait(40).until(ExpectedConditions.visibilityOfElementLocated(gruppoBy)); + getWebDriverWait(40).until(ExpectedConditions.visibilityOfElementLocated(gruppoBy)); logger.info("gruppo " + gruppo + " trovato con successo"); element(gruppoBy).click(); } catch (TimeoutException e) { 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 44e7fe4fe..c679aacec 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 @@ -1087,9 +1087,12 @@ public void siVerificaCheLaNotificaAbbiaLoStato(String stato) { piattaformaNotifichePage.verificaPresenzaStato(stato); } + @And("Si controlla lo stato timeline {string} in dettaglio notifica") public void siControllaLoStatoTimelineInDettaglioNotifica(String statoTimelineNotifica) { siVisualizzaCorrettamenteLaSectionDettaglioNotifica(); + WebTool.waitTime(790); + driver.navigate().refresh(); siVisualizzaCorrettamenteLElencoCompletoDegliStatiCheLaNotificaHaPercorso(); dettaglioNotificaMittenteSection.checkStatoTimeline(statoTimelineNotifica); } diff --git a/src/test/resources/feature/2-mittente/InvioNotificaConSequence.feature b/src/test/resources/feature/2-mittente/InvioNotificaConSequence.feature index 4a735ac14..24bd9e1e3 100644 --- a/src/test/resources/feature/2-mittente/InvioNotificaConSequence.feature +++ b/src/test/resources/feature/2-mittente/InvioNotificaConSequence.feature @@ -30,38 +30,7 @@ Feature: invio notifica con sequence | nomeDocumentoNotifica | RATA SCADUTA IMU | And Si verifica che la notifica è stata creata correttamente And Si seleziona la notifica - And Si controlla lo stato timeline "irreperibile" in dettaglio notifica + And Si controlla lo stato timeline "Destinatario irreperibile-status" in dettaglio notifica And Logout da portale mittente - @WorkflowNotificaConSequence @ignored - Scenario: [TA-FE WORKFLOW DELLA NOTIFICA CON SEQUENCE-@FAIL-Discovery_AR] - Il mittente invia una notifica a destinatario con sequence - Given PF - Si effettua la login tramite token exchange come "delegante", e viene visualizzata la dashboard - When Nella pagina Piattaforma Notifiche persona fisica si clicca sul bottone I Tuoi Recapiti - And Si verifica siano presenti recapiti digitali - | email | provaemail@test.it | - And Logout da portale persona fisica - Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard - When Nella pagina Piattaforma Notifiche cliccare sul bottone Invia una nuova notifica - And Si visualizza correttamente la pagina Piattaforma Notifiche section Informazioni preliminari - And Creazione notifica completa - | oggettoDellaNotifica | Pagamento rata IMU | - | descrizione | PAGAMENTO RATA IMU | - | modello | AR | - | gruppoTest | test-TA-FE-TEST | - | gruppoDev | GruppoTest | - | codiceTassonometrico | 123456A | - | nomeFileYaml | datiNotifica | - | nomePF | Gaio Giulio | - | cognomePF | Cesare | - | codiceFiscalePF | CSRGGL44L13H501E | - | indirizzoPF | via @FAIL-Discovery_AR | - | numeroCivicoPF | 20 | - | comunePF | MILANO | - | provinciaPF | MI | - | codicepostalePF | 20147 | - | statoPF | ITALIA | - | nomeDocumentoNotifica | RATA SCADUTA IMU | - And Si verifica che la notifica è stata creata correttamente - And Si seleziona la notifica - And Si controlla lo stato timeline "irreperibile" in dettaglio notifica - And Logout da portale mittente +