summaryrefslogtreecommitdiff
path: root/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb')
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb143
1 files changed, 72 insertions, 71 deletions
diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb
index 5072b6d48bf..55ad8baf872 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb
@@ -3,25 +3,26 @@
module QA
RSpec.describe 'Manage', :github, :requires_admin do
describe 'Project import' do
+ let!(:api_client) { Runtime::API::Client.as_admin }
+ let!(:group) { Resource::Group.fabricate_via_api! { |resource| resource.api_client = api_client } }
let!(:user) do
Resource::User.fabricate_via_api! do |resource|
- resource.api_client = Runtime::API::Client.as_admin
+ resource.api_client = api_client
+ resource.hard_delete_on_api_removal = true
end
end
- let(:group) { Resource::Group.fabricate_via_api! }
-
let(:imported_project) do
Resource::ProjectImportedFromGithub.fabricate_via_browser_ui! do |project|
project.name = 'imported-project'
project.group = group
project.github_personal_access_token = Runtime::Env.github_access_token
project.github_repository_path = 'gitlab-qa-github/test-project'
+ project.api_client = api_client
end
end
before do
- Runtime::Feature.enable(:invite_members_group_modal, group: group)
group.add_member(user, Resource::Members::AccessLevel::MAINTAINER)
end
@@ -32,90 +33,90 @@ module QA
it 'imports a GitHub repo', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1762' do
Flow::Login.sign_in(as: user)
- imported_project # import the project
+ imported_project.reload! # import the project and reload all fields
- Page::Main::Menu.perform(&:go_to_projects)
- Page::Dashboard::Projects.perform do |dashboard|
- dashboard.go_to_project(imported_project.name)
+ aggregate_failures do
+ verify_repository_import
+ verify_commits_import
+ verify_labels_import
+ verify_issues_import
+ verify_milestones_import
+ verify_wikis_import
+ verify_merge_requests_import
end
-
- Page::Project::Show.perform(&:wait_for_import)
-
- verify_repository_import
- verify_issues_import
- verify_merge_requests_import
- verify_labels_import
- verify_milestones_import
- verify_wiki_import
end
def verify_repository_import
- Page::Project::Show.perform do |project|
- expect(project).to have_content('This test project is used for automated GitHub import by GitLab QA.')
- expect(project).to have_content(imported_project.name)
- end
+ expect(imported_project.api_response).to include(
+ description: 'A new repo for test',
+ import_status: 'finished',
+ import_error: nil
+ )
end
- def verify_issues_import
- QA::Support::Retrier.retry_on_exception do
- Page::Project::Menu.perform(&:click_issues)
-
- Page::Project::Issue::Show.perform do |issue_page|
- expect(issue_page).to have_content('This is a sample issue')
-
- click_link 'This is a sample issue'
-
- expect(issue_page).to have_content('This is a sample first comment')
-
- # Comments
- comment_text = 'This is a comment from @sliaquat'
-
- expect(issue_page).to have_comment(comment_text)
- expect(issue_page).to have_label('custom new label')
- expect(issue_page).to have_label('help wanted')
- expect(issue_page).to have_label('good first issue')
- end
- end
+ def verify_commits_import
+ expect(imported_project.commits.length).to eq(20)
end
- def verify_merge_requests_import
- Page::Project::Menu.perform(&:click_merge_requests)
-
- Page::MergeRequest::Show.perform do |merge_request|
- expect(merge_request).to have_content('Improve readme')
-
- click_link 'Improve readme'
-
- expect(merge_request).to have_content('This improves the README file a bit.')
-
- # Comments
- expect(merge_request).to have_content('[PR comment by @sliaquat] Nice work!')
-
- # Diff comments
- expect(merge_request).to have_content('[Single diff comment] Good riddance')
- expect(merge_request).to have_content('[Single diff comment] Nice addition')
-
- expect(merge_request).to have_label('bug')
- expect(merge_request).to have_label('documentation')
- end
+ def verify_labels_import
+ labels = imported_project.labels.map { |label| label.slice(:name, :color) }
+
+ expect(labels).to eq(
+ [
+ { name: 'bug', color: '#d73a4a' },
+ { name: 'custom new label', color: '#fc8f91' },
+ { name: 'documentation', color: '#0075ca' },
+ { name: 'duplicate', color: '#cfd3d7' },
+ { name: 'enhancement', color: '#a2eeef' },
+ { name: 'good first issue', color: '#7057ff' },
+ { name: 'help wanted', color: '#008672' },
+ { name: 'invalid', color: '#e4e669' },
+ { name: 'question', color: '#d876e3' },
+ { name: 'wontfix', color: '#ffffff' }
+ ]
+ )
end
- def verify_labels_import
- # TODO: Waiting on https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/19228
- # to build upon it.
+ def verify_issues_import
+ issues = imported_project.issues
+
+ expect(issues.length).to eq(1)
+ expect(issues.first).to include(
+ title: 'This is a sample issue',
+ description: "*Created by: gitlab-qa-github*\n\nThis is a sample first comment",
+ labels: ['custom new label', 'good first issue', 'help wanted'],
+ user_notes_count: 1
+ )
end
def verify_milestones_import
- # TODO: Waiting on https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/18727
- # to build upon it.
+ milestones = imported_project.milestones
+
+ expect(milestones.length).to eq(1)
+ expect(milestones.first).to include(title: 'v1.0', description: nil, state: 'active')
end
- def verify_wiki_import
- Page::Project::Menu.perform(&:click_wiki)
+ def verify_wikis_import
+ wikis = imported_project.wikis
- Page::Project::Wiki::Show.perform do |wiki|
- expect(wiki).to have_content('Welcome to the test-project wiki!')
- end
+ expect(wikis.length).to eq(1)
+ expect(wikis.first).to include(title: 'Home', format: 'markdown')
+ end
+
+ def verify_merge_requests_import
+ merge_requests = imported_project.merge_requests
+
+ expect(merge_requests.length).to eq(1)
+ expect(merge_requests.first).to include(
+ title: 'Improve readme',
+ state: 'opened',
+ target_branch: 'main',
+ source_branch: 'improve-readme',
+ labels: %w[bug documentation],
+ description: <<~DSC.strip
+ *Created by: gitlab-qa-github*\n\nThis improves the README file a bit.\r\n\r\nTODO:\r\n\r\n \r\n\r\n- [ ] Do foo\r\n- [ ] Make bar\r\n - [ ] Think about baz
+ DSC
+ )
end
end
end