blob: 2553efceebdb37a28e475f5d36a3fce0162b9477 [file] [log] [blame]
# 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