name: Specs on: push: branches: - master pull_request: branches: - master workflow_dispatch: jobs: linters: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: bundler-cache: true - run: bundle exec rubocop - run: bundle exec haml-lint app/views spec: needs: linters runs-on: ubuntu-latest name: spec env: OSEM_DB_HOST: localhost RAILS_ENV: test strategy: matrix: suite: [models, features, controllers, ability, leftovers] steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Prepare spec run: | bundle exec rake db:setup --trace bundle exec bin/rails webdrivers:chromedriver:update # FIXME: This flickers... # bundle exec rake factory_bot:lint RAILS_ENV=test --trace - name: spec/${{ matrix.suite }} run: bundle exec rake spec:${{ matrix.suite }} - name: Upload Suite Artifacts if: ${{ failure() }} uses: actions/upload-artifact@v4 with: name: logs-${{ matrix.suite }} path: | log/ tmp/capybara - name: coverage upload ${{ matrix.suite }} uses: codacy/codacy-coverage-reporter-action@master if: github.ref == 'refs/heads/master' with: project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} coverage-reports: coverage/coverage.xml services: postgres: image: postgres:16-alpine env: POSTGRES_PASSWORD: mysecretpassword options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432