hidakatsuya.dev hidakatsuya

The Turbo Rails チュートリアルのサンプルアプリケーションの system test を Playwright で動かすようにした

The Turbo Rails Tutorial

少し前から The Turbo Rails Tutorial に取り組んでいる。

このチュートリアルでは、Quote editor という Rails アプリケーショを作りながら turbo-rails による SPA の開発について学ぶことができる。 全て英語だが、(個人的には)非常に読みやすい英語で、進め方や説明も丁寧でストレスがない。

また、チュートリアルで作る Quote editor は完成度が高く実践的だと思う。 実際、チュートリアルを一通り終えたら、Quote editor を参考に個人的なアプリケーションを作るつもりだ。

System test with Playwright

まだ 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 を代えるだけ、と言ったが、実際にはもう少し複雑である。

以下の記事が参考になった。

最後に

今回雰囲気で使ってみたが、テスト対象のアプリケーションがシンプルなものとはいえ、system test はその後も安定して動作している。今後も積極的に使っていきたい。