Skip to content
Snippets Groups Projects
Commit 53d3294d authored by Robert Speicher's avatar Robert Speicher
Browse files

Speed up features/notes_on_merge_requests_spec

This spec featured the slowest tests in the entire suite. After some
debugging, the cause was found to be the large commit diff generated by
comparing the stable and master branches.

To fix this, the seed repository was modified to create a simple branch
off of master that consists of three simple commits and minor changes.
The spec was then updated to compare master to this branch instead of
stable. The result is a spec group that runs in under 30 seconds, down
from about 90.
parent 046773d6
No related branches found
No related tags found
No related merge requests found
Loading
@@ -146,6 +146,11 @@ FactoryGirl.define do
Loading
@@ -146,6 +146,11 @@ FactoryGirl.define do
state :reopened state :reopened
end end
   
trait :simple do
source_branch "simple_merge_request"
target_branch "master"
end
factory :closed_merge_request, traits: [:closed] factory :closed_merge_request, traits: [:closed]
factory :reopened_merge_request, traits: [:reopened] factory :reopened_merge_request, traits: [:reopened]
factory :merge_request_with_diffs, traits: [:with_diffs] factory :merge_request_with_diffs, traits: [:with_diffs]
Loading
@@ -161,7 +166,6 @@ FactoryGirl.define do
Loading
@@ -161,7 +166,6 @@ FactoryGirl.define do
factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note] factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note]
factory :note_on_merge_request, traits: [:on_merge_request] factory :note_on_merge_request, traits: [:on_merge_request]
factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff] factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff]
factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment]
   
trait :on_commit do trait :on_commit do
project factory: :project project factory: :project
Loading
Loading
require 'spec_helper' require 'spec_helper'
   
describe "On a merge request", js: true do describe "On a merge request", js: true do
let!(:project) { create(:project) } let!(:merge_request) { create(:merge_request, :simple) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } let!(:project) { merge_request.source_project }
let!(:note) { create(:note_on_merge_request_with_attachment, project: project) } let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
   
before do before do
login_as :user login_as :admin
project.team << [@user, :master]
visit project_merge_request_path(project, merge_request) visit project_merge_request_path(project, merge_request)
end end
   
Loading
@@ -134,22 +132,20 @@ describe "On a merge request", js: true do
Loading
@@ -134,22 +132,20 @@ describe "On a merge request", js: true do
end end
end end
   
describe "On a merge request diff", js: true, focus: true do describe "On a merge request diff", js: true do
let!(:project) { create(:project) } let(:merge_request) { create(:merge_request, :with_diffs, :simple) }
let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) } let(:project) { merge_request.source_project }
   
before do before do
login_as :user login_as :admin
project.team << [@user, :master]
visit diffs_project_merge_request_path(project, merge_request) visit diffs_project_merge_request_path(project, merge_request)
end end
   
subject { page } subject { page }
   
describe "when adding a note" do describe "when adding a note" do
before do before do
find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
end end
   
describe "the notes holder" do describe "the notes holder" do
Loading
@@ -160,13 +156,13 @@ describe "On a merge request diff", js: true, focus: true do
Loading
@@ -160,13 +156,13 @@ describe "On a merge request diff", js: true, focus: true do
   
describe "the note form" do describe "the note form" do
it "shouldn't add a second form for same row" do it "shouldn't add a second form for same row" do
find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
   
should have_css("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder form", count: 1) should have_css("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder form", count: 1)
end end
   
it "should be removed when canceled" do it "should be removed when canceled" do
within(".diff-file form[rel$='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185']") do within(".diff-file form[rel$='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7']") do
find(".js-close-discussion-note-form").trigger("click") find(".js-close-discussion-note-form").trigger("click")
end end
   
Loading
@@ -176,12 +172,9 @@ describe "On a merge request diff", js: true, focus: true do
Loading
@@ -176,12 +172,9 @@ describe "On a merge request diff", js: true, focus: true do
end end
   
describe "with muliple note forms" do describe "with muliple note forms" do
let!(:project) { create(:project) }
let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
before do before do
find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
find('a[data-line-code="342e16cbbd482ac2047dc679b2749d248cc1428f_18_17"]').click find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10"]').click
end end
   
it { should have_css(".js-temp-notes-holder", count: 2) } it { should have_css(".js-temp-notes-holder", count: 2) }
Loading
@@ -189,12 +182,12 @@ describe "On a merge request diff", js: true, focus: true do
Loading
@@ -189,12 +182,12 @@ describe "On a merge request diff", js: true, focus: true do
describe "previewing them separately" do describe "previewing them separately" do
before do before do
# add two separate texts and trigger previews on both # add two separate texts and trigger previews on both
within("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder") do within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "One comment on line 185" fill_in "note[note]", with: "One comment on line 7"
find(".js-note-preview-button").trigger("click") find(".js-note-preview-button").trigger("click")
end end
within("tr[id='342e16cbbd482ac2047dc679b2749d248cc1428f_18_17'] + .js-temp-notes-holder") do within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "Another comment on line 17" fill_in "note[note]", with: "Another comment on line 10"
find(".js-note-preview-button").trigger("click") find(".js-note-preview-button").trigger("click")
end end
end end
Loading
@@ -202,14 +195,14 @@ describe "On a merge request diff", js: true, focus: true do
Loading
@@ -202,14 +195,14 @@ describe "On a merge request diff", js: true, focus: true do
   
describe "posting a note" do describe "posting a note" do
before do before do
within("tr[id='342e16cbbd482ac2047dc679b2749d248cc1428f_18_17'] + .js-temp-notes-holder") do within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "Another comment on line 17" fill_in "note[note]", with: "Another comment on line 10"
click_button("Add Comment") click_button("Add Comment")
end end
end end
   
it 'should be added as discussion' do it 'should be added as discussion' do
should have_content("Another comment on line 17") should have_content("Another comment on line 10")
should have_css(".notes_holder") should have_css(".notes_holder")
should have_css(".notes_holder .note", count: 1) should have_css(".notes_holder .note", count: 1)
should have_link("Reply") should have_link("Reply")
Loading
Loading
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment