-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExceptionTests.cs
170 lines (149 loc) · 9.31 KB
/
ExceptionTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
using NUnit.Framework; // Importa a biblioteca NUnit para testes.
using OpenQA.Selenium; // Importa a biblioteca Selenium para automação de testes web.
using OpenQA.Selenium.Chrome; // Importa o driver do Chrome para Selenium.
using SeleniumExtras.WaitHelpers; // Importa helpers para esperas no Selenium.
using OpenQA.Selenium.Support.UI; // Importa suporte para WebDriverWait.
using WebDriverManager; // Importa o WebDriverManager para gerenciar drivers.
using WebDriverManager.DriverConfigs.Impl; // Importa configurações do WebDriverManager.
using FluentAssertions; // Importa FluentAssertions para asserções em testes.
using System.Linq; // Importa Linq para manipulação de coleções.
using System.Collections.Generic; // Importa coleções genéricas.
using System.Configuration; // Importa para acessar configurações.
using System; // Importa para uso de funcionalidades básicas.
namespace PortalTests // Namespace para agrupar testes.
{
[TestFixture] // Indica que esta classe contém testes.
public class ExceptionTests
{
private IWebDriver driver; // Declara o driver do Selenium.
private WebDriverWait wait; // Declara um objeto para gerenciar esperas.
private NotaFiscalHelper notaFiscalHelper; // Declara um helper para operações de Nota Fiscal.
[SetUp] // Método que é executado antes de cada teste.
public void Setup()
{
// Configura opções para o ChromeDriver.
ChromeOptions options = new ChromeOptions();
options.AddArgument("--start-maximized"); // Inicia o navegador maximizado.
// Configura o driver do Chrome utilizando o WebDriverManager.
new WebDriverManager.DriverManager().SetUpDriver(new ChromeConfig());
driver = new ChromeDriver(options); // Inicializa o ChromeDriver.
wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); // Configura espera de 10 segundos.
notaFiscalHelper = new NotaFiscalHelper(driver); // Inicializa o helper de Nota Fiscal.
}
[Test] // Indica que este método é um teste.
public void AllEmptyFieldAlerts()
{
// Navega até a URL específica do formulário.
driver.Navigate().GoToUrl("URL_DO_FORMULARIO"); // Insira a URL do formulário aqui.
// Chama métodos para liberar envio e submeter o formulário.
notaFiscalHelper.LiberarParaEnvio();
notaFiscalHelper.Submit();
// Lista de mensagens de erro esperadas para campos vazios.
List<string> expectedErrors = new List<string>
{
"Preencha \"EMAIL SETOR FISCAL\".",
"Preencha \"CNPJ\".",
"Preencha \"NOME DO CONTATO\".",
"Preencha \"TELEFONE DE CONTATO\".",
"Preencha \"NÚMERO DA NOTA\".",
"Preencha \"TELEFONE SETOR FISCAL\".",
"Preencha \"VALOR DA NOTA\"."
};
// Espera até que as mensagens de erro estejam visíveis e armazena na lista.
var errorMessages = wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//*[contains(text(), 'Preencha')]")));
List<string> actualErrors = errorMessages.Select(element => element.Text).ToList();
// Verifica se todas as mensagens de erro esperadas estão presentes.
foreach (var expectedError in expectedErrors)
{
actualErrors.Should().Contain(expectedError, $"A mensagem '{expectedError}' não foi encontrada.");
}
}
[Test]
public void NoteAlreadySent()
{
// Navega para a URL onde a nota já foi enviada.
driver.Navigate().GoToUrl("URL_DA_NOTA_JA_ENVIADA"); // Insira a URL aqui.
var errorMessageElement = wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//*[contains(text(), 'Nota Fiscal já encaminhada, não é possível encaminha-la novamente!')]"))).FirstOrDefault();
// Se a mensagem de erro é encontrada, valida seu conteúdo.
if (errorMessageElement != null)
{
var errorMessage = errorMessageElement.Text;
errorMessage.Should().Contain("Nota Fiscal já encaminhada, não é possível encaminha-la novamente!", "A mensagem 'Nota Fiscal já encaminhada, não é possível encaminha-la novamente!' não foi encontrada.");
}
else
{
// Caso a mensagem não seja encontrada, preenche o formulário e submete.
notaFiscalHelper.UpdateDates();
notaFiscalHelper.Fill1322();
notaFiscalHelper.ReturnDates();
notaFiscalHelper.WaitForCnpjFieldToBeFilled(driver);
notaFiscalHelper.LiberarParaEnvio();
notaFiscalHelper.Submit();
// Espera pela mensagem de sucesso após o envio.
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//*[contains(text(), 'Nota enviada com sucesso!')]")));
driver.PageSource.Should().Contain("Nota enviada com sucesso!", "A mensagem 'Nota enviada com sucesso!' não foi encontrada.");
// Navega novamente para verificar se a nota ainda está enviada.
driver.Navigate().GoToUrl("URL_DA_NOTA_JA_ENVIADA"); // Insira a URL novamente aqui.
errorMessageElement = wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//*[contains(text(), 'Nota Fiscal já encaminhada, não é possível encaminha-la novamente!')]"))).FirstOrDefault();
var errorMessage = errorMessageElement?.Text;
errorMessage.Should().Contain("Nota Fiscal já encaminhada, não é possível encaminha-la novamente!", "A mensagem 'Nota Fiscal já encaminhada, não é possível encaminha-la novamente!' não foi encontrada.");
}
}
[Test]
public void WrongFileInXmlAndPdfFields()
{
// Navega para a URL do formulário de Nota Fiscal.
driver.Navigate().GoToUrl("URL_DO_FORMULARIO"); // Insira a URL do formulário aqui.
// Envia arquivos de PDF e XML inválidos para os campos correspondentes.
driver.FindElement(By.Id("Nota_xml")).SendKeys("CAMINHO_DO_ARQUIVO_PDF"); // Insira o caminho do arquivo PDF aqui.
driver.FindElement(By.Id("Nota_pdf")).SendKeys("CAMINHO_DO_ARQUIVO_XML"); // Insira o caminho do arquivo XML aqui.
// Espera até que as mensagens de erro apropriadas sejam visíveis.
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[contains(text(), 'O arquivo inserido deve ser um XML!') or contains(text(), 'O arquivo inserido deve ser um PDF!')]")));
notaFiscalHelper.WaitForCnpjFieldToBeFilled(driver);
notaFiscalHelper.LiberarParaEnvio();
notaFiscalHelper.Submit();
// Coleta mensagens de erro geradas e valida se estão corretas.
var errorMessages = driver.FindElements(By.XPath("//*[contains(text(), 'O arquivo inserido deve ser um XML!') or contains(text(), 'O arquivo inserido deve ser um PDF!')]"));
List<string> actualErrors = errorMessages.Select(element => element.Text).ToList();
List<string> expectedErrors = new List<string>
{
"O arquivo inserido deve ser um XML!",
"O arquivo inserido deve ser um PDF!"
};
// Verifica se todas as mensagens de erro esperadas estão presentes.
foreach (var expectedError in expectedErrors)
{
actualErrors.Should().Contain(expectedError, $"A mensagem '{expectedError}' não foi encontrada.");
}
}
[Test]
public void NoDocumentInPDFAndXMLFields()
{
// Navega até a URL onde o formulário é acessado.
driver.Navigate().GoToUrl("URL_DO_FORMULARIO"); // Insira a URL do formulário aqui.
notaFiscalHelper.UpdateDates(); // Atualiza as datas do formulário.
notaFiscalHelper.Fill3065(); // Preenche o formulário com dados específicos.
notaFiscalHelper.LiberarParaEnvio(); // Prepara o formulário para envio.
notaFiscalHelper.Submit(); // Submete o formulário.
// Espera até que as mensagens de erro apropriadas sejam visíveis.
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[contains(text(), 'Campo requerido!')]")));
var errorMessages = driver.FindElements(By.XPath("//*[contains(text(), 'Campo requerido!')]"));
List<string> actualErrors = errorMessages.Select(element => element.Text).ToList();
List<string> expectedErrors = new List<string>
{
"Campo requerido!"
};
// Verifica se todas as mensagens de erro esperadas estão presentes.
foreach (var expectedError in expectedErrors)
{
actualErrors.Should().Contain(expectedError, $"A mensagem '{expectedError}' não foi encontrada.");
}
}
[TearDown] // Método que é executado após cada teste.
public void TearDown()
{
driver.Quit(); // Fecha o navegador após os testes.
}
}
}