Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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/"));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }