aboutsummaryrefslogtreecommitdiff
path: root/venv/lib/python3.8/site-packages/dash/testing/wait.py
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2025-07-31 17:27:24 -0400
committersotech117 <michael_foiani@brown.edu>2025-07-31 17:27:24 -0400
commit5bf22fc7e3c392c8bd44315ca2d06d7dca7d084e (patch)
tree8dacb0f195df1c0788d36dd0064f6bbaa3143ede /venv/lib/python3.8/site-packages/dash/testing/wait.py
parentb832d364da8c2efe09e3f75828caf73c50d01ce3 (diff)
add code for analysis of data
Diffstat (limited to 'venv/lib/python3.8/site-packages/dash/testing/wait.py')
-rw-r--r--venv/lib/python3.8/site-packages/dash/testing/wait.py161
1 files changed, 161 insertions, 0 deletions
diff --git a/venv/lib/python3.8/site-packages/dash/testing/wait.py b/venv/lib/python3.8/site-packages/dash/testing/wait.py
new file mode 100644
index 0000000..d9bd8b0
--- /dev/null
+++ b/venv/lib/python3.8/site-packages/dash/testing/wait.py
@@ -0,0 +1,161 @@
+# pylint: disable=too-few-public-methods
+"""Utils methods for pytest-dash such wait_for wrappers."""
+
+import time
+import logging
+from selenium.common.exceptions import WebDriverException
+from selenium.webdriver.common.by import By
+from dash.testing.errors import TestingTimeoutError
+
+
+logger = logging.getLogger(__name__)
+
+
+def until(
+ wait_cond, timeout, poll=0.1, msg="expected condition not met within timeout"
+): # noqa: C0330
+ res = wait_cond()
+ logger.debug(
+ "start wait.until with method, timeout, poll => %s %s %s",
+ wait_cond,
+ timeout,
+ poll,
+ )
+ end_time = time.time() + timeout
+ while not res:
+ if time.time() > end_time:
+ raise TestingTimeoutError(msg)
+ time.sleep(poll)
+ res = wait_cond()
+ logger.debug("poll => %s", time.time())
+
+ return res
+
+
+def until_not(
+ wait_cond, timeout, poll=0.1, msg="expected condition met within timeout"
+): # noqa: C0330
+ res = wait_cond()
+ logger.debug(
+ "start wait.until_not method, timeout, poll => %s %s %s",
+ wait_cond,
+ timeout,
+ poll,
+ )
+ end_time = time.time() + timeout
+ while res:
+ if time.time() > end_time:
+ raise TestingTimeoutError(msg)
+ time.sleep(poll)
+ res = wait_cond()
+ logger.debug("poll => %s", time.time())
+
+ return res
+
+
+class contains_text:
+ def __init__(self, selector, text, timeout):
+ self.selector = selector
+ self.text = text
+ self.timeout = timeout
+
+ def __call__(self, driver):
+ try:
+ elem = driver.find_element(By.CSS_SELECTOR, self.selector)
+ logger.debug("contains text {%s} => expected %s", elem.text, self.text)
+ value = elem.get_attribute("value")
+ return self.text in str(elem.text) or (
+ value is not None and self.text in str(value)
+ )
+ except WebDriverException:
+ return False
+
+ def message(self, driver):
+ try:
+ element = self._get_element(driver)
+ text = "found: " + str(element.text) or str(element.get_attribute("value"))
+ except WebDriverException:
+ text = f"{self.selector} not found"
+ return f"text -> {self.text} not found inside element within {self.timeout}s, {text}"
+
+ def _get_element(self, driver):
+ return driver.find_element(By.CSS_SELECTOR, self.selector)
+
+
+class contains_class:
+ def __init__(self, selector, classname):
+ self.selector = selector
+ self.classname = classname
+
+ def __call__(self, driver):
+ try:
+ elem = driver.find_element(By.CSS_SELECTOR, self.selector)
+ classname = elem.get_attribute("class")
+ logger.debug(
+ "contains class {%s} => expected %s", classname, self.classname
+ )
+ return self.classname in str(classname).split(" ")
+ except WebDriverException:
+ return False
+
+
+class text_to_equal:
+ def __init__(self, selector, text, timeout):
+ self.selector = selector
+ self.text = text
+ self.timeout = timeout
+
+ def __call__(self, driver):
+ try:
+ elem = self._get_element(driver)
+ logger.debug("text to equal {%s} => expected %s", elem.text, self.text)
+ value = elem.get_attribute("value")
+ return str(elem.text) == self.text or (
+ value is not None and str(value) == self.text
+ )
+ except WebDriverException:
+ return False
+
+ def message(self, driver):
+ try:
+ element = self._get_element(driver)
+ text = "found: " + str(element.text) or str(element.get_attribute("value"))
+ except WebDriverException:
+ text = f"{self.selector} not found"
+ return f"text -> {self.text} not found within {self.timeout}s, {text}"
+
+ def _get_element(self, driver):
+ return driver.find_element(By.CSS_SELECTOR, self.selector)
+
+
+class style_to_equal:
+ def __init__(self, selector, style, val):
+ self.selector = selector
+ self.style = style
+ self.val = val
+
+ def __call__(self, driver):
+ try:
+ elem = driver.find_element(By.CSS_SELECTOR, self.selector)
+ val = elem.value_of_css_property(self.style)
+ logger.debug("style to equal {%s} => expected %s", val, self.val)
+ return val == self.val
+ except WebDriverException:
+ return False
+
+
+class class_to_equal:
+ def __init__(self, selector, classname):
+ self.selector = selector
+ self.classname = classname
+
+ def __call__(self, driver):
+ try:
+ elem = driver.find_element(By.CSS_SELECTOR, self.selector)
+ classname = elem.get_attribute("class")
+ logger.debug(
+ "class to equal {%s} => expected %s", classname, self.classname
+ )
+ return str(classname) == self.classname
+ except WebDriverException:
+ return False