mirror of
https://git.zavage.net/Zavage-Software/wabot.git
synced 2026-07-21 13:06:08 -06:00
test: end-to-end page-object flow on real headless browsers
This commit is contained in:
parent
a83a95c4e8
commit
8fd9bd1fa0
60
tests/integration/test_ephemeral.py
Normal file
60
tests/integration/test_ephemeral.py
Normal file
@ -0,0 +1,60 @@
|
||||
"""Drive the full page-object stack against a real headless browser."""
|
||||
|
||||
import pytest
|
||||
|
||||
import wabot
|
||||
|
||||
from .conftest import BROWSERS
|
||||
|
||||
|
||||
class LoginPage(wabot.Page):
|
||||
elements = {
|
||||
"title": ("el", ("id", "page-title")),
|
||||
"username": ("el", ("id", "username")),
|
||||
"state": ("select", ("id", "state")),
|
||||
"agree": ("checkbox", ("id", "agree")),
|
||||
"submit": ("el", ("id", "submit-btn")),
|
||||
}
|
||||
|
||||
def verify(self):
|
||||
return self.driver.title == "Login"
|
||||
|
||||
def log_in(self, username):
|
||||
self["username"].set_value(username)
|
||||
self["state"].set_value(value="CO")
|
||||
self["agree"].set_checked(True)
|
||||
return self["submit"].click_and_go()
|
||||
|
||||
|
||||
class WelcomePage(wabot.Page):
|
||||
elements = {"greeting": ("el", ("id", "greeting"))}
|
||||
|
||||
def verify(self):
|
||||
return self.driver.title == "Welcome"
|
||||
|
||||
|
||||
@pytest.mark.parametrize("browser_name", BROWSERS)
|
||||
def test_login_flow_end_to_end(browser_name, site_url):
|
||||
bot = wabot.browser(browser=browser_name, headless=True, pacing=wabot.NoPacing())
|
||||
try:
|
||||
bot.driver.get(f"{site_url}/login.html")
|
||||
assert bot.set_page(LoginPage) is True
|
||||
assert bot.log_in("mathew") is True
|
||||
assert bot.set_page(WelcomePage) is True
|
||||
assert bot["greeting"].text == "You made it."
|
||||
assert bot.good is True
|
||||
finally:
|
||||
bot.driver.quit()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("browser_name", BROWSERS)
|
||||
def test_full_page_screenshot(browser_name, site_url, tmp_path):
|
||||
bot = wabot.browser(browser=browser_name, headless=True, pacing=wabot.NoPacing())
|
||||
try:
|
||||
bot.driver.get(f"{site_url}/login.html")
|
||||
bot.set_page(LoginPage)
|
||||
out = tmp_path / "shot.png"
|
||||
assert bot.save_screenshot(str(out)) is True
|
||||
assert out.stat().st_size > 0
|
||||
finally:
|
||||
bot.driver.quit()
|
||||
Loading…
Reference in New Issue
Block a user