from behave import given, when, then from webdriver_manager.chrome import ChromeDriverManager from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options #THESE ARE EXAMPLES FILES. #Todo delete these once we set a standard with our own tests @given("I am on the todo list page") def open_browser(context): # Implementation of headless from https://stackoverflow.com/questions/46920243/how-to-configure-chromedriver-to-initiate-chrome-browser-in-headless-mode-throug # Stackoverflow post desribes what is goin on with options to enable headless chrome options = Options() options.add_argument("--headless") # Runs Chrome in headless mode. options.add_argument('--no-sandbox') # Bypass OS security model options.add_argument('start-maximized') #to maximize viewport this should still be headless options.add_argument('disable-infobars') options.add_argument("--disable-extensions") context.driver = webdriver.Chrome(options=options, service=ChromeService(ChromeDriverManager().install())) context.driver.implicitly_wait(5) context.driver.get("http://127.0.0.1:5000/") @when("I enter '{title}' in the title field") def step_impl(context, title): title_field = context.driver.find_element(By.NAME, "title") title_field.send_keys(title) @when("I enter '{estimate}' in the estimate field") def step_impl(context, estimate): estimate_field = context.driver.find_element(By.NAME, "estimate") estimate_field.send_keys(estimate) @when("I click the 'Add' button") def step_impl(context): add_button = context.driver.find_element(By.XPATH, "//button[contains(text(),'Add')]") add_button.click() context.driver.implicitly_wait(5) @then("the task '{title}' with estimate '{estimate}' should be added to the todo list") def step_impl(context, title, estimate): dump_text = context.driver.page_source print(dump_text) assert ("Buy groceries | 2" in dump_text) is True