summaryrefslogtreecommitdiffstats
path: root/testing/webcompat/interventions/tests/test_1786404_business_help_royalmail_com.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/webcompat/interventions/tests/test_1786404_business_help_royalmail_com.py')
-rw-r--r--testing/webcompat/interventions/tests/test_1786404_business_help_royalmail_com.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/testing/webcompat/interventions/tests/test_1786404_business_help_royalmail_com.py b/testing/webcompat/interventions/tests/test_1786404_business_help_royalmail_com.py
new file mode 100644
index 0000000000..59a95ff8d9
--- /dev/null
+++ b/testing/webcompat/interventions/tests/test_1786404_business_help_royalmail_com.py
@@ -0,0 +1,70 @@
+import time
+
+import pytest
+from webdriver.error import StaleElementReferenceException
+
+URL = "https://business.help.royalmail.com/app/webforms/stampsenquiries"
+
+COOKIES_ACCEPT_CSS = "#consent_prompt_submit"
+POSTCODE_CSS = "input[name='rn_AddressControl_16textbox']"
+OPTION_CSS = "option.addr_pick_line:not(:disabled)"
+ADDY1_CSS = "[name='Incident.CustomFields.c.address1_1']"
+
+
+async def getResult(client):
+ await client.navigate(URL)
+
+ client.await_css(COOKIES_ACCEPT_CSS).click()
+
+ # the viewport scrolls around while we try to interact
+ # with the postcode in webdriver, so we take care here
+ code = client.await_css(POSTCODE_CSS)
+ client.scroll_into_view(code)
+ time.sleep(1)
+ client.mouse.click(element=code).perform()
+ code.send_keys("W1A 1AV")
+
+ # now wait for the options to open, scroll them back
+ # into view, and carefully click on the first one.
+ time.sleep(1)
+ client.scroll_into_view(code)
+ opt = client.await_css(OPTION_CSS)
+ client.mouse.click(element=opt).perform()
+
+ # the options should hide on click
+ time.sleep(2)
+ try:
+ if client.is_displayed(opt):
+ return False
+ except StaleElementReferenceException:
+ return False
+
+ # a address line should end up being prefilled
+ addy = client.await_css(ADDY1_CSS)
+ return client.execute_async_script(
+ """
+ var addy = arguments[0];
+ var done = arguments[1];
+ var to = setTimeout(() => {
+ if (addy.value) {
+ clearTimeout(to);
+ done(true);
+ }
+ }, 200);
+ """,
+ addy,
+ )
+
+
+@pytest.mark.skip_platforms("android")
+@pytest.mark.asyncio
+@pytest.mark.with_interventions
+async def test_enabled(client):
+ assert await getResult(client)
+
+
+@pytest.mark.skip_platforms("android")
+@pytest.mark.asyncio
+@pytest.mark.without_interventions
+async def test_disabled(client):
+ assert not await getResult(client)