-
Notifications
You must be signed in to change notification settings - Fork 0
/
lost_hat_smoke_tests.py
75 lines (65 loc) · 2.89 KB
/
lost_hat_smoke_tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.events import EventFiringWebDriver
from helpers.wrappers import screenshot_decorator
from helpers.screenshot_listener import ScreenshotListener
class LostHatSmokeTests(unittest.TestCase):
@classmethod
def setUpClass(self):
self.base_url = 'https://autodemo.testoneo.com/en/'
self.login_url = self.base_url + 'login'
self.clothes_product_url = self.base_url + '3-clothes'
self.accessories_product_url = self.base_url + '6-accessories'
self.art_product_url = self.base_url + '9-art'
driver = webdriver.Chrome(executable_path=r"C:\Users\andrejew\PycharmProjects\chromedriver")
self.ef_driver = EventFiringWebDriver(driver, ScreenshotListener())
@classmethod
def tearDownClass(self):
self.ef_driver.quit()
@screenshot_decorator
def test_base_page_title(self):
expected_title = "Lost Hat"
self.assert_title(self.base_url, expected_title)
@screenshot_decorator
def test_product_clothes_page_title(self):
url = "https://autodemo.testoneo.com/en/3-clothes"
expected_title = "Clothes"
self.assert_title(url, expected_title)
@screenshot_decorator
def test_accessories_product(self):
url = "https://autodemo.testoneo.com/en/6-accessories"
expected_title = "Accessories"
self.assert_title(url, expected_title)
@screenshot_decorator
def test_art_product(self):
url = 'https://autodemo.testoneo.com/en/9-art'
expected_title = "Art"
self.assert_title(url, expected_title)
def get_page_title(self, url):
self.ef_driver.get(url)
return self.ef_driver.title
@screenshot_decorator
def test_smoke_search_on_main_page(self):
search_phase = 'mug'
search_input_xpath = '//*[@name="s"]'
result_element_xpath = '//*[@class="product-miniature js-product-miniature"]'
minimum_expected_elements = 5
self.ef_driver.get(self.base_url)
search_input_element = self.ef_driver.find_element_by_xpath(search_input_xpath)
search_input_element.send_keys(search_phase)
search_input_element.send_keys(Keys.ENTER)
result_elements = self.ef_driver.find_elements_by_xpath(result_element_xpath)
self.assertGreaterEqual(
len(result_elements),
minimum_expected_elements,
f'Actual number of elements found: {len(result_elements)}; \ '
f'expected was {minimum_expected_elements} or more'
)
def assert_title(self, url, expected_title):
actual_title = self.get_page_title(url)
self.assertEqual(
expected_title,
actual_title,
f'Result differ than expected for page {url}'
)