nixos/prometheus: tests: Improve Selenium clickthrough test (#455341)
This commit is contained in:
@@ -7,6 +7,8 @@
|
||||
browser =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
virtualisation.memorySize = 1024 * 2;
|
||||
|
||||
environment.systemPackages =
|
||||
let
|
||||
prometheusSeleniumScript =
|
||||
@@ -18,20 +20,87 @@
|
||||
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.ui import WebDriverWait
|
||||
|
||||
options = Options()
|
||||
options.add_argument("--headless")
|
||||
service = webdriver.FirefoxService(executable_path="${lib.getExe pkgs.geckodriver}") # noqa: E501
|
||||
service = webdriver.FirefoxService(
|
||||
executable_path="${lib.getExe pkgs.geckodriver}") # noqa: E501
|
||||
|
||||
driver = webdriver.Firefox(options=options, service=service)
|
||||
driver.implicitly_wait(10)
|
||||
driver.get("http://prometheus:9090/")
|
||||
|
||||
driver.get("http://prometheus:9090/")
|
||||
wait = WebDriverWait(driver, 60)
|
||||
|
||||
assert len(driver.find_elements(By.CLASS_NAME, "mantine-AppShell-header")) > 0 # noqa: E501
|
||||
assert len(driver.find_elements(By.CLASS_NAME, "mantine-AppShell-main")) > 0 # noqa: E501
|
||||
# There should have been a redirect
|
||||
url = driver.current_url
|
||||
assert url == "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
|
||||
|
||||
# Do a Prometheus query
|
||||
query_box = driver.find_element(
|
||||
By.XPATH, "//div[@role='textbox']")
|
||||
query_box.click()
|
||||
query_box.send_keys("up")
|
||||
|
||||
# Run query with execute button
|
||||
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
|
||||
|
||||
# Navigate to target health page
|
||||
driver.find_element(
|
||||
By.XPATH, "//span[text()='Status']").click()
|
||||
|
||||
driver.find_element(
|
||||
By.LINK_TEXT, "Target health").click()
|
||||
|
||||
url = driver.current_url
|
||||
assert url == "http://prometheus:9090/targets"
|
||||
|
||||
# Click on the prometheus job dropdown button
|
||||
prometheus_job_dropdown = 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
|
||||
|
||||
targets_errored = len(driver.find_elements(
|
||||
By.CSS_SELECTOR, "div[class^='_healthErr']"))
|
||||
assert targets_errored == 0
|
||||
|
||||
# Go back to homepage
|
||||
driver.find_element(
|
||||
By.XPATH, "//span[text()='Query']").click()
|
||||
|
||||
# Navigate to build info section and verify correct version
|
||||
# number shown
|
||||
driver.find_element(
|
||||
By.XPATH, "//span[text()='Status']").click()
|
||||
|
||||
driver.find_element(
|
||||
By.LINK_TEXT, "Runtime & build information").click()
|
||||
|
||||
url = driver.current_url
|
||||
assert url == "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}"
|
||||
|
||||
driver.close()
|
||||
'';
|
||||
@@ -59,8 +128,7 @@
|
||||
static_configs = [
|
||||
{
|
||||
targets = [
|
||||
"prometheus1:${toString config.services.prometheus.port}"
|
||||
"prometheus2:${toString config.services.prometheus.port}"
|
||||
"prometheus:${toString config.services.prometheus.port}"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user