name: CI Features - Crops on: [pull_request] jobs: rspec: runs-on: ubuntu-latest services: db: image: postgres env: ## # The Postgres service fails its docker health check unless you # specify these environment variables # POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: growstuff_test ports: ['5432:5432'] options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 env: APP_DOMAIN_NAME: localhost:3000 APP_PROTOCOL: http CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} DATABASE_URL: postgres://postgres:postgres@localhost:5432/growstuff_test DEVISE_SECRET_KEY: secret GROWSTUFF_EMAIL: "noreply@test.growstuff.org" GROWSTUFF_FLICKR_KEY: secretkey" GROWSTUFF_FLICKR_SECRET: secretsecret GROWSTUFF_SITE_NAME: "Growstuff (travis)" RAILS_ENV: test RAILS_SECRET_TOKEN: supersecret steps: - name: Checkout this repo uses: actions/checkout@v7 ## # Cache Yarn modules # # See https://github.com/actions/cache/blob/master/examples.md#node---yarn for details # - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Setup yarn cache uses: actions/cache@v6 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install required OS packages run: | sudo apt-get -y install libpq-dev google-chrome-stable - name: Install NodeJS uses: actions/setup-node@v7 with: node-version: '24' - name: Install Ruby (version given by .ruby-version) and Bundler uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Install required JS packages run: yarn install - name: install chrome run: sudo apt-get install google-chrome-stable - name: Prepare database for testing run: bundle exec rails db:prepare - name: precompile assets run: bundle exec rails assets:precompile - name: Run rspec (crops/) run: bundle exec rspec spec/features/crops/ -fd -t ~@flaky - name: Upload screenshots if: failure() uses: actions/upload-artifact@v7 with: name: screenshots path: tmp/screenshots - name: Upload Ruby coverage to Codecov if: ${{ !cancelled() }} uses: codecov/codecov-action@v7 with: token: ${{ secrets.CODECOV_TOKEN }} files: coverage/coverage.json flags: ruby fail_ci_if_error: false