public void Search_Description()
        {
            // Arrange
            int expectedCountOfProducts = 10;

            string[] expectedTextAppears = products.Products.SearchDescription.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            string[] actualTextAppears   = new string[11];
            string   searchText          = "Apple";
            int      i = 0;

            // Act
            Pages.PagesList pages = new Pages.PagesList(driver);
            /* Click on Search button on Home page */
            pages.HomePage.ClickMainSearch();
            /* Set search text into field on Search page */
            pages.SearchPage.SetSearchCriteriaInput(searchText);
            /* Check the checkbox to search in description */
            pages.SearchPage.ClickSearchInDescriptionCheckBox();
            /* Click on Search button on Search page */
            pages.SearchPage.ClickSearchButton();
            /* Count how many products appear */
            int actualCountOfProducts = pages.SearchPage.CountProductBlocks();
            /* Get names of each product */
            IList <IWebElement> listofProducts = pages.SearchPage.GetProductNameList();

            // Assert
            foreach (IWebElement product in listofProducts) // Assert expected product names and actual match
            {
                actualTextAppears[i] = product.Text;
                Assert.AreEqual(expectedTextAppears[i], actualTextAppears[i]);
                i++;
            }
            Assert.AreEqual(actualCountOfProducts, expectedCountOfProducts);
        }
        public void Search_From_Main_Acer()
        {
            // Arrange
            int expectedCountOfProducts = 2;

            string[] expectedTextAppear = products.Products.SearchMainAcer.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); //{ "Acer Chromebook 11-CB3-111", "Acer TravelMate P249-M" };
            string[] actualTextAppear   = new string[3];
            string   searchText         = "Acer";
            int      i = 0;

            // Act
            Pages.PagesList pages = new Pages.PagesList(driver);
            /* Set search text into field on Home page */
            pages.HomePage.SetMainSearch(searchText);
            /* Click on Search button on Home page */
            pages.HomePage.ClickMainSearch();
            /* Count how many products appear */
            int actualCountOfProducts = pages.SearchPage.CountProductBlocks();
            /* Get names of each product */
            IList <IWebElement> listofProducts = pages.SearchPage.GetProductNameList();

            // Assert
            foreach (IWebElement product in listofProducts) // Assert expected product names and actual match
            {
                actualTextAppear[i] = product.Text;
                Assert.AreEqual(expectedTextAppear[i], actualTextAppear[i]);
                i++;
            }
            Assert.AreEqual(actualCountOfProducts, expectedCountOfProducts); // Assert expected count and actual match
        }
        public void Search_From_Main_Nothing()
        {
            // Arrange
            string expectedTextAppear = "There is no product that matches the search criteria.";

            // Act
            Pages.PagesList pages = new Pages.PagesList(driver);
            /* Click on Search button on Home page */
            pages.HomePage.ClickMainSearch();
            string actualTextAppear = pages.SearchPage.GetNoProductsLabelText();

            // Assert
            Assert.AreEqual(expectedTextAppear, actualTextAppear); // If error text match
        }
        public void Search_ZA_ModelSort_Show50()
        {
            // Arrange
            int expectedCountOfProducts = 50;

            string[] expectedTextAppears = products.Products.SearchZAModelSortShow50.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            string[] actualTextAppears   = new string[51];
            string   searchText          = "a";
            int      i = 0;
            string   expectedShowingText = "Showing 1 to 50 of 55 (2 Pages)";

            // Act
            Pages.PagesList pages = new Pages.PagesList(driver);
            /* Click on Search button on Home page */
            pages.HomePage.ClickMainSearch();
            /* Set search text into field on Search page */
            pages.SearchPage.SetSearchCriteriaInput(searchText);
            /* Check the checkbox to search in description */
            pages.SearchPage.ClickSearchInDescriptionCheckBox();
            /* Click on Search button on Search page */
            pages.SearchPage.ClickSearchButton();
            /* Click on Sort drop down menu to pick how to sort on Search page */
            pages.SearchPage.ClickSortDDMenu();
            /* Click on Model('Z - A') to select how to sort seached products */
            pages.SearchPage.ClickSortModelZA();
            /* Click on Show drop down menu to pick how many products need to show on Search page */
            pages.SearchPage.ClickShowDDMenu();
            /* Click on '50' to show 50 products */
            pages.SearchPage.ClickShow_50();
            /* Count how many products appear */
            int actualCountOfProducts = pages.SearchPage.CountProductBlocks();
            /* Get names of each product */
            IList <IWebElement> listofProducts = pages.SearchPage.GetProductNameList();
            /* Get Showing text on the bottom of the Search page */
            string actualShowing = pages.SearchPage.GetProductsShowingText();

            // Assert
            foreach (IWebElement product in listofProducts) // Assert expected product names and actual match
            {
                actualTextAppears[i] = product.Text;
                Assert.AreEqual(expectedTextAppears[i], actualTextAppears[i]);
                i++;
            }
            Assert.AreEqual(actualCountOfProducts, expectedCountOfProducts); // Assert expected count and actual match
            Assert.AreEqual(expectedShowingText, expectedShowingText);       // Assert expected text and actual match
        }
        public void Search_Type_Grid()
        {
            // Arrange
            int expectedCountOfProducts = 15;

            string[] expectedTextAppears = products.Products.SearchTypeList.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            string[] actualTextAppears   = new string[16];
            string   searchText          = "a";
            int      i = 0;
            string   expectedShowingText = "Showing 1 to 15 of 35 (3 Pages)";
            bool     isGrid = false;

            // Act
            Pages.PagesList pages = new Pages.PagesList(driver);
            /* Click on Search button on Home page */
            pages.HomePage.ClickMainSearch();
            /* Set search text into field on Search page */
            pages.SearchPage.SetSearchCriteriaInput(searchText);
            /* Click on Sort drop down menu to pick how to sort on Search page */
            pages.SearchPage.ClickSearchButton();
            /* Click on Grid button to change to 'Grid' type of view */
            pages.SearchPage.ClickGridBtn();
            /* Count how many products appear */
            int actualCountOfProducts = pages.SearchPage.CountProductBlocks();
            /* Get names of each product */
            IList <IWebElement> listofProducts = pages.SearchPage.GetProductNameList();
            /* Get Showing text on the bottom of the Search page */
            string actualShowingText = pages.SearchPage.GetProductsShowingText();
            /* Get 'true' if type of view is 'Grid'*/
            bool gridOrNot = pages.SearchPage.GetGridOrNot();

            // Assert
            foreach (IWebElement product in listofProducts) // Assert expected product names and actual match
            {
                actualTextAppears[i] = product.Text;
                Assert.AreEqual(expectedTextAppears[i], actualTextAppears[i]);
                i++;
            }
            Assert.AreEqual(expectedCountOfProducts, actualCountOfProducts); // Assert expected count and actual match
            Assert.AreEqual(expectedShowingText, actualShowingText);         // Assert expected text and actual match
            Assert.AreEqual(true, gridOrNot);                                // Assert expected display type and actual
        }
        public void Search_LowHigh_PriceSort()
        {
            // Arrange
            int expectedCountOfProducts = 15;

            string[] expectedTextAppears = products.Products.SearchLowHighPriceSort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            string[] actualTextAppears   = new string[16];
            int      i                   = 0;
            string   searchText          = "a";
            string   expectedShowingText = "Showing 1 to 15 of 55 (4 Pages)";

            // Act
            Pages.PagesList pages = new Pages.PagesList(driver);
            /* Click on Search button on Home page */
            pages.HomePage.ClickMainSearch();
            /* Set search text into field on Search page */
            pages.SearchPage.SetSearchCriteriaInput(searchText);
            /* Check the checkbox to search in description */
            pages.SearchPage.ClickSearchInDescriptionCheckBox();
            /* Click on Search button on Search page */
            pages.SearchPage.ClickSearchButton();
            /* Click on Sort drop down menu to pick how to sort on Search page */
            pages.SearchPage.ClickSortDDMenu();
            /* Click on Price('Low - High') to select how to sort seached products */
            pages.SearchPage.ClickSortPriceLowHigh();
            /* Count how many products appear */
            int actualCountOfProducts = pages.SearchPage.CountProductBlocks();
            /* Get cost of each product */
            IList <IWebElement> listofProducts = pages.SearchPage.GetProductCostList();
            /* Get Showing text on the bottom of the Search page */
            string actualShowingText = pages.SearchPage.GetProductsShowingText();

            // Assert
            foreach (IWebElement product in listofProducts) // Assert expected product names and actual match
            {
                actualTextAppears[i] = product.Text;
                Assert.AreEqual(expectedTextAppears[i], actualTextAppears[i]);
                i++;
            }
            Assert.AreEqual(actualCountOfProducts, expectedCountOfProducts); // Assert expected count and actual match
            Assert.AreEqual(expectedShowingText, actualShowingText);         // Assert expected text and actual match
        }