AjaxとclickAndWait

さて、本が出た今頃になって言うのも何なんですが、

p.227
(はてな日記の)プレビューの機能ではAjaxが使われており、プレビュー内容を表示するのにわずかですが時間がかかります。……表示が完了する前に次の verifyTextPresent を実行してしまう場合があります。……それを防止するために、pause で1秒間(1000ミリ秒)待たせています。

clickなどの操作のあとにpauseやwaitForXXXで同期してやるという話なわけですが、なんとこれclickAndWait一発でできるんですね。いやー、知らなかったなー。はっはっは。前からそうだっんだろうか?

まあ、一般論として「Ajax(というか非同期)の処理をテストするときは、テスト側で同期しないといけない」というのは変わらないんですけどね。とはいえ、単純な

  1. クリックなどのハンドラが呼ばれる
  2. XHRする
  3. ハンドラ終了
  4. XHRのレスポンスのハンドラが呼ばれる
  5. レスポンスを画面に反映
  6. ハンドラ終了

という処理の結果を、clickAndWait(というかXXXAndWaitシリーズ)でテストできるならラクだなあ。Seleniumの実装とか、アプリ側の実装にも依存するので、100%はカバーできないんじゃないかと思うけれど。

(追記)プレビューはiframeを使ってるみたいなので、それのonloadに反応してるのかな?そうだったら、応用範囲は狭くなっちゃうなあ。