Skip to content
Open
2 changes: 2 additions & 0 deletions pbl/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
IP_ADDRESS=localhost
PBLCLIENT_PORT=8001
164 changes: 164 additions & 0 deletions pbl/CreateModulePageTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
__author__ = 'aadarshsingh'

import unittest
import argparse
import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoAlertPresentException , TimeoutException, NoSuchElementException, StaleElementReferenceException
# from selenium.common.exceptions import TimeoutException
import random
import string
from decouple import config

IP = config('IP_ADDRESS')
PORT = config('PBLCLIENT_PORT')


class LoginCorrect(unittest.TestCase):



def setUp(self):

user = "aadarshsingh191198"
pwd= "root1234"
# self.driver = webdriver.Remote(command_executor='http://10.196.24.237:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX)
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.get("http://"+IP+":"+PORT+"/login")
elem = self.driver.find_element_by_id("username")
elem.send_keys(user)
elem = self.driver.find_element_by_id("password")
elem.send_keys(pwd)
elem = self.driver.find_element_by_name("user_type")
elem.click()
elem = self.driver.find_element_by_id("sign_in_btn")
elem.click()


self.driver.implicitly_wait(10)
# time.sleep(10)
self.driver.find_elements_by_css_selector("#headerMenuCollapse li.nav-item>a")[3].click()

elem = self.driver.find_element_by_id("project_title")
title = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
elem.send_keys(title)
elem = self.driver.find_element_by_id("project_description")
elem.send_keys("Something1")
self.driver.find_element_by_id("save_and_redirect_btn").click()

self.driver.implicitly_wait(10)

def test_AddRemove(self):

fields = self.driver.find_elements_by_css_selector("table>tbody>tr")[0].find_elements_by_tag_name("textarea")
module_title = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
fields[0].send_keys(module_title)
module_desc = ''.join(random.choice(string.ascii_lowercase) for _ in range(20))
fields[1].send_keys(module_desc)

#extra modules to be added

no=6


for i in range(no):
self.driver.find_element_by_id("add_new_module").click()
try:
field = self.driver.find_elements_by_css_selector("table>tbody>tr")[i+1].find_elements_by_tag_name("textarea")
module_title = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
field[0].send_keys(module_title)
module_desc = ''.join(random.choice(string.ascii_lowercase) for _ in range(20))
field[1].send_keys(module_desc)

except:
print ("row not added")
self.fail("Add button does not add row.")
# boxes = self.driver.find_elements_by_css_selector("table>tbody>tr")
# if len(boxes) != i + 2:

# print("Row not added")

# boxes = self.driver.find_elements_by_css_selector("table>tbody>tr")

# if len(boxes) == no+1:
# print ("All rows added Successfully")
for i in range(no):
self.driver.find_element_by_id("remove_last_module").click()
boxes = self.driver.find_elements_by_css_selector("table>tbody>tr")
length = len(boxes)
if length != no -i :
self.assertFalse(boxes[i].is_displayed(), "Remove button did not work")
# print("Box not removed",i)
# else:
# print("Box removed")


if len(boxes)==1:
self.driver.find_element_by_id("remove_last_module").click()
try:
self.assertTrue(boxes[0].is_displayed(),"Last button not removed")
except StaleElementReferenceException:
self.fail("Last box removed.")


self.driver.quit()

def test_EmptyModule(self):

self.driver.find_element_by_id("submit_project").click()

try:
#switch control to the alert box,by creating a alert object
alert = self.driver.switch_to_alert()
self.alert_wait()
#accept the alert
alert.accept()
except NoAlertPresentException:
self.fail("No alert found")



self.driver.quit()


def test_SaveModule(self):


fields = self.driver.find_elements_by_css_selector("table>tbody>tr")[0].find_elements_by_tag_name("textarea")
module_title = ''.join(random.choice(string.ascii_uppercase) for _ in range(10))
fields[0].send_keys(module_title)
module_desc = ''.join(random.choice(string.ascii_lowercase) for _ in range(20))
fields[1].send_keys(module_desc)

self.driver.find_element_by_id("submit_project").click()
try:
WebDriverWait(self.driver, 10).until(EC.alert_is_present())
alert = self.driver.switch_to.alert
self.assertEqual("{\"msg\": \"Project Successfully Added\", \"status\": \"true\"}", alert.text)
alert.accept()
# print("Successfully submitted")
except TimeoutException:
self.fail("No alert")


self.driver.quit()


def tearDown(self):
self.driver.quit()


if __name__ == '__main__':

parser = argparse.ArgumentParser(description='My program.')
parser.add_argument('-u', '--username', type=str)
parser.add_argument('-p', '--password', type=str)

args = parser.parse_args()

unittest.main()

106 changes: 106 additions & 0 deletions pbl/Login_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
__author__ = 'naveen t'

import unittest
import random
import string
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.action_chains import ActionChains
from decouple import config


IP = config('IP_ADDRESS')
PORT = config('PBLCLIENT_PORT')

class LoginCorrect(unittest.TestCase):

def setUp(self):
self.driver = webdriver.Firefox()

def test_UI7_1(self):

print "http://"+IP+":"+PORT+"/register/"

fname = 'Saurabh'+''.join(random.SystemRandom().choice(string.digits) for _ in range(3))
lname = 'Singh'+''.join(random.SystemRandom().choice(string.digits) for _ in range(3))
cno = ''.join(random.SystemRandom().choice(string.digits) for _ in range(10))
email = 'saurabh'+''.join(random.SystemRandom().choice(string.digits) for _ in range(3))+'@gmail.com'
user = ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(6))
pwd= ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(8))

# Creating User account
driver = self.driver

driver.get("http://"+IP+":"+PORT+"/register/")
elem = driver.find_element_by_id("first_name")
elem.send_keys(fname)
elem = driver.find_element_by_id("last_name")
elem.send_keys(lname)
elem = driver.find_element_by_id("contact_no")
elem.send_keys(cno)
elem = driver.find_element_by_id("email")
elem.send_keys(email)
elem = driver.find_element_by_id("username")
elem.send_keys(user)
elem = driver.find_element_by_id("password")
elem.send_keys(pwd)
driver.find_element_by_name('user_type').click()
driver.find_element_by_id('create_account_btn').click()

driver.get("http://"+IP+":"+PORT+"/login")
elem = driver.find_element_by_id("username")
elem.send_keys(user)
elem = driver.find_element_by_id("password")
elem.send_keys(pwd)
driver.find_element_by_name("user_type").click()
driver.find_element_by_class_name("custom-checkbox").click()
driver.find_element_by_id("sign_in_btn").click()
assert "dashboard" in driver.current_url

def test_UI7_2(self):
user = ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(6))
pwd= ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(8))


driver = self.driver
driver.get("http://"+IP+":"+PORT+"/login")
elem = driver.find_element_by_id("username")
elem.send_keys(user)
elem = driver.find_element_by_id("password")
elem.send_keys(pwd)
driver.find_element_by_name("user_type").click()
driver.find_element_by_class_name("custom-checkbox").click()
driver.find_element_by_id("sign_in_btn").click()

assert "login" in driver.current_url

def test_UI7_3(self):
driver = self.driver
driver.get("http://"+IP+":"+PORT+"/login")
driver.find_element_by_id("sign_in_btn").click()
alertmessage = self.driver.switch_to.alert.text
self.assertEqual("Enter All Information", alertmessage)

def test_UI7_4(self):

driver=self.driver
driver.get("http://"+IP+":"+PORT+"/login")
element = driver.find_element_by_link_text("Sign up")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
hover = ActionChains(driver).move_to_element(element).perform()
txtdec = element.value_of_css_property('text-decoration')
self.assertEqual('underline', txtdec)

def test_UI7_5(self):

driver=self.driver
driver.get("http://"+IP+":"+PORT+"/login")
driver.find_element_by_link_text('Sign up').click()
assert "register" in driver.current_url

def tearDown(self):
self.driver.quit()


if __name__ == '__main__':
unittest.main()
60 changes: 60 additions & 0 deletions pbl/ProjectPageTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
__author__ = 'dhanushsr'

import unittest
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from decouple import config

IP = config('IP_ADDRESS')
PORT = config('PBLCLIENT_PORT')

class ProjectPage(unittest.TestCase):



def setUp(self):
# self.driver = webdriver.Remote(command_executor='http://192.168.119.128:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX)
self.driver = webdriver.Firefox()

def test_UI5_1(self):
driver = self.driver
driver.get("http://"+IP+":"+PORT+"/dashboard")
# driver.find_element_by_xpath('//*[@id="headerMenuCollapse"]/div/div/div[2]/ul/li[5]/a').click()
driver.find_element_by_link_text('Create new project').click()
assert "Create a new Project" in driver.page_source

def test_UI5_2(self):
driver = self.driver
driver.get("http://"+IP+":"+PORT+"/create_project")
driver.find_element_by_id("save_and_redirect_btn").click()
alertmessage = self.driver.switch_to.alert.text
self.assertEqual("Please enter all information to continue", alertmessage)

def test_UI5_3(self):
driver = self.driver
driver.get("http://"+IP+":"+PORT+"/create_project")
driver.find_element_by_xpath('//*[@id="createTodoForm"]/fieldset/div[4]/button[2]').click()
assert "dashboard" in driver.current_url

def test_UI5_4(self):
driver = self.driver
driver.get("http://"+IP+":"+PORT+"/create_project")
elem = driver.find_element_by_id("project_title")
elem.send_keys("Testing")
elem = driver.find_element_by_id("project_description")
elem.send_keys("Sample testing Project")
elem = driver.find_element_by_id("no_of_modules")
elem.send_keys("2")
driver.find_element_by_id("save_and_redirect_btn").click()
assert "Testing/Module List" in driver.page_source


def tearDown(self):
self.driver.quit()


if __name__ == '__main__':
unittest.main()
Binary file added pbl/Proposed Test Cases for the PBL Project..xlsx
Binary file not shown.
21 changes: 21 additions & 0 deletions pbl/README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Project Based Learning


Please find the proposed test cases at this link:

`https://docs.google.com/spreadsheets/d/1AdTJQ2Q9X8NBSFcyU2_FhzGOXAuYSgkXdksYEJ3LwPQ/edit?usp=sharing'



1. .env file:

```
IP_ADDRESS=localhost
PBLCLiENT_PORT=8001
```

2. Follow installation steps from the PBL project

3. Note that PBLCLIENT should run on port 8001 and PBL_BACKEND should run on port 8000

4. There is no specific order of testing. Each test case file is independent of all others.
Loading