language: node_js node_js: - "lts/*" services: - docker cache: false env: global: - secure: "WMGxFkOeTTlhWB+ChMucRtIqVmMbwzYdNHuHQjKCcj8HBEPdZLfCuK/kf4rG\nVLcLQiIsyllqzNhBGVHG1nyqWr0/LTm8JRqSCDDVIhpyzp9KpCJQQJG2Uwjk\n6/HIJJh/wbxsEdLNV2crYU/EiVO3A4Bq0YTHUlbhUqG3mSCr5Ec=" - secure: "gejXUAHYscbR6Bodw35XexpToqWkv2ifeECsbeEmjaLkYzXmUUNWJGknKSu7\nEUsSfQV8w+hxApr1Z+jNqk9aX3K1I4btL3cwk2trnNI8XRAvu1c1Iv60eerI\nkE82Rsd5lwUaMEh+/HoL8ztFCZamVndoNgX7HWp5J/NRZZMmh4g=" _set_loglevel_warn: &set_loglevel_warn | sed -e 's/"loglevel":[^,]*/"loglevel": "WARN"/' \ settings.json.template >settings.json.template.new && mv settings.json.template.new settings.json.template _enable_admin_tests: &enable_admin_tests | sed -e 's/"enableAdminUITests": false/"enableAdminUITests": true,\n"users":{"admin":{"password":"changeme","is_admin":true}}/' \ settings.json.template >settings.json.template.new && mv settings.json.template.new settings.json.template _install_libreoffice: &install_libreoffice >- sudo add-apt-repository -y ppa:libreoffice/ppa && sudo apt-get update && sudo apt-get -y install libreoffice libreoffice-pdfimport # The --legacy-peer-deps flag is required to work around a bug in npm v7: # https://github.com/npm/cli/issues/2199 _install_plugins: &install_plugins >- npm install --no-save --legacy-peer-deps ep_align ep_author_hover ep_cursortrace ep_font_size ep_hash_auth ep_headings2 ep_markdown ep_readonly_guest ep_spellcheck ep_subscript_and_superscript ep_table_of_contents ep_set_title_on_pad jobs: include: # we can only frontend tests from the ether/ organization and not from forks. # To request tests to be run ask a maintainer to fork your repo to ether/ - if: fork = false name: "Test the Frontend without Plugins" install: - *set_loglevel_warn - *enable_admin_tests - "src/tests/frontend/travis/sauce_tunnel.sh" - "src/bin/installDeps.sh" - "export GIT_HASH=$(git rev-parse --verify --short HEAD)" script: - "./src/tests/frontend/travis/runner.sh" - name: "Run the Backend tests without Plugins" install: - *install_libreoffice - *set_loglevel_warn - "src/bin/installDeps.sh" - "cd src && npm install && cd -" script: - "cd src && npm test" - name: "Test the Dockerfile" install: - "cd src && npm install && cd -" script: - "docker build -t etherpad:test ." - "docker run -d -p 9001:9001 etherpad:test && sleep 3" - "cd src && npm run test-container" - name: "Load test Etherpad without Plugins" install: - *set_loglevel_warn - "src/bin/installDeps.sh" - "cd src && npm install && cd -" - "npm install -g etherpad-load-test" script: - "src/tests/frontend/travis/runnerLoadTest.sh" # we can only frontend tests from the ether/ organization and not from forks. # To request tests to be run ask a maintainer to fork your repo to ether/ - if: fork = false name: "Test the Frontend Plugins only" install: - *set_loglevel_warn - *enable_admin_tests - "src/tests/frontend/travis/sauce_tunnel.sh" - "src/bin/installDeps.sh" - "rm src/tests/frontend/specs/*" - *install_plugins - "export GIT_HASH=$(git rev-parse --verify --short HEAD)" script: - "./src/tests/frontend/travis/runner.sh" - name: "Lint test package-lock.json" install: - "npm install lockfile-lint" script: - npx lockfile-lint --path src/package-lock.json --validate-https --allowed-hosts npm - name: "Run the Backend tests with Plugins" install: - *install_libreoffice - *set_loglevel_warn - "src/bin/installDeps.sh" - *install_plugins - "cd src && npm install && cd -" script: - "cd src && npm test" - name: "Test the Dockerfile" install: - "cd src && npm install && cd -" script: - "docker build -t etherpad:test ." - "docker run -d -p 9001:9001 etherpad:test && sleep 3" - "cd src && npm run test-container" - name: "Load test Etherpad with Plugins" install: - *set_loglevel_warn - "src/bin/installDeps.sh" - *install_plugins - "cd src && npm install && cd -" - "npm install -g etherpad-load-test" script: - "src/tests/frontend/travis/runnerLoadTest.sh" - name: "Test rate limit" install: - "docker network create --subnet=172.23.42.0/16 ep_net" - "docker build -f Dockerfile -t epl-debian-slim ." - "docker build -f src/tests/ratelimit/Dockerfile.nginx -t nginx-latest ." - "docker build -f src/tests/ratelimit/Dockerfile.anotherip -t anotherip ." - "docker run -p 8081:80 --rm --network ep_net --ip 172.23.42.1 -d nginx-latest" - "docker run --name etherpad-docker -p 9000:9001 --rm --network ep_net --ip 172.23.42.2 -e 'TRUST_PROXY=true' epl-debian-slim &" - "docker run --rm --network ep_net --ip 172.23.42.3 --name anotherip -dt anotherip" - "./src/bin/installDeps.sh" script: - "cd src/tests/ratelimit && bash testlimits.sh" notifications: irc: channels: - "irc.freenode.org#etherpad-lite-dev"