Source code

Revision control

Copy as Markdown

Other Tools

import pytest
from webdriver.error import NoSuchElementException
IFRAME_CSS = "iframe#qcid_iframe"
RECAPTCHA_CSS = "iframe[title*=captcha]"
async def is_iframe_visible(client, in_headless_mode):
await client.navigate(URL)
try:
client.await_css(RECAPTCHA_CSS, is_displayed=True, timeout=5)
if in_headless_mode:
pytest.xfail("Skipping as cannot do reCAPTCHA in headless mode.")
return False
try:
print("\a")
iframe = client.await_css(IFRAME_CSS, is_displayed=True, timeout=120)
except NoSuchElementException:
pytest.xfail(
"Timed out waiting for reCAPTCHA to be completed. Please try again."
)
return False
except NoSuchElementException:
iframe = client.await_css(IFRAME_CSS, is_displayed=True)
pass
assert iframe
return client.execute_script(
"""
return arguments[0].getBoundingClientRect().height > 200;
""",
iframe,
)
@pytest.mark.only_firefox_versions(min=146)
@pytest.mark.enable_webkit_fill_available
@pytest.mark.asyncio
@pytest.mark.without_interventions
async def test_now_works_with_just_pref(client, in_headless_mode):
assert await is_iframe_visible(client, in_headless_mode)
@pytest.mark.only_firefox_versions(min=146)
@pytest.mark.disable_webkit_fill_available
@pytest.mark.asyncio
@pytest.mark.with_interventions
async def test_still_works_without_pref(client, in_headless_mode):
assert await is_iframe_visible(client, in_headless_mode)
@pytest.mark.only_firefox_versions(min=146)
@pytest.mark.disable_webkit_fill_available
@pytest.mark.asyncio
@pytest.mark.without_interventions
async def test_still_does_not_work_without_pref_or_intervention(
client, in_headless_mode
):
assert not await is_iframe_visible(client, in_headless_mode)
@pytest.mark.only_firefox_versions(max=145)
@pytest.mark.asyncio
@pytest.mark.without_interventions
async def test_did_work_with_intervention(client, in_headless_mode):
assert await is_iframe_visible(client, in_headless_mode)
@pytest.mark.only_firefox_versions(max=145)
@pytest.mark.asyncio
@pytest.mark.without_interventions
async def test_did_not_work_without_intervention(client, in_headless_mode):
assert not await is_iframe_visible(client, in_headless_mode)