public void InterviewTest(List <string> menuItems, string menuToNavigate,
                                  string menuToPrint, string searchValue, int elementsToPrint, int numberOfItems)
        {
            try
            {
                HomePage           homePage           = new HomePage(Driver, DriverWait);
                WindowsPage        windowsPage        = new WindowsPage(Driver, DriverWait);
                SearchResultsPage  searchResultsPage  = new SearchResultsPage(Driver, DriverWait);
                ProductDetailsPage productDetailsPage = new ProductDetailsPage(Driver, DriverWait);
                ShoppingCartPage   shoppingCartPage   = new ShoppingCartPage(Driver, DriverWait);
                string             storedPrice;

                //Step 1. Go to https://www.microsoft.com/en-us/
                homePage.NavigateTo();

                //Step 2. Validate all menu items are present (Office - Windows - Surface - Xbox - Deals - Support)
                var menuNames = homePage.GetMenuNames();
                Assert.AreEqual(menuItems, menuNames);

                //Step 3. Go to Windows
                homePage.ClickMenu(menuToNavigate);
                Assert.IsTrue(Driver.Url.ToUpper().Contains(menuToNavigate.ToUpper()));

                //Step 4. Once in Windows page, click on Windows 10 Menu
                windowsPage.ClickMenu(menuToPrint);

                //Step 5. Print all Elements in the dropdown
                var itemsToPrint = windowsPage.GetMenuDropDownList();
                foreach (var item in itemsToPrint)
                {
                    Console.WriteLine(item);
                }

                //Step 6. Go to Search next to the shopping cart
                windowsPage.ClickSearchButton();

                //Step 7. Search for Visual Studio
                windowsPage.PerformSearch(searchValue);

                //Step 8. Print the price for the 3 first elements listed in Software result list
                searchResultsPage.ValidateStoreLanguage();
                var priceList = searchResultsPage.GetPriceList();
                if (priceList.Count < elementsToPrint)
                {
                    Console.WriteLine("Not enough elements to print");
                    Assert.Fail();
                }
                else
                {
                    for (int i = 0; i < elementsToPrint; i++)
                    {
                        Console.WriteLine(priceList[i]);
                    }
                }

                //Step 9. Store the price of the first one
                storedPrice = priceList.First();

                //Step 10. Click on the first one to go to the details page
                searchResultsPage.ClickProductByPrice(storedPrice);

                //Step 11. Once in the details page, validate both prices are the same
                productDetailsPage.DenyNewsletter();
                Assert.AreEqual(storedPrice, productDetailsPage.GetProductPrice());

                //Step 12. Click Add To Cart
                productDetailsPage.ClickAddToCartButton();

                //Step 13. Verify all 3 price amounts are the same
                var priceAmounts = shoppingCartPage.GetProductPriceList();
                foreach (var price in priceAmounts)
                {
                    Assert.AreEqual(storedPrice, price);
                }

                //Step 14. On the # of items dropdown select 20 and validate the Total amount is Unit Price * 20
                shoppingCartPage.SetNumberOfItems(numberOfItems);
                var expectedTotalAmount = CurrencyConverter.FromCurrency(storedPrice) * numberOfItems;
                var actualTotalAmount   = CurrencyConverter.FromCurrency(shoppingCartPage.GetProductGrossPrice());
                Assert.AreEqual(expectedTotalAmount, actualTotalAmount);
            }
            catch (AssertionException ex)
            {
                Console.WriteLine($"Assertion Failed with message: {ex.Message}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Fatal error with message: {ex.Message}");
                Assert.Fail();
            }
        }