仕事で使う機会はあまり無いですが、関数型言語でテスト自動化とか出来るのかなと思って色々調べたところ、F#でブラウザを操作できる canopy というツールを見つけました。
F#というところがまたちょうどいいので、まずは触ってどんなものか見てみたいと思います。
参考にしたページ
公式の Getting Started の通りにしました。
canopy でブラウザを動かしてみる
1. VisualStudio でプロジェクトを作成
テンプレートは VisualF#, コンソールアプリケーションを選択します。
2. パッケージマネージャーコンソールを表示
プロジェクトができたら、ツール →NuGet パッケージマネージャー → パッケージマネージャーコンソールを選択。画面下部にパッケージマネージャーコンソールが出てきます。
3. canopy をインストール
Install-Package canopy
を入力し、Enter.
公式ページではinstall-package canopy
と小文字で書いてありますが、これだとインテリセンスが効きませんでした。環境によるかも。
少し(私の環境で3,4分)時間がかかりますが、待っていると終了します。
4. 公式ページのコードをコピペして実行
//these are similar to C# using statements
open canopy
open runner
open System
//start an instance of the firefox browser
start firefox
//this is how you define a test
"taking canopy for a spin" &&& fun _ ->
//this is an F# function body, it's whitespace enforced
//go to url
url "http://lefthandedgoat.github.io/canopy/testpages/"
//assert that the element with an id of 'welcome' has
//the text 'Welcome'
"#welcome" == "Welcome"
//assert that the element with an id of 'firstName' has the value 'John'
"#firstName" == "John"
//change the value of element with
//an id of 'firstName' to 'Something Else'
"#firstName" << "Something Else"
//verify another element's value, click a button,
//verify the element is updated
"#button_clicked" == "button not clicked"
click "#button"
"#button_clicked" == "button clicked"
//run all tests
run()
printfn "press [enter] to exit"
System.Console.ReadLine() |> ignore
quit()
上記をコピペして実行すると、Firefox が立ち上がって、サンプルページを操作。コンソールに結果が表示されます。
かなり簡単に導入できました。
公式ドキュメント見ながら、どんなことできるのかもう少し遊んでみようと思います。日本語情報がほぼ無いのでブログに書くのにちょうどよさそうですし。