summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2018-01-30 18:18:48 +0100
committerRémy Coutable <remy@rymai.me>2018-01-31 11:09:21 +0100
commit2f4d088fb4f3d17622655951dcc16255646d0f7f (patch)
tree8947453a2dd3bb56ac98d6036c2a1315fa0e0ecf /qa
parent120c79020ddd3097ae64149c75864353276aaa5f (diff)
downloadgitlab-ce-2f4d088fb4f3d17622655951dcc16255646d0f7f.tar.gz
Introduce a new QA::Gitlab::Page::Component::Dropzone class
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'qa')
-rw-r--r--qa/qa.rb7
-rw-r--r--qa/qa/page/base.rb15
-rw-r--r--qa/qa/page/component/dropzone.rb29
-rw-r--r--qa/qa/page/project/issue/show.rb7
4 files changed, 41 insertions, 17 deletions
diff --git a/qa/qa.rb b/qa/qa.rb
index bd24f241747..8630e2a522c 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -150,6 +150,13 @@ module QA
autoload :Main, 'qa/page/mattermost/main'
autoload :Login, 'qa/page/mattermost/login'
end
+
+ ##
+ # Classes describing components that are used by several pages.
+ #
+ module Component
+ autoload :Dropzone, 'qa/page/component/dropzone'
+ end
end
##
diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb
index 7a2d9731205..5c3af4b9115 100644
--- a/qa/qa/page/base.rb
+++ b/qa/qa/page/base.rb
@@ -97,21 +97,6 @@ module QA
views.map(&:errors).flatten
end
- # Not tested and not expected to work with multiple dropzones
- # instantiated on one page because there is no distinguishing
- # attribute per dropzone file field.
- def attach_file_to_dropzone(attachment, dropzone_form_container)
- filename = File.basename(attachment)
-
- field_style = { visibility: 'visible', height: '', width: '' }
- attach_file(attachment, class: 'dz-hidden-input', make_visible: field_style)
-
- # Wait for link to be appended to dropzone text
- wait(reload: false) do
- find("#{dropzone_form_container} textarea").value.match(filename)
- end
- end
-
class DSL
attr_reader :views
diff --git a/qa/qa/page/component/dropzone.rb b/qa/qa/page/component/dropzone.rb
new file mode 100644
index 00000000000..5e6fdff20eb
--- /dev/null
+++ b/qa/qa/page/component/dropzone.rb
@@ -0,0 +1,29 @@
+module QA
+ module Page
+ module Component
+ class Dropzone
+ attr_reader :page, :container
+
+ def initialize(page, container)
+ @page = page
+ @container = container
+ end
+
+ # Not tested and not expected to work with multiple dropzones
+ # instantiated on one page because there is no distinguishing
+ # attribute per dropzone file field.
+ def attach_file(attachment)
+ filename = File.basename(attachment)
+
+ field_style = { visibility: 'visible', height: '', width: '' }
+ page.attach_file(attachment, class: 'dz-hidden-input', make_visible: field_style)
+
+ # Wait for link to be appended to dropzone text
+ page.wait(reload: false) do
+ page.find("#{container} textarea").value.match(filename)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/project/issue/show.rb b/qa/qa/page/project/issue/show.rb
index 10644c0fecc..364a2c61665 100644
--- a/qa/qa/page/project/issue/show.rb
+++ b/qa/qa/page/project/issue/show.rb
@@ -23,10 +23,13 @@ module QA
# Adds a comment to an issue
# attachment option should be an absolute path
- def comment(text, attachment:)
+ def comment(text, attachment: nil)
fill_in(with: text, name: 'note[note]')
- attach_file_to_dropzone(attachment, '.new-note') if attachment
+ unless attachment.nil?
+ QA::Page::Component::Dropzone.new(page, '.new-note')
+ .attach_file(attachment)
+ end
click_on 'Comment'
end