summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorMark Lapierre <mlapierre@gitlab.com>2019-01-29 15:56:34 -0500
committerMark Lapierre <mlapierre@gitlab.com>2019-01-29 16:18:04 -0500
commit38fcb11f97d02af83cdc5d245e78a3f0d1b146f5 (patch)
treedd60f30771b8dbc2c846468dd5604f7d701cd634 /qa
parentfda30abdb2a88f360b20f99f3cefe0850d4e9f18 (diff)
downloadgitlab-ce-38fcb11f97d02af83cdc5d245e78a3f0d1b146f5.tar.gz
Fix flaky wiki create test
There's an svg on the page that allows you to create a wiki page. The svg takes a fraction of a second to load after which the "Create your first page" button shifts up a bit. This can cause webdriver to miss the hit so we wait for the svg to load before clicking the button. Also update the elements used in the test to conform to our best practice. And replace `act` with `perform` Finally, remove the `before` block and `login` method, making the code slightly simpler.
Diffstat (limited to 'qa')
-rw-r--r--qa/qa.rb1
-rw-r--r--qa/qa/page/component/lazy_loader.rb15
-rw-r--r--qa/qa/page/label/index.rb8
-rw-r--r--qa/qa/page/project/wiki/new.rb40
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb17
5 files changed, 53 insertions, 28 deletions
diff --git a/qa/qa.rb b/qa/qa.rb
index 7aaf56bd51f..355034daec9 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -290,6 +290,7 @@ module QA
#
module Component
autoload :ClonePanel, 'qa/page/component/clone_panel'
+ autoload :LazyLoader, 'qa/page/component/lazy_loader'
autoload :LegacyClonePanel, 'qa/page/component/legacy_clone_panel'
autoload :Dropzone, 'qa/page/component/dropzone'
autoload :GroupsFilter, 'qa/page/component/groups_filter'
diff --git a/qa/qa/page/component/lazy_loader.rb b/qa/qa/page/component/lazy_loader.rb
new file mode 100644
index 00000000000..6f74a4691ba
--- /dev/null
+++ b/qa/qa/page/component/lazy_loader.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module Component
+ module LazyLoader
+ def self.included(base)
+ base.view 'app/assets/javascripts/lazy_loader.js' do
+ element :js_lazy_loaded
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/label/index.rb b/qa/qa/page/label/index.rb
index 97ce8f0eba5..f0d323ca3b4 100644
--- a/qa/qa/page/label/index.rb
+++ b/qa/qa/page/label/index.rb
@@ -1,7 +1,11 @@
+# frozen_string_literal: true
+
module QA
module Page
module Label
class Index < Page::Base
+ include Component::LazyLoader
+
view 'app/views/shared/labels/_nav.html.haml' do
element :label_create_new
end
@@ -10,10 +14,6 @@ module QA
element :label_svg
end
- view 'app/assets/javascripts/lazy_loader.js' do
- element :js_lazy_loaded
- end
-
def go_to_new_label
# The 'labels.svg' takes a fraction of a second to load after which the "New label" button shifts up a bit
# This can cause webdriver to miss the hit so we wait for the svg to load (implicitly with has_element?)
diff --git a/qa/qa/page/project/wiki/new.rb b/qa/qa/page/project/wiki/new.rb
index 2498af8600c..b90e03be36a 100644
--- a/qa/qa/page/project/wiki/new.rb
+++ b/qa/qa/page/project/wiki/new.rb
@@ -1,42 +1,58 @@
+# frozen_string_literal: true
+
module QA
module Page
module Project
module Wiki
class New < Page::Base
+ include Component::LazyLoader
+
view 'app/views/projects/wikis/_form.html.haml' do
- element :wiki_title_textbox, 'text_field :title' # rubocop:disable QA/ElementWithPattern
- element :wiki_content_textarea, "render 'projects/zen', f: f, attr: :content" # rubocop:disable QA/ElementWithPattern
- element :wiki_message_textbox, 'text_field :message' # rubocop:disable QA/ElementWithPattern
- element :save_changes_button, 'submit _("Save changes")' # rubocop:disable QA/ElementWithPattern
- element :create_page_button, 'submit s_("Wiki|Create page")' # rubocop:disable QA/ElementWithPattern
+ element :wiki_title_textbox
+ element :wiki_content_textarea
+ element :wiki_message_textbox
+ element :save_changes_button
+ element :create_page_button
end
view 'app/views/shared/empty_states/_wikis.html.haml' do
- element :create_link, 'Create your first page' # rubocop:disable QA/ElementWithPattern
+ element :create_first_page_link
+ end
+
+ view 'app/views/shared/empty_states/_wikis_layout.html.haml' do
+ element :svg_content
end
def go_to_create_first_page
- click_link 'Create your first page'
+ # The svg takes a fraction of a second to load after which the
+ # "Create your first page" button shifts up a bit. This can cause
+ # webdriver to miss the hit so we wait for the svg to load before
+ # clicking the button.
+ within_element(:svg_content) do
+ has_element? :js_lazy_loaded
+ end
+
+ click_element :create_first_page_link
end
def set_title(title)
- fill_in 'wiki_title', with: title
+ fill_element :wiki_title_textbox, title
end
def set_content(content)
- fill_in 'wiki_content', with: content
+ fill_element :wiki_content_textarea, content
end
def set_message(message)
- fill_in 'wiki_message', with: message
+ fill_element :wiki_message_textbox, message
end
def save_changes
- click_on 'Save changes'
+ click_element :save_changes_button
end
def create_new_page
- click_on 'Create page'
+ click_element :create_page_button
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb b/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb
index a7d0998d42c..29589ec870a 100644
--- a/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb
@@ -3,22 +3,15 @@
module QA
context 'Create' do
describe 'Wiki management' do
- def login
- Runtime::Browser.visit(:gitlab, Page::Main::Login)
- Page::Main::Login.act { sign_in_using_credentials }
- end
-
def validate_content(content)
expect(page).to have_content('Wiki was successfully updated')
expect(page).to have_content(/#{content}/)
end
- before do
- login
- end
+ it 'user creates, edits, clones, and pushes to the wiki' do
+ Runtime::Browser.visit(:gitlab, Page::Main::Login)
+ Page::Main::Login.perform(&:sign_in_using_credentials)
- # Failure reported: https://gitlab.com/gitlab-org/quality/nightly/issues/24
- it 'user creates, edits, clones, and pushes to the wiki', :quarantine do
wiki = Resource::Wiki.fabricate! do |resource|
resource.title = 'Home'
resource.content = '# My First Wiki Content'
@@ -27,7 +20,7 @@ module QA
validate_content('My First Wiki Content')
- Page::Project::Wiki::Edit.act { go_to_edit_page }
+ Page::Project::Wiki::Edit.perform(&:go_to_edit_page)
Page::Project::Wiki::New.perform do |page|
page.set_content("My Second Wiki Content")
page.save_changes
@@ -41,7 +34,7 @@ module QA
push.file_content = '# My Third Wiki Content'
push.commit_message = 'Update Home.md'
end
- Page::Project::Menu.act { click_wiki }
+ Page::Project::Menu.perform(&:click_wiki)
expect(page).to have_content('My Third Wiki Content')
end