public void Test_DevLoggedIn_CanNotCreateNewProjectOrTicket() { // Arrange var email = "*****@*****.**"; var password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); // Assert var actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.AreEqual(ExpectedLoggedInUrl, actualUrl); var expectedText = "New Project"; IWebElement roleSpecificLink = null; string navLinkListItemsXpath = "//li[@class='nav-item']"; bool foundRoleSpecificLink = false; if (WebDriver.FindElements(By.XPath(navLinkListItemsXpath)).Count > 0) { ReadOnlyCollection <IWebElement> listItems = WebDriver.FindElements(By.XPath(navLinkListItemsXpath)); foreach (var li in listItems) { if (li.Text == expectedText) { foundRoleSpecificLink = true; roleSpecificLink = li; break; } } } Assert.IsFalse(foundRoleSpecificLink); if (WebDriver.FindElements(By.XPath("//a[@class='nav-link']")).Count > 0) { ReadOnlyCollection <IWebElement> anchors = WebDriver.FindElements(By.XPath(navLinkListItemsXpath)); foreach (var a in anchors) { if (a.GetAttribute("href") != null && a.GetAttribute("href").EndsWith("/Tickets/Create") || a.Text.Contains(expectedText)) { foundRoleSpecificLink = true; roleSpecificLink = a; break; } } } Assert.IsFalse(foundRoleSpecificLink); }
public void Test_CanLogin_AsSubmitter() { // Arrange var email = "*****@*****.**"; var password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); // Assert var actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.AreEqual(ExpectedLoggedInUrl, actualUrl); }
public void Test_SubmitterLoggedIn_CanGoToCreateNewTicketPage() { // Arrange var email = "*****@*****.**"; var password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); var actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.AreEqual(ExpectedLoggedInUrl, actualUrl); var expectedText = "New Ticket"; IWebElement roleSpecificLink = null; string newTicketXpath = "//*[text()='New Ticket']"; bool foundRoleSpecificLink = false; if (WebDriver.FindElements(By.XPath(newTicketXpath)).Count > 0) { ReadOnlyCollection <IWebElement> items = WebDriver.FindElements(By.XPath(newTicketXpath)); foreach (var li in items) { if (li.Text == expectedText) { foundRoleSpecificLink = true; roleSpecificLink = li; break; } } } Assert.IsTrue(foundRoleSpecificLink); roleSpecificLink.Click(); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); string expectedUrlEnd = "/Tickets/Create"; Assert.IsTrue(actualUrl.EndsWith(expectedUrlEnd)); }
public void Test_AdminLoggedIn_CanNavigateToPerformRoleChangesPage() { // Arrange var email = "*****@*****.**"; var password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); // Assert var actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.AreEqual(ExpectedLoggedInUrl, actualUrl); var expectedText = "Manage User Roles"; IWebElement roleSpecificLink = null; string navLinkListItemsXpath = "//li[@class='nav-item']"; bool foundRoleSpecificLink = false; if (WebDriver.FindElements(By.XPath(navLinkListItemsXpath)).Count > 0) { ReadOnlyCollection <IWebElement> listItems = WebDriver.FindElements(By.XPath(navLinkListItemsXpath)); foreach (var li in listItems) { if (li.Text == expectedText) { foundRoleSpecificLink = true; roleSpecificLink = li; break; } } } Assert.IsTrue(foundRoleSpecificLink); roleSpecificLink.Click(); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); string expectedUrlEnd = "/ManageUsers/ManageRoles"; Assert.IsTrue(actualUrl.EndsWith(expectedUrlEnd)); }
public void LoginAsDev_NavigateToTicketEdit_TicketEditPageShown() { // Arrange var email = "*****@*****.**"; var password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); // Assert var actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.AreEqual(ExpectedLoggedInUrl, actualUrl); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); var expectedText = "My Projects"; string myProjectsXpath = "//*[text()='My Projects']"; // Assert My Projects has at least one item Assert.IsTrue(WebDriver.FindElements(By.XPath(myProjectsXpath)).Count > 0); IWebElement myProjectsLink = WebDriver.FindElement(By.XPath(myProjectsXpath)); myProjectsLink.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); string expectedUrlEnd = "/Projects/AssignedIndex"; Assert.IsTrue(actualUrl.EndsWith(expectedUrlEnd)); Assert.IsTrue(WebDriver.FindElements(By.TagName("td")).Count > 0); bool testProjectExists = false; string projectTitle = "Testing Only"; IWebElement testProjectLink = null; foreach (var td in WebDriver.FindElements(By.TagName("td"))) { if (td.Text.Contains(projectTitle)) { testProjectExists = true; testProjectLink = td.FindElement(By.TagName("a")); break; } } Assert.IsTrue(testProjectExists); testProjectLink.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); // Project Details Page actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.IsTrue(actualUrl.Contains("/Projects/Details/")); // Find the First Unassigned Ticket and Assign it to [email protected] Assert.IsTrue(WebDriver.FindElements(By.TagName("tr")).Count > 0); IWebElement link = null; foreach (var tr in WebDriver.FindElements(By.TagName("tr"))) { if (tr.FindElements(By.TagName("td")).Count == 0) { continue; } var assignee = tr.FindElements(By.TagName("td"))[3]; if (!String.IsNullOrWhiteSpace(assignee.Text)) { var linkToTicketDash = tr.FindElements(By.TagName("td"))[0]; link = linkToTicketDash.FindElements(By.TagName("a"))[0]; break; } } Assert.IsNotNull(link, "Could not find an Assigned Ticket"); link.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); // Ticket Dashboard Page actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.IsTrue(actualUrl.Contains("/Tickets/Dashboard/")); var editLink = WebDriver.FindElement(By.XPath("//a[text()='Edit']")); editLink.Click(); // Ticket Dashboard Page actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.IsTrue(actualUrl.Contains("/Tickets/Edit/")); }
public void LoginAsSubmitter_CreateNewTicket_NewTicketCreated() { // Arrange var email = "*****@*****.**"; var password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); var actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.AreEqual(ExpectedLoggedInUrl, actualUrl); var expectedText = "New Ticket"; IWebElement roleSpecificLink = null; string newTicketXpath = "//*[text()='New Ticket']"; bool foundRoleSpecificLink = false; // Assert My Projects has at least one item if (WebDriver.FindElements(By.XPath(newTicketXpath)).Count > 0) { ReadOnlyCollection <IWebElement> items = WebDriver.FindElements(By.XPath(newTicketXpath)); foreach (var li in items) { if (li.Text == expectedText) { foundRoleSpecificLink = true; roleSpecificLink = li; break; } } } Assert.IsTrue(foundRoleSpecificLink); roleSpecificLink.Click(); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); string expectedUrlEnd = "/Tickets/Create"; Assert.IsTrue(actualUrl.EndsWith(expectedUrlEnd)); var dateTimeStamp = $"{DateTime.Now.ToString("yyyyMddHHmmss")}"; Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); var ticketTitle = "Test Defect"; Assert.IsTrue(HelperMethods.EnterTextInfoForId(WebDriver, "Title", ticketTitle + " " + dateTimeStamp)); Assert.IsTrue(HelperMethods.EnterTextInfoForId(WebDriver, "Description", "Test Defect Description")); Assert.IsTrue(WebDriver.FindElements(By.Id("ProjectId")).Count > 0); var projectId = WebDriver.FindElement(By.Id("ProjectId")); projectId.Click(); projectId.SendKeys(Keys.ArrowDown); projectId.SendKeys(Environment.NewLine); Assert.IsTrue(WebDriver.FindElements(By.Id("TicketTypeId")).Count > 0); var ticketType = WebDriver.FindElement(By.Id("TicketTypeId")); ticketType.Click(); ticketType.SendKeys(Keys.ArrowDown); ticketType.SendKeys(Environment.NewLine); Assert.IsTrue(WebDriver.FindElements(By.XPath("//input[@type='submit']")).Count > 0); var submitButton = WebDriver.FindElement(By.XPath("//input[@type='submit']")); submitButton.Click(); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); expectedUrlEnd = "/Tickets/Index"; Assert.IsTrue(actualUrl.EndsWith(expectedUrlEnd)); Assert.IsTrue(WebDriver.FindElements(By.TagName("td")).Count > 0); bool newTicketExists = false; foreach (var tr in WebDriver.FindElements(By.TagName("tr"))) { if (tr.FindElements(By.TagName("th")).Count > 0) { var colHeader = tr.FindElements(By.TagName("th"))[0]; colHeader.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); break; } } foreach (var tr in WebDriver.FindElements(By.TagName("tr"))) { if (tr.FindElements(By.TagName("td")).Count == 0) { continue; } var ticketTitleElement = tr.FindElements(By.TagName("td"))[1]; if (ticketTitleElement.Text.Contains(ticketTitle) && ticketTitleElement.Text.Contains(dateTimeStamp)) { newTicketExists = true; break; } } Assert.IsTrue(newTicketExists); }
public void LoginAsPm_AssignTicket_TicketAssigned() { // Arrange var email = "*****@*****.**"; var password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); // Assert - Verify there are no Notifications var unreadNotifcationsCount = WebDriver.FindElement(By.Id("unread-notify-count")); Assert.AreEqual("0", unreadNotifcationsCount.Text); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); // Arrange email = "*****@*****.**"; password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); // Assert var actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.AreEqual(ExpectedLoggedInUrl, actualUrl); // Assert My Projects has at least one item Assert.AreEqual(1, WebDriver.FindElements(By.Id("myProjects")).Count); IWebElement myProjectsLink = WebDriver.FindElement(By.Id("myProjects")); string expectedUrlEnd = "/Projects/AssignedIndex"; int retryCount = 3; do { myProjectsLink.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); } while (!actualUrl.Contains("/Projects/AssignedIndex") && retryCount-- > 0); Assert.IsTrue(actualUrl.EndsWith(expectedUrlEnd)); Assert.IsTrue(WebDriver.FindElements(By.TagName("td")).Count > 0); bool testProjectExists = false; string projectTitle = "Testing Only"; IWebElement testProjectLink = null; foreach (var td in WebDriver.FindElements(By.TagName("td"))) { if (td.Text.Contains(projectTitle)) { testProjectExists = true; testProjectLink = td.FindElement(By.TagName("a")); break; } } // Go to Project Details Page Assert.IsTrue(testProjectExists); testProjectLink.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.IsTrue(actualUrl.Contains("/Projects/Details/")); // Find the First Unassigned Ticket and Assign it to [email protected] Assert.IsTrue(WebDriver.FindElements(By.TagName("tr")).Count > 0); IWebElement editLink = null; foreach (var tr in WebDriver.FindElements(By.TagName("tr"))) { if (tr.FindElements(By.TagName("th")).Count > 0) { var assigneeColHeader = tr.FindElements(By.TagName("th"))[3]; assigneeColHeader.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); break; } } foreach (var tr in WebDriver.FindElements(By.TagName("tr"))) { if (tr.FindElements(By.TagName("td")).Count == 0) { continue; } var assignee = tr.FindElements(By.TagName("td"))[3]; if (String.IsNullOrWhiteSpace(assignee.Text)) { var tdWithActions = tr.FindElements(By.TagName("td"))[9]; editLink = tdWithActions.FindElements(By.TagName("a"))[0]; break; } } Assert.IsNotNull(editLink, "Could not find an Un-assigned Ticket"); editLink.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); // Ticket Edit Page actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.IsTrue(actualUrl.Contains("/Tickets/Edit/")); Assert.AreEqual(1, WebDriver.FindElements(By.Id("AssignedToId")).Count); var assignedTo = WebDriver.FindElement(By.Id("AssignedToId")); assignedTo.Click(); assignedTo.SendKeys(Keys.ArrowDown); assignedTo.SendKeys(Environment.NewLine); Assert.AreEqual(1, WebDriver.FindElements(By.XPath("//input[@type='submit']")).Count); var submitButton = WebDriver.FindElement(By.XPath("//input[@type='submit']")); submitButton.Click(); actualUrl = WebDriver.Url; actualUrl = actualUrl.Trim(new[] { '/' }); Assert.IsTrue(actualUrl.Contains("/Tickets/Edit/")); // Arrange email = "*****@*****.**"; password = "******"; // Act HelperMethods.LoginUser(WebDriver, Url, email, password); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); // Assert Dev now has a Notification unreadNotifcationsCount = WebDriver.FindElement(By.Id("unread-notify-count")); Assert.AreEqual("1", unreadNotifcationsCount.Text); unreadNotifcationsCount.Click(); Assert.IsTrue(WebDriver.FindElements(By.XPath("//button[@type='submit']/*/div[@class='small text-gray-500']")).Count > 0); var notification = WebDriver.FindElement(By.XPath("//button[@type='submit']/*/div[@class='small text-gray-500']")); notification.Click(); Thread.Sleep(TimeSpan.FromMilliseconds(SleepMs)); unreadNotifcationsCount = WebDriver.FindElement(By.Id("unread-notify-count")); Assert.AreEqual("0", unreadNotifcationsCount.Text); }