Skip to content

Commit

Permalink
Merge 2582b9f into 5c903b7
Browse files Browse the repository at this point in the history
  • Loading branch information
Zungong committed Aug 28, 2020
2 parents 5c903b7 + 2582b9f commit 671fc83
Show file tree
Hide file tree
Showing 5 changed files with 312 additions and 2 deletions.
53 changes: 53 additions & 0 deletions .github/workflows/lint-js-and-ruby.yml
@@ -0,0 +1,53 @@
name: Lint JS and Ruby

on: [push, pull_request]

jobs:
build:
strategy:
matrix:
ruby: [2.6]
node: [12]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Setup Node
uses: actions/setup-node@v1.4.3
with:
node-version: ${{ matrix.node }}
- name: Print system information
run: |
echo "Linux release: "; cat /etc/issue
echo "Current user: "; whoami
echo "Current directory: "; pwd
echo "Ruby version: "; ruby -v
echo "Node version: "; node -v
echo "Yarn version: "; yarn --version
echo "Bundler version: "; bundle --version
- name: Save root node_modules to cache
uses: actions/cache@v2
with:
path: node_modules
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
- name: Save root ruby gems to cache
uses: actions/cache@v2
with:
path: vendor/bundle
key: v4-package-app-gem-cache-${{ hashFiles('react_on_rails.gemspec') }}
- name: Install Node modules with Yarn for renderer package
run: |
yarn install --no-progress --no-emoji
yarn run eslint -v
sudo yarn global add yalc
- name: Install Ruby Gems for package
run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
- name: Linting of Ruby
run: bundle exec rubocop
- name: Linting of JS
run: yarn start lint
- name: Check formatting
run: yarn start format.listDifferent
175 changes: 175 additions & 0 deletions .github/workflows/main.yml
@@ -0,0 +1,175 @@
name: Main test

on: [push, pull_request]

jobs:
build-dummy-app-webpack-test-bundles:
strategy:
matrix:
ruby: [2.6]
node: [12]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Setup Node
uses: actions/setup-node@v1.4.3
with:
node-version: ${{ matrix.node }}
- name: Print system information
run: |
echo "Linux release: "; cat /etc/issue
echo "Current user: "; whoami
echo "Current directory: "; pwd
echo "Ruby version: "; ruby -v
echo "Node version: "; node -v
echo "Yarn version: "; yarn --version
echo "Bundler version: "; bundle --version
- name: Save root node_modules to cache
uses: actions/cache@v2
with:
path: node_modules
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
- name: Install Node modules with Yarn for renderer package
run: |
yarn install --no-progress --no-emoji
yarn run eslint -v
sudo yarn global add yalc
- name: yalc publish for react-on-rails
run: yalc publish
- name: Save spec/dummy/node_modules to cache
uses: actions/cache@v2
with:
path: spec/dummy/node_modules
key: v4-dummy-app-node-modules-cache-${{ hashFiles('spec/dummy/yarn.lock') }}
- name: yalc add react-on-rails
run: cd spec/dummy && yalc add react-on-rails
- name: Install Node modules with Yarn for dummy app
run: cd spec/dummy && yarn install --no-progress --no-emoji
- name: Save dummy app ruby gems to cache
uses: actions/cache@v2
with:
path: spec/dummy/vendor/bundle
key: v4-dummy-app-gem-cache-${{ hashFiles('spec/dummy/Gemfile.lock') }}
- name: Install Ruby Gems for dummy app
run: cd spec/dummy && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
- name: Build test bundles for dummy app
run: cd spec/dummy && yarn run build:test
- id: get-sha
run: echo "::set-output name=sha::$(git rev-parse HEAD)"
- name: Save test webpack bundles to cache (for build number checksum used by rspec job)
uses: actions/cache@v2
with:
path: spec/dummy/public/webpack
key: v4-dummy-app-webpack-bundle-${{ steps.get-sha.outputs.sha }}

main:
needs: build-dummy-app-webpack-test-bundles
strategy:
matrix:
ruby: [2.6]
node: [12]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Setup Node
uses: actions/setup-node@v1.4.3
with:
node-version: ${{ matrix.node }}
- name: Print system information
run: |
echo "Linux release: "; cat /etc/issue
echo "Current user: "; whoami
echo "Current directory: "; pwd
echo "Ruby version: "; ruby -v
echo "Node version: "; node -v
echo "Yarn version: "; yarn --version
echo "Bundler version: "; bundle --version
- name: Save root node_modules to cache
uses: actions/cache@v2
with:
path: node_modules
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
- name: Save root ruby gems to cache
uses: actions/cache@v2
with:
path: vendor/bundle
key: v4-package-app-gem-cache-${{ hashFiles('react_on_rails.gemspec') }}
- name: Save dummy app ruby gems to cache
uses: actions/cache@v2
with:
path: spec/dummy/vendor/bundle
key: v4-dummy-app-gem-cache-${{ hashFiles('spec/dummy/Gemfile.lock') }}
- name: Save spec/dummy/node_modules to cache
uses: actions/cache@v2
with:
path: spec/dummy/node_modules
key: v4-dummy-app-node-modules-cache-${{ hashFiles('spec/dummy/yarn.lock') }}
- id: get-sha
run: echo "::set-output name=sha::$(git rev-parse HEAD)"
- name: Save test webpack bundles to cache (for build number checksum used by rspec job)
uses: actions/cache@v2
with:
path: spec/dummy/public/webpack
key: v4-dummy-app-webpack-bundle-${{ steps.get-sha.outputs.sha }}

- name: Install Node modules with Yarn for renderer package
run: |
yarn install --no-progress --no-emoji
yarn run eslint -v
sudo yarn global add yalc
- name: yalc publish for react-on-rails
run: yalc publish
- name: yalc add react-on-rails
run: cd spec/dummy && yalc add react-on-rails
- name: Install Ruby Gems for package
run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
- name: Install Ruby Gems for dummy app
run: cd spec/dummy && bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
- name: Ensure minimum required Chrome version
run: |
echo -e "Already installed $(google-chrome --version)\n"
MINIMUM_REQUIRED_CHROME_VERSION=75
INSTALLED_CHROME_MAJOR_VERSION="$(google-chrome --version | tr ' .' '\t' | cut -f3)"
if [[ $INSTALLED_CHROME_MAJOR_VERSION < $MINIMUM_REQUIRED_CHROME_VERSION ]]; then
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install google-chrome-stable
echo -e "\nInstalled $(google-chrome --version)"
fi
- name: Touch webpack bundles
run: touch spec/dummy/public/webpack/test/*
- name: Install yalc globally
run: sudo yarn global add yalc
- name: Prep for CI
run: bundle exec rake prepare_for_ci
- name: Main CI
run: bundle exec rake run_rspec:all_dummy
- name: Store test results
uses: actions/upload-artifact@v2
with:
name: main-rspec
path: ~/rspec
- name: Store artifacts
uses: actions/upload-artifact@v2
with:
name: dummy-app-capybara
path: spec/dummy/tmp/capybara
- name: Store artifacts
uses: actions/upload-artifact@v2
with:
name: dummy-app-test-log
path: spec/dummy/log/test.log
- name: Store artifacts
uses: actions/upload-artifact@v2
with:
name: dummy-app-yarn-log
path: spec/dummy/yarn-error.log
35 changes: 35 additions & 0 deletions .github/workflows/package-js-tests.yml
@@ -0,0 +1,35 @@
name: JS unit tests for Renderer package

on: [push, pull_request]

jobs:
build:
strategy:
matrix:
node: [12]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v1.4.3
with:
node-version: ${{ matrix.node }}
- name: Print system information
run: |
echo "Linux release: "; cat /etc/issue
echo "Current user: "; whoami
echo "Current directory: "; pwd
echo "Node version: "; node -v
echo "Yarn version: "; yarn --version
- name: Save root node_modules to cache
uses: actions/cache@v2
with:
path: node_modules
key: v4-package-node-modules-cache-${{ hashFiles('yarn.lock') }}
- name: Install Node modules with Yarn for renderer package
run: |
yarn install --no-progress --no-emoji
yarn run eslint -v
sudo yarn global add yalc
- name: Run JS unit tests for Renderer package
run: yarn test
45 changes: 45 additions & 0 deletions .github/workflows/rspec-package-specs.yml
@@ -0,0 +1,45 @@
name: Rspec test for gem

on: [push, pull_request]

jobs:
build:
strategy:
matrix:
ruby: [2.6]
node: [12]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Print system information
run: |
echo "Linux release: "; cat /etc/issue
echo "Current user: "; whoami
echo "Current directory: "; pwd
echo "Ruby version: "; ruby -v
echo "Node version: "; node -v
echo "Yarn version: "; yarn --version
echo "Bundler version: "; bundle --version
- name: Save root ruby gems to cache
uses: actions/cache@v2
with:
path: vendor/bundle
key: v4-package-app-gem-cache-${{ hashFiles('react_on_rails.gemspec') }}
- name: Install Ruby Gems for package
run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
- name: Run rspec tests
run: bundle exec rspec spec/react_on_rails
- name: Store test results
uses: actions/upload-artifact@v2
with:
name: main-rspec
path: ~/rspec
- name: Store artifacts
uses: actions/upload-artifact@v2
with:
name: main-test-log
path: log/test.log
6 changes: 4 additions & 2 deletions spec/dummy/spec/support/driver_registration.rb
Expand Up @@ -29,8 +29,10 @@ def self.register_selenium_headless
return if @selenium_headless_registered

Capybara.register_driver :selenium_chrome_headless do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: { args: %w[headless disable-gpu] })
Capybara::Selenium::Driver.new app, browser: :chrome, desired_capabilities: capabilities
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument("--headless")
options.add_argument("--disable-gpu")
Capybara::Selenium::Driver.new app, browser: :chrome, options: options
end
Capybara::Screenshot.register_driver(:selenium_chrome_headless) do |js_driver, path|
js_driver.browser.save_screenshot(path)
Expand Down

0 comments on commit 671fc83

Please sign in to comment.