仕事で使う機会はあまり無いですが、関数型言語でテスト自動化とか出来るのかなと思って色々調べたところ、F#でブラウザを操作できる canopy というツールを見つけました。

F#というところがまたちょうどいいので、まずは触ってどんなものか見てみたいと思います。

参考にしたページ

公式の Getting Started の通りにしました。

canopy でブラウザを動かしてみる

1. VisualStudio でプロジェクトを作成

start-canopy_1

テンプレートは VisualF#, コンソールアプリケーションを選択します。

2. パッケージマネージャーコンソールを表示

start-canopy_2

プロジェクトができたら、ツール →NuGet パッケージマネージャー → パッケージマネージャーコンソールを選択。画面下部にパッケージマネージャーコンソールが出てきます。

3. canopy をインストール

start-canopy_3

Install-Package canopyを入力し、Enter.

公式ページではinstall-package canopyと小文字で書いてありますが、これだとインテリセンスが効きませんでした。環境によるかも。

少し(私の環境で3,4分)時間がかかりますが、待っていると終了します。

start-canopy_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 が立ち上がって、サンプルページを操作。コンソールに結果が表示されます。

start-canopy_5

かなり簡単に導入できました。

公式ドキュメント見ながら、どんなことできるのかもう少し遊んでみようと思います。日本語情報がほぼ無いのでブログに書くのにちょうどよさそうですし。

プログラミングF#