public void TestExecution()
        {
            //Paremeters
            var textMessageFailed = string.Empty;
            var generatedEmail    = Config.Credentials.Valid.Email;

            HomePage           homePage       = new HomePage();
            SignInPage         signInPage     = new SignInPage();
            SignInFormPage     signInFormPage = new SignInFormPage();
            AccountPage        accountPage    = new AccountPage();
            WebDriverWait      webDriverWait  = new WebDriverWait(Driver.driver, TimeSpan.FromSeconds(20));
            Products           products       = new Products();
            ProductDetailsPage detailsPage    = new ProductDetailsPage();
            ShoppingCart       shoppingCart   = new ShoppingCart();

            try
            {
                //Testing 'Sign Up' option
                SignIn.CreateAnAccount(Driver.driver, webDriverWait, homePage, signInPage, generatedEmail);

                SignIn.FillSignUpFormSubmit(Driver.driver, webDriverWait, signInFormPage, accountPage);

                //Testing 'Log In' option
                SignIn.LogIn(Driver.driver, webDriverWait, accountPage, homePage, signInPage, generatedEmail);

                //Adding products to cart using search input
                OrderProcess.AddBySearchInput(Driver.driver, webDriverWait, homePage, products, detailsPage);

                //Remove product from cart
                CheckoutFlow.DeleteProduct(Driver.driver, webDriverWait, homePage, shoppingCart);

                //Complete checkout flow
                CheckoutFlow.CompleteCheckout(Driver.driver, webDriverWait, shoppingCart);

                _testOutcome = UnitTestOutcome.Passed;
            }
            catch (Exception ex)
            {
                textMessageFailed  = "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
                textMessageFailed += "\nTest case failed!";
                textMessageFailed += "\nError: " + ex.Message;
                textMessageFailed += "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
                textMessageFailed += "\nException: " + ex.ToString();

                ActionsPerforming.TakingScreenshotOnFailure(Driver.driver);

                _testOutcome = UnitTestOutcome.Failed;

                Assert.Fail(textMessageFailed);
            }
        }
        public static void CompleteCheckout(IWebDriver driver, WebDriverWait webDriverWait, ShoppingCart shoppingCart)
        {
            ActionsPerforming.ClickElement(driver, webDriverWait, shoppingCart.CheckoutButton, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, shoppingCart.CheckoutButtonAddress, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, shoppingCart.TermsOfService);

            ActionsPerforming.ClickElement(driver, webDriverWait, shoppingCart.CheckoutButtonShippping, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, shoppingCart.Bankwire, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, shoppingCart.ConfirmOrderButton, true);

            Assert.AreEqual(shoppingCart.Price.Text, "$33.80");
        }
        public static void AddBySearchInput(IWebDriver driver, WebDriverWait webDriverWait, HomePage homePage, Products product, ProductDetailsPage detailsPage)
        {
            ActionsPerforming.InputOfStringWithSpecialCharacters(driver, webDriverWait, homePage.SearhInput,
                                                                 Config.TestData.SearchItems.SearchTerm);

            ActionsPerforming.ClickElement(driver, webDriverWait, homePage.SearhInputSubmit, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, product.ModelDemo5, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, detailsPage.SubmitButton);

            ActionsPerforming.ClickElement(driver, webDriverWait, detailsPage.ClosePopUpButton, true);

            ActionsPerforming.InputOfStringWithSpecialCharacters(driver, webDriverWait, homePage.SearhInput,
                                                                 Config.TestData.SearchItems.SearchTerm);

            ActionsPerforming.ClickElement(driver, webDriverWait, homePage.SearhInputSubmit, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, product.ModelDemo6, true);

            ActionsPerforming.ClickElement(driver, webDriverWait, detailsPage.SubmitButton);

            ActionsPerforming.ClickElement(driver, webDriverWait, detailsPage.CheckoutButtonDetails, true);
        }
 public static void DeleteProduct(IWebDriver driver, WebDriverWait webDriverWait, HomePage homePage, ShoppingCart shoppingCart)
 {
     ActionsPerforming.ClickElement(driver, webDriverWait, shoppingCart.TrashIconOne, true);
 }