126 lines
3.5 KiB
Ruby
Executable File
126 lines
3.5 KiB
Ruby
Executable File
|
|
# methods here all assume you are in /client
|
|
|
|
NOTIFICATION_PANEL = '[layout-id="panelNotifications"]'
|
|
|
|
# enters text into the search sidebar
|
|
def site_search(text, options = {})
|
|
within('#searchForm') do
|
|
fill_in "search-input", with: text
|
|
end
|
|
|
|
if options[:expand]
|
|
page.driver.execute_script("jQuery('#searchForm').submit()")
|
|
find('h1', text:'search results')
|
|
end
|
|
end
|
|
|
|
# goes to the musician tile, and tries to find a musician
|
|
def find_musician(user)
|
|
visit "/client#/musicians"
|
|
|
|
timeout = 30
|
|
|
|
start = Time.now
|
|
# scroll by 100px until we find a user with the right id
|
|
while page.all('#end-of-musician-list').length == 0
|
|
page.execute_script('jQuery("#musician-filter-results").scrollTo("+=100px", 0, {axis:"y"})')
|
|
found = page.all(".result-list-button-wrapper[data-musician-id='#{user.id}']")
|
|
if found.length == 1
|
|
return found[0]
|
|
elsif found.length > 1
|
|
raise "ambiguous results in musician list"
|
|
end
|
|
|
|
if Time.now - start > timeout
|
|
raise "unable to find musician #{user} within #{timeout} seconds"
|
|
end
|
|
end
|
|
|
|
raise "unable to find musician #{user}"
|
|
end
|
|
|
|
def initiate_text_dialog(user)
|
|
|
|
# verify that the chat window is grayed out
|
|
site_search(user.first_name, expand: true)
|
|
|
|
find("#search-results a[user-id=\"#{user.id}\"][hoveraction=\"musician\"]", text: user.name).hover_intent
|
|
find('#musician-hover #btnMessage').trigger(:click)
|
|
find('h1', text: 'conversation with ' + user.name)
|
|
end
|
|
|
|
# sends a text message in the chat interface.
|
|
def send_text_message(msg, options={})
|
|
find('#text-message-dialog') # assert that the dialog is showing already
|
|
|
|
within('#text-message-dialog form.text-message-box') do
|
|
fill_in 'new-text-message', with: msg
|
|
end
|
|
find('#text-message-dialog .btn-send-text-message').trigger(:click)
|
|
find('#text-message-dialog .previous-message-text', text: msg) unless options[:should_fail]
|
|
|
|
# close the dialog if caller specified close_on_send
|
|
if options[:close_on_send]
|
|
find('#text-message-dialog .btn-close-dialog', text: 'CLOSE').trigger(:click) if options[:close_on_send]
|
|
page.should have_no_selector('#text-message-dialog')
|
|
end
|
|
|
|
if options[:should_fail]
|
|
find('#notification').should have_text(options[:should_fail])
|
|
end
|
|
end
|
|
|
|
# sends a chat message during session
|
|
def send_chat_message(msg)
|
|
find("[layout-id=\"panelChat\"] .chat-sender").should be_visible
|
|
|
|
within("[layout-id=\"panelChat\"] .chat-sender form.chat-message-form") do
|
|
fill_in 'new-chat-message', with: msg
|
|
end
|
|
find("[layout-id=\"panelChat\"] .chat-sender .btn-send-chat-message").trigger(:click)
|
|
end
|
|
|
|
def open_notifications
|
|
find("#{NOTIFICATION_PANEL} .panel-header").trigger(:click)
|
|
end
|
|
|
|
|
|
def hover_intent(element)
|
|
element.hover
|
|
element.hover
|
|
end
|
|
|
|
# forces document.hasFocus() to return false
|
|
def document_blur
|
|
page.evaluate_script(%{(function() {
|
|
// save original
|
|
if(!window.documentFocus) { window.documentFocus = window.document.hasFocus; }
|
|
|
|
window.document.hasFocus = function() {
|
|
console.log("document.hasFocus() returns false");
|
|
return false;
|
|
}
|
|
})()})
|
|
end
|
|
|
|
def document_focus
|
|
page.evaluate_script(%{(function() {
|
|
// save original
|
|
if(!window.documentFocus) { window.documentFocus = window.document.hasFocus; }
|
|
|
|
window.document.hasFocus = function() {
|
|
console.log("document.hasFocus() returns true");
|
|
return true;
|
|
}
|
|
})()})
|
|
end
|
|
|
|
# simulates focus event on window
|
|
def window_focus
|
|
page.evaluate_script(%{window.jQuery(window).trigger('focus');})
|
|
end
|
|
|
|
def close_websocket
|
|
page.evaluate_script("window.JK.JamServer.close(true)")
|
|
end |