Introduce a new QA::Gitlab::Page::Component::Dropzone class
Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
parent
120c79020d
commit
2f4d088fb4
7
qa/qa.rb
7
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
|
||||
|
||||
##
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue