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? %>