Skip to content

Separate tests workflows (#530) #539

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 3, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions .github/workflows/js_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# This workflow uses actions that are not certified by GitHub. They are
# provided by a third-party and are governed by separate terms of service,
# privacy policy, and support documentation.
#
# This workflow will install a prebuilt Ruby version, install dependencies, and
# run js tests.
name: "JS CI"
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
services:
postgres:
image: postgres:11-alpine
ports:
- "5432:5432"
env:
POSTGRES_DB: rails_test
POSTGRES_USER: rails
POSTGRES_PASSWORD: password
env:
RAILS_ENV: test
NODE_ENV: test
DATABASE_URL: "postgres://rails:password@localhost:5432/rails_test"
DRIVER: selenium_chrome
CHROME_BIN: /usr/bin/google-chrome
USE_COVERALLS: true
steps:
- name: Install Chrome
uses: browser-actions/setup-chrome@latest

- name: Check Chrome version
run: chrome --version

- name: Check Chrome version
run: google-chrome --version

- name: Set Display environment variable
run: "export DISPLAY=:99"

- name: Checkout code
uses: actions/checkout@v3

- name: Install Ruby and gems
uses: ruby/setup-ruby@0a29871fe2b0200a17a4497bae54fe5df0d973aa # v1.115.3
with:
bundler-cache: true

- name: Use Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Install Node Packages
run: npm install --legacy-peer-deps

- name: Set up database schema
run: bin/rails db:schema:load

- name: Build i18n libraries
run: bundle exec rake react_on_rails:locale

- name: Build shakapacker chunks
run: NODE_ENV=development bundle exec bin/shakapacker

- name: Run js tests with xvfb
uses: GabrielBB/xvfb-action@v1
with:
run: bundle exec rake ci_js_tests
working-directory: ./ #optional
options: ":99 -ac -screen scn 1600x1200x16"
51 changes: 51 additions & 0 deletions .github/workflows/lint_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# This workflow uses actions that are not certified by GitHub. They are
# provided by a third-party and are governed by separate terms of service,
# privacy policy, and support documentation.
#
# This workflow will install a prebuilt Ruby version, install dependencies, and
# run rspec tests.
name: "Lint CI"
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
env:
RAILS_ENV: test
NODE_ENV: test
steps:
- name: Set Display environment variable
run: "export DISPLAY=:99"

- name: Checkout code
uses: actions/checkout@v3

- name: Install Ruby and gems
uses: ruby/setup-ruby@0a29871fe2b0200a17a4497bae54fe5df0d973aa # v1.115.3
with:
bundler-cache: true

- name: Use Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Install Node Packages
run: npm install --legacy-peer-deps

- name: Build i18n libraries
run: bundle exec rake react_on_rails:locale

- name: Build shakapacker chunks
run: NODE_ENV=development bundle exec bin/shakapacker

- name: Run lint tests with xvfb
uses: GabrielBB/xvfb-action@v1
with:
run: bundle exec rake lint
working-directory: ./ #optional
options: ":99 -ac -screen scn 1600x1200x16"
76 changes: 76 additions & 0 deletions .github/workflows/rspec_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# This workflow uses actions that are not certified by GitHub. They are
# provided by a third-party and are governed by separate terms of service,
# privacy policy, and support documentation.
#
# This workflow will install a prebuilt Ruby version, install dependencies, and
# run rspec tests.
name: "rspec CI"
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
services:
postgres:
image: postgres:11-alpine
ports:
- "5432:5432"
env:
POSTGRES_DB: rails_test
POSTGRES_USER: rails
POSTGRES_PASSWORD: password
env:
RAILS_ENV: test
NODE_ENV: test
DATABASE_URL: "postgres://rails:password@localhost:5432/rails_test"
DRIVER: selenium_chrome
CHROME_BIN: /usr/bin/google-chrome
USE_COVERALLS: true
steps:
- name: Install Chrome
uses: browser-actions/setup-chrome@latest

- name: Check Chrome version
run: chrome --version

- name: Check Chrome version
run: google-chrome --version

- name: Set Display environment variable
run: "export DISPLAY=:99"

- name: Checkout code
uses: actions/checkout@v3

- name: Install Ruby and gems
uses: ruby/setup-ruby@0a29871fe2b0200a17a4497bae54fe5df0d973aa # v1.115.3
with:
bundler-cache: true

- name: Use Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Install Node Packages
run: npm install --legacy-peer-deps

- name: Set up database schema
run: bin/rails db:schema:load

- name: Build i18n libraries
run: bundle exec rake react_on_rails:locale

- name: Build shakapacker chunks
run: NODE_ENV=development bundle exec bin/shakapacker

- name: Run rspec tests with xvfb
uses: GabrielBB/xvfb-action@v1
with:
run: bundle exec rake ci_rspec_tests
working-directory: ./ #optional
options: ":99 -ac -screen scn 1600x1200x16"
24 changes: 24 additions & 0 deletions lib/tasks/ci.rake
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,30 @@ if Rails.env.development? || Rails.env.test?
sh "rspec"
end

desc "Run CI rspec tests"
task ci_rspec_tests: %i[environment rspec_tests] do
puts "CI rspec tests"
puts Rainbow("PASSED").green
puts ""
rescue StandardError => e
puts e.to_s
puts Rainbow("FAILED").red
puts ""
raise(e)
end

desc "Run CI js_tests"
task ci_js_tests: %i[environment js_tests] do
puts "CI js_tests"
puts Rainbow("PASSED").green
puts ""
rescue StandardError => e
puts e.to_s
puts Rainbow("FAILED").red
puts ""
raise(e)
end

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think these tasks could go under ci namespace so that we get these tasks:

  • ci: runs ci:all
  • ci:all runs all other ci tasks
  • ci:js runs js_tests
  • ci:rspec runs rspec

namespace :ci do
desc "Run all audits and tests"
# rspec_tests must be before lint and js_tests to build the locale files
Expand Down