2017-01-04 7 views
0

J'essaie de tester mon application rails avec un test de fonctionnalité RSpec. J'utilise Quilljs pour le texte enrichi et je veux simplement tester la possibilité de créer des messages.Capybara test avec Quilljs et capybara-webkit

# erb view 
<div id="post-form-container"> 
    <%= form_for :post, url: posts_path, html: {id: 'post-form'} do |f| %> 
    <div class="form-group"> 
     <%= f.hidden_field :discussion_id, value: discussion.id %> 
     <%= f.hidden_field :content, class: 'form-control', id: 'post-content-input' %> 
     <div id="editor-container"></div> 
    <%= f.button 'Post', class: 'btn btn-primary', id: 'post-button' %> 
     </div> 
    <% end %> 
</div> 

# spec 
scenario 'can post in discussion', :js do 
    login_as user 
    visit community_group_path(community_group) 
    within('form#post-form') do 
    find('div[contenteditable="true"].ql-editor').send_keys 'This is a new post.' 
    click_on 'Post' 
    end 
    expect(page).to have_content 'This is a new post.' 
end 

This question m'a amené à essayer ce qui précède, mais il ne semble pas aiguillons crée le div contenteditable lors de l'exécution de ce scénario, même avec l'étiquette :js.

Capybara::ElementNotFound: 
    Unable to find css "div[contenteditable]" 

Mise à jour: Je suis venu à réaliser que je dois laisser les URL externes pour Quill comme ci-dessous, mais il ne fonctionne toujours pas.

Capybara::Webkit.configure do |config| 
    config.allow_url("https://cdn.quilljs.com/*") 
end 

Mise à jour 2: J'ai eu ma demande JS chargement async et qui a été l'origine des problèmes. Changer cela a fait l'affaire!

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true, async: Rails.env.production? %> 

Répondre

0

Deux choses fixes mon problème:

Autoriser l'URL Quill externe

# spec/support/capybara.rb 
Capybara::Webkit.configure do |config| 
    config.allow_url("https://cdn.quilljs.com/*") 
end 

Application de la charge JS synchrone lors des essais

<%# app/views/layouts/application.html.erb %> 
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true, async: Rails.env.production? %>