Commit 53d3294d1de6a3ded84532c1874ca48910fd69b0
1 parent
046773d6
Exists in
spb-stable
and in
3 other branches
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.
Showing
3 changed files
with
26 additions
and
29 deletions
Show diff stats
spec/factories.rb
@@ -146,6 +146,11 @@ FactoryGirl.define do | @@ -146,6 +146,11 @@ FactoryGirl.define do | ||
146 | state :reopened | 146 | state :reopened |
147 | end | 147 | end |
148 | 148 | ||
149 | + trait :simple do | ||
150 | + source_branch "simple_merge_request" | ||
151 | + target_branch "master" | ||
152 | + end | ||
153 | + | ||
149 | factory :closed_merge_request, traits: [:closed] | 154 | factory :closed_merge_request, traits: [:closed] |
150 | factory :reopened_merge_request, traits: [:reopened] | 155 | factory :reopened_merge_request, traits: [:reopened] |
151 | factory :merge_request_with_diffs, traits: [:with_diffs] | 156 | factory :merge_request_with_diffs, traits: [:with_diffs] |
@@ -161,7 +166,6 @@ FactoryGirl.define do | @@ -161,7 +166,6 @@ FactoryGirl.define do | ||
161 | factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note] | 166 | factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note] |
162 | factory :note_on_merge_request, traits: [:on_merge_request] | 167 | factory :note_on_merge_request, traits: [:on_merge_request] |
163 | factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff] | 168 | factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff] |
164 | - factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment] | ||
165 | 169 | ||
166 | trait :on_commit do | 170 | trait :on_commit do |
167 | project factory: :project | 171 | project factory: :project |
spec/features/notes_on_merge_requests_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe "On a merge request", js: true do | 3 | describe "On a merge request", js: true do |
4 | - let!(:project) { create(:project) } | ||
5 | - let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } | ||
6 | - let!(:note) { create(:note_on_merge_request_with_attachment, project: project) } | 4 | + let!(:merge_request) { create(:merge_request, :simple) } |
5 | + let!(:project) { merge_request.source_project } | ||
6 | + let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) } | ||
7 | 7 | ||
8 | before do | 8 | before do |
9 | - login_as :user | ||
10 | - project.team << [@user, :master] | ||
11 | - | 9 | + login_as :admin |
12 | visit project_merge_request_path(project, merge_request) | 10 | visit project_merge_request_path(project, merge_request) |
13 | end | 11 | end |
14 | 12 | ||
@@ -134,22 +132,20 @@ describe "On a merge request", js: true do | @@ -134,22 +132,20 @@ describe "On a merge request", js: true do | ||
134 | end | 132 | end |
135 | end | 133 | end |
136 | 134 | ||
137 | -describe "On a merge request diff", js: true, focus: true do | ||
138 | - let!(:project) { create(:project) } | ||
139 | - let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) } | 135 | +describe "On a merge request diff", js: true do |
136 | + let(:merge_request) { create(:merge_request, :with_diffs, :simple) } | ||
137 | + let(:project) { merge_request.source_project } | ||
140 | 138 | ||
141 | before do | 139 | before do |
142 | - login_as :user | ||
143 | - project.team << [@user, :master] | 140 | + login_as :admin |
144 | visit diffs_project_merge_request_path(project, merge_request) | 141 | visit diffs_project_merge_request_path(project, merge_request) |
145 | end | 142 | end |
146 | 143 | ||
147 | - | ||
148 | subject { page } | 144 | subject { page } |
149 | 145 | ||
150 | describe "when adding a note" do | 146 | describe "when adding a note" do |
151 | before do | 147 | before do |
152 | - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click | 148 | + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click |
153 | end | 149 | end |
154 | 150 | ||
155 | describe "the notes holder" do | 151 | describe "the notes holder" do |
@@ -160,13 +156,13 @@ describe "On a merge request diff", js: true, focus: true do | @@ -160,13 +156,13 @@ describe "On a merge request diff", js: true, focus: true do | ||
160 | 156 | ||
161 | describe "the note form" do | 157 | describe "the note form" do |
162 | it "shouldn't add a second form for same row" do | 158 | it "shouldn't add a second form for same row" do |
163 | - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click | 159 | + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click |
164 | 160 | ||
165 | - should have_css("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder form", count: 1) | 161 | + should have_css("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder form", count: 1) |
166 | end | 162 | end |
167 | 163 | ||
168 | it "should be removed when canceled" do | 164 | it "should be removed when canceled" do |
169 | - within(".diff-file form[rel$='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185']") do | 165 | + within(".diff-file form[rel$='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7']") do |
170 | find(".js-close-discussion-note-form").trigger("click") | 166 | find(".js-close-discussion-note-form").trigger("click") |
171 | end | 167 | end |
172 | 168 | ||
@@ -176,12 +172,9 @@ describe "On a merge request diff", js: true, focus: true do | @@ -176,12 +172,9 @@ describe "On a merge request diff", js: true, focus: true do | ||
176 | end | 172 | end |
177 | 173 | ||
178 | describe "with muliple note forms" do | 174 | describe "with muliple note forms" do |
179 | - let!(:project) { create(:project) } | ||
180 | - let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) } | ||
181 | - | ||
182 | before do | 175 | before do |
183 | - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click | ||
184 | - find('a[data-line-code="342e16cbbd482ac2047dc679b2749d248cc1428f_18_17"]').click | 176 | + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click |
177 | + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10"]').click | ||
185 | end | 178 | end |
186 | 179 | ||
187 | it { should have_css(".js-temp-notes-holder", count: 2) } | 180 | it { should have_css(".js-temp-notes-holder", count: 2) } |
@@ -189,12 +182,12 @@ describe "On a merge request diff", js: true, focus: true do | @@ -189,12 +182,12 @@ describe "On a merge request diff", js: true, focus: true do | ||
189 | describe "previewing them separately" do | 182 | describe "previewing them separately" do |
190 | before do | 183 | before do |
191 | # add two separate texts and trigger previews on both | 184 | # add two separate texts and trigger previews on both |
192 | - within("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder") do | ||
193 | - fill_in "note[note]", with: "One comment on line 185" | 185 | + within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder") do |
186 | + fill_in "note[note]", with: "One comment on line 7" | ||
194 | find(".js-note-preview-button").trigger("click") | 187 | find(".js-note-preview-button").trigger("click") |
195 | end | 188 | end |
196 | - within("tr[id='342e16cbbd482ac2047dc679b2749d248cc1428f_18_17'] + .js-temp-notes-holder") do | ||
197 | - fill_in "note[note]", with: "Another comment on line 17" | 189 | + within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do |
190 | + fill_in "note[note]", with: "Another comment on line 10" | ||
198 | find(".js-note-preview-button").trigger("click") | 191 | find(".js-note-preview-button").trigger("click") |
199 | end | 192 | end |
200 | end | 193 | end |
@@ -202,14 +195,14 @@ describe "On a merge request diff", js: true, focus: true do | @@ -202,14 +195,14 @@ describe "On a merge request diff", js: true, focus: true do | ||
202 | 195 | ||
203 | describe "posting a note" do | 196 | describe "posting a note" do |
204 | before do | 197 | before do |
205 | - within("tr[id='342e16cbbd482ac2047dc679b2749d248cc1428f_18_17'] + .js-temp-notes-holder") do | ||
206 | - fill_in "note[note]", with: "Another comment on line 17" | 198 | + within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do |
199 | + fill_in "note[note]", with: "Another comment on line 10" | ||
207 | click_button("Add Comment") | 200 | click_button("Add Comment") |
208 | end | 201 | end |
209 | end | 202 | end |
210 | 203 | ||
211 | it 'should be added as discussion' do | 204 | it 'should be added as discussion' do |
212 | - should have_content("Another comment on line 17") | 205 | + should have_content("Another comment on line 10") |
213 | should have_css(".notes_holder") | 206 | should have_css(".notes_holder") |
214 | should have_css(".notes_holder .note", count: 1) | 207 | should have_css(".notes_holder .note", count: 1) |
215 | should have_link("Reply") | 208 | should have_link("Reply") |
spec/seed_project.tar.gz
No preview for this file type