Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-02-24 06:10:59 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-02-24 06:10:59 +0300
commita0d18c1c5c8c6257ff377416c0d86390f2601301 (patch)
tree1c666cd43d11bea36eb4803cd6b5fe2cb68ef117 /qa
parent97d9d9ee16fd665d9ab0768ee41c4eaa9d2a5e2f (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/qa.rb4
-rw-r--r--qa/qa/page/project/registry/show.rb40
-rw-r--r--qa/qa/page/project/sub_menus/packages.rb19
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/container_registry_spec.rb66
-rw-r--r--qa/spec/support/matchers/have_matcher.rb1
5 files changed, 130 insertions, 0 deletions
diff --git a/qa/qa.rb b/qa/qa.rb
index a1ea71c81cc..6365a82d769 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -293,6 +293,10 @@ module QA
autoload :Show, 'qa/page/project/packages/show'
end
+ module Registry
+ autoload :Show, 'qa/page/project/registry/show'
+ end
+
module Settings
autoload :Advanced, 'qa/page/project/settings/advanced'
autoload :Main, 'qa/page/project/settings/main'
diff --git a/qa/qa/page/project/registry/show.rb b/qa/qa/page/project/registry/show.rb
new file mode 100644
index 00000000000..746acfdca78
--- /dev/null
+++ b/qa/qa/page/project/registry/show.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Project
+ module Registry
+ class Show < QA::Page::Base
+ view 'app/assets/javascripts/registry/explorer/components/list_page/image_list_row.vue' do
+ element :registry_image_content
+ end
+
+ view 'app/assets/javascripts/registry/explorer/components/details_page/tags_list_row.vue' do
+ element :tag_delete_button
+ end
+
+ def has_image_repository?(name)
+ find('a[data-testid="details-link"]', text: name)
+ end
+
+ def click_on_image(name)
+ find('a[data-testid="details-link"]', text: name).click
+ end
+
+ def has_tag?(tag_name)
+ has_button?(tag_name)
+ end
+
+ def has_no_tag?(tag_name)
+ has_no_button?(tag_name)
+ end
+
+ def click_delete
+ find('[data-testid="single-delete-button"]').click
+ find_button('Confirm').click
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/project/sub_menus/packages.rb b/qa/qa/page/project/sub_menus/packages.rb
index 9ea045a99f5..46eae01e10d 100644
--- a/qa/qa/page/project/sub_menus/packages.rb
+++ b/qa/qa/page/project/sub_menus/packages.rb
@@ -22,6 +22,25 @@ module QA
click_element :packages_link
end
end
+
+ def go_to_container_registry
+ hover_registry do
+ within_submenu do
+ click_link('Container Registry')
+ end
+ end
+ end
+
+ private
+
+ def hover_registry
+ within_sidebar do
+ scroll_to_element(:packages_link)
+ find_element(:packages_link).hover
+
+ yield
+ end
+ end
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/5_package/container_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/container_registry_spec.rb
new file mode 100644
index 00000000000..6cfd1f4c38e
--- /dev/null
+++ b/qa/qa/specs/features/browser_ui/5_package/container_registry_spec.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: true
+
+module QA
+ RSpec.describe 'Package', :orchestrated do
+ describe 'Container Registry', only: { subdomain: :staging } do
+ let(:project) do
+ Resource::Project.fabricate_via_api! do |project|
+ project.name = 'project-with-registry'
+ project.template_name = 'express'
+ end
+ end
+
+ let!(:gitlab_ci_yaml) do
+ <<~YAML
+ build:
+ image: docker:19.03.12
+ stage: build
+ services:
+ - docker:19.03.12-dind
+ variables:
+ IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
+ script:
+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+ - docker build -t $IMAGE_TAG .
+ - docker push $IMAGE_TAG
+ YAML
+ end
+
+ it 'pushes project image to the container registry and deletes tag', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1699' do
+ Flow::Login.sign_in
+ project.visit!
+
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files([{
+ file_path: '.gitlab-ci.yml',
+ content: gitlab_ci_yaml
+ }])
+ end
+
+ Flow::Pipeline.visit_latest_pipeline
+
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('build')
+ end
+
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ end
+
+ Page::Project::Menu.perform(&:go_to_container_registry)
+
+ Page::Project::Registry::Show.perform do |registry|
+ expect(registry).to have_image_repository(project.path_with_namespace)
+
+ registry.click_on_image(project.path_with_namespace)
+ expect(registry).to have_tag('master')
+
+ registry.click_delete
+ expect(registry).not_to have_tag('master')
+ end
+ end
+ end
+ end
+end
diff --git a/qa/spec/support/matchers/have_matcher.rb b/qa/spec/support/matchers/have_matcher.rb
index 43ae27f8796..81288b97e6f 100644
--- a/qa/spec/support/matchers/have_matcher.rb
+++ b/qa/spec/support/matchers/have_matcher.rb
@@ -15,6 +15,7 @@ module Matchers
pipeline
related_issue_item
snippet_description
+ tag
].each do |predicate|
RSpec::Matchers.define "have_#{predicate}" do |*args, **kwargs|
match do |page_object|