[コラム] 続・最近のSeleniumIDE事情

# はじめに
本投稿は[ソフトウェアテスト Advent Calendar 2018](https://qiita.com/advent-calendar/2018/softwaretesting)の最終日、25日目の記事です。昨日は[okauchiwani](https://qiita.com/okauchiwani)さんの[ソフトバンクの通信障害がヤバかったそうなので、SUPER FRIDAYのテストを考えます。](http://okauchiwani.hatenablog.com/entry/2018/12/24/202322)でした。

昨年に続き、今年もイキって「テスト観点エディタつくるぜ！」と豪語しておりましたが、案の定間に合わず（言い訳すると、先週Eclipseのリリーストレイン[4.10](https://projects.eclipse.org/projects/eclipse/releases/4.10.0)が出たタイミングで、思い立って開発基盤を[Sirius](https://www.eclipse.org/sirius/)から[Graphiti](https://www.eclipse.org/graphiti/)に変更してごにょごにょしてたらタイムアップしました。。。来年1/23までには形にします、すみません。。。 > OpTeMI各位）、今年も昨年に続き、Seleniumネタで急場をしのがせていただきます。
昨年は[[コラム] 最近のSeleniumIDE事情](https://qiita.com/kjstylepp/items/be0feb116e0aa6592054)ということで、Firefoxのアーキテクチャ変更に端を発したSelenium IDE系ツールの変遷について記事を書きました。今年は「続」ということで、昨年からちょうど1年、その間にSelenium IDE界隈でどのような変化があったかを簡単にまとめてみようかと思います。

# 各ツールの変遷
本記事は昨年紹介したもの＋αで、以下の3つのツールを扱います。

1. SideeX
2. Katalon Recorder
3. Selenium IDE 3.x（以下、Selenium IDE）

まずはこの1年、それぞれのツールがどのような変遷をとげたかを簡単に見ていきましょう。

## SideeX
まず、後ほど扱うKatalon RecorderでもSelenium IDEでも、内部的にベースとして利用されている[SideeX](http://www.sideex.org/)ですが、残念ながら今年の1月に最新の[v2.3.4](https://github.com/SideeX/sideex/releases/tag/v2.3.4)がリリースされて以来、公式のリリースもgithubの開発も停滞しているようです。本家のSelenium IDEのベースとなったことで、開発を本家を移管したのかなーと想像しますが、開発者の[Uren YOUさん](https://ygl0118.github.io/)の動向をネットストーキングしてみてもこれだという情報が得られなかったので、真相は分からずです。こちらはもう少し動向をおってみようかと思います。

## Katalon Recorder
次に、[Katalon Recorder](https://www.katalon.com/resources-center/blog/katalon-automation-recorder/)です。昨年の記事では紹介をさぼってしまったのですが、筆者の体感（周り？）で現在最も利用されているSelenium IDE系のツールがこちらとなります。
Katalon RecorderもSideeXベースということで、Selenium IDE同様、いわゆるWeb Extentionとして実装されているので、FirefoxとGoogle Chromeの両方で動作するようになっています。また、本日時点でSelenium IDEにはないKatalon Recorderのキラー機能として、 **記録したテストスクリプトを、各種プログラミング言語のWebDriverテストコードへエクスポートできる** が挙げられるでしょう。
<img width="803" alt="スクリーンショット 2018-12-25 21.29.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/4403/63f12d96-23e5-075d-cebb-14f3286c7060.png">
こちらに[Katalon Recorderのリリースノート](https://docs.katalon.com/katalon-recorder/docs/release-notes.html)がありますが、今年の1月にv3にメジャーバージョンアップし、その後派手ではないものの順調に機能追加・改善を重ね、現在の最新版は9月にリリースされたv3.6.11となります。9月まではかなりの高頻度でアップデータがはいっていた一方、10月以降の3ヶ月間はぱっとアップデートが止まったのが少し気になりますが、まだ開発は活発であると言って差し支えはないかと思います。ただ、Katalon RecorderはKatalon社によって無償で公開されているだけでOSSというわけでないので、そのへんの開発状況の透明性は決して高くはない（Github等で状況がわからない）のが少し難点かもしれません。

## Selenium IDE
さて、最後に本家のSelenium IDEです。こちら昨年末時点ではまだβ段階でしたが、今年の4月にめでたく2.xからの正式なメジャーアップデートということで[v3.0.0](https://github.com/SeleniumHQ/selenium-ide/releases/tag/v3.0.0)がリリースされました。その後もKatalon Studioと同様、順調に機能追加・改善を重ね、現在の最新版は先月リリースされた[v3.4.5](https://github.com/SeleniumHQ/selenium-ide/releases/tag/v3.4.5)となります。
筆者の体感として、後発なれど、いわゆるキャプチャ＆リプレイの機能についてはもはやKatalon Recorderとなんら遜色ないと思います。しかし、前節でも述べた通り、本日時点でSelenium IDEにはまだテストスクリプトのテストコードへのエクスポート機能が開発されていないので、WebDriverテストコード開発のサポートとしては使えないのが筆者的にはイタいところです。

では、エクスポート機能の開発状況はどうかというと、3月に[Issue](https://github.com/SeleniumHQ/selenium-ide/issues/131)が切られて以降、なかなか味わい深いレスの応酬が9ヶ月にわたり続いております。いちおうメインコミッターの方の最新のレスでは以下のように書かれており、「JavaScriptエクスポートのスレで、Javaからなのか？！」という気持ちはあれど、今月から開発が本格化するということで、来年前半には出てくるのではと淡い期待をしております。
```
We're going to start work on it later this month, starting with Java and working our way through the other languages after that.
```
また、公式ツールとして、保存したSelenium IDEスクリプトをFirefoxやGoogle ChromeのIDE画面からではなく、コマンドラインから実行可能とした[Selenium SIDE Runner](https://www.npmjs.com/package/selenium-side-runner)がNode.jsプログラムとして開発されており、Selenium IDE資産を継続的インテグレーション等で使いたい人は、つなぎとしてこれを使うようガイダンスがなされております。

# どのツールを使うべきか
筆者の私見として、Selenium IDE系のツールには以下の2つのユースケースがあると考えます。

1. 非エンジニアによるローカルで完結する動作確認の実施
2. エンジニアによる回帰テストとして実行するWebDriverテストスクリプトの雛形生成

まず、SideeXは前述のとおり、現状継続的なメンテナンスが期待できる状況ではないため、どちらのユースケースの選択肢からも外れるでしょう。

前者のユースケースについては、Katalon RecorderでもSelenium IDEでもどちらでも問題なく実現できます。その場合、選ぶ基準としては二次的な要素ではありますが「業界デファクトスタンダードである」という点で、**Selenium IDEを採用**するのが無難と考えます。

一方、後者のユースケースには**Katalon Recorder一択**でしょう。前節でSelenium SIDE Runnerなるツールを紹介しましたが、このツールは「WebDriverテストコードを生成する」のではなく、「WebDriverテストコードではないSelenium IDE資産をコマンドラインから実行する」だけです。したがって、テスト資産自体を編集したい場合は改めてSelenium IDEから開いて編集しなければならないため、エンジニア向けのメンテナンスのライフサイクルとしては極めて煩雑で非効率的です。

（というか、Selenium SIDE Runnerが有効なユースケースってあるんですかね？各汎用プログラミング言語のテスト実行フレームワークのエコシステムにのっかれずに、ただSelenium IDEのテストスクリプトをコマンドラインで実行できても、それで得られるメリットってほぼないような。。。ローカルでSelenium IDEから実行すればよくないっすかね？テストの事前条件を実現するための何かしらのジョブ実行と連携できる、というケースも考えましたが、だったらテストコードも最初からWebDriverでテスコード書いたほうがいい気がします。）

# まとめ
さて、微妙にぼやきが出てしまったところで、最後にまとめます。

* SideeXはメンテが期待できなさげ
* ローカルで完結するキャプチャ＆リプレイにはSelenium IDEがよさげ
* WebDriverテストコード生成にはKatalon Recorderがよさげ
* Selenium SIDE Runnerのいいユースケース誰か教えて

以上です。



それではみなさん、メリークリスマス！！！