Капибара, тестирующая функции editablegrid, не работает
Используя editablegrid.net. Очень нравится макет и функциональность. Единственная проблема - тестирование функций. Кажется, что ничего не работает в капибаре - на снимке страницы не отображается содержимое страницы для фактической сетки, сопоставители не видят содержимое, отображаемое в js.
Я должен использовать более старый фантом (v1.9.2), так как поддержка для капибары, по-видимому, пока отсутствует на Mac OS X.
Кто-нибудь испытывал удачу?
Вещи пытались
- обновление страницы: page.driver.bro wser.navigate.refresh
- Убедитесь, что включен TurboLinks событий для загрузки
- пробовал селен и полтергейст
Подробности настройки
версии
rails 4.1.0
capybara (2.9.1)
rspec (3.5.0)
phantomjs 192
selenium-webdriver (2.53.4)
poltergeist (1.5.1)
capybara (~> 2.1)
cliver (~> 0.3.1)
multi_json (~> 1.0)
websocket-driver (>= 0.2.0)
$ phantomjs -v
1.9.2
ОБНОВЛЕНИЕ обновленных версий
$ phantomjs -v
2.1.1
$ gem list | grep polter
poltergeist (1.10.0)
$ selenium-webdriver (2.53.4)
Однако, когда я делаю простой тест
visit 'address_books/'+user.address_book.id.to_s
page.save_screenshot("file1.png", :full => true)
sleep 4.seconds # just in case the delayed redraw takes time
page.save_screenshot("file2.png", :full => true)
expect(page).to have_content(/Person A.*2 8888 9999.*home/)
где эта страница содержит editablegrid
это прекрасно работает в процессе разработки (см. пример снимка экрана ( http://imgbox.com/rqwx1vHe)) не отображается при сохранении снимков экрана ( http://imgbox.com/t1CG6hQa)
другие заметки
- Пробовал селен тоже, такая же проблема: понятно, что сетка не отображается.
- Я использовал загрузку турбо ссылок для события, чтобы вызвать загрузку страницы.
код сетки
var editableGrid = null;
$(document).on('turbolinks:load', function() {
editableGrid = new EditableGrid("AddressBookGridJSON");
editableGrid.tableLoaded = function() { this.renderGrid("tablecontent", "testgrid"); };
editableGrid.loadJSON('/address_books.json');
// $.getJSON('/address_books.json', function(json) {
// editableGrid.load({"metadata": json.metadata, "data": json.data});
// console.log(editableGrid);
// });
});
ОБНОВЛЕНИЕ 2
index.json.jbuilder
json.set! :metadata do
json.array! @address_book.generate_view_table_meta_data
end
json.set! :data do
json.array! @contacts do |contact|
json.id contact.id
json.set! :values do
json.name contact.name
json.phone_number contact.get_presentation_number
json.phone_type contact.get_humanize_phone_type
json.action contact.get_url_to_view_delete
end
end
end
ОБНОВЛЕНИЕ 3
Код очистителябазы данных загружен
требуется 'database_cleaner' RSpec.configure do |config| config.before(:each) do DatabaseCleaner.clean_with(: усечение) end
config.before(:each) do
#DatabaseCleaner.strategy = :transaction
# if we use transaction the data is NOT saved during the actual rspec scenario. we must have commit
# during rspec so external compare processs can access data
# TODO make this conditional based on the compare plans process only
# tests will not have :nontransactional defined except compareplans testing
if self.class.metadata[:nontransactional]
DatabaseCleaner.strategy = :truncation
else
DatabaseCleaner.strategy = :transaction
end
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.append_after(:each) do
DatabaseCleaner.clean
end
end