summaryrefslogtreecommitdiff
path: root/qa/qa/specs/features/browser_ui/3_create
diff options
context:
space:
mode:
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.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb45
-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.rb46
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb47
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/snippet/snippet_index_page_spec.rb82
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/web_ide/link_to_line_in_web_ide_spec.rb43
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