少し前から The Turbo Rails Tutorial に取り組んでいる。
このチュートリアルでは、Quote editor という Rails アプリケーショを作りながら turbo-rails による SPA の開発について学ぶことができる。 全て英語だが、(個人的には)非常に読みやすい英語で、進め方や説明も丁寧でストレスがない。
また、チュートリアルで作る Quote editor は完成度が高く実践的だと思う。 実際、チュートリアルを一通り終えたら、Quote editor を参考に個人的なアプリケーションを作るつもりだ。
まだ Chapter5 に差し掛かったところだが、このチュートリアルでは、基本的に system test による TDD で開発を進めていく。
チュートリアルでは、system test はデフォルトの selenium-webdriver を使うが、以前から気になっていた Playwright を使ってみることにした。 また、Chapter4 で Redis が必要になったこともあり、system test も含めて docker 環境の構築も行った。
Playwright とは、
Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.
の通り、Microsoft社が開発しているブラウザを自動操作するためのフレームワークである。詳細は Getting Started にまとまっている。
その Playwright で system test を動かすと言っても、実のところは、selenium-webdriver に代えて、Playwright の Capybara webdriver 実装である capybara-playwright-driver を使うだけで済む。作者の方に感謝。
なお、余談だが、この作者の方は Playwright の Ruby クライアント playwright-ruby-client の作者でもある。紹介スライド では、Capybara から Playwright まで、わかりやすく説明されており非常に勉強になった。
実際の対応内容は以下のコミットの通り。
:octocat: hidakatsuya/quote-editor:a2e6aa5 - system test works with playwright
webdriver を代えるだけ、と言ったが、実際にはもう少し複雑である。
Capybara.register_driver
で capybara-playwright-driver を登録し、Playwright サーバーのエンドポイント ws://playwright:8888/ws
と対話する以下の記事が参考になった。
今回雰囲気で使ってみたが、テスト対象のアプリケーションがシンプルなものとはいえ、system test はその後も安定して動作している。今後も積極的に使っていきたい。