diff options
Diffstat (limited to 'qa/qa/specs/features/browser_ui/3_create')
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb | 45 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb (renamed from qa/qa/specs/features/browser_ui/3_create/merge_request/revert_spec.rb) | 0 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb | 46 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb | 47 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb | 82 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/web_ide/link_to_line_in_web_ide_spec.rb | 43 |
8 files changed, 265 insertions, 2 deletions
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb index 34669eb3815..ca0eeb2403c 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb @@ -3,7 +3,7 @@ module QA RSpec.describe 'Create', quarantine: { only: { subdomain: :staging }, issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/323990', type: :flaky } do describe 'Merge request rebasing' do - it 'user rebases source branch of merge request', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1274' do + it 'user rebases source branch of merge request', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1800' do Flow::Login.sign_in project = Resource::Project.fabricate_via_api! do |project| diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb new file mode 100644 index 00000000000..089b87be423 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'Reverting a commit' do + let(:file_name) { "secret_file.md" } + + let(:project) do + Resource::Project.fabricate_via_api! do |project| + project.name = 'project' + project.initialize_with_readme = true + end + end + + let(:commit) do + Resource::Repository::Commit.fabricate_via_api! do |commit| + commit.project = project + commit.commit_message = 'Add new file' + commit.add_files([ + { file_path: file_name, content: 'pssst!' } + ]) + end + end + + before do + Flow::Login.sign_in + commit.visit! + end + + it 'creates a merge request', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1784' do + Page::Project::Commit::Show.perform(&:revert_commit) + Page::MergeRequest::New.perform(&:create_merge_request) + + Page::MergeRequest::Show.perform do |merge_request| + merge_request.click_diffs_tab + expect(merge_request).to have_file(file_name) + end + end + + after do + project.remove_via_api! + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb index 3574cdbe4ac..3574cdbe4ac 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/revert_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb new file mode 100644 index 00000000000..db31cadb37d --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'Branch with unusual name' do + let(:branch_name) { 'unUsually/named#br--anch' } + let(:project) do + Resource::Project.fabricate_via_api! do |resource| + resource.name = 'unusually-named-branch-project' + resource.initialize_with_readme = true + end + end + + before do + Flow::Login.sign_in + end + + context 'when branch name contains slash, hash, double dash, and capital letter' do + it 'renders repository file tree correctly', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1780' do + Resource::Repository::Commit.fabricate_via_api! do |commit| + commit.project = project + commit.branch = branch_name + commit.start_branch = project.default_branch + commit.commit_message = 'Add new file' + commit.add_files([ + { file_path: 'test-folder/test-file.md', content: 'new content' } + ]) + end + + project.visit! + + Page::Project::Show.perform do |show| + show.switch_to_branch(branch_name) + show.click_file('test-folder') + + expect(show).to have_file('test-file.md') + + show.click_file('test-file.md') + + expect(show).to have_content('new content') + end + end + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb new file mode 100644 index 00000000000..98d0a3c5706 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'File with unusual name' do + let(:file_name) { '-un:usually;named#file?.md' } + let(:project) do + Resource::Project.fabricate_via_api! do |resource| + resource.name = 'unusually-named-file-project' + resource.initialize_with_readme = true + end + end + + before do + Flow::Login.sign_in + end + + context 'when file name starts with a dash and contains hash, semicolon, colon, and question mark' do + it 'renders repository file tree correctly', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1779' do + Resource::File.fabricate_via_api! do |file| + file.project = project + file.commit_message = 'Add new file' + file.name = "test-folder/#{file_name}" + file.content = "### Heading\n\n[Gitlab link](https://gitlab.com/)" + end + + project.visit! + + Page::Project::Show.perform do |show| + show.click_file('test-folder') + + expect(show).to have_file(file_name) + + show.click_file(file_name) + + aggregate_failures 'markdown file contents' do + expect(show).to have_content('Heading') + expect(show).to have_content('Gitlab link') + expect(show).not_to have_content('###') + expect(show).not_to have_content('https://gitlab.com/') + end + end + end + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb b/qa/qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb index b67e0e54aa0..9d90ff189c6 100644 --- a/qa/qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb @@ -71,7 +71,7 @@ module QA snippet.remove_via_api! end - it 'clones, pushes, and pulls a project snippet over SSH, deletes via UI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/832' do + it 'clones, pushes, and pulls a project snippet over SSH, deletes via UI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1794' do Resource::Repository::Push.fabricate! do |push| push.repository_ssh_uri = repository_uri_ssh push.ssh_key = ssh_key diff --git a/qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb b/qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb new file mode 100644 index 00000000000..9c7dc868a2e --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'Snippet index page' do + let(:personal_snippet_with_single_file) do + Resource::Snippet.fabricate_via_api! do |snippet| + snippet.title = "Personal snippet with one file-#{SecureRandom.hex(8)}" + snippet.visibility = 'Public' + end + end + + let(:personal_snippet_with_multiple_files) do + Resource::Snippet.fabricate_via_api! do |snippet| + snippet.title = "Personal snippet with multiple files-#{SecureRandom.hex(8)}" + snippet.visibility = 'Private' + snippet.file_name = 'First file name' + snippet.file_content = 'first file content' + + snippet.add_files do |files| + files.append(name: 'Second file name', content: 'second file content') + files.append(name: 'Third file name', content: 'third file content') + end + end + end + + let(:project_snippet_with_single_file) do + Resource::ProjectSnippet.fabricate_via_api! do |snippet| + snippet.title = "Project snippet with one file-#{SecureRandom.hex(8)}" + snippet.visibility = 'Private' + end + end + + let(:project_snippet_with_multiple_files) do + Resource::ProjectSnippet.fabricate_via_api! do |snippet| + snippet.title = "Project snippet with multiple files-#{SecureRandom.hex(8)}" + snippet.visibility = 'Public' + snippet.file_name = 'First file name' + snippet.file_content = 'first file content' + + snippet.add_files do |files| + files.append(name: 'Second file name', content: 'second file content') + files.append(name: 'Third file name', content: 'third file content') + end + end + end + + before do + Flow::Login.sign_in + end + + after do + personal_snippet_with_single_file.remove_via_api! + personal_snippet_with_multiple_files.remove_via_api! + project_snippet_with_single_file.remove_via_api! + project_snippet_with_multiple_files.remove_via_api! + end + + shared_examples 'displaying details on index page' do |snippet_type| + it "shows correct details of #{snippet_type} including file number" do + send(snippet_type) + Page::Main::Menu.perform do |menu| + menu.go_to_more_dropdown_option(:snippets_link) + end + + Page::Dashboard::Snippet::Index.perform do |snippet| + aggregate_failures 'file content verification' do + expect(snippet).to have_snippet_title(send(snippet_type).title) + expect(snippet).to have_visibility_level(send(snippet_type).title, send(snippet_type).visibility) + expect(snippet).to have_number_of_files(send(snippet_type).title, send(snippet_type).files.count) + end + end + end + end + + it_behaves_like 'displaying details on index page', :personal_snippet_with_single_file + it_behaves_like 'displaying details on index page', :personal_snippet_with_multiple_files + it_behaves_like 'displaying details on index page', :project_snippet_with_single_file + it_behaves_like 'displaying details on index page', :project_snippet_with_multiple_files + end + end +end diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide/link_to_line_in_web_ide_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide/link_to_line_in_web_ide_spec.rb new file mode 100644 index 00000000000..c7fc01303b7 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/3_create/web_ide/link_to_line_in_web_ide_spec.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Create' do + describe 'Link to line in Web IDE' do + let(:user) { Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1) } + let(:project) do + Resource::Project.fabricate_via_api! do |project| + project.template_name = 'express' + end + end + + before do + Flow::Login.sign_in + end + + after do + project.remove_via_api! + end + + it 'can link to a specific line of code in Web IDE', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1102' do + project.visit! + + Page::Project::Show.perform(&:open_web_ide!) + + Page::Project::WebIDE::Edit.perform do |ide| + ide.select_file('app.js') + @link = ide.link_line('26') + end + + Flow::Login.sign_in(as: user) + + page.visit(@link) + + Page::Project::WebIDE::Edit.perform do |ide| + expect(ide).to have_file('app.js') + end + + expect(page.driver.current_url).to include('app.js/#L26') + end + end + end +end |