言いたいこと
掲題の通りです。
対象読者
- E2Eテストは重要だと思う
- きっちりやったことはない
- seleniumって単語は知ってる
E2Eテストとは
まずE2Eテストについて簡単に説明します。
E2E(End to End)テストとは、ユーザーの視点から実際にwebブラウザを通して一通りの処理をテストすることをさします。
(Example...フォームにuser名とpasswordを入力してログインボタンを押すとログイン画面が出る)
重要ですね。
とはいえ、何かリリースがあるたびに、あるいは30分に一回など、人間が全機能を手で試すなんてとてもじゃないですがやってられません。
そこでE2Eテストも自動化の波にさらわれている訳です。
前置き
E2Eテストの自動化が大切なのはわかったけどどうやってやるの?って話ですね。
ここでおそらくSeleniumという単語が検索に引っかかりまくります。
ふむふむなるほどSeleniumというのを使えばwebブラウザをソースコードで操作できるのですね。便利です。
ではSelenium以外に手段はないのか?と調べた結果、私は掲題の状態になりました。
ならなかったプログラミングできるマンである諸兄はここまでお付き合いいただきありがとうございました。
よく見る名前
おそらくこのような名前が検索で引っかかります。
- Selenium
- Nightwatch.js
- puppeteer
- WebdriverIO
- Nightmare
- WebDriver
- etc...
本記事ではこれらがどういった関係性なのかを紹介し、未来ある子羊たちが自分と同じ道をたどることのないようにしていきたいと思います。
本題
そもそも私がなぜよくわからくなったかというと、Nightwatch.jsのサイトで説明を見ていると、こんな記述があったためです。
Selenium Server Setup
つまり、Nightwatch.jsを利用するにはSeleniumが必要と。
なんでやねん。
なぜこれに疑問を覚えたかというと、私は上であげたようなツール群を全て並列な存在に捉えていたためです。
つまり、Seleniumの代わりにNightwatch.jsが使えるという理解だったのです。
実際には
Nightwatch.js puppeteer WebdriverIO Nightmare などなど
↓ ↓
Selenium WebDriver など ↓
↓ ↓
Chrome FireFox Electron Chromium (実際の操作対象になるブラウザ) などなど
という流れなのですね。
つまりNightwatch.jsやWebdriverIOはSeleniumをより使いやすくしてくれているwrapperのようなライブラリだったという訳です。
あとがき
厳密にはSeleniumとWebDriverは別物ののようです(W3Cがどうとかかんとか)
ともあれここがわかればあとは調べてなんとかなるかと思われます。
世間の波に乗りたいので頑張って調べます。