mirror of
https://git.zavage.net/Zavage-Software/wabot.git
synced 2026-07-21 13:06:08 -06:00
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from wabot.pacing import HumanPacing, NoPacing
|
|
|
|
|
|
class TestNoPacing:
|
|
def test_delay_is_zero_for_every_action(self):
|
|
p = NoPacing()
|
|
assert p.delay("text") == 0.0
|
|
assert p.delay("select") == 0.0
|
|
assert p.delay("unknown-action") == 0.0
|
|
|
|
def test_click_offset_is_none(self):
|
|
assert NoPacing().click_offset(200, 50) is None
|
|
|
|
|
|
class TestHumanPacing:
|
|
def test_delays_fall_in_documented_ranges(self):
|
|
p = HumanPacing()
|
|
for _ in range(50):
|
|
assert 3.0 <= p.delay("text") <= 5.0
|
|
assert 6.0 <= p.delay("select") <= 11.0
|
|
assert 2.0 <= p.delay("checkbox") <= 3.0
|
|
assert 3.0 <= p.delay("navigate") <= 6.0
|
|
|
|
def test_unknown_action_has_no_delay(self):
|
|
assert HumanPacing().delay("unknown-action") == 0.0
|
|
|
|
def test_click_offset_stays_inside_element(self):
|
|
p = HumanPacing()
|
|
for _ in range(200):
|
|
offset = p.click_offset(100, 40)
|
|
assert offset is not None
|
|
x, y = offset
|
|
# offsets are measured from the element CENTER (selenium 4)
|
|
assert -49 <= x <= 49
|
|
assert -19 <= y <= 19
|
|
|
|
def test_tiny_elements_get_plain_click(self):
|
|
p = HumanPacing()
|
|
assert p.click_offset(4, 40) is None
|
|
assert p.click_offset(40, 4) is None
|