image: node:lts-alpine stages: - install - lint - test - build install: stage: install script: - npm install --prefer-offline cache: key: files: - package.json paths: - node_modules lint: stage: lint needs: ["install"] script: - npm run lint cache: key: files: - package.json paths: - node_modules policy: pull test: stage: test needs: ["install"] before_script: # Download Chrome - apk add chromium - export CHROME_BIN=/usr/bin/chromium-browser - export CHROME_PATH=/usr/lib/chromium/ # Download Firefox - apk add firefox-esr - export FIREFOX_BIN=/usr/bin/firefox - export FIREFOX_PATH=/usr/lib/firefox/ # X Server - apk add xvfb - export DISPLAY=:99 - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & script: - npm run test -- --browsers=Headless_Chrome --no-watch cache: key: files: - package.json paths: - node_modules policy: pull build: stage: build needs: ["test", "lint"] script: - npm run build artifacts: paths: - $CI_PROJECT_DIR/dist cache: key: files: - package.json paths: - node_modules policy: pull