Просмотр исходного кода

ci: add selenium test for emqx docs link in dashboard

Ivan Dyachkov 1 год назад
Родитель
Сommit
c4fd94c7c5

+ 3 - 0
.github/workflows/run_docker_tests.yaml

@@ -47,6 +47,9 @@ jobs:
           echo "_EMQX_DOCKER_IMAGE_TAG=$_EMQX_DOCKER_IMAGE_TAG" >> $GITHUB_ENV
       - name: dashboard tests
         working-directory: ./scripts/ui-tests
+        env:
+          EMQX_VERSION: ${{ inputs.version-emqx }}
+          EMQX_ENTERPRISE_VERSION: ${{ inputs.version-emqx-enterprise }}
         run: |
           set -eu
           docker compose up --abort-on-container-exit --exit-code-from selenium

+ 23 - 0
scripts/ui-tests/dashboard_test.py

@@ -1,3 +1,4 @@
+import os
 import time
 import unittest
 import pytest
@@ -73,3 +74,25 @@ 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 test_docs_link(driver, login, dashboard_url):
+    dest_url = urljoin(dashboard_url, "/#/dashboard/overview")
+    driver.get(dest_url)
+    ensure_current_url(driver, dest_url)
+    xpath_link_help = "//div[@id='app']//div[@class='nav-header']//a[contains(@class, 'link-help')]"
+    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}"
+        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}')]]"
+    assert driver.find_element(By.XPATH, xpath)

+ 4 - 0
scripts/ui-tests/docker-compose.yaml

@@ -9,6 +9,10 @@ services:
   selenium:
     shm_size: '2gb'
     image: ghcr.io/emqx/selenium-chrome:latest
+    environment:
+      EMQX_NAME: ${EMQX_NAME}
+      EMQX_COMMUNITY_VERSION: ${EMQX_VERSION}
+      EMQX_ENTERPRISE_VERSION: ${EMQX_ENTERPRISE_VERSION}
     volumes:
       - ./:/app
     depends_on: