Skip to content
This repository was archived by the owner on Aug 10, 2022. It is now read-only.

Commit 3a4fba4

Browse files
committed
Add tests for cover possible check regions cases
1 parent ec43d3a commit 3a4fba4

File tree

1 file changed

+110
-12
lines changed

1 file changed

+110
-12
lines changed
Lines changed: 110 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import pytest
12
from mock import MagicMock
23
from selenium.webdriver.common.by import By
34
from selenium.webdriver.remote.webelement import WebElement as SeleniumWebElement
@@ -7,36 +8,133 @@
78
from applitools.selenium.fluent import SeleniumCheckSettings
89

910

10-
def test_check_region(driver_mock):
11+
def get_cs_for_method(method_name, *args):
12+
"""
13+
Return initialized CheckSettings instance and invoked `method_name` with `args`
14+
15+
Example ::
16+
17+
cs = SeleniumCheckSettings().region(*args)
18+
"""
19+
return getattr(SeleniumCheckSettings(), method_name)(*args)
20+
21+
22+
def get_regions_from_(method_name, *args):
23+
"""
24+
Return regions for invoked method from CheckSettings
25+
26+
:param method_name: layout, ignore, strict or content
27+
"""
28+
cs = get_cs_for_method(method_name, *args)
29+
regions = getattr(cs.values, "{}_regions".format(method_name))
30+
return regions
31+
32+
33+
def test_check_frame(method_name="frame"):
34+
frame_reference = "frame-name-or-id"
35+
cs = get_cs_for_method(method_name, frame_reference)
36+
assert cs.values.frame_chain[0].frame_name_or_id == frame_reference
37+
38+
frame_index = 3
39+
cs = get_cs_for_method(method_name, frame_index)
40+
assert cs.values.frame_chain[0].frame_index == frame_index
41+
42+
frame_element = MagicMock(EyesWebElement)
43+
cs = get_cs_for_method(method_name, frame_element)
44+
assert cs.values.frame_chain[0].frame_element == frame_element
45+
46+
47+
def test_check_region_with_region(method_name="region"):
1148
region = Region(0, 1, 2, 3)
12-
cs = SeleniumCheckSettings().region(region)
49+
cs = get_cs_for_method(method_name, region)
1350
assert cs.values.target_region == region
1451

1552
selector_or_xpath = ".cssSelector_or_XPATH"
16-
cs = SeleniumCheckSettings().region(selector_or_xpath)
53+
cs = get_cs_for_method(method_name, selector_or_xpath)
1754
assert cs.values.target_selector == selector_or_xpath
1855

56+
57+
def test_check_region_with_elements(method_name="region"):
1958
eyes_element = MagicMock(EyesWebElement)
20-
cs = SeleniumCheckSettings().region(eyes_element)
59+
cs = get_cs_for_method(method_name, eyes_element)
2160
assert cs.values.target_element == eyes_element
2261

2362
selenium_element = MagicMock(SeleniumWebElement)
24-
cs = SeleniumCheckSettings().region(selenium_element)
63+
cs = get_cs_for_method(method_name, selenium_element)
2564
assert cs.values.target_element == selenium_element
2665

2766
appium_element = MagicMock(AppiumWebElement)
28-
cs = SeleniumCheckSettings().region(appium_element)
67+
cs = get_cs_for_method(method_name, appium_element)
2968
assert cs.values.target_element == appium_element
3069

31-
cs = SeleniumCheckSettings().region([By.NAME, "some-name"])
70+
71+
def test_check_region_with_by_params(method_name="region"):
72+
selector_or_xpath = ".cssSelector_or_XPATH"
73+
cs = get_cs_for_method(method_name, [By.NAME, "some-name"])
3274
assert cs.values.target_selector == '[name="some-name"]'
33-
cs = SeleniumCheckSettings().region([By.ID, "ident"])
75+
cs = get_cs_for_method(method_name, [By.ID, "ident"])
3476
assert cs.values.target_selector == "#ident"
35-
cs = SeleniumCheckSettings().region([By.CLASS_NAME, "class_name"])
77+
cs = get_cs_for_method(method_name, [By.CLASS_NAME, "class_name"])
3678
assert cs.values.target_selector == ".class_name"
37-
cs = SeleniumCheckSettings().region([By.TAG_NAME, "tag_name"])
79+
cs = get_cs_for_method(method_name, [By.TAG_NAME, "tag_name"])
3880
assert cs.values.target_selector == "tag_name"
39-
cs = SeleniumCheckSettings().region([By.CSS_SELECTOR, selector_or_xpath])
81+
cs = get_cs_for_method(method_name, [By.CSS_SELECTOR, selector_or_xpath])
4082
assert cs.values.target_selector == selector_or_xpath
41-
cs = SeleniumCheckSettings().region([By.XPATH, selector_or_xpath])
83+
cs = get_cs_for_method(method_name, [By.XPATH, selector_or_xpath])
4284
assert cs.values.target_selector == selector_or_xpath
85+
86+
87+
@pytest.mark.parametrize("method_name", ["ignore", "layout", "strict", "content"])
88+
def test_match_regions_with_selectors_input(method_name):
89+
selector_or_xpath = ".cssSelector_or_XPATH"
90+
regions = get_regions_from_(method_name, selector_or_xpath)
91+
assert regions[0].selector == selector_or_xpath
92+
93+
regions = get_regions_from_(method_name, selector_or_xpath, selector_or_xpath)
94+
assert regions[0].selector == selector_or_xpath
95+
assert regions[1].selector == selector_or_xpath
96+
97+
98+
@pytest.mark.parametrize("method_name", ["ignore", "layout", "strict", "content"])
99+
def test_match_regions_with_regions_input(method_name):
100+
region, region1 = Region(0, 1, 2, 3), Region(0, 2, 4, 5)
101+
regions = get_regions_from_(method_name, region)
102+
assert regions[0]._region == region
103+
104+
regions = get_regions_from_(method_name, region, region1)
105+
assert regions[0]._region == region
106+
assert regions[1]._region == region1
107+
108+
109+
@pytest.mark.parametrize("method_name", ["ignore", "layout", "strict", "content"])
110+
def test_match_regions_with_elements(method_name):
111+
eyes_element = MagicMock(EyesWebElement)
112+
selenium_element = MagicMock(SeleniumWebElement)
113+
appium_element = MagicMock(AppiumWebElement)
114+
115+
regions = get_regions_from_(
116+
method_name, eyes_element, selenium_element, appium_element
117+
)
118+
assert regions[0].element == eyes_element
119+
assert regions[1].element == selenium_element
120+
assert regions[2].element == appium_element
121+
122+
123+
@pytest.mark.parametrize("method_name", ["ignore", "layout", "strict", "content"])
124+
def test_match_regions_with_by_values(method_name):
125+
by_name = [By.NAME, "some-name"]
126+
by_id = [By.ID, "ident"]
127+
by_class = [By.CLASS_NAME, "class_name"]
128+
by_tag_name = [By.TAG_NAME, "tag_name"]
129+
by_css_selector = [By.CSS_SELECTOR, "css_selector"]
130+
by_xpath = [By.XPATH, "xpath"]
131+
132+
regions = get_regions_from_(
133+
method_name, by_name, by_id, by_class, by_tag_name, by_css_selector, by_xpath
134+
)
135+
assert regions[0].selector == '[name="some-name"]'
136+
assert regions[1].selector == "#ident"
137+
assert regions[2].selector == ".class_name"
138+
assert regions[3].selector == "tag_name"
139+
assert regions[4].selector == "css_selector"
140+
assert regions[5].selector == "xpath"

0 commit comments

Comments
 (0)