| # GitLab CI/CD configuration for KorAP E2E Tests |
| # This pipeline runs end-to-end tests against a KorAP instance |
| |
| stages: |
| - test |
| |
| variables: |
| # Default test configuration |
| KORAP_URL: "https://korap.ids-mannheim.de/" |
| KORAP_QUERIES: 'geht, [orth=geht & tt/p="VVFIN"]' |
| KORAP_MIN_TOKENS_IN_CORPUS: "22000000000" |
| LC_ALL: "C" |
| |
| # Node.js configuration |
| NODE_ENV: "test" |
| |
| # Main E2E test job |
| e2e_tests: |
| stage: test |
| image: node:bullseye |
| |
| # Install system dependencies required for Puppeteer |
| before_script: |
| - apt-get update |
| - apt-get install -y |
| wget |
| gnupg |
| ca-certificates |
| fonts-liberation |
| libasound2 |
| libatk-bridge2.0-0 |
| libatk1.0-0 |
| libc6 |
| libcairo2 |
| libcups2 |
| libdbus-1-3 |
| libexpat1 |
| libfontconfig1 |
| libgbm1 |
| libgcc1 |
| libglib2.0-0 |
| libgtk-3-0 |
| libnspr4 |
| libnss3 |
| libpango-1.0-0 |
| libpangocairo-1.0-0 |
| libstdc++6 |
| libx11-6 |
| libx11-xcb1 |
| libxcb1 |
| libxcomposite1 |
| libxcursor1 |
| libxdamage1 |
| libxext6 |
| libxfixes3 |
| libxi6 |
| libxrandr2 |
| libxrender1 |
| libxss1 |
| libxtst6 |
| lsb-release |
| wget |
| xdg-utils |
| - npm install |
| |
| script: |
| - echo "Running KorAP E2E tests against $KORAP_URL" |
| - npm run test:ci |
| |
| after_script: |
| - echo "Test execution completed, checking for test results..." |
| - ls -la test-results.xml || echo "No test-results.xml found" |
| |
| # Use CI variables for sensitive data |
| variables: |
| KORAP_LOGIN: $KORAP_USERNAME # Set this in GitLab CI/CD Variables |
| KORAP_PWD: $KORAP_PASSWORD # Set this in GitLab CI/CD Variables |
| SLACK_WEBHOOK_URL: $SLACK_WEBHOOK # Optional: Set for Slack notifications |
| |
| # Generate test artifacts - always keep results even on test failure |
| artifacts: |
| when: always # Collect artifacts on success, failure, and cancellation |
| reports: |
| junit: test-results.xml # GitLab will parse this for test reporting |
| paths: |
| - "test-results.xml" # Keep the raw XML file as well |
| - "failed_*.png" # Screenshots of failed tests |
| expire_in: 1 week |
| |
| # Retry on failure (network issues, etc.) |
| retry: |
| max: 2 |
| when: |
| - unknown_failure |
| - api_failure |
| - runner_system_failure |
| |
| # Pipeline trigger rules |
| rules: |
| - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" |
| - if: $CI_PIPELINE_SOURCE == "schedule" # Allow scheduled runs |
| - when: manual |
| |
| # Set timeout |
| timeout: 5 minutes |
| |
| # Optional: Scheduled test job for regular monitoring |
| scheduled_tests: |
| extends: e2e_tests |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "schedule" |
| variables: |
| SLACK_WEBHOOK_URL: $SLACK_WEBHOOK # Enable notifications for scheduled runs |