概要
RSpecでテストを書いている時に、Twitter、Youtube等のリンクを貼り付けた時に、JavaScript等で時間差で挿入されるiframe内のコンテンツを確認する際に詰まったのでメモ。
方法
以下の通り。
# iframeがあるか確認。この場合、挿入されるまでデフォルトのwait timeだけ待ってくれる
expect(page).to have_selector 'iframe'
# iframe内のコンテンツを確認
within_frame find('iframe') do
expect(page).to have_content 'コンテンツ'
end
デフォルトのwait time内で挿入されない場合は以下の様に待ち時間を指定する。
expect(page).to have_selector 'iframe', wait: 5
1行目はチェックする必要がなければuntil
でJavaScriptでiframeが挿入されるまで待ってもいい。