From 8b4c57db754926a8aeedf6b94189a9f090a99a3d Mon Sep 17 00:00:00 2001 From: omri zaher Date: Mon, 22 Sep 2025 15:36:09 +0300 Subject: [PATCH] add allure --- .github/workflows/e2e-testing.yml | 120 ++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/.github/workflows/e2e-testing.yml b/.github/workflows/e2e-testing.yml index 7179c9ce8..c1be2c7bb 100644 --- a/.github/workflows/e2e-testing.yml +++ b/.github/workflows/e2e-testing.yml @@ -198,3 +198,123 @@ jobs: run: | pytest --maxfail=5 --disable-warnings -v + Selenium-ui-test: + needs: deploy + runs-on: ubuntu-latest + + strategy: + matrix: + browser: [chrome, firefox] + resolution: + - { name: "desktop", width: 1920, height: 1080 } + - { name: "tablet", width: 1024, height: 768 } + - { name: "mobile", width: 375, height: 667 } + fail-fast: false # Continue other jobs even if one fails + + name: Test ${{ matrix.browser }} - ${{ matrix.resolution.name }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 1 + respository: omriza5/wekan-selenium + token: ${{ secrets.UI_TESTING_GITHUB_TOKEN }} + + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: "3.11" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Install Chrome and ChromeDriver + if: matrix.browser == 'chrome' + run: | + sudo apt-get update + sudo apt-get install -y google-chrome-stable + + - name: Install Firefox and GeckoDriver + if: matrix.browser == 'firefox' + run: | + sudo apt-get update + sudo apt-get install -y wget tar + # Remove Snap Firefox if installed + sudo snap remove firefox || true + # Download official Firefox + wget -O firefox.tar.xz "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" + tar xJf firefox.tar.xz + sudo mv firefox /opt/firefox + sudo ln -s /opt/firefox/firefox /usr/local/bin/firefox + # Install GeckoDriver + wget https://github.com/mozilla/geckodriver/releases/latest/download/geckodriver-v0.36.0-linux64.tar.gz + tar -xvzf geckodriver-v0.36.0-linux64.tar.gz + sudo mv geckodriver /usr/local/bin/ + sudo chmod +x /usr/local/bin/geckodriver + + - name: Run Selenium tests + env: + HEADLESS: true + BROWSER: ${{ matrix.browser }} + SCREEN_WIDTH: ${{ matrix.resolution.width }} + SCREEN_HEIGHT: ${{ matrix.resolution.height }} + WEKAN_URL: ${{ secrets.WEKAN_URL }} + + run: | + if [ -d "allure-results" ]; then rm -rf allure-results; fi + mkdir -p allure-results + + cat > allure-results/environment.properties << EOF + os_platform=$(uname -s) + os_release=$(lsb_release -r | awk '{print $2}') + os_version=$(lsb_release -c | awk '{print $2}') + python_version=$(python --version | awk '{print $2}') + Wekan.URL=http://${{ secrets.WEKAN_EC2_HOST_IP }}/ + Headless.Mode=true + Wekan.Image=omriza5/wekan:${{ needs.deploy.outputs.wekan_image_tag }} + EOF + pytest --alluredir=allure-results tests/ + + allure-report: + runs-on: ubuntu-latest + needs: selenium-matrix-tests + if: always() + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download all Allure results + uses: actions/download-artifact@v4 + with: + pattern: allure-results-* + path: allure-results-downloaded + merge-multiple: false + + - name: Merge all results into single directory + run: | + mkdir -p allure-results + for dir in allure-results-downloaded/*/; do + if [ -d "$dir" ]; then + cp -r "$dir"* allure-results/ 2>/dev/null || true + fi + done + + - name: Generate and Deploy Allure Report + uses: simple-elf/allure-report-action@master + with: + allure_results: allure-results + allure_report: allure-report + gh_pages: gh-pages + allure_history: allure-history + keep_reports: 20 + + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.UI_TESTING_GITHUB_TOKEN }} + publish_dir: allure-history +