ci: add selenium test for emqx docs link in dashboard

This commit is contained in:
Ivan Dyachkov 2024-04-08 10:53:22 +02:00
parent 04ba2aaf8a
commit c4fd94c7c5
3 changed files with 30 additions and 0 deletions

View File

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

View File

@ -1,3 +1,4 @@
import os
import time import time
import unittest import unittest
import pytest 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')]") label = driver.find_element(By.XPATH, "//div[@id='app']//form//label[contains(., 'Time Offset')]")
assert driver.find_elements(By.ID, label.get_attribute("for")) 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)

View File

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