「Everyday Rails - RSpecによるRailsテスト入門」の2017年版を使ってRSpecのキャッチアップをしていたところ、6章でcapybaraを使うUIテストで躓きました。
環境
- AWS Cloud9 (amazon linux)
- Gemfileのバージョンは上記テキストと同じ環境構成
現象
chromedriverもchromeもインストールされてなかったので、AWS Cloud9でCapybara+Selenium+Chrome設定時のエラーとその対処法について[ Everyday Rails 6章 ]を参考にインストールを行いました。
結果、テストには成功するようになりましたが、大量のワーニングが発生していました。
2019-06-28 03:24:51 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::UnhandledError is deprecated. Use Selenium::WebDriver::Error::UnknownError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:51 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ElementNotVisibleError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:51 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::InvalidElementStateError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:51 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ElementNotSelectableError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::UnhandledError is deprecated. Use Selenium::WebDriver::Error::UnknownError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ElementNotVisibleError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::InvalidElementStateError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ElementNotSelectableError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::UnhandledError is deprecated. Use Selenium::WebDriver::Error::UnknownError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ElementNotVisibleError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::InvalidElementStateError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
2019-06-28 03:24:52 WARN Selenium [DEPRECATION] Selenium::WebDriver::Error::ElementNotSelectableError is deprecated. Use Selenium::WebDriver::Error::ElementNotInteractableError (ensure the driver supports W3C WebDriver specification) instead.
どうやら、非推奨となってるメソッドをcapybaraが呼び出しているようです。capybaraのバージョンを最新(2.15.0 ⇒ 3.25.0)にしたら出なくなりました。
折角なのでどのバージョンから出なくなったのかを調べてみたら、3.17.0から出なくなったようです。capybaraのgithubの変更履歴を観ると、以下のようにあります。
マーカーで塗ったFixedの部分が、対応された箇所と思って間違いないでしょう。なぜなら、selenium-webdriverのバージョンを3.4.0 ⇒ 3.4.1にするまでテストは通らなかったからです。
Fixした部分のソースコードを読むことは、今後の自分への課題とします。
テキスト執筆が2017年なので、2019/06/28時点とは差異があるのも当然ですね。参考記事を書いていただいた方に感謝です。