-
Notifications
You must be signed in to change notification settings - Fork 71
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
Flakyなテストを2つ修正した #7997
Flakyなテストを2つ修正した #7997
Conversation
test/system/users.test.rb:436
出ているエラーエラー
対策
|
test/system/require_login/users_test.rb:8
出ているエラーエラー
test (37018) - fjordllc/bootcamp
調査の流れ
対策
CIの結果他テストファイル含む 修正前:1/10 → 修正後:0/25 |
@@ -2,31 +2,31 @@ | |||
# ActiveStorage::FixtureSet.blob を使うように変更する | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらを参考に、各フィクスチャの保存先を設定しています。
ちなみに、BootcamoアプリはRails6.1であり、RailsガイドにあるようなActiveStorage::FixtureSet.blob
という機能はRails7からの機能なのでありませんが、こちらのPRのtest/system/test_helper.rbによってActiveStorage::Blob.fixture
とすることで同等の機能が使用できるようになっています。
@@ -15,6 +15,11 @@ google: | |||
bucket: <%= ENV["GCS_BUCKET"] %> | |||
public: true | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
下記リンクを参考にfixtures用の保存先を作成しています。
Active Storage の概要 - Railsガイド
@@ -32,6 +32,22 @@ class ActiveSupport::TestCase | |||
teardown do | |||
ActiveStorage::Current.host = nil | |||
end | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらを参考にして、並列のプロセスごとに、保存先にそれぞれ番号がふられるように設定しています。
Railsガイドにある書き方はRails7から入った機能です。
Rails6.1で同様のことをするためinstance_variable_set
を使用して修正しています。
そしてBootcampアプリがRails7になったときのためにコメントを記載しています。
参考:Parallelizing setup for ActiveStorage doesnt expose setter · Issue #43616 · rails/rails
(ちなみにRails6.1のRailsガイドには並列実行時のテスト用保存先の別名の付け方の記載はありません)
ActiveStorage::Blob.service.instance_variable_set(:@root, "#{ActiveStorage::Blob.service.root}/storage-#{i}") | ||
ActiveStorage::Blob.services.fetch(:test_fixtures).instance_variable_set(:@root, "#{ActiveStorage::Blob.services.fetch(:test_fixtures).root}/fixtures-#{i}") | ||
end | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
アップロード用保存先フォルダに関しては、Railsガイドにはafter_teardown
を使用し各テストごとに削除するよう記載してありますが、そのように記載しCIを実行するとActiveStorage::FileNotFoundError: ActiveStorage::FileNotFoundError
が発生する回数が増えました。
なぜエラーが増えるのか調査しましたが、理由はわかりませんでした。
そのため、テストが全て終了した後にデータをクリーンアップするように設定しています。
c349fc2
to
1342612
Compare
おつかれさまです! |
@motohiro-mm |
急ぎではありません! |
@motohiro-mm
|
ご確認いただきありがとうございます! WARNINGの解決策はわかっていないのですが、とりあえず確認していただきたいことを以下に書いておきます↓
もし的外れだったらすみません🙇♀️ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
brew install vips
brew install openslide
実行することで問題なくテスト通ること確認できました🙇♂️
Approveいたします🙇♂️
WARNINGが消えたようでよかったです!🙌 |
おつかれさまです! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確認させて頂きました。OKです〜🙆♂️
Issue
概要
CircleCIの test insights の中のFlakyなテストから、以下のテストについて修正・追加の実装を行いました。
1:
test/system/users.test.rb:436
2:
test/system/require_login/users_test.rb:8
各テストにおける修正・追加の実装の説明は以下コメントで記載します。
変更確認方法
chore/fix-flaky-tests
をローカルに取り込むtest/system/users.test.rb:436
test/system/require_login/users_test.rb:8
test/system/users.test.rb:436
test/system/require_login/users_test.rb:8