name: CI Features - Admin 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 ELASTIC_SEARCH_VERSION: "7.5.1-amd64" 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@v6 - name: Configure sysctl limits run: | sudo swapoff -a sudo sysctl -w vm.swappiness=1 sudo sysctl -w fs.file-max=262144 sudo sysctl -w vm.max_map_count=262144 - name: Start Elasticsearch uses: elastic/elastic-github-actions/elasticsearch@master with: stack-version: 7.5.1 ## # 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@v4 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@v6 with: node-version: '12' - 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: index into elastic search run: bundle exec rails search:reindex - name: Run rspec (admin/) run: bundle exec rspec spec/features/admin/ -fd -t ~@flaky - name: Upload screenshots if: failure() uses: actions/upload-artifact@v5 with: name: screenshots path: tmp/screenshots