|
|
@@ -2,6 +2,7 @@ import os
|
|
|
import time
|
|
|
import unittest
|
|
|
import pytest
|
|
|
+import requests
|
|
|
from urllib.parse import urljoin
|
|
|
from selenium import webdriver
|
|
|
from selenium.webdriver.common.by import By
|
|
|
@@ -77,6 +78,23 @@ def test_log(driver, login, dashboard_url):
|
|
|
label = driver.find_element(By.XPATH, "//div[@id='app']//form//label[contains(., 'Time Offset')]")
|
|
|
assert driver.find_elements(By.ID, label.get_attribute("for"))
|
|
|
|
|
|
+def fetch_version_info(dashboard_url):
|
|
|
+ status_url = urljoin(dashboard_url, "/status?format=json")
|
|
|
+ response = requests.get(status_url)
|
|
|
+ response.raise_for_status()
|
|
|
+ return response.json()
|
|
|
+
|
|
|
+def parse_version(version_str):
|
|
|
+ prefix_major, minor, _ = version_str.split('.', 2)
|
|
|
+ prefix = prefix_major[:1]
|
|
|
+ major = prefix_major[1:]
|
|
|
+ return prefix, major + '.' + minor
|
|
|
+
|
|
|
+def fetch_version(url):
|
|
|
+ info = fetch_version_info(url)
|
|
|
+ version_str = info['rel_vsn']
|
|
|
+ return parse_version(version_str)
|
|
|
+
|
|
|
def test_docs_link(driver, login, dashboard_url):
|
|
|
dest_url = urljoin(dashboard_url, "/#/dashboard/overview")
|
|
|
driver.get(dest_url)
|
|
|
@@ -85,21 +103,19 @@ def test_docs_link(driver, login, dashboard_url):
|
|
|
link_help = driver.find_element(By.XPATH, xpath_link_help)
|
|
|
driver.execute_script("arguments[0].click();", link_help)
|
|
|
|
|
|
- emqx_name = os.getenv("EMQX_NAME")
|
|
|
- emqx_community_version = os.getenv("EMQX_COMMUNITY_VERSION")
|
|
|
- emqx_enterprise_version = os.getenv("EMQX_ENTERPRISE_VERSION")
|
|
|
- if emqx_name == 'emqx-enterprise':
|
|
|
- emqx_version = f"v{emqx_enterprise_version}"
|
|
|
+ prefix, emqx_version = fetch_version(dashboard_url)
|
|
|
+ # it's v5.x in the url
|
|
|
+ emqx_version = 'v' + emqx_version
|
|
|
+
|
|
|
+ if prefix == 'e':
|
|
|
docs_base_url = "https://docs.emqx.com/en/enterprise"
|
|
|
else:
|
|
|
- emqx_version = f"v{emqx_community_version}"
|
|
|
docs_base_url = "https://www.emqx.io/docs/en"
|
|
|
|
|
|
- emqx_version = ".".join(emqx_version.split(".")[:2])
|
|
|
docs_url = f"{docs_base_url}/{emqx_version}"
|
|
|
xpath = f"//div[@id='app']//div[@class='nav-header']//a[@href[starts-with(.,'{docs_url}')]]"
|
|
|
|
|
|
try:
|
|
|
driver.find_element(By.XPATH, xpath)
|
|
|
except NoSuchElementException:
|
|
|
- raise AssertionError(f"Cannot find the doc URL for {emqx_name} version {emqx_version}, please make sure the dashboard package is up to date.")
|
|
|
+ raise AssertionError(f"Cannot find the doc URL for version {emqx_version}, please make sure the dashboard package is up to date.")
|