自動テストの変化とAutifyの進化
Autifyの進化の背景には、世の中の変化が大きく影響している。まず第1に新たなツールが登場し、テストのハードルを下げたことだ。その代表がCypressとPlaywrightである。これらのツールは、Node.jsを始めとしたフロントエンド開発のエコシステムに組み込みやすく、フロントエンドエンジニアのE2Eテストへの参入のハードルを下げた。
E2EテストはGUIとの依存性を作るものなので、GUI部分を開発しているエンジニアがある程度メンテナンスに関わることができないと、メンテナンスが進まない状況が起こっていた。「具体的にはnpm install コマンド一発で自動テスト環境が構築されるようになったことが大きかった」と末村氏は語る。
もちろん、これらのツールが登場する前にも「Selenium」などのWebブラウザの操作の自動化に使えるツールは存在していた。だが、それらのツールを活用するには「Selenium自体の知識が必要で、CypressやPlaywrightのようにコマンド一発でインストールできる形にはなっていなかった」と末村氏は振り返る。
第2にデバッグ体験がリッチになったことだ。CypressやPlaywrightでは、テストを実行した後、その結果がステップバイステップでわかるようになった。デバッグ体験がよくなったことで、トラブルシュートの機会が相対的に薄れてきたという。
第3にCI/CDへのパイプラインへの組み込みも楽になったこと。「これは同時期にGitHub ActionsやCircleCI Orbsが登場したことが大きい」と末村氏。これまではYAMLの設定ファイルを毎回、書かなければならなかったが、GitHub ActionsやCircleCI Orbsは一つのレシピコンポーネントのようにまとめてくれるので、CI/CDのパイプラインに容易に組み込めるようになったのだ。
第4にクロスブラウザ環境構築が楽になったこと。「特にPlaywrightは非常に楽に構築できる」と末村氏。PlaywrightではWebKitブラウザが使用できる。WebKitはレンダリングエンジンとJSのランタイムはSafariと同じである。つまりWindowsやLinuxの上でAppleの標準ブラウザであるSafariの動作確認ができるのだ。
加えて、アクセシビリティベースのロケーターが普及したこともAutifyの進化に影響している。基本的にテストはテスト対象のふるまいに依存すべきである。だが、これまでのE2Eテストは技術的制約から内部構造に依存しがちだったため、タグの名前とタイプという形で内部構造を書かなければならなかった。Testing Libraryの登場により、文字列、セマンティクス、alt-textなどアクセシブルな属性をロケーターに使う考え方が普及した。

また、自動テストのマインドセットが世の中に浸透したことも重要なポイントとなっている。これには「2人の存在が欠かせない」と語る末村氏。
まず1人目は、和田卓人氏だ。ライオンのアスキーアートで有名な和田氏は、テスト駆動開発の立役者で、自動テストの重要性を世の中に強く普及している。そしてもう1人末村氏が挙げたのがブロッコリーさんこと、風間裕也氏。風間氏は、BDD=Behavior Driven Development (振る舞い駆動開発)における自動テストの重要性やそのプラクティスの普及に努めている。
5年前はカンファレンスでテストや品質について議論されるのは珍しいことだったが、今ではテストの話がないカンファレンスの方が珍しくなったことからもマインドセットの浸透は明らかだろう。