お使いのブラウザはサポート対象外です。

2021年10月04日(月) の日報

1

非同期で叩かれるAPIがあるとflashを使ったテストが時々失敗する

  • Railsのflashメッセージは、sessionを利用して「次のリクエストでだけ表示する」文字列を設定するものである
  • 画面表示したあとに非同期でAPIをたたくページがあると、タイミングによっては「次のリクエスト」を奪ってしまうことがある
    • なので非同期で叩くAPIでflash.keepを実行しておくと良い
  • が、これだけではだめ(なはず。以下はちゃんと調査してない推測)
  • cookie sessionを使っている場合、sessionの内容はSet-Cookieでかわる
    • flashを設定するリクエスト(A)と非同期APIのリクエスト(B)がほぼ同時に処理されて、A→Bの順でレスポンスが返るとAのSet-Cookieの内容はBのSet-Cookieで上書きされてしまう
    • よってflashがなかったことになる