name: CI # Not functional at the moment on: pull_request: push: branches: [main] jobs: test: runs-on: ubuntu-latest services: postgres: image: postgres env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - 5432:5432 options: --health-cmd="pg_isready" --health-interval=10s --health-timeout=5s --health-retries=3 redis: image: redis ports: - 6379:6379 steps: - name: Install packages run: sudo apt-get update && sudo apt-get install --no-install-recommends -y google-chrome-stable curl libjemalloc2 libvips postgresql-client libpq-dev - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.4.6' bundler-cache: true - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '16' # Use the appropriate Node.js version - name: Install Node.js dependencies run: npm install - name: Install Ruby dependencies run: bundle install - name: Run bundler audit run: | gem install bundler-audit bundle audit --update - name: Setup database env: RAILS_ENV: test DATABASE_URL: postgres://postgres:postgres@localhost:5432 REDIS_URL: redis://localhost:6379/1 run: bin/rails db:setup - name: Run main tests (excluding system tests) env: RAILS_ENV: test DATABASE_URL: postgres://postgres:postgres@localhost:5432 REDIS_URL: redis://localhost:6379/1 run: | bundle exec rspec --exclude-pattern "spec/system/**/*_spec.rb" || (cat log/test.log && exit 1) - name: Run system tests env: RAILS_ENV: test DATABASE_URL: postgres://postgres:postgres@localhost:5432 REDIS_URL: redis://localhost:6379/1 run: | bundle exec rspec spec/system/ || (cat log/test.log && exit 1) - name: Keep screenshots from failed system tests uses: actions/upload-artifact@v4 if: failure() with: name: screenshots path: ${{ github.workspace }}/tmp/capybara if-no-files-found: ignore - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v4.0.1 with: token: ${{ secrets.CODECOV_TOKEN }}