2011-10-12 54 views
2

我已經構建了一個簡單的Gem在場景失敗時爲Capybara Webkit製作截圖,並且它還保存當前頁面的HTML文件,而不管您使用的是哪種Capybara驅動程序。但是,我遇到了一個我看不到克服的問題,只要Gem中的代碼被調用,page.body就是空的。但是,當我在Rails應用程序中使用完全相同的代碼時,page.body不是空的。發佈使用After塊的Cucumber- * gem

寶石代碼是在Github在https://github.com/mattheworiordan/capybara-screenshot

如果你看一看,你會看到,我有一個lib/capybara-screenshot/world.rb文件,該文件訪問page.body並保存的內容出來。問題是,當寶石訪問page.body,page.body是空的,只是包含: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 我在gem's lib root file包括world.rb,所以我不能真正看到我做錯了什麼。

奇怪的是,如果我把一個後面的塊放入我的sample Rails app env.js file訪問頁面.body有正確的HTML,所以看起來在Gem中的{我的代碼}在頁面被釋放後執行。

寶石代碼爲https://github.com/mattheworiordan/capybara-screenshot,寶石安裝在https://rubygems.org/gems/capybara-screenshot。您可以通過簡單運行黃瓜來快速重現此問題的示例Rails應用程序位於https://github.com/mattheworiordan/capybara-screenshot-test

我覺得這個答案很簡單,但由於某種原因,我看不到它。我很感激您可以提供的任何幫助。

回答

2

Joe Ferris在Thoughtbot指出了我的正確方向,並指出你需要確保After hook在capybara之後加載,所以我需要確保要求我依賴的任何文件。在這種情況下,我需要水豚/黃瓜。

您可以在https://github.com/mattheworiordan/capybara-screenshot

相關問題