diff options
author | Rémy Coutable <remy@rymai.me> | 2018-01-30 18:18:48 +0100 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2018-01-31 11:09:21 +0100 |
commit | 2f4d088fb4f3d17622655951dcc16255646d0f7f (patch) | |
tree | 8947453a2dd3bb56ac98d6036c2a1315fa0e0ecf /qa | |
parent | 120c79020ddd3097ae64149c75864353276aaa5f (diff) | |
download | gitlab-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.rb | 7 | ||||
-rw-r--r-- | qa/qa/page/base.rb | 15 | ||||
-rw-r--r-- | qa/qa/page/component/dropzone.rb | 29 | ||||
-rw-r--r-- | qa/qa/page/project/issue/show.rb | 7 |
4 files changed, 41 insertions, 17 deletions
@@ -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 |