俺用メモシリーズ第三弾。
いつものメモなので文体が入り混じってます。
セレクタ
セレクタが何個か使えるらしい。
よく使う2個だけメモ。
cssセレクタ
css=#hoge
このように先頭にcss=とつければOK。
css=.huga:first-childとかもできるので便利。
ループが使えるようになるプラグインを使えば.huga全部に対してテスト、とか細かくできそう。
XPath
//html/body/header/div/div[1]/a/img
みたいな感じで。デバッグツールでDOMツリーを右クリックするとだいたい「XPathでコピー」みたいなのがあるので、それを選択した上で**先頭に/**をつける。
先頭に/をやることでXPathですよ、という指定になるのかな?
コマンド関連
assertXxxとverifyXxxの違い
日本語ドキュメントに以下のような記述があります。
”assert” では、テストがエラーになり、現在のテストケースは中止されますが、”verify” では、テストはエラーになるものの、テストケースの実行は続行されます。
この機能を上手に活用するには、テストのコマンドを論理的にグループ化し、各グループを “assert” で始め、その後に 1 つまたは複数の “verify” コマンドを続けて記述します。
例えば「そのページが表示されていること」をassertで確認して、
「そのページ内にこの文言あるよね」とかをverifyとすれば、
ページが表示されていることが前提条件としてあって、
その上で文言チェックをするということになり擬似的にグループ化しましょう。
ということですね。
clickAndWaitではなくpause
リンクなりボタンなりをクリックした後、なにかhtmlの要素を追加することがあるかと思います。
次の20件を表示する、みたいなそういうボタン。
その挙動をテストしようとすると
- クリックする
- htmlが追加されるのを待つ
- htmlの要素数なりで追加されたことをテストする
という手順になるかと思います。
それの1,2をやってくれそうな名前をしているclickAndWait
コマンドですが
ページ遷移を想定しているコマンドであって想定している用途には使えません。
試しにクリックされてhtmlが追加されるのをテストしてみたのですが、Timeoutでエラーになります。
[info] Executing: |clickAndWait | css=#add-dom | |
[error] Timed out after 30000ms
[info] Test case failed
clickAtAndWait
というそれっぽい名前のコマンドもありますが、これはx,yを引数で渡すと、その座標の分、カーソルを動かしてくれる、的な?のもありますが、ちょっと使い方がよくわかりません。
なのでそれぞれ別々のコマンドで動かしていきます。
click
pause
assertXxx
pause
ミリ秒の指定、 値じゃなくて対象に入れる。
値の方に入れて書き換えて「効かない効かない」とか言ってたアホが私です。
waitForXxx
上記と関連して、
click
pause
assertAlertPresent
とかやってみたんです。例えばボタンクリックしたらajaxでpostして、結果がOKなら「保存しました」みたいなアラートを出す感じのテストです。
が、アラートが出るタイミングでテストがコケるんですよね。
pauseを長く指定してみたりもしても解決できず。
で、解法は以下のとおり
click
waitForAlertPresent
アラートが出るまで待ってくれるんですね。痒いところに手が届きますわ。
なお、アラートの文章まで確認したい場合はwaitForAlert(string)
の方を使うのが良さそう。(アラートの内容が「保存できませんでした」みたいなメッセージかもしれないしね)
それで言うと前述の例もpauseを使わずにwaitForXxxで代用できる可能性はあるなぁ、と思います。
コメント
コメントを挿入できます。
適宜、このコマンドが何のためのテストなのか?などを書いておくとレビューなども捗ります。
コメント書いててRPGツクールのイベントの管理方法を思い出した。
--以下、戦闘イベント--みたいな空のイベント作ってたわ。