Commit 165b341a authored by Heinrich Lee Yu's avatar Heinrich Lee Yu

Fix flaky specs related to select2 helper

Ensures that select2 is loaded before opening, closing,
or selecting an option with our helper
parent 1bad6b07
...@@ -27,6 +27,8 @@ describe 'Edit group settings', :js do ...@@ -27,6 +27,8 @@ describe 'Edit group settings', :js do
it 'adds new LDAP synchronization', :js do it 'adds new LDAP synchronization', :js do
page.within('form#new_ldap_group_link') do page.within('form#new_ldap_group_link') do
choose('sync_method_group')
select2 'my-group-cn', from: '#ldap_group_link_cn' select2 'my-group-cn', from: '#ldap_group_link_cn'
select 'Developer', from: 'ldap_group_link_group_access' select 'Developer', from: 'ldap_group_link_group_access'
...@@ -45,7 +47,6 @@ describe 'Edit group settings', :js do ...@@ -45,7 +47,6 @@ describe 'Edit group settings', :js do
end end
it 'shows the LDAP group section' do it 'shows the LDAP group section' do
choose('sync_method_filter') # choose filter first, as group's the default
choose('sync_method_group') choose('sync_method_group')
expect(page).to have_content("Synchronize #{group.name}'s members with this LDAP group") expect(page).to have_content("Synchronize #{group.name}'s members with this LDAP group")
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
require 'spec_helper' require 'spec_helper'
describe 'Import/Export - project import integration test', :js do describe 'Import/Export - project import integration test', :js do
include Select2Helper
include GitHelpers include GitHelpers
let(:user) { create(:user) } let(:user) { create(:user) }
...@@ -31,7 +30,6 @@ describe 'Import/Export - project import integration test', :js do ...@@ -31,7 +30,6 @@ describe 'Import/Export - project import integration test', :js do
it 'user imports an exported project successfully' do it 'user imports an exported project successfully' do
visit new_project_path visit new_project_path
select2(namespace.id, from: '#project_namespace_id')
fill_in :project_name, with: project_name, visible: true fill_in :project_name, with: project_name, visible: true
click_import_project_tab click_import_project_tab
click_link 'GitLab export' click_link 'GitLab export'
...@@ -78,7 +76,6 @@ describe 'Import/Export - project import integration test', :js do ...@@ -78,7 +76,6 @@ describe 'Import/Export - project import integration test', :js do
visit new_project_path visit new_project_path
select2(user.namespace.id, from: '#project_namespace_id')
fill_in :project_name, with: project.name, visible: true fill_in :project_name, with: project.name, visible: true
click_import_project_tab click_import_project_tab
click_link 'GitLab export' click_link 'GitLab export'
......
...@@ -24,7 +24,7 @@ module Select2Helper ...@@ -24,7 +24,7 @@ module Select2Helper
selector = options.fetch(:from) selector = options.fetch(:from)
first(selector, visible: false) ensure_select2_loaded(selector)
if options[:multiple] if options[:multiple]
execute_script("$('#{selector}').select2('val', ['#{value}']).trigger('change');") execute_script("$('#{selector}').select2('val', ['#{value}']).trigger('change');")
...@@ -34,14 +34,24 @@ module Select2Helper ...@@ -34,14 +34,24 @@ module Select2Helper
end end
def open_select2(selector) def open_select2(selector)
ensure_select2_loaded(selector)
execute_script("$('#{selector}').select2('open');") execute_script("$('#{selector}').select2('open');")
end end
def close_select2(selector) def close_select2(selector)
ensure_select2_loaded(selector)
execute_script("$('#{selector}').select2('close');") execute_script("$('#{selector}').select2('close');")
end end
def scroll_select2_to_bottom(selector) def scroll_select2_to_bottom(selector)
evaluate_script "$('#{selector}').scrollTop($('#{selector}')[0].scrollHeight); $('#{selector}');" evaluate_script "$('#{selector}').scrollTop($('#{selector}')[0].scrollHeight); $('#{selector}');"
end end
private
def ensure_select2_loaded(selector)
first(selector, visible: :all).sibling('.select2-container')
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment