diff --git a/Gemfile b/Gemfile index b6fe800..fe70c7d 100644 --- a/Gemfile +++ b/Gemfile @@ -48,6 +48,7 @@ gem 'cuprite' gem 'rspec_junit_formatter' gem 'rspec-rails' gem 'simplecov', require: false +gem 'super_diff' # Linters gem 'fasterer' diff --git a/spec/page_objects/shared/quill_editor.rb b/spec/page_objects/shared/quill_editor.rb index a46b7c9..6272184 100644 --- a/spec/page_objects/shared/quill_editor.rb +++ b/spec/page_objects/shared/quill_editor.rb @@ -16,6 +16,11 @@ module Shared @content_element ||= find("#{selector} .ql-editor") end + def open_dropdown(dropdown) + find("#{toolbar_selector} .ql-#{dropdown} .ql-picker-label").click + self + end + def toggle_bold find("#{toolbar_selector} button.ql-bold").click end @@ -31,5 +36,29 @@ module Shared def toggle_link find("#{toolbar_selector} button.ql-link").click end + + def toggle_blockquote + find("#{toolbar_selector} button.ql-blockquote").click + end + + def toggle_code_block + find("#{toolbar_selector} button.ql-code-block").click + end + + def toggle_sub + find("#{toolbar_selector} button.ql-script[value='sub']").click + end + + def toggle_super + find("#{toolbar_selector} button.ql-script[value='super']").click + end + + def toggle_align_right + find("#{toolbar_selector} .ql-picker-item[data-value='right']").click + end + + def tooltip_editing + find("#{editor_selector} .ql-tooltip.ql-editing") + end end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 72a7e92..a49a438 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,12 +1,14 @@ # frozen_string_literal: true -require_relative 'spec_helper' +require 'super_diff/rspec' require 'zeitwerk' loader = Zeitwerk::Loader.new loader.push_dir("#{__dir__}/page_objects") loader.setup +require_relative 'spec_helper' + ENV['RAILS_ENV'] = 'test' require 'simplecov' @@ -21,8 +23,6 @@ require 'capybara/rails' Dir[File.expand_path('support/**/*.rb', __dir__)].each { |f| require_relative f } -# Checks for pending migrations and applies them before tests are run. -# If you are not using ActiveRecord, you can remove these lines. begin ActiveRecord::Migration.maintain_test_schema! rescue ActiveRecord::PendingMigrationError => e diff --git a/spec/system/quill_editor_spec.rb b/spec/system/quill_editor_spec.rb index f0c5a73..e572ddb 100644 --- a/spec/system/quill_editor_spec.rb +++ b/spec/system/quill_editor_spec.rb @@ -29,17 +29,48 @@ RSpec.describe 'Quill editor' do end it 'edits some content using the editor' do - editor << :return << 'More content' + editor.select_all + editor.toggle_link + editor.tooltip_editing.send_keys(["https://blocknot.es", :return]) + + editor << :right << :return << 'More content' editor.toggle_bold editor << 'Some bold' editor.toggle_italic editor << 'Some italic' editor.toggle_underline - editor << 'Some underline' + editor << 'Some underline' << :return + + editor.toggle_blockquote + editor << 'blockquote enabled' << :return + editor.toggle_blockquote + + editor.toggle_code_block + editor << 'code block enabled' << :return + editor.toggle_code_block + + editor << "Some text" + editor.toggle_sub + editor << "sub text" + editor.toggle_sub + editor << " More text" + editor.toggle_super + editor << "sup text" + editor.toggle_super + editor << :return + + editor.open_dropdown(:align).toggle_align_right + editor << "Text aligned on the right" expect(editor.content).to eq <<~HTML.clean_multiline -

Some content

+

Some content

More contentSome boldSome italicSome underline

+
blockquote enabled
+
+
code block enabled
+
+

Some textsub text More textsup text

+

Text aligned on the right

HTML end