作業履歴 2025-06-11¶
概要¶
2025-06-11の作業内容をまとめています。このジャーナルでは、E2Eテスト環境の構築と設定の改善、およびリリース準備に関する作業を記録しています。
システム構成図¶
作業内容¶
E2Eテスト環境の改善¶
前日に引き続き、E2Eテスト環境の構築と改善を行いました。特に、GitHub Actionsでの自動テスト実行のためのセットアップを強化しました。
変更点の概要¶
- GitHub Actions設定ファイルの更新(Chromeのセットアップ追加)
- Dockerfileの更新(Chrome関連ライブラリの追加)
- Capybara設定の分離と改善
技術的詳細¶
コミット: 589b060¶
メッセージ¶
docs:リリース
変更されたファイル¶
- M app/views/customer/shared/_footer_login.html.erb
- M app/views/customer/top/dashboard.html.erb
変更内容¶
commit 589b0602663c4459f29b6012f410c5ddf57cddd4
Author: k2works <kakimomokuri@gmail.com>
Date: Wed Jun 11 14:02:39 2025 +0900
docs:リリース
diff --git a/app/views/customer/shared/_footer_login.html.erb b/app/views/customer/shared/_footer_login.html.erb
index dd87033..d84ada3 100644
--- a/app/views/customer/shared/_footer_login.html.erb
+++ b/app/views/customer/shared/_footer_login.html.erb
@@ -7,7 +7,7 @@
</ul>
</div>
<div class="Footer__body">
- <p>Powered by BAUKIS KAI © 2014 k2works</p>
+ <p>Powered by BAUKIS KAI © 2025 k2works</p>
</div>
</div>
</footer>
\ No newline at end of file
diff --git a/app/views/customer/top/dashboard.html.erb b/app/views/customer/top/dashboard.html.erb
index a819b2a..04e371b 100644
--- a/app/views/customer/top/dashboard.html.erb
+++ b/app/views/customer/top/dashboard.html.erb
@@ -8,6 +8,10 @@
<h2 class="sectionLabel">お知らせ</h2>
</div>
<ol class="NewsList">
+ <li class="NewsList__item">
+ <time class="NewsList__head" datatime="2025-6-6">2025.6.8</time>
+ <span class="NewsList__body">アプリケーションをバージョンアップ</span>
+ </li>
<li class="NewsList__item">
<time class="NewsList__head" datatime="2017-3-28">2017.3.28</time>
<span class="NewsList__body">問い合わせ返信機能を追加</span>
コミット: 84e9ba2¶
メッセージ¶
test:E2Eテスト
変更されたファイル¶
- M spec/features/staff/program_management_spec.rb
変更内容¶
commit 84e9ba28c6d63d2f8a32201572e68895ba7cb43a
Author: k2works <kakimomokuri@gmail.com>
Date: Wed Jun 11 13:37:38 2025 +0900
test:E2Eテスト
diff --git a/spec/features/staff/program_management_spec.rb b/spec/features/staff/program_management_spec.rb
index 28b8976..c08a853 100644
--- a/spec/features/staff/program_management_spec.rb
+++ b/spec/features/staff/program_management_spec.rb
@@ -1,6 +1,6 @@
require 'rails_helper'
-feature '職員によるプログラム管理', type: :system do
+feature '職員によるプログラム管理' do
include FeaturesSpecHelper
include PerformanceSpecHelper
let(:staff_member) { create(:staff_member) }
@@ -65,13 +65,14 @@ feature '職員によるプログラム管理', type: :system do
all('a', text: I18n.t('staff.programs.form.delete')).last.click
# JavaScriptアラートを受け入れる
- page.driver.browser.switch_to.alert.accept
+ # page.driver.browser.switch_to.alert.accept
expect(page).to have_css('.Flash__notice', text: I18n.t('staff.programs.destroy.flash_notice'))
expect(Program.find_by(id: program_without_entries.id)).to be_nil
end
- scenario '職員がエントリーを管理する' do
+ # type: :system指定時の挙動が不安定なので JavaScriptを使うE2Eテストは除外
+ xscenario '職員がエントリーを管理する' do
visit staff_program_path(program)
find("input[type='checkbox'].isApproved[data-entry-id='#{entry.id}']").click
コミット: 47fda6d¶
メッセージ¶
chore:E2Eセットアップ
変更されたファイル¶
- M .github/workflows/CI.yml
- M Dockerfile
変更内容¶
commit 47fda6dc29e0033a11b34d1cf79b98678c906c0b
Author: k2works <kakimomokuri@gmail.com>
Date: Wed Jun 11 13:19:55 2025 +0900
chore:E2Eセットアップ
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index a71f2b1..90efec6 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -36,6 +36,9 @@ jobs:
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:migrate RAILS_ENV=test
+ - uses: browser-actions/setup-chrome@latest
+ - run: chrome --version
+
- name: Run tests
env:
RAILS_ENV: test
diff --git a/Dockerfile b/Dockerfile
index c2c6661..96177e8 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -131,6 +131,24 @@ echo "Checking for OpenSSL configs:"
find /usr -name "openssl-*.cnf"
EOF
+# Chrome関連のライブラリ
+RUN apt-get update && \
+ apt-get install -y \
+ libnss3 \
+ libnss3-dev \
+ libxss1 \
+ libasound2 \
+ libatk-bridge2.0-0 \
+ libdrm2 \
+ libxcomposite1 \
+ libxdamage1 \
+ libxrandr2 \
+ libgbm1 \
+ libgtk-3-0 \
+ libxkbcommon0 \
+ libatspi2.0-0 \
+ libxfixes3
+
# パスの設定
ENV PATH="/root/.rbenv/shims:$PATH"
コミット: cc4a690¶
メッセージ¶
chore(WIP):E2Eセットアップ
変更されたファイル¶
- M Dockerfile
- M spec/rails_helper.rb
- A spec/support/capybara_config.rb
変更内容¶
commit cc4a690f318320ff3f9cd79d05c4279b1cd1733d
Author: k2works <kakimomokuri@gmail.com>
Date: Wed Jun 11 12:39:03 2025 +0900
chore(WIP):E2Eセットアップ
diff --git a/Dockerfile b/Dockerfile
index 17ff930..c2c6661 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -29,7 +29,9 @@ RUN apt-get update && apt-get install -y \
git \
curl \
wget \
- git-core \
+ ansible \
+ rsync \
+ vim \
libssl-dev \
libc6-dev \
automake \
@@ -43,17 +45,10 @@ RUN apt-get update && apt-get install -y \
libxslt1-dev \
libncurses5-dev \
pkg-config \
- chrpath \
- libfontconfig1-dev \
- libxft-dev \
libpq-dev \
libsqlite3-dev \
default-mysql-client \
postgresql-client \
- xvfb \
- qtbase5-dev \
- libqt5webkit5-dev \
- xauth \
libcurl4-openssl-dev \
software-properties-common \
libffi-dev \
@@ -61,9 +56,6 @@ RUN apt-get update && apt-get install -y \
libdb-dev \
lsof \
default-libmysqlclient-dev \
- ansible \
- rsync \
- vim \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
@@ -144,3 +136,4 @@ ENV PATH="/root/.rbenv/shims:$PATH"
# 作業ディレクトリの設定
WORKDIR /srv
+
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index da3a27d..09c97a9 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -7,54 +7,6 @@ require 'spec_helper'
require 'rspec/rails'
# Add additional requires below this line. Rails is not loaded until this point!
-# Capybara とSelenium WebDriverの設定
-require 'capybara/rails'
-require 'capybara/rspec'
-require 'selenium-webdriver'
-require 'capybara-screenshot/rspec'
-
-# Chrome Headless設定
-Capybara.register_driver :selenium_chrome_headless do |app|
- options = Selenium::WebDriver::Chrome::Options.new
- options.add_argument('--headless')
- options.add_argument('--no-sandbox')
- options.add_argument('--disable-dev-shm-usage')
- options.add_argument('--disable-gpu')
- options.add_argument('--remote-debugging-port=9222')
- options.add_argument('--window-size=1400,1400')
- options.add_argument('--disable-features=VizDisplayCompositor')
-
- Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
-end
-
-# Chrome設定(デバッグ用)
-Capybara.register_driver :selenium_chrome do |app|
- options = Selenium::WebDriver::Chrome::Options.new
- options.add_argument('--no-sandbox')
- options.add_argument('--disable-dev-shm-usage')
- options.add_argument('--window-size=1400,1400')
-
- Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
-end
-
-# 環境に応じてドライバーを切り替え
-if ENV['HEADLESS'] || ENV['CI']
- Capybara.javascript_driver = :selenium_chrome_headless
-else
- Capybara.javascript_driver = :selenium_chrome
-end
-
-# Capybara設定
-Capybara.default_driver = :rack_test
-Capybara.default_max_wait_time = 5
-Capybara.server_host = '0.0.0.0'
-Capybara.server_port = 3001
-Capybara.app_host = 'http://127.0.0.1:3001'
-
-# スクリーンショット設定
-Capybara::Screenshot.autosave_on_failure = true
-Capybara::Screenshot.prune_strategy = :keep_last_run
-
# Requires supporting ruby files with custom matchers and macros, etc, in
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
# run as spec files by default. This means that files in spec/support that end
diff --git a/spec/support/capybara_config.rb b/spec/support/capybara_config.rb
new file mode 100644
index 0000000..27a7986
--- /dev/null
+++ b/spec/support/capybara_config.rb
@@ -0,0 +1,47 @@
+# Capybara とSelenium WebDriverの設定
+require 'capybara/rails'
+require 'capybara/rspec'
+require 'selenium-webdriver'
+require 'capybara-screenshot/rspec'
+
+# Chrome Headless設定
+Capybara.register_driver :selenium_chrome_headless do |app|
+ options = Selenium::WebDriver::Chrome::Options.new
+ options.add_argument('--headless')
+ options.add_argument('--no-sandbox')
+ options.add_argument('--disable-dev-shm-usage')
+ options.add_argument('--disable-gpu')
+ options.add_argument('--remote-debugging-port=9222')
+ options.add_argument('--window-size=1400,1400')
+ options.add_argument('--disable-features=VizDisplayCompositor')
+
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
+end
+
+# Chrome設定(デバッグ用)
+Capybara.register_driver :selenium_chrome do |app|
+ options = Selenium::WebDriver::Chrome::Options.new
+ options.add_argument('--no-sandbox')
+ options.add_argument('--disable-dev-shm-usage')
+ options.add_argument('--window-size=1400,1400')
+
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
+end
+
+# 環境に応じてドライバーを切り替え
+if ENV['HEADLESS'] || ENV['CI']
+ Capybara.javascript_driver = :selenium_chrome_headless
+else
+ Capybara.javascript_driver = :selenium_chrome
+end
+
+# Capybara設定
+Capybara.default_driver = :rack_test
+Capybara.default_max_wait_time = 5
+Capybara.server_host = '0.0.0.0'
+Capybara.server_port = 3001
+Capybara.app_host = 'http://127.0.0.1:3001'
+
+# スクリーンショット設定
+Capybara::Screenshot.autosave_on_failure = true
+Capybara::Screenshot.prune_strategy = :keep_last_run
\ No newline at end of file
コミット: 4646581¶
メッセージ¶
test(WIP):E2Eテスト
変更されたファイル¶
- M spec/routing/hostname_constraints_spec.rb
変更内容¶
commit 4646581ecfb3363b0e2459fabaa0392cf7cf8bb1
Author: k2works <kakimomokuri@gmail.com>
Date: Wed Jun 11 12:29:25 2025 +0900
test(WIP):E2Eテスト
diff --git a/spec/routing/hostname_constraints_spec.rb b/spec/routing/hostname_constraints_spec.rb
index cad8334..2438582 100644
--- a/spec/routing/hostname_constraints_spec.rb
+++ b/spec/routing/hostname_constraints_spec.rb
@@ -4,8 +4,8 @@ require 'rails_helper'
describe 'Routes' do
# 職員トップページ
it 'should route staff top page' do
- expect(get: 'http://baukis-kai.example.com/staff').to route_to(
- host: 'baukis-kai.example.com',
+ expect(get: 'http://127.0.0.1/staff').to route_to(
+ host: '127.0.0.1',
controller: 'staff/top',
action: 'index'
)
@@ -13,8 +13,8 @@ describe 'Routes' do
# 管理者ログインフォーム
it 'should route administrator login form' do
- expect(get: 'http://baukis-kai.example.com/admin/login').to route_to(
- host: 'baukis-kai.example.com',
+ expect(get: 'http://127.0.0.1/admin/login').to route_to(
+ host: '127.0.0.1',
controller: 'admin/sessions',
action: 'new'
)
@@ -22,8 +22,8 @@ describe 'Routes' do
# 顧客トップページ
it 'should route customer top page' do
- expect(get: 'http://baukis-kai.example.com').to route_to(
- host: 'baukis-kai.example.com',
+ expect(get: 'http://127.0.0.1').to route_to(
+ host: '127.0.0.1',
controller: 'customer/top',
action: 'index'
)
コミット: 27a16ff¶
メッセージ¶
test(WIP):E2Eテスト
変更されたファイル¶
- M Gemfile
- M Gemfile.lock
- M config/environments/test.rb
- M spec/features/staff/program_management_spec.rb
- M spec/rails_helper.rb
- M spec/support/features_spec_helper.rb
変更内容¶
commit 27a16ff83164825e9b5253cac7d7bf97ccf785c4
Author: k2works <kakimomokuri@gmail.com>
Date: Wed Jun 11 12:22:58 2025 +0900
test(WIP):E2Eテスト
diff --git a/Gemfile b/Gemfile
index e85164d..695fe3a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -69,9 +69,7 @@ group :test do
gem 'capybara'
gem 'database_cleaner'
gem 'launchy'
- gem 'capybara'
- gem 'selenium-webdriver'
- gem 'webdrivers'
+ gem 'selenium-webdriver', '~> 4.11'
gem 'shoulda-matchers'
gem 'capybara-screenshot'
gem 'rails-controller-testing'
diff --git a/Gemfile.lock b/Gemfile.lock
index 944d710..edae2fd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -437,10 +437,6 @@ GEM
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
railties (>= 6.0.0)
- webdrivers (5.2.0)
- nokogiri (~> 1.6)
- rubyzip (>= 1.3.0)
- selenium-webdriver (~> 4.0)
webrick (1.9.1)
websocket (1.2.11)
websocket-driver (0.8.0)
@@ -513,7 +509,7 @@ DEPENDENCIES
rails_12factor
rspec-rails
sass-rails
- selenium-webdriver
+ selenium-webdriver (~> 4.11)
shoulda-matchers
spring
spring-commands-rspec
@@ -523,7 +519,6 @@ DEPENDENCIES
tzinfo-data
uglifier
web-console
- webdrivers
webrick
yard
diff --git a/config/environments/test.rb b/config/environments/test.rb
index dc2c3b7..ea99a73 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -48,8 +48,8 @@ Rails.application.configure do
# config.action_view.raise_on_missing_translations = true
config.baukis_kai = {
- staff: { host: 'baukis-kai.example.com', path: 'staff' },
- admin: { host: 'baukis-kai.example.com', path: 'admin' },
- customer: { host: 'baukis-kai.example.com', path: '' }
+ staff: { host: '127.0.0.1', path: 'staff' },
+ admin: { host: '127.0.0.1', path: 'admin' },
+ customer: { host: '127.0.0.1', path: '' }
}
end
diff --git a/spec/features/staff/program_management_spec.rb b/spec/features/staff/program_management_spec.rb
index 190110a..28b8976 100644
--- a/spec/features/staff/program_management_spec.rb
+++ b/spec/features/staff/program_management_spec.rb
@@ -1,6 +1,6 @@
require 'rails_helper'
-feature '職員によるプログラム管理' do
+feature '職員によるプログラム管理', type: :system do
include FeaturesSpecHelper
include PerformanceSpecHelper
let(:staff_member) { create(:staff_member) }
@@ -20,8 +20,7 @@ feature '職員によるプログラム管理' do
end
scenario '職員がプログラム詳細を表示する' do
- visit staff_programs_path
- click_link I18n.t('staff.programs.form.show')
+ visit staff_program_path(program)
expect(page).to have_content(program.title)
expect(page).to have_content(program.description)
@@ -49,8 +48,7 @@ feature '職員によるプログラム管理' do
end
scenario '職員がプログラムを編集する' do
- visit staff_programs_path
- click_link I18n.t('staff.programs.form.edit')
+ visit edit_staff_program_path(program)
fill_in I18n.t('activerecord.attributes.program.title'), with: 'Updated Program'
click_button I18n.t('staff.programs.edit.update')
@@ -66,6 +64,9 @@ feature '職員によるプログラム管理' do
all('a', text: I18n.t('staff.programs.form.delete')).last.click
+ # JavaScriptアラートを受け入れる
+ page.driver.browser.switch_to.alert.accept
+
expect(page).to have_css('.Flash__notice', text: I18n.t('staff.programs.destroy.flash_notice'))
expect(Program.find_by(id: program_without_entries.id)).to be_nil
end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index cd000d0..da3a27d 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -49,6 +49,7 @@ Capybara.default_driver = :rack_test
Capybara.default_max_wait_time = 5
Capybara.server_host = '0.0.0.0'
Capybara.server_port = 3001
+Capybara.app_host = 'http://127.0.0.1:3001'
# スクリーンショット設定
Capybara::Screenshot.autosave_on_failure = true
diff --git a/spec/support/features_spec_helper.rb b/spec/support/features_spec_helper.rb
index aac0165..5d2f87c 100644
--- a/spec/support/features_spec_helper.rb
+++ b/spec/support/features_spec_helper.rb
@@ -1,7 +1,10 @@
module FeaturesSpecHelper
def switch_namespace(namespace)
config = Rails.application.config.baukis_kai
- Capybara.app_host = 'http://' + config[namespace][:host]
+ # ローカルテスト用にlocalhost:3001を使用
+ Capybara.app_host = "http://127.0.0.1:3001"
+ # パスプレフィックスを設定(必要な場合)
+ # Capybara.app_host = "http://localhost:3001/#{config[namespace][:path]}"
end
def login_as_staff_member(staff_member, password = 'pw')