Nightly E2E Full #109
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Nightly E2E Full | |
| on: | |
| schedule: | |
| - cron: '30 18 * * *' # 02:30 Asia/Shanghai | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| e2e-nightly: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 50 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '21' | |
| cache: maven | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: tests/e2e/package-lock.json | |
| - name: Setup Python 3.11 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install LibreOffice + archive tools | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libreoffice zip p7zip-full | |
| - name: Setup Python deps for office fixtures | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r tests/e2e/requirements.txt | |
| - name: Build kkFileView | |
| run: mvn -q -pl server -DskipTests package | |
| - name: Install E2E deps | |
| working-directory: tests/e2e | |
| run: | | |
| npm ci | |
| npx playwright install --with-deps chromium | |
| - name: Start fixture server | |
| run: | | |
| cd tests/e2e/fixtures | |
| python3 -m http.server 18080 > /tmp/fixture-server.log 2>&1 & | |
| - name: Start kkFileView | |
| run: | | |
| JAR_PATH=$(ls server/target/kkFileView-*.jar | head -n 1) | |
| nohup env KK_TRUST_HOST='*' KK_NOT_TRUST_HOST='10.*,172.16.*,192.168.*' java -jar "$JAR_PATH" > /tmp/kkfileview.log 2>&1 & | |
| - name: Wait for services | |
| run: | | |
| fixture_ready=false | |
| for i in {1..60}; do | |
| if curl -fsS http://127.0.0.1:18080/sample.txt >/dev/null; then | |
| fixture_ready=true | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| if [ "$fixture_ready" != "true" ]; then | |
| echo "Error: fixture server did not become ready within 60 seconds." >&2 | |
| exit 1 | |
| fi | |
| kkfileview_ready=false | |
| for i in {1..120}; do | |
| if curl -fsS http://127.0.0.1:8012/ >/dev/null; then | |
| kkfileview_ready=true | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| if [ "$kkfileview_ready" != "true" ]; then | |
| echo "Error: kkFileView service did not become ready within 120 seconds." >&2 | |
| exit 1 | |
| fi | |
| - name: Run nightly E2E suites | |
| working-directory: tests/e2e | |
| env: | |
| KK_BASE_URL: http://127.0.0.1:8012 | |
| FIXTURE_BASE_URL: http://127.0.0.1:18080 | |
| E2E_MAX_PREVIEW_MS: 20000 | |
| run: npm run test:ci | |
| - name: Upload Playwright report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: nightly-playwright-report | |
| path: tests/e2e/playwright-report | |
| - name: Upload service logs | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: nightly-e2e-service-logs | |
| path: | | |
| /tmp/kkfileview.log | |
| /tmp/fixture-server.log |