Started creating selenium tests for archiving posts
This commit is contained in:
parent
139c647d4a
commit
749dbc33e5
|
@ -0,0 +1,30 @@
|
||||||
|
Feature: Archive Posts
|
||||||
|
As a user,
|
||||||
|
I would like to archive posts
|
||||||
|
so i can view the post even if the original post is deleted
|
||||||
|
|
||||||
|
Scenario: Successfully archive a post
|
||||||
|
Given that I am on a explore page
|
||||||
|
When I click on the "Archive" link on a post
|
||||||
|
Then the link should change to "Remove from Archive"
|
||||||
|
And a banner shows that the post has been archived
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: Successfully remove an archived post from the explore page
|
||||||
|
Given that I am on an review page
|
||||||
|
When I click on the "Remove from Archive" link
|
||||||
|
Then the link should change to "Archive"
|
||||||
|
And a banner shows that the post has been removed from my archives
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: Successfully remove an archived post from the archived page
|
||||||
|
Given that I am on an archived page
|
||||||
|
When I click on the "Remove from Archive" link
|
||||||
|
Then the archived post should disappear
|
||||||
|
And a banner shows that the post has been removed from my archives
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: View archived posts
|
||||||
|
Given that I am on my user profile page
|
||||||
|
When I click on the "View Archived Posts" link
|
||||||
|
Then I should be directed to a page displaying all my archived posts
|
|
@ -0,0 +1,52 @@
|
||||||
|
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("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
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue