Unverified Commit 582de948 authored by kirillrdy's avatar kirillrdy Committed by GitHub
Browse files

nixos/prometheus: tests: ui: fix race conditions in Selenium assertions (#500864)

parents 72a71025 d113e69a
Loading
Loading
Loading
Loading
+19 −25
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
                  from selenium import webdriver
                  from selenium.webdriver.common.by import By
                  from selenium.webdriver.firefox.options import Options
                  from selenium.webdriver.support.relative_locator import locate_with
                  from selenium.webdriver.support import expected_conditions as EC
                  from selenium.webdriver.support.ui import WebDriverWait

                  options = Options()
@@ -35,13 +35,12 @@
                  wait = WebDriverWait(driver, 60)

                  # There should have been a redirect
                  url = driver.current_url
                  assert url == "http://prometheus:9090/query"
                  wait.until(EC.url_to_be("http://prometheus:9090/query"))

                  assert len(driver.find_elements(
                    By.CLASS_NAME, "mantine-AppShell-header")) > 0
                  assert len(driver.find_elements(
                    By.CLASS_NAME, "mantine-AppShell-main")) > 0
                  wait.until(EC.presence_of_element_located(
                    (By.CLASS_NAME, "mantine-AppShell-header")))
                  wait.until(EC.presence_of_element_located(
                    (By.CLASS_NAME, "mantine-AppShell-main")))

                  # Do a Prometheus query
                  query_box = driver.find_element(
@@ -53,10 +52,9 @@
                  driver.find_element(
                    By.XPATH, "//span[contains(text(),'Execute')]").click()

                  # Find query result table
                  table_tr_elements = driver.find_elements(
                    By.CLASS_NAME, "mantine-Table-tr")
                  assert len(table_tr_elements) == 1
                  # Wait for query result table
                  wait.until(EC.presence_of_element_located(
                    (By.CLASS_NAME, "mantine-Table-tr")))

                  # Navigate to target health page
                  driver.find_element(
@@ -65,16 +63,14 @@
                  driver.find_element(
                    By.LINK_TEXT, "Target health").click()

                  url = driver.current_url
                  assert url == "http://prometheus:9090/targets"
                  wait.until(EC.url_to_be("http://prometheus:9090/targets"))

                  # Click on the prometheus job dropdown button
                  prometheus_job_dropdown = driver.find_element(
                  driver.find_element(
                    By.CLASS_NAME, "mantine-Accordion-chevron").click()

                  targets_healthy = len(driver.find_elements(
                    By.CSS_SELECTOR, "div[class^='_healthOk']"))
                  assert targets_healthy == 1
                  wait.until(EC.presence_of_element_located(
                    (By.CSS_SELECTOR, "div[class^='_healthOk']")))

                  targets_errored = len(driver.find_elements(
                    By.CSS_SELECTOR, "div[class^='_healthErr']"))
@@ -92,15 +88,13 @@
                  driver.find_element(
                    By.LINK_TEXT, "Runtime & build information").click()

                  url = driver.current_url
                  assert url == "http://prometheus:9090/status"
                  wait.until(EC.url_to_be("http://prometheus:9090/status"))

                  # Find table
                  version_th_element = driver.find_element(
                    By.XPATH, "//th[text()='version']")
                  version_td_element = driver.find_element(
                    locate_with(By.TAG_NAME, "td").near(version_th_element))
                  assert version_td_element.text == "${pkgs.prometheus.version}"
                  # Find table and verify version
                  wait.until(EC.text_to_be_present_in_element(
                    (By.XPATH,
                     "//tr[th[text()='version']]/td"),
                    "${pkgs.prometheus.version}"))

                  driver.close()
                '';