mirror of
https://git.zavage.net/Zavage-Software/wabot.git
synced 2026-07-21 13:06:08 -06:00
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
"""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()
|