Kaigi on Rails 2023 現地参加して "E2E testing on Rails 2023" というお話をしてきた

幸いに登壇のチャンスがいただけたので、Kaigi on Rails 2023に現地参加してきました。

E2E testing on Rails 2023 by Yusuke Iwaki - Kaigi on Rails 2023

2年前の「システムテスト解剖学」という発表の続編的な位置づけで、RailsのE2Eテストを取り巻く技術の解説に徹する発表でした。

自分の発表のスタイルとして、「◯◯したらいいよ」「△△ライブラリ使うといいよ」系の発表にはしたくないというちょっとしたこだわりがあり、とはいえ今回の発表は手を抜くと「Playwright最高だよ、めっちゃいいよ」になってしまうので、注意深くストーリー展開を練って本番に望みました。

  • Node.jsベースのテストランナーを話す必然性
  • Railsで何をしたら幸せになれそうか?の定義
  • じつはあれもこれもしなくても、1個だけ仕組みを作ればいいんだという発見の導出

などなど、狙ったポイントについてはしっかり伝えられたかなーと思っています。

いっぽうで、DEMOのコンテンツの練習不足で、一部やることを忘れてしまうなどハプニングもありw、現地開催の面白さ・難しさも改めて実感しました。

(てか、そういえばリアル登壇これが初めてだよ自分...。Ginza railsもKaigi on Rails 2021もオンライン開催で自宅から話してたんだ。

Kaigi on Railsを引っ張る @okuramasafumi さん、および実行委員の皆様には本当に感謝です。Railsにゆかりのあるエンジニアが集まる場に参加して登壇できたことはエンジニアとして本当に至福の時間でした。

とりあえず登壇までにやったこと、当日のこと、などなどを忘れないように書き留めておこうと思います。(たぶん誰の参考にもならないw)

登壇ネタを決めるまで

今回は、おそらくかなりの倍率になろうかと思い、2つネタを出した。

たまたまE2E testingのほうが通ってしまった、というのが正直なところで、実はもう一個出していたネタ(Railsで作ってしまったものをRailsじゃなくSinatraへ移行する系のお話)のほうが渾身のネタではあった。

これはいずれどこかでまた発表するとして、まぁ世の中の期待というかお困りポイントとしてはE2Eテストなんだろなーという事情も察して、「E2E testing on Rails 2023」の準備を進めることにした。

登壇ネタの深掘り1 - Playwrightに詳しくなる

準備期間は2ヶ月もあるので、とりあえず最初にやったことは、Playwrightテストランナーのコンサルティング能力を上げること。中身を知り、どういうユースケースでどんな機能を使うべきか、詳しくなること。(はっきりいってRailsは何も関係がないw)

ただ、これをやったのにはいちおう理由も一応あって、Playwrightテストランナーは世の中のイケイケQAさん(いわゆるアーリーアダプター)がワッと使い始めているにすぎないフェーズで、もしかすると次の波がやってくるかもしれない。そうなるとPlaywrightテストランナーの何が凄かったのか?という話にもなる。つまり、現時点においてPlaywrightだけがすごい部分と、Node.jsベースのテストランナー全般としての利点と、べつに技術スタック関係ないけどPlaywrightでは利用しやすい機能と、など分けて考えておく必要がある。

Playwrightは公式の動画があり、開発してる人がかなりいろいろと紹介してくれているので、まずはそれを片っ端から見ていくことにした。

www.youtube.com

メモはこんなかんじでGoogleのメモに。

1.14から1.37まで、2年分のアップデートをとりあえず脳内に叩き込んで、次へ。

登壇ネタの深掘り2 - 必然性を感じられるストーリーの練り上げ

ここが結構時間かけたところ。Keynote触り始めるとそれだけで時間がかかってしまうので、今回もApple Pencilに投資をしてiPadでひたすら手書きメモで作っていった。

こんな感じで、図で説明すべき部分と、文章やチャートで説明すべき部分と、いろいろ脳内整理が捗った。

8割くらい作ったところで、なんかわけわからんくなって、雑記もまた色々w

仕事の方もそこそこ忙しかったので、空き時間でメモ、空き時間でメモ、空き時間でメモ、って感じでネタを作り上げていきました。

スライドの枚数的な進捗でいうと、8/21の登壇確定から10/21まで2ヶ月にわたり0枚ww

iPadでの脳内整理メモの効果により、60枚近いKeynote資料をほぼほぼ一晩で書き上げたのでしたw

登壇の反省

まず、なによりもDEMOの準備不足でした。焦って、VSCodeのPlaywright拡張機能の起動方法を忘れてしまうという大失態。

とはいえで、Playwrightの便利さが100%伝わらずとも、Node.jsのテストランナーが主流になってきているという事実づけから始めたストーリー展開により、DEMOの混乱が多少あっても、全体のストーリー理解には大きな支障が出なかったのが不幸中の幸い。

Shift + Command + Pでコマンドパレットを出すと、本来は Focus on Playwright viewが出て、うまくいくはずだったんだけど、なんか本番でやっても出なかったんだよなー・・・・必殺再起動が必要だったんだろうか・・・やっぱりわからんw

登壇発表のときに感じたこと

今回、現地の発表で、現場の様子を見ながら喋れるのが本当によかった。

2年前はオンライン開催で動画は事前収録だったこともあり、撮り直しができる最強のメリットはあったけど、やっぱり反響のないなかで喋り続けないといけない辛さも結構あった。

今回は、ONKさんらしき方が最前列でめっちゃウンウン聞いてくれているし、テスト書いてますか〜?みたいな挙手もリアルタイムにフィードバック得られるし、気分的にはかなり最高な発表だった。エンジニアリングのカンファレンスはこうじゃなくっちゃ!

発表資料

speakerdeck.com

ちょっとTwitterに共有するタイミングが速すぎて、直前の方の発表に埋もれてしまったのが反省。

サンプルコードなど

これずっと共有しわすれてましたw

DEMOサイトはこれ↓

github.com

Railsとして協調するために作らないといけない部分はこれ、ってところで紹介していたのは、いちおうGemにしていて、これ↓

github.com

ぜひ併せて見てほしい動画

Playwright作者の一人が、「なぜPlaywrightテストランナーを作ったのか」語っているものが、結構印象的です。

自動テスト関係なく、ぜひみんな見てみるとよいです。

www.youtube.com

まとめ

冒頭にも書いたように、Railsにゆかりのあるエンジニアが集まる場に参加して登壇できたことはエンジニアとして本当に至福の時間でした。また来年いけるよう準備するぞ