From 858f7cccdfa99eb4590921c98519863a285a369a Mon Sep 17 00:00:00 2001 From: Aleksa V Date: Wed, 8 Mar 2023 19:52:19 -0500 Subject: [PATCH] Missed a file --- tests/features/add-task.feature | 8 +++---- tests/features/how-to-run-behave.md | 5 ----- tests/features/steps/add-task-steps.py | 30 ++++++++++++++++++++------ tests/features/steps/check-ui-steps.py | 21 ++++++++++++------ tests/unit/how-to-run-tests.md | 11 ---------- 5 files changed, 42 insertions(+), 33 deletions(-) delete mode 100644 tests/features/how-to-run-behave.md delete mode 100644 tests/unit/how-to-run-tests.md diff --git a/tests/features/add-task.feature b/tests/features/add-task.feature index 07b2634..3e1c284 100644 --- a/tests/features/add-task.feature +++ b/tests/features/add-task.feature @@ -11,7 +11,7 @@ Feature: Add tasks to todo list Scenario: Add a new task to the todo list Given I am on the todo list page - When I enter "Buy groceries" in the title field - And I enter "2" in the estimate field - And I click the "Add" button - Then the task "Buy groceries" with estimate "2" should be added to the todo list \ No newline at end of file + When I enter 'Buy groceries' in the title field + And I enter '2' in the estimate field + And I click the 'Add' button + Then the task 'Buy groceries' with estimate '2' should be added to the todo list \ No newline at end of file diff --git a/tests/features/how-to-run-behave.md b/tests/features/how-to-run-behave.md deleted file mode 100644 index e49a513..0000000 --- a/tests/features/how-to-run-behave.md +++ /dev/null @@ -1,5 +0,0 @@ -How to run behave tutorial - -1. Running all behave features - -run " behave tests/features/add-task.feature " \ No newline at end of file diff --git a/tests/features/steps/add-task-steps.py b/tests/features/steps/add-task-steps.py index 652025e..4fa5cf2 100644 --- a/tests/features/steps/add-task-steps.py +++ b/tests/features/steps/add-task-steps.py @@ -1,38 +1,54 @@ -from behave import * +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 -@given(u'I am on the todo list page') +#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): - context.driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) + + # 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') +@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') +@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(u'I click the "Add" button') +@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') +@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 + + diff --git a/tests/features/steps/check-ui-steps.py b/tests/features/steps/check-ui-steps.py index 698df79..1f07681 100644 --- a/tests/features/steps/check-ui-steps.py +++ b/tests/features/steps/check-ui-steps.py @@ -1,30 +1,39 @@ -from behave import * +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(u'the user is on the todo list page') +@given("the user is on the todo list page") def open_browser(context): - context.driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) + 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/") -@then(u'the page should have a text field to enter the title of the task') +@then("the page should have a text field to enter the title of the task") def check_task_title_textbox(context): status = context.driver.find_element(By.NAME, "title").is_displayed() assert status is True -@then(u'the page should have a text field to enter the estimate of hours needed to complete the task') +@then("the page should have a text field to enter the estimate of hours needed to complete the task") def check_task_estimate_textbox(context): status = context.driver.find_element(By.NAME, "estimate").is_displayed() assert status is True -@then(u'the page should have a button to add the task') +@then("the page should have a button to add the task") def check_task_add_button(context): status = context.driver.find_element(By.XPATH, "//button[contains(text(),'Add')]").is_displayed() assert status is True diff --git a/tests/unit/how-to-run-tests.md b/tests/unit/how-to-run-tests.md deleted file mode 100644 index c6e8720..0000000 --- a/tests/unit/how-to-run-tests.md +++ /dev/null @@ -1,11 +0,0 @@ -How to run unit tests - -unit tests must follow the "test*.py" regex to be picked up - -1. Individual tests - -run " python .\tests\unit\test_example.py " - -2. Run all unit tests - -run " python -m unittest discover -s ./tests/unit " \ No newline at end of file