Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pn-10375-10376-10377-10378-10379-10380-10381 #172

Merged
merged 4 commits into from
May 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class PiattaformaNotifichePage extends BasePage {

@FindBy(id = "recipientId")
WebElement cfTextField;

@FindBy(id = "filter-button")
WebElement filtraButton;

Expand All @@ -43,7 +44,6 @@ public class PiattaformaNotifichePage extends BasePage {
@FindBy(id = "status")
WebElement statoNotificaField;


@FindBy(id = "side-item-API Key")
WebElement apiKeyButton;

Expand Down Expand Up @@ -128,12 +128,12 @@ public void insertCodiceFiscale(String codiceFiscale) {

public void selectFiltraButton() {
try {
getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(this.filtraButton));
this.filtraButton.click();
getWebDriverWait(10).until(ExpectedConditions.elementToBeClickable(filtraButton));
filtraButton.click();
logger.info("Bottone filtra cliccato correttamente");
} catch (TimeoutException e) {
logger.error("Bottone filtra non cliccabile con errore " + e.getMessage());
Assert.fail("Bottone filtra non cliccabile con errore " + e.getMessage());
logger.error("Bottone filtra non cliccabile con errore: " + e.getMessage());
Assert.fail("Bottone filtra non cliccabile con errore: " + e.getMessage());
}
}

Expand Down Expand Up @@ -186,9 +186,9 @@ public boolean verificaEsistenzaEPassaggioPagina() {

public void inserimentoCodiceIUN(String codiceIUN) {
try {
getWebDriverWait(10).until(ExpectedConditions.visibilityOf(this.codiceIUNTextField));
this.codiceIUNTextField.click();
this.codiceIUNTextField.sendKeys(codiceIUN);
getWebDriverWait(10).until(ExpectedConditions.visibilityOf(codiceIUNTextField));
codiceIUNTextField.click();
codiceIUNTextField.sendKeys(codiceIUN);
logger.info("Codice IUN inserito");
} catch (TimeoutException e) {
logger.error("Codice IUN non inserito con errore " + e.getMessage());
Expand Down Expand Up @@ -887,73 +887,89 @@ public void verificaDestinatariNonRaggiungibili(Map<String, String> destinatari)
}
}

public void verificaNotificheNonDisponibili(){
public void verificaNotificheNonDisponibili() {
By noResultField = By.xpath("//div[@data-testid='emptyState']");
getWebDriverWait(5).withMessage("Ci sono risultati disponibili per il filtro di ricerca").until(ExpectedConditions.visibilityOfElementLocated(noResultField));
}

public void clickNotificaRicercata() {
logger.info("Si clicca la notifica ricercata");
try {
TimeUnit.SECONDS.sleep(2);
By notitifcaRicercata = By.id("notificationsTable.body.row");
getWebDriverWait(10).withMessage("La notifica ricercata non è visibile").until(ExpectedConditions.visibilityOfElementLocated(notitifcaRicercata));
element(notitifcaRicercata).click();
} catch (TimeoutException e) {
logger.error("Non si riesce a cliccare la notifica ricercata con errore: " + e.getMessage());
Assert.fail("Non si riesce a cliccare la notifica ricercata con errore: " + e.getMessage());
} catch (InterruptedException e) {
logger.error("Attesa per rendere cliccabile la notifica interrota con errore: " + e.getMessage());
Assert.fail("Attesa per rendere cliccabile la notifica interrota con errore: " + e.getMessage());
}
}

public void checkMessaggioErroreConCodice(int code) {
switch (code) {
case 19 -> {
if (erroreMessaggio.getText().contains("inserito troppe volte un nome")){
if (erroreMessaggio.getText().contains("inserito troppe volte un nome")) {
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
}
case 20 -> {
if (erroreMessaggio.getText().contains("richiesto un login con un secondo fattore di autenticazione")){
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
if (erroreMessaggio.getText().contains("richiesto un login con un secondo fattore di autenticazione")) {
logger.info("Si visualizza correttamente il messaggio di errore");
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
}
case 21 -> {
if (erroreMessaggio.getText().contains("passato troppo tempo da quando hai iniziato")){
if (erroreMessaggio.getText().contains("passato troppo tempo da quando hai iniziato")) {
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
}
case 22 -> {
if (erroreMessaggio.getText().contains("devi acconsentire all’invio di alcuni dati")){
if (erroreMessaggio.getText().contains("devi acconsentire all’invio di alcuni dati")) {
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
}
case 23 -> {
if (erroreMessaggio.getText().contains("tua identità SPID risulta sospesa o revocata")){
if (erroreMessaggio.getText().contains("tua identità SPID risulta sospesa o revocata")) {
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
}
case 25 -> {
if (erroreMessaggio.getText().contains("annullato l’operazione di login")){
if (erroreMessaggio.getText().contains("annullato l’operazione di login")) {
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
}
case 30 -> {
if (erroreMessaggio.getText().contains("tipologia di identità SPID che hai usato")){
if (erroreMessaggio.getText().contains("tipologia di identità SPID che hai usato")) {
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
}
case 1001 -> {
if (erroreMessaggio.getText().contains("non hai l’età minima richiesta per usare")){
if (erroreMessaggio.getText().contains("non hai l’età minima richiesta per usare")) {
logger.info("Si visualizza correttamente il messaggio di errore");
}else{
} else {
logger.error("Non si visualizza il messaggio di errore");
Assert.fail("Non si visualizza il messaggio di errore");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ public class DettaglioNotificaMittenteSection extends BasePage {
@FindBy(xpath = "//button[contains(@data-testid,'breadcrumb-indietro-button')]")
WebElement indietroButton;

@FindBy(xpath = "//div[@data-testid='paymentInfoBox']")
WebElement containerPaymentBox;

@FindBy(id = "recipients-select")
WebElement selectMultiDestinatario;

private int numeriStatiNotifica;

public DettaglioNotificaMittenteSection(WebDriver driver) {
Expand Down Expand Up @@ -274,7 +280,7 @@ public void checkInvioADomicilioDiPiattaforma(String domicilioDiPiattaforma) {

}

public void checkDoppioFallimentoInvioViaPEC(int numeroFallimenti){
public void checkDoppioFallimentoInvioViaPEC(int numeroFallimenti) {
try {
By invioPECFallitoBy = By.xpath("//span[text()='Invio via PEC fallito']");
List<WebElement> invioPECFallitoList = driver.findElements(invioPECFallitoBy);
Expand Down Expand Up @@ -319,4 +325,53 @@ public void checkTentatoInvioADomicilioSpeciale(String domicilioSpeciale) {
Assert.fail("L'invio della notifica al domicilio speciale indicato non viene effettuato con errore: " + e.getMessage());
}
}

public void checkAvvisoPagoPa() {
try {
By boxPagamento = By.xpath("//div[@data-testid='payment-item']");
js().executeScript("arguments[0].scrollIntoView(true)", containerPaymentBox);
getWebDriverWait(10).withMessage("Non si visualizza il contenitore dei pagamenti").until(ExpectedConditions.visibilityOf(containerPaymentBox));
getWebDriverWait(10).withMessage("Non si visualizza l'avviso PagoPA per il pagamento della notifica").until(ExpectedConditions.visibilityOfElementLocated(boxPagamento));
} catch (TimeoutException e) {
logger.error("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage());
Assert.fail("Box per il pagamento della notifica non visualizzato correttamente con errore: " + e.getMessage());
}
}

public void checkModelloF24() {
try {
By modelloF24 = By.xpath("//span[@data-testid='f24']");
js().executeScript("arguments[0].scrollIntoView(true)", containerPaymentBox);
getWebDriverWait(10).withMessage("Non si visualizza il contenitore dei pagamenti").until(ExpectedConditions.visibilityOf(containerPaymentBox));
getWebDriverWait(10).withMessage("Non si visualizza il contenitore del modello F24").until(ExpectedConditions.visibilityOfElementLocated(modelloF24));
} catch (TimeoutException e) {
logger.error("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage());
Assert.fail("Box del modello F24 non visualizzato correttamente con errore: " + e.getMessage());
}
}

public void checkBoxPagamentoMultiDestinatario() {
try {
js().executeScript("arguments[0].scrollIntoView(true)", containerPaymentBox);
getWebDriverWait(10).withMessage("Non si visualizza il contenitore dei pagamenti").until(ExpectedConditions.visibilityOf(containerPaymentBox));
getWebDriverWait(10).withMessage("Non si visualizza l'input per la selezione del destinatario").until(ExpectedConditions.visibilityOf(selectMultiDestinatario));
} catch (TimeoutException e) {
logger.error("Dettaglio notifica multi destinatario non ancora pagata visualizzata non correttamente con errore: " + e.getMessage());
Assert.fail("Dettaglio notifica multi destinatario non ancora pagata visualizzata non correttamente con errore: " + e.getMessage());
}
}

public void clickMultiDestinatario() {
try {
js().executeScript("arguments[0].scrollIntoView(true)", selectMultiDestinatario);
getWebDriverWait(10).withMessage("L'input per la selezione del destinatario non è cliccabile").until(ExpectedConditions.elementToBeClickable(selectMultiDestinatario));
selectMultiDestinatario.click();
List<WebElement> selectOption = driver.findElements(By.xpath("//li[@role='option']"));
getWebDriverWait(10).withMessage("Non si visualizza la lista delle opzioni destinatario").until(ExpectedConditions.visibilityOfAllElements(selectOption));
selectOption.get(0).click();
} catch (TimeoutException e) {
logger.error("Non è stato possibile selezionare un destinatario con errore: " + e.getMessage());
Assert.fail("Non è stato possibile selezionare un destinatario con errore: " + e.getMessage());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import it.pn.frontend.e2e.utility.DataPopulation;
import it.pn.frontend.e2e.utility.WebTool;
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.slf4j.Logger;
Expand Down Expand Up @@ -1265,6 +1264,30 @@ public void nellaSectionDelDestinatarioNumeroSiInserisconoISuoiDati(int numeroDe
destinatarioPASection.inserireCodiceFiscaleMultiDestinatario(numeroDestinatario, destinatario.get("codiceFiscale"));
}

@Then("Si controlla sia presente l'avviso PagoPa")
public void siControllaSiaPresenteLAvvisoPagoPa() {
logger.info("Si controlla la presenza del box per il pagamento della notifica");
dettaglioNotificaMittenteSection.checkAvvisoPagoPa();
}

@Then("Si controlla sia presente il modello F24")
public void siControllaSiaPresenteIlModelloF24() {
logger.info("Si controlla sia presente il modello F24");
dettaglioNotificaMittenteSection.checkModelloF24();
}

@Then("Si controlla sia presente il box per il pagamento del multidestinatario")
public void siControllaSiaPresenteIlBoxPerIlPagamentoDelMultidestinatario() {
logger.info("Si verifica la presenza della select per la selezione del destinatario");
dettaglioNotificaMittenteSection.checkBoxPagamentoMultiDestinatario();
}

@And("Si seleziona un destinatario")
public void siSelezionaUnDestinatario() {
logger.info("Si seleziona il primo destinatario presente nella selct");
dettaglioNotificaMittenteSection.clickMultiDestinatario();
}

/**
* A simple object that represents the esito notifica, i.e. the return value of siVerificaEsitoNotifica.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -488,4 +488,20 @@ public void siVerificaCheICampiDellaRicercaDelleDateSianoErrate() {
Assert.fail("Campo stato notifica NON trovato");
}
}

@And("Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN {string}")
public void nellaPaginaPiattformaNotificheSiEffettuaLaRicercaPerCodiceIUN(String codiceIUN) throws InterruptedException {
logger.info("Si cerca una notifica tramite IUN: " + codiceIUN);
PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver);
piattaformaNotifichePage.inserimentoCodiceIUN(codiceIUN);
piattaformaNotifichePage.selectFiltraButton();
}


@And("Si clicca la notifica ricercata")
public void siCliccaLaNotificaRicercata() {
logger.info("Se presente si clicca la notifica ricercata");
PiattaformaNotifichePage piattaformaNotifichePage = new PiattaformaNotifichePage(driver);
piattaformaNotifichePage.clickNotificaRicercata();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Feature: Si verifica la corretta visualizzazione di notifiche non ancora pagate

@checkNotificaNonPagata
Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata mono destinatario solo con avviso PagoPa
Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard
And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "QNMY-DXKH-LEDW-202405-J-1"
And Si clicca la notifica ricercata
Then Si controlla sia presente l'avviso PagoPa
And Logout da portale mittente

@checkNotificaNonPagata
Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata mono destinatario solo con modello F24
Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard
And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "JVDU-KLJG-RPZV-202405-X-1"
And Si clicca la notifica ricercata
Then Si controlla sia presente il modello F24
And Logout da portale mittente

@checkNotificaNonPagata
Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata mono destinatario solo con avviso PagoPa e modello F24
Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard
And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "JHME-HQME-DGEL-202405-E-1"
And Si clicca la notifica ricercata
Then Si controlla sia presente l'avviso PagoPa
Then Si controlla sia presente il modello F24
And Logout da portale mittente

@checkNotificaNonPagata
Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Visualizzazione notifica non pagata multi destinatario solo con avviso PagoPa
Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard
And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "PTUY-UJWN-YAQU-202405-L-1"
And Si clicca la notifica ricercata
Then Si controlla sia presente il box per il pagamento del multidestinatario
And Logout da portale mittente

@checkNotificaNonPagata
Scenario: [TA-FE CHECK NOTIFICA NON PAGATA] - Notifica multi destinatario non pagata, si seleziona un destinatario e si controllano gli avvisi relativi
Given PA - Si effettua la login tramite token exchange, e viene visualizzata la dashboard
And Nella pagina piattaforma notifiche si effettua la ricerca per codice IUN "PTUY-UJWN-YAQU-202405-L-1"
And Si clicca la notifica ricercata
Then Si controlla sia presente il box per il pagamento del multidestinatario
And Si seleziona un destinatario
Then Si controlla sia presente l'avviso PagoPa
And Logout da portale mittente