読者です 読者をやめる 読者になる 読者になる

[ruby] Cucumberで半角記号で終わるラベル文字列を指定する方法

featureの中では入力フィールドは通常ラベル文字列を指定しますが、"パスワード(確認)"に"zzzzzz"と入力するのように半角記号で終わるラベル名を指定すると Could not find field: "パスワード(確認)" (Webrat::NotFoundError) のようなエラーになってしまいます。

http://cukes.info/images/cuke_logo.png


原因は、Webratの中でラベル文字列は以下のようなマッチングです。

text(label_element) =~ /^\W*#{Regexp.escape(@value.to_s)}\b/i

正規表現の最後の \b がくせ者です ^^; 半角記号がある場合は 単語 とみなされなくなりラベルとして扱われなくなります。



対処としては

  1. アプリ(テンプレート)が変更できるようなら 全角記号を使う
  2. ラベル文字列以外、 nameも指定できるので "login[password_confirmation]" を指定する
  3. ラベル文字列は最後まで指定しなくても良いので "パスワード(確認" と指定する

などでしょうか・・・・ ^^);