name: "[CI] Test (integration)" on: push: branches: - main pull_request: env: CI: "true" RUBY_VERSION: 2.7.7 NODE_VERSION: 16.9.1 RAILS_ENV: test DATABASE_USERNAME: postgres DATABASE_PASSWORD: postgres DATABASE_HOST: localhost jobs: build: name: Build & Precompile runs-on: ubuntu-20.04 services: postgres: image: postgres:11 ports: ["5432:5432"] options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 env: POSTGRES_PASSWORD: postgres steps: - uses: actions/checkout@v3 with: fetch-depth: 1 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ env.RUBY_VERSION }} bundler-cache: true - uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: package-lock.json - name: Node packages run: npm ci - name: Setup Database run: bundle exec rake test_app - name: Precompile test app assets run: bundle exec rake assets:precompile working-directory: ./spec/decidim_dummy_app - run: tar -zcf /tmp/testapp-env.tar.gz ./spec/decidim_dummy_app - uses: actions/upload-artifact@v3 with: name: workspace path: /tmp/testapp-env.tar.gz test: name: Integration Tests runs-on: ubuntu-20.04 needs: build strategy: matrix: include: - name: "Admin" rspec: admin - name: "Public" rspec: "*_spec.rb" fail-fast: false services: postgres: image: postgres:11 ports: ["5432:5432"] options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 env: POSTGRES_PASSWORD: postgres steps: - uses: actions/checkout@v3 with: fetch-depth: 1 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ env.RUBY_VERSION }} bundler-cache: true - uses: actions/download-artifact@v3 with: name: workspace path: /tmp - run: ls - run: tar -zxf /tmp/testapp-env.tar.gz - run: ls - run: bundle exec rails db:create db:schema:load working-directory: ./spec/decidim_dummy_app - name: Run RSpec run: bundle exec rspec spec/system/${{ matrix.rspec }} - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 - uses: actions/upload-artifact@v3 if: always() with: name: screenshots-${{ matrix.name }} path: ./spec/decidim_dummy_app/tmp/screenshots