name: "Frontend admin tests" on: push: paths-ignore: - 'doc/**' pull_request: paths-ignore: - 'doc/**' permissions: contents: read jobs: withplugins: env: PNPM_HOME: ~/.pnpm-store name: with plugins runs-on: ubuntu-latest strategy: fail-fast: false matrix: node: [20, 22, 24] steps: - name: Checkout repository uses: actions/checkout@v6 - uses: actions/cache@v5 name: Setup gnpm cache if: always() with: path: | ${{ env.PNPM_HOME }} ~/.local/share/gnpm /usr/local/bin/gnpm /usr/local/bin/gnpm-0.0.12 key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-gnpm-store- - name: Setup gnpm uses: SamTV12345/gnpm-setup@main with: version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm i --runtimeVersion="${{ matrix.node }}" - name: Cache Playwright browsers uses: actions/cache@v5 id: playwright-cache with: path: ~/.cache/ms-playwright key: ${{ runner.os }}-playwright-${{ hashFiles('src/package.json') }} - name: Install Playwright browsers if: steps.playwright-cache.outputs.cache-hit != 'true' run: cd src && npx playwright install - name: Install Playwright system dependencies run: cd src && npx playwright install-deps - name: Create settings.json run: cp settings.json.template settings.json - name: Write custom settings.json that enables the Admin UI tests run: "sed -i 's/\"enableAdminUITests\": false/\"enableAdminUITests\": true,\\n\"users\":{\"admin\":{\"password\":\"changeme1\",\"is_admin\":true}}/' settings.json" - name: increase maxHttpBufferSize run: "sed -i 's/\"maxHttpBufferSize\": 50000/\"maxHttpBufferSize\": 10000000/' settings.json" - name: Disable import/export rate limiting run: | sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 100000000/' -i settings.json - name: Build admin frontend working-directory: admin run: | gnpm run build --runtimeVersion="${{ matrix.node }}" - name: Run the frontend admin tests shell: bash run: | gnpm run prod --runtimeVersion="${{ matrix.node }}" & connected=false can_connect() { curl -sSfo /dev/null http://localhost:9001/ || return 1 connected=true } now() { date +%s; } start=$(now) while [ $(($(now) - $start)) -le 15 ] && ! can_connect; do sleep 1 done cd src gnpm run test-admin --runtimeVersion="${{ matrix.node }}" - uses: actions/upload-artifact@v7 if: always() with: name: playwright-report-${{ matrix.node }} path: src/playwright-report/ retention-days: 30