Source code
Revision control
Copy as Markdown
Other Tools
import pytest
CAPTCHA_CSS = "re-captcha"
USERNAME_CSS = "input[name=username]"
PASSWORD_CSS = "input[name=password]"
EXPIRED_CSS = "app-renewpassword"
SIGN_IN_CSS = "#btn-login"
UNSUPPORTED_CSS = "#chromeOnlyPopup"
async def does_unsupported_popup_appear(client, credentials):
await client.navigate(URL)
username = client.await_css(USERNAME_CSS)
password = client.find_css(PASSWORD_CSS)
sign_in = client.find_css(SIGN_IN_CSS)
assert client.is_displayed(username)
assert client.is_displayed(password)
assert client.is_displayed(sign_in)
username.send_keys(credentials["username"])
password.send_keys(credentials["password"])
sign_in.click()
for _ in range(10):
captcha, unsupported, expired = client.await_first_element_of([
client.css(CAPTCHA_CSS),
client.css(UNSUPPORTED_CSS),
client.css(EXPIRED_CSS),
])
if captcha:
print("\a") # beep to let the user know to do the captcha
client.await_element_hidden(client.css(CAPTCHA_CSS), timeout=90)
else:
break
if expired:
pytest.skip("Your password has expired. Please visit the site and renew it.")
return
await client.stall(1)
return client.find_css(UNSUPPORTED_CSS, is_displayed=True)
@pytest.mark.asyncio
@pytest.mark.with_interventions
async def test_enabled(client, credentials):
assert not await does_unsupported_popup_appear(client, credentials)
@pytest.mark.asyncio
@pytest.mark.without_interventions
async def test_disabled(client, credentials):
assert await does_unsupported_popup_appear(client, credentials)