To run this script
docker-compose build
docker-compose up -d chrome
docker-compose run --rm my-integ-tests
docker-compose down
| version: '3.9' | |
| services: | |
| my-integ-tests: | |
| container_name: my-integ-tests | |
| image: test/my-integ-tests | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| environment: | |
| CHROME_URL: http://chrome:4444/wd/hub | |
| stdin_open: true | |
| tty: true | |
| depends_on: | |
| - chrome | |
| chrome: | |
| container_name: chrome | |
| image: selenium/standalone-chrome | |
| environment: | |
| JAVA_OPTS: -Dwebdriver.chrome.whitelistedIps= -Dwebdriver.chrome.allowedIps= | |
| shm_size: '2gb' |
| #FROM ruby:2.7 | |
| FROM ruby:3 | |
| RUN apt-get update -y && \ | |
| apt-get -y upgrade && \ | |
| apt-get install -y libarchive-tools zip | |
| RUN gem install bundler | |
| COPY Gemfile Gemfile | |
| RUN bundle install | |
| COPY . . | |
| CMD ["bundle", "exec", "rspec", "/spec/test"] |
| source "https://rubygems.org" | |
| gem 'rspec' | |
| gem 'capybara' | |
| gem 'capybara-webmock' | |
| gem 'colorize' | |
| gem 'webdrivers' | |
| #gem 'chromedriver-helper' | |
| gem 'selenium-webdriver' | |
| gem 'byebug' | |
| gem 'nokogiri' |
| # save this as spec/spec_helper.rb | |
| require 'colorize' | |
| require 'capybara/dsl' | |
| require 'capybara/rspec' | |
| require 'nokogiri' | |
| RSpec.configure do |config| | |
| config.color = true | |
| config.tty = true | |
| config.formatter = :documentation | |
| config.include Capybara::DSL | |
| end | |
| def create_web_session | |
| Capybara.app_host = "https://www.google.com" | |
| Capybara.run_server = false # don't start Rack | |
| if ENV['CHROME_URL'] | |
| Capybara.register_driver :remote do |app| | |
| Capybara::Selenium::Driver.new(app, browser: :remote, options: Selenium::WebDriver::Options.chrome, url: ENV['CHROME_URL']) | |
| end | |
| @session = Capybara::Session.new(:remote) | |
| else | |
| @session = Capybara::Session.new(:selenium_chrome) | |
| end | |
| end | |
| def end_web_session(session) | |
| session.reset! | |
| session.driver.quit | |
| end |
| # Save this as spec/test/demo_spec.rb | |
| require 'spec_helper.rb' | |
| require 'webdrivers/chromedriver' | |
| require 'cgi' | |
| sleep 1 | |
| RSpec.describe 'simple tests', type: :feature do | |
| before(:each) do | |
| @session = create_web_session | |
| end | |
| after(:each) do | |
| end_web_session(@session) | |
| end | |
| it 'Load home page' do | |
| @session.visit '/' | |
| end | |
| end |