jenkins+selenium webdriver+rubyによるE2Eテストの自動化


背景

E2Eテストをselenium webdriver + ruby(rspec)で書き、jenkinsを使って特定のタイミングで自動実行してくれるような環境を作りにいきます

今回やること

今回は手動でjenkinsのビルド実行を開始し、テストが正しく動くことを確認するところまでをやっていきます。

やり方

ruby(rspec)によるテストコードの準備

  • bundleのインストール
gem install bundler
  • bundleの初期化
bundle init
  • Gemfileにインストールするgemを追加
    • 今回はrspecとselenium-webdriverをインストールします
    # frozen_string_literal: true
    source "https://rubygems.org"

    gem "selenium-webdriver"
    gem "rspec"
    # gem "rails"
  • gemのインストール
    bundle install --path vendor/bundle
  • テストファイルの作成
    mkdir spec
    touch hoge_spec.rb
  • テストコードの作成
    require 'selenium-webdriver'

    describe 'test' do
      it 'login' do
        driver = Selenium::WebDriver.for :firefox
        driver.get "https://dummy_domain/login"

        dummy_name = driver.find_element(:dummy_name, 'dummy_name')
        dummy_name.send_keys('dummy_name')

        login = driver.find_element(:dummy_button, 'dummy_button').click
      end
    end
  • テストコードの実行(ちゃんと動くかどうかの確認)
    bundle exec rspec

jenkinsの設定

  • jenkinsのインストール
brew install jenkins 
  • jenkinsの起動
brew services start jenkins
  • localhost:8080へアクセス

  • フリースタイル・プロジェクトのビルドを選択

  • ソースコード管理→Git→Repository URLに先ほど作成したrspecのコードがあるディレクトリを設定

  • ビルド環境→rbenv build wrapper

    • The Ruby Version→端末にインストールされているrubyのバージョンを指定
    • Preinstall gem list→高度な設定→RBENV_ROOTを$HOME/.rbenv-jenkinsにする
    • 参考:Jenkinsでrubyのビルドでハマった点
  • ビルド→シェルスクリプトに次のコードを記述

    bundle install
    bundle exec rspec
  • ビルドの実行

  • 青色になれば成功、赤色になれば失敗

    • #xx→コンソール出力でテスト結果の詳細が確認可能