diff options
Diffstat (limited to 'spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb')
-rw-r--r-- | spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb b/spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb index c385def6762..8caa13c6297 100644 --- a/spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb +++ b/spec/features/merge_request/user_sees_merge_request_file_tree_sidebar_spec.rb @@ -15,48 +15,56 @@ RSpec.describe 'Merge request > User sees merge request file tree sidebar', :js, sign_in(user) visit diffs_project_merge_request_path(project, merge_request) wait_for_requests - scroll_into_view end it 'sees file tree sidebar' do expect(page).to have_selector('.file-row[role=button]') end - # TODO: fix this test - # For some reason the browser in CI doesn't update the file tree sidebar when review bar is shown - # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118378#note_1403906356 - # - # it 'has last entry visible with discussions enabled' do - # add_diff_line_draft_comment('foo', find('.line_holder', match: :first)) - # scroll_into_view - # scroll_to_end - # button = find_all('.file-row[role=button]').last - # expect(button.obscured?).to be_falsy - # end - - shared_examples 'shows last visible file in sidebar' do - it 'shows last file' do - scroll_to_end + shared_examples 'last entry clickable' do + specify do + sidebar_scroller.execute_script('this.scrollBy(0,99999)') button = find_all('.file-row[role=button]').last title = button.find('[data-testid=file-row-name-container]')[:title] + expect(button.obscured?).to be_falsy button.click expect(page).to have_selector(".file-title-name[title*=\"#{title}\"]") end end - it_behaves_like 'shows last visible file in sidebar' + it_behaves_like 'last entry clickable' + + context 'when has started a review' do + before do + add_diff_line_draft_comment('foo', find('.line_holder', match: :first)) + # wait for review bar to appear + find_by_testid('review_bar_component') + # wait for sidebar to adjust + sleep(1) + end + + it_behaves_like 'last entry clickable' + + context 'when scrolled into full view' do + before do + sidebar.execute_script("this.scrollIntoView({ block: 'end' })") + end + + it_behaves_like 'last entry clickable' + end + end context 'when viewing using file-by-file mode' do let(:user) { create(:user, view_diffs_file_by_file: true) } - it_behaves_like 'shows last visible file in sidebar' - end + it_behaves_like 'last entry clickable' - def scroll_into_view - sidebar.execute_script("this.scrollIntoView({ block: 'end' })") - end + context 'when navigating to the next file' do + before do + click_link 'Next' + end - def scroll_to_end - sidebar_scroller.execute_script('this.scrollBy(0,99999)') + it_behaves_like 'last entry clickable' + end end end |