diff --git a/app/assets/javascripts/merge_conflict_data_provider.js.es6 b/app/assets/javascripts/merge_conflict_data_provider.js.es6
index 6d1d3f36b330c915b170c9586ab733a2844460dc..5877d2f18967dfd12ef2d540402bedfdda91e82f 100644
--- a/app/assets/javascripts/merge_conflict_data_provider.js.es6
+++ b/app/assets/javascripts/merge_conflict_data_provider.js.es6
@@ -290,7 +290,7 @@ class MergeConflictDataProvider {
   isReadyToCommit() {
     const vi = this.vueInstance;
     const files = this.vueInstance.conflictsData.files;
-    const hasCommitMessage = $.trim(this.vueInstance.conflictsData.commitMessage).length;
+    const hasCommitMessage = this.vueInstance.conflictsData.commitMessage.trim();
     let unresolved = 0;
 
     for (let i = 0, l = files.length; i < l; i++) {
diff --git a/app/assets/javascripts/merge_conflicts/merge_conflict_store.js.es6 b/app/assets/javascripts/merge_conflicts/merge_conflict_store.js.es6
index 83bcc3f51aac9fbb4dd3fc64be4614cf8ac73f95..5c5c65f29d4fbb5d7fa17545bbb1a068dc03d3b6 100644
--- a/app/assets/javascripts/merge_conflicts/merge_conflict_store.js.es6
+++ b/app/assets/javascripts/merge_conflicts/merge_conflict_store.js.es6
@@ -321,7 +321,8 @@
           let numberConflicts = 0;
           let resolvedConflicts = Object.keys(file.resolutionData).length
 
-          // We only check if
+          // We only check for conflicts type 'text'
+          // since conflicts `text_editor` canĀ“t be resolved in interactive mode
           if (file.type === CONFLICT_TYPES.TEXT) {
             for (let j = 0, k = file.sections.length; j < k; j++) {
               if (file.sections[j].conflict) {
@@ -334,6 +335,7 @@
             }
           }
         } else if (file.resolveMode === EDIT_RESOLVE_MODE) {
+
           // Unlikely to happen since switching to Edit mode saves content automatically.
           // Checking anyway in case the save strategy changes in the future
           if (!file.content) {
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb
index 06b37aa4997a01b7727daf8e5eb6884bd01b4737..31f43bdc89a81ebbad6ef1292fb4a188ec4f024a 100644
--- a/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -659,6 +659,7 @@ describe Projects::MergeRequestsController do
            id: merge_request.iid
 
       expect(merge_request.reload.title).to eq(merge_request.wipless_title)
+    end
   end
 
   describe 'GET conflict_for_path' do
diff --git a/spec/features/merge_requests/conflicts_spec.rb b/spec/features/merge_requests/conflicts_spec.rb
index 4cecc22aa6c16e538d0ec3b15c8be88c24118e48..d258ff52bbb7eb326cc77cdb569302f96a4ff5aa 100644
--- a/spec/features/merge_requests/conflicts_spec.rb
+++ b/spec/features/merge_requests/conflicts_spec.rb
@@ -12,74 +12,121 @@ feature 'Merge request conflict resolution', js: true, feature: true do
     end
   end
 
-  context 'when a merge request can be resolved in the UI' do
-    let(:merge_request) { create_merge_request('conflict-resolvable') }
+  shared_examples "conflicts are resolved in Interactive mode" do
+    it 'conflicts are resolved in Interactive mode' do
+      within find('.files-wrapper .diff-file', text: 'files/ruby/popen.rb') do
+        click_button 'Use ours'
+      end
 
-    before do
-      project.team << [user, :developer]
-      login_as(user)
+      within find('.files-wrapper .diff-file', text: 'files/ruby/regex.rb') do
+        all('button', text: 'Use ours').each do |button|
+          button.click
+        end
+      end
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
-    end
+      click_button 'Commit conflict resolution'
+      wait_for_ajax
 
-    it 'shows a link to the conflict resolution page' do
-      expect(page).to have_link('conflicts', href: /\/conflicts\Z/)
-    end
+      expect(page).to have_content('All merge conflicts were resolved')
+      merge_request.reload_diff
 
-    context 'visiting the conflicts resolution page' do
-      before { click_link('conflicts', href: /\/conflicts\Z/) }
+      click_on 'Changes'
+      wait_for_ajax
 
-      it 'shows the conflicts' do
-        begin
-          expect(find('#conflicts')).to have_content('popen.rb')
-        rescue Capybara::Poltergeist::JavascriptError
-          retry
-        end
+      within find('.diff-file', text: 'files/ruby/popen.rb') do
+        expect(page).to have_selector('.line_content.new', text: "vars = { 'PWD' => path }")
+        expect(page).to have_selector('.line_content.new', text: "options = { chdir: path }")
       end
 
-      context 'when in inline mode'  do
-        it 'resolves files manually' do
-          within find('.files-wrapper .diff-file', text: 'files/ruby/popen.rb') do
-            click_button 'Edit inline'
-            wait_for_ajax
-            execute_script('ace.edit($(".files-wrapper .diff-file pre")[0]).setValue("One morning");')
-          end
-
-          within find('.files-wrapper .diff-file', text: 'files/ruby/regex.rb') do
-            click_button 'Edit inline'
-            wait_for_ajax
-            execute_script('ace.edit($(".files-wrapper .diff-file pre")[1]).setValue("Gregor Samsa woke from troubled dreams");')
-          end
-
-          click_button 'Commit conflict resolution'
-          wait_for_ajax
-          expect(page).to have_content('All merge conflicts were resolved')
-          merge_request.reload_diff
+      within find('.diff-file', text: 'files/ruby/regex.rb') do
+        expect(page).to have_selector('.line_content.new', text: "def username_regexp")
+        expect(page).to have_selector('.line_content.new', text: "def project_name_regexp")
+        expect(page).to have_selector('.line_content.new', text: "def path_regexp")
+        expect(page).to have_selector('.line_content.new', text: "def archive_formats_regexp")
+        expect(page).to have_selector('.line_content.new', text: "def git_reference_regexp")
+        expect(page).to have_selector('.line_content.new', text: "def default_regexp")
+      end
+    end
+  end
 
-          click_on 'Changes'
-          wait_for_ajax
+  shared_examples "conflicts are resolved in Edit inline mode" do
+    it 'conflicts are resolved in Edit inline mode' do
+      expect(find('#conflicts')).to have_content('popen.rb')
 
-          expect(page).to have_content('One morning')
-          expect(page).to have_content('Gregor Samsa woke from troubled dreams')
-        end
+      within find('.files-wrapper .diff-file', text: 'files/ruby/popen.rb') do
+        click_button 'Edit inline'
+        wait_for_ajax
+        execute_script('ace.edit($(".files-wrapper .diff-file pre")[0]).setValue("One morning");')
       end
+
+      within find('.files-wrapper .diff-file', text: 'files/ruby/regex.rb') do
+        click_button 'Edit inline'
+        wait_for_ajax
+        execute_script('ace.edit($(".files-wrapper .diff-file pre")[1]).setValue("Gregor Samsa woke from troubled dreams");')
+      end
+
+      click_button 'Commit conflict resolution'
+      wait_for_ajax
+      expect(page).to have_content('All merge conflicts were resolved')
+      merge_request.reload_diff
+
+      click_on 'Changes'
+      wait_for_ajax
+
+      expect(page).to have_content('One morning')
+      expect(page).to have_content('Gregor Samsa woke from troubled dreams')
     end
   end
 
-  context 'when a merge request can be resolved in the UI' do
-    let(:merge_request) { create_merge_request('conflict-contains-conflict-markers') }
-
+  context 'can be resolved in the UI' do
     before do
       project.team << [user, :developer]
       login_as(user)
+    end
 
-      visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+    context 'the conflicts are resolvable' do
+      let(:merge_request) { create_merge_request('conflict-resolvable') }
+
+      before { visit namespace_project_merge_request_path(project.namespace, project, merge_request) }
+
+      it 'shows a link to the conflict resolution page' do
+        expect(page).to have_link('conflicts', href: /\/conflicts\Z/)
+      end
+
+      context 'in Inline view mode' do
+        before { click_link('conflicts', href: /\/conflicts\Z/) }
+
+        include_examples "conflicts are resolved in Interactive mode"
+        include_examples "conflicts are resolved in Edit inline mode"
+      end
+
+      context 'in Parallel view mode' do
+        before do
+          click_link('conflicts', href: /\/conflicts\Z/) 
+          click_button 'Side-by-side'
+        end
+
+        include_examples "conflicts are resolved in Interactive mode"
+        include_examples "conflicts are resolved in Edit inline mode"
+      end
     end
 
-    context 'a conflict contain markers' do
-      before { click_link('conflicts', href: /\/conflicts\Z/) }
+    context 'the conflict contain markers' do
+      let(:merge_request) { create_merge_request('conflict-contains-conflict-markers') }
+
+      before do
+        visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+        click_link('conflicts', href: /\/conflicts\Z/)
+      end
+
+      it 'conflicts can not be resolved in Interactive mode' do
+        within find('.files-wrapper .diff-file', text: 'files/markdown/ruby-style-guide.md') do
+          expect(page).not_to have_content 'Interactive mode'
+          expect(page).not_to have_content 'Edit inline'
+        end
+      end
 
-      it 'resolves files manually' do
+      it 'conflicts are resolved in Edit inline mode' do
         within find('.files-wrapper .diff-file', text: 'files/markdown/ruby-style-guide.md') do
           wait_for_ajax
           execute_script('ace.edit($(".files-wrapper .diff-file pre")[0]).setValue("Gregor Samsa woke from troubled dreams");')
@@ -94,7 +141,7 @@ feature 'Merge request conflict resolution', js: true, feature: true do
 
         click_on 'Changes'
         wait_for_ajax
-        find('.nothing-here-block', visible: true).click
+        find('.click-to-expand').click
         wait_for_ajax
 
         expect(page).to have_content('Gregor Samsa woke from troubled dreams')