From 4b1fb8b1ed70b04d9ec4bd0c17a97b1b6eebe106 Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Fri, 11 Jun 2021 17:25:18 +0530 Subject: [PATCH 01/10] wip - find sessions latency badge --- .../features/find_sessions_latency_badge.rb | 67 +++++++++++++++++++ web/spec/support/utilities.rb | 7 +- 2 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 web/spec/features/find_sessions_latency_badge.rb diff --git a/web/spec/features/find_sessions_latency_badge.rb b/web/spec/features/find_sessions_latency_badge.rb new file mode 100644 index 000000000..d76097da6 --- /dev/null +++ b/web/spec/features/find_sessions_latency_badge.rb @@ -0,0 +1,67 @@ +require 'spec_helper' + +describe "Find session latency badge", js: true, type: :feature, capybara_feature: true do + let(:creator_user){ FactoryGirl.create(:user) } + let(:joiner_user){ FactoryGirl.create(:user) } + let(:finder_user){ FactoryGirl.create(:user) } + let(:latency_data_uri) { /\S+\/user_latencies/ } + + + def create_and_join_session(creator_user, joiner_user) + in_client(creator_user) do + fast_signin(creator_user, "/client#/createSession") + wait_until_curtain_gone + find("h1", text: "session") + find(".quick-start-open").click + end + + in_client(joiner_user) do + fast_signin(joiner_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session", count: 1) + find("#sessions-active .found-session .join-link").click + find("#session-terms-conditions") + within("#session-terms-conditions") do + find("#btn-accept-terms").click + end + find("h1", text: "session") + end + end + + before(:all) do + Capybara.default_max_wait_time = 10 + end + + describe "public session" do + + before(:each) do + emulate_client + ActiveMusicSession.delete_all + create_and_join_session(creator_user, joiner_user) + end + + + it "finds session" do + in_client(finder_user) do + response_body = mock_latency_response([{ user: user2, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, + + stub_request(:post, latency_data_uri) + .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) + .to_return( body: response_body, status: 200) + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) + + find("#sessions-active a[data-user-id=\"#{creator_user.id}\"][data-hoveraction=\"musician\"]", text: creator_user.name).hover_intent + find('h3', text: creator_user.name) + find("#musician-latency-badge .latency", text: 'GOOD') + end + end + + end +end \ No newline at end of file diff --git a/web/spec/support/utilities.rb b/web/spec/support/utilities.rb index 47a2a757a..b48177a59 100644 --- a/web/spec/support/utilities.rb +++ b/web/spec/support/utilities.rb @@ -523,10 +523,9 @@ end def emulate_client #page.driver.headers = { 'User-Agent' => ' JamKazam ' } - #page.driver.header 'User-Agent', 'JamKazam' - #page.driver.options[:headers].merge!({ 'User-Agent' => ' JamKazam ' }) - #Capybara.current_session.driver.header('User-Agent', 'JamKazam') - # page.driver.browser.header('User-Agent', ' JamKazam ') + #Rails.application.config.allow_force_native_client = true + #create_cookie(:act_as_native_client, "true") + allow_any_instance_of(ClientHelper).to receive(:is_native_client?).and_return(true) end def create_join_session(creator, joiners=[], options={}) From 8ab287ed73eb7163a60a34d6a7c0b40114d5a551 Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Sat, 12 Jun 2021 18:37:53 +0530 Subject: [PATCH 02/10] wip find session latency --- .../features/find_sessions_latency_badge.rb | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/web/spec/features/find_sessions_latency_badge.rb b/web/spec/features/find_sessions_latency_badge.rb index d76097da6..380f4c391 100644 --- a/web/spec/features/find_sessions_latency_badge.rb +++ b/web/spec/features/find_sessions_latency_badge.rb @@ -30,6 +30,53 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur end end + def mock_latency_response(collection) + resp = [] + if collection && collection.any? + resp = collection.map do |latency_item| + user = latency_item[:user] + latency = latency_item[:latency] + audio_latency = latency_item[:audio_latency] + audio_latency_unknown = latency_item[:audio_latency_unknown] + ars_internet_latency = latency_item[:ars_internet_latency] + ars_total_latency = latency_item[:ars_total_latency] + p2p_internet_latency = latency_item[:p2p_internet_latency] + p2p_total_latency = latency_item[:p2p_total_latency] + wifi = latency_item[:wifi] + + { + "user_id": user.id, + "first_name": user.first_name, + "last_name": user.last_name, + "audio_latency": audio_latency, + "audio_latency_unknown": audio_latency_unknown, + "ars": { + "internet_latency": ars_internet_latency, + "total_latency": ars_total_latency + }, + "p2p": { + "internet_latency": p2p_internet_latency, + "total_latency": p2p_total_latency + }, + "wifi": wifi + } + end + end + + output = if resp.any? + { + "users": resp, + "my_audio_latency": 4.0, + "my_audio_latency_unknown": false + } + else + { + "users": [] + } + end + output.to_json + end + before(:all) do Capybara.default_max_wait_time = 10 end @@ -45,7 +92,7 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur it "finds session" do in_client(finder_user) do - response_body = mock_latency_response([{ user: user2, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, + response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, stub_request(:post, latency_data_uri) .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) From 65cfa7c0fc304f4b0cf169736fd8d776b01d15ac Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Wed, 16 Jun 2021 13:41:59 +0530 Subject: [PATCH 03/10] wip --- .../FindSessionOpen.js.jsx.coffee | 12 +- .../FindSessionRow.js.jsx.coffee | 38 ++++-- .../react-components/HoverUser.js.jsx.coffee | 3 + .../features/find_sessions_latency_badge.rb | 114 ------------------ .../find_sessions_latency_badge_spec.rb | 96 +++++++++++++++ 5 files changed, 136 insertions(+), 127 deletions(-) delete mode 100644 web/spec/features/find_sessions_latency_badge.rb create mode 100644 web/spec/features/find_sessions_latency_badge_spec.rb diff --git a/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee b/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee index e0f1bd47a..8ffdfd366 100644 --- a/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee @@ -1,6 +1,7 @@ context = window SessionsActions = @SessionsActions +LatencyActions = @LatencyActions @FindSessionOpen = React.createClass({ @@ -11,7 +12,7 @@ SessionsActions = @SessionsActions registeredInfiniteScroll: false getInitialState: () -> - {active: false, sessions: [], searching: false, count: 0, currentPage: 0, end: false} + {active: false, sessions: [], searching: false, count: 0, currentPage: 0, end: false, participant_ids: []} sessionResults: () -> results = [] @@ -188,6 +189,15 @@ SessionsActions = @SessionsActions onSessionsChanged: (sessionsChanged) -> if sessionsChanged.type == @props.mode + + for session in sessionsChanged.sessions + for participant in session.active_music_session.participants + @state.participant_ids.push(participant.user.id) + + # for rsvp in session.approved_rsvps + # @state.participant_ids.push(rsvp.id) + #logger.debug("<<<<<<>>>>>>>>", _.unique(@state.participant_ids)) + LatencyActions.resolve(_.unique(@state.participant_ids)) @setState(sessionsChanged) }) \ No newline at end of file diff --git a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee index 312ffb2ac..13d4c4942 100644 --- a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee @@ -5,13 +5,16 @@ EVENTS = context.JK.EVENTS SessionsActions = context.SessionsActions AppStore = context.AppStore MAX_MINUTES_SHOW_START = 15 +SessionUtils = context.JK.SessionUtils @FindSessionRow = React.createClass({ + mixins: [Reflux.listenTo(@LatencyStore, "onLatencyUpdate")] + ui: null getInitialState: () -> - {rsvpToggle: false, openSlotToggle: false} + { rsvpToggle: false, openSlotToggle: false, userLatencies: [] } createInstrument: (participant) -> @@ -26,12 +29,26 @@ MAX_MINUTES_SHOW_START = 15 instruments + createLatencyBadge: (participant) -> + logger.debug(">>>userLatencies", @state.userLatencies) + latency = @state.userLatencies.find((latency) -> + latency.user_id == participant.id; + ) + # latencyData = SessionUtils.changeLatencyDataStructure(latency) + # data = $.extend(latencyData, SessionUtils.createLatency(latencyData)) + # latency_text = data.latency_text + # latency_style = data.latency_text + + `{latency_text}` + createInSessionUser: (participant) -> - instruments = @createInstrument(participant) + instruments = @createInstrument(participant) - `` + latencyBadge = @createLatencyBadge(participant) + + `` createOpenSlot:(slot, isLast) -> @@ -73,7 +90,6 @@ MAX_MINUTES_SHOW_START = 15 {more_link}  ` - createRsvpUser: (user, session, isLast) -> instruments = [] @@ -99,10 +115,9 @@ MAX_MINUTES_SHOW_START = 15 moreLinkHtml = `{text}` + latencyBadge = @createLatencyBadge(user) - `` - - + `` inSessionUsersHtml: (session) -> inSessionUsers = [] @@ -121,7 +136,6 @@ MAX_MINUTES_SHOW_START = 15 ` return [result, inSessionUsers] - createRsvpUsers:(session) -> firstResults = [] @@ -144,8 +158,6 @@ MAX_MINUTES_SHOW_START = 15 [firstResults, lastResults] - - createOpenSlots: (session) -> firstResults = [] @@ -195,7 +207,6 @@ MAX_MINUTES_SHOW_START = 15
{joinText}
` - rsvpLink: (session) -> pendingRsvpId = null @@ -385,7 +396,6 @@ MAX_MINUTES_SHOW_START = 15 ) return false - inSessionMusicians: (in_session_musicians) -> if @props.mode == 'upcoming' return null @@ -399,6 +409,10 @@ MAX_MINUTES_SHOW_START = 15 createListenLink: () -> null + + onLatencyUpdate: (userLatencies) -> + @setState(userLatencies: userLatencies) + render: () -> session = @props.session diff --git a/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee b/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee index 358e0c3ee..04a858e70 100644 --- a/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee @@ -30,6 +30,9 @@ MAX_MINUTES_SHOW_START = 15
{this.props.instruments}
+ +
GOOD
+ {this.props.more} ` diff --git a/web/spec/features/find_sessions_latency_badge.rb b/web/spec/features/find_sessions_latency_badge.rb deleted file mode 100644 index 380f4c391..000000000 --- a/web/spec/features/find_sessions_latency_badge.rb +++ /dev/null @@ -1,114 +0,0 @@ -require 'spec_helper' - -describe "Find session latency badge", js: true, type: :feature, capybara_feature: true do - let(:creator_user){ FactoryGirl.create(:user) } - let(:joiner_user){ FactoryGirl.create(:user) } - let(:finder_user){ FactoryGirl.create(:user) } - let(:latency_data_uri) { /\S+\/user_latencies/ } - - - def create_and_join_session(creator_user, joiner_user) - in_client(creator_user) do - fast_signin(creator_user, "/client#/createSession") - wait_until_curtain_gone - find("h1", text: "session") - find(".quick-start-open").click - end - - in_client(joiner_user) do - fast_signin(joiner_user, "/client#/findSession") - wait_until_curtain_gone - find("h1", text: "find a session") - find("a", text: "Open Jams").click - expect(page).to have_selector("#sessions-active .found-session", count: 1) - find("#sessions-active .found-session .join-link").click - find("#session-terms-conditions") - within("#session-terms-conditions") do - find("#btn-accept-terms").click - end - find("h1", text: "session") - end - end - - def mock_latency_response(collection) - resp = [] - if collection && collection.any? - resp = collection.map do |latency_item| - user = latency_item[:user] - latency = latency_item[:latency] - audio_latency = latency_item[:audio_latency] - audio_latency_unknown = latency_item[:audio_latency_unknown] - ars_internet_latency = latency_item[:ars_internet_latency] - ars_total_latency = latency_item[:ars_total_latency] - p2p_internet_latency = latency_item[:p2p_internet_latency] - p2p_total_latency = latency_item[:p2p_total_latency] - wifi = latency_item[:wifi] - - { - "user_id": user.id, - "first_name": user.first_name, - "last_name": user.last_name, - "audio_latency": audio_latency, - "audio_latency_unknown": audio_latency_unknown, - "ars": { - "internet_latency": ars_internet_latency, - "total_latency": ars_total_latency - }, - "p2p": { - "internet_latency": p2p_internet_latency, - "total_latency": p2p_total_latency - }, - "wifi": wifi - } - end - end - - output = if resp.any? - { - "users": resp, - "my_audio_latency": 4.0, - "my_audio_latency_unknown": false - } - else - { - "users": [] - } - end - output.to_json - end - - before(:all) do - Capybara.default_max_wait_time = 10 - end - - describe "public session" do - - before(:each) do - emulate_client - ActiveMusicSession.delete_all - create_and_join_session(creator_user, joiner_user) - end - - - it "finds session" do - in_client(finder_user) do - response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, - - stub_request(:post, latency_data_uri) - .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) - .to_return( body: response_body, status: 200) - - fast_signin(finder_user, "/client#/findSession") - wait_until_curtain_gone - find("h1", text: "find a session") - find("a", text: "Open Jams").click - expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) - - find("#sessions-active a[data-user-id=\"#{creator_user.id}\"][data-hoveraction=\"musician\"]", text: creator_user.name).hover_intent - find('h3', text: creator_user.name) - find("#musician-latency-badge .latency", text: 'GOOD') - end - end - - end -end \ No newline at end of file diff --git a/web/spec/features/find_sessions_latency_badge_spec.rb b/web/spec/features/find_sessions_latency_badge_spec.rb new file mode 100644 index 000000000..8b9b9c40f --- /dev/null +++ b/web/spec/features/find_sessions_latency_badge_spec.rb @@ -0,0 +1,96 @@ +require 'spec_helper' +require 'webmock/rspec' + +describe "Find session latency badge", js: true, type: :feature, capybara_feature: true do + let(:creator_user){ FactoryGirl.create(:user) } + let(:joiner_user){ FactoryGirl.create(:user) } + let(:finder_user){ FactoryGirl.create(:user) } + let(:latency_data_uri) { /\S+\/user_latencies/ } + + def create_and_join_session(creator_user, joiner_user) + in_client(creator_user) do + fast_signin(creator_user, "/client#/createSession") + wait_until_curtain_gone + find("h1", text: "session") + find(".quick-start-open").click + end + in_client(joiner_user) do + joiner_response_body = mock_latency_response([{ user: joiner_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) + + stub_request(:post, latency_data_uri) + .with( + :headers => { + 'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} + ) + .to_return( body: joiner_response_body, status: 200) + + fast_signin(joiner_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session", count: 1) + find("#sessions-active .found-session .join-link").click + find("#session-terms-conditions") + within("#session-terms-conditions") do + find("#btn-accept-terms").click + end + find("h1", text: "session") + end + end + + + before(:all) do + Capybara.default_max_wait_time = 10 + end + + describe "In public session" do + + before(:each) do + emulate_client + ActiveMusicSession.delete_all + create_and_join_session(creator_user, joiner_user) + end + + + it "show GOOD" do + in_client(finder_user) do + creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, + + + stub_request(:post, latency_data_uri) + .with( + :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} + ) + .to_return( body: creator_response_body, status: 200) + + + + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) + + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") + #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") + + # selector = "#sessions-active a[data-user-id=\"#{creator_user.id}\"][data-hoveraction=\"musician\"]" + # find(selector, text: creator_user.name).hover_intent + # find('h3', text: creator_user.name) + # find("#musician-latency-badge .latency", text: 'GOOD') + # page.execute_script("$('#{selector}').mouseleave();") + # sleep(1) + + # selector = "#sessions-active a[data-user-id=\"#{joiner_user.id}\"][data-hoveraction=\"musician\"]" + # find(selector, text: joiner_user.name).hover_intent + # find('h3', text: joiner_user.name) + # find("#musician-latency-badge .latency", text: 'GOOD') + # page.execute_script("$('#{selector}').mouseleave();") + # sleep(1) + end + end + + end + +end \ No newline at end of file From 20376500b56dd31adf65fefda935cf88683528d3 Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Fri, 11 Jun 2021 17:25:18 +0530 Subject: [PATCH 04/10] wip - find sessions latency badge --- .../features/find_sessions_latency_badge.rb | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 web/spec/features/find_sessions_latency_badge.rb diff --git a/web/spec/features/find_sessions_latency_badge.rb b/web/spec/features/find_sessions_latency_badge.rb new file mode 100644 index 000000000..d76097da6 --- /dev/null +++ b/web/spec/features/find_sessions_latency_badge.rb @@ -0,0 +1,67 @@ +require 'spec_helper' + +describe "Find session latency badge", js: true, type: :feature, capybara_feature: true do + let(:creator_user){ FactoryGirl.create(:user) } + let(:joiner_user){ FactoryGirl.create(:user) } + let(:finder_user){ FactoryGirl.create(:user) } + let(:latency_data_uri) { /\S+\/user_latencies/ } + + + def create_and_join_session(creator_user, joiner_user) + in_client(creator_user) do + fast_signin(creator_user, "/client#/createSession") + wait_until_curtain_gone + find("h1", text: "session") + find(".quick-start-open").click + end + + in_client(joiner_user) do + fast_signin(joiner_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session", count: 1) + find("#sessions-active .found-session .join-link").click + find("#session-terms-conditions") + within("#session-terms-conditions") do + find("#btn-accept-terms").click + end + find("h1", text: "session") + end + end + + before(:all) do + Capybara.default_max_wait_time = 10 + end + + describe "public session" do + + before(:each) do + emulate_client + ActiveMusicSession.delete_all + create_and_join_session(creator_user, joiner_user) + end + + + it "finds session" do + in_client(finder_user) do + response_body = mock_latency_response([{ user: user2, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, + + stub_request(:post, latency_data_uri) + .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) + .to_return( body: response_body, status: 200) + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) + + find("#sessions-active a[data-user-id=\"#{creator_user.id}\"][data-hoveraction=\"musician\"]", text: creator_user.name).hover_intent + find('h3', text: creator_user.name) + find("#musician-latency-badge .latency", text: 'GOOD') + end + end + + end +end \ No newline at end of file From 85d5044622552ad938498f9febe48dff562b815e Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Sat, 12 Jun 2021 18:37:53 +0530 Subject: [PATCH 05/10] wip find session latency --- .../features/find_sessions_latency_badge.rb | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/web/spec/features/find_sessions_latency_badge.rb b/web/spec/features/find_sessions_latency_badge.rb index d76097da6..380f4c391 100644 --- a/web/spec/features/find_sessions_latency_badge.rb +++ b/web/spec/features/find_sessions_latency_badge.rb @@ -30,6 +30,53 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur end end + def mock_latency_response(collection) + resp = [] + if collection && collection.any? + resp = collection.map do |latency_item| + user = latency_item[:user] + latency = latency_item[:latency] + audio_latency = latency_item[:audio_latency] + audio_latency_unknown = latency_item[:audio_latency_unknown] + ars_internet_latency = latency_item[:ars_internet_latency] + ars_total_latency = latency_item[:ars_total_latency] + p2p_internet_latency = latency_item[:p2p_internet_latency] + p2p_total_latency = latency_item[:p2p_total_latency] + wifi = latency_item[:wifi] + + { + "user_id": user.id, + "first_name": user.first_name, + "last_name": user.last_name, + "audio_latency": audio_latency, + "audio_latency_unknown": audio_latency_unknown, + "ars": { + "internet_latency": ars_internet_latency, + "total_latency": ars_total_latency + }, + "p2p": { + "internet_latency": p2p_internet_latency, + "total_latency": p2p_total_latency + }, + "wifi": wifi + } + end + end + + output = if resp.any? + { + "users": resp, + "my_audio_latency": 4.0, + "my_audio_latency_unknown": false + } + else + { + "users": [] + } + end + output.to_json + end + before(:all) do Capybara.default_max_wait_time = 10 end @@ -45,7 +92,7 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur it "finds session" do in_client(finder_user) do - response_body = mock_latency_response([{ user: user2, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, + response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, stub_request(:post, latency_data_uri) .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) From 98898dd60ef66183513cc747ba21809acd5e1282 Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Wed, 16 Jun 2021 13:41:59 +0530 Subject: [PATCH 06/10] wip --- .../features/find_sessions_latency_badge.rb | 114 ------------------ 1 file changed, 114 deletions(-) delete mode 100644 web/spec/features/find_sessions_latency_badge.rb diff --git a/web/spec/features/find_sessions_latency_badge.rb b/web/spec/features/find_sessions_latency_badge.rb deleted file mode 100644 index 380f4c391..000000000 --- a/web/spec/features/find_sessions_latency_badge.rb +++ /dev/null @@ -1,114 +0,0 @@ -require 'spec_helper' - -describe "Find session latency badge", js: true, type: :feature, capybara_feature: true do - let(:creator_user){ FactoryGirl.create(:user) } - let(:joiner_user){ FactoryGirl.create(:user) } - let(:finder_user){ FactoryGirl.create(:user) } - let(:latency_data_uri) { /\S+\/user_latencies/ } - - - def create_and_join_session(creator_user, joiner_user) - in_client(creator_user) do - fast_signin(creator_user, "/client#/createSession") - wait_until_curtain_gone - find("h1", text: "session") - find(".quick-start-open").click - end - - in_client(joiner_user) do - fast_signin(joiner_user, "/client#/findSession") - wait_until_curtain_gone - find("h1", text: "find a session") - find("a", text: "Open Jams").click - expect(page).to have_selector("#sessions-active .found-session", count: 1) - find("#sessions-active .found-session .join-link").click - find("#session-terms-conditions") - within("#session-terms-conditions") do - find("#btn-accept-terms").click - end - find("h1", text: "session") - end - end - - def mock_latency_response(collection) - resp = [] - if collection && collection.any? - resp = collection.map do |latency_item| - user = latency_item[:user] - latency = latency_item[:latency] - audio_latency = latency_item[:audio_latency] - audio_latency_unknown = latency_item[:audio_latency_unknown] - ars_internet_latency = latency_item[:ars_internet_latency] - ars_total_latency = latency_item[:ars_total_latency] - p2p_internet_latency = latency_item[:p2p_internet_latency] - p2p_total_latency = latency_item[:p2p_total_latency] - wifi = latency_item[:wifi] - - { - "user_id": user.id, - "first_name": user.first_name, - "last_name": user.last_name, - "audio_latency": audio_latency, - "audio_latency_unknown": audio_latency_unknown, - "ars": { - "internet_latency": ars_internet_latency, - "total_latency": ars_total_latency - }, - "p2p": { - "internet_latency": p2p_internet_latency, - "total_latency": p2p_total_latency - }, - "wifi": wifi - } - end - end - - output = if resp.any? - { - "users": resp, - "my_audio_latency": 4.0, - "my_audio_latency_unknown": false - } - else - { - "users": [] - } - end - output.to_json - end - - before(:all) do - Capybara.default_max_wait_time = 10 - end - - describe "public session" do - - before(:each) do - emulate_client - ActiveMusicSession.delete_all - create_and_join_session(creator_user, joiner_user) - end - - - it "finds session" do - in_client(finder_user) do - response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, - - stub_request(:post, latency_data_uri) - .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) - .to_return( body: response_body, status: 200) - - fast_signin(finder_user, "/client#/findSession") - wait_until_curtain_gone - find("h1", text: "find a session") - find("a", text: "Open Jams").click - expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) - - find("#sessions-active a[data-user-id=\"#{creator_user.id}\"][data-hoveraction=\"musician\"]", text: creator_user.name).hover_intent - find('h3', text: creator_user.name) - find("#musician-latency-badge .latency", text: 'GOOD') - end - end - - end -end \ No newline at end of file From 18c735b098d3f56b8be0156f34eb40eeeca465ba Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Fri, 18 Jun 2021 20:27:21 +0530 Subject: [PATCH 07/10] WIP latency badge in find sessions --- .../FindSessionRow.js.jsx.coffee | 36 +++++---- .../react-components/HoverUser.js.jsx.coffee | 4 +- .../LatencyBadge.js.jsx.coffee | 78 +++++++++++++++++++ .../find_sessions_latency_badge_spec.rb | 29 ++++++- 4 files changed, 127 insertions(+), 20 deletions(-) create mode 100644 web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee diff --git a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee index 13d4c4942..53bc1cc48 100644 --- a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee @@ -14,7 +14,7 @@ SessionUtils = context.JK.SessionUtils ui: null getInitialState: () -> - { rsvpToggle: false, openSlotToggle: false, userLatencies: [] } + { rsvpToggle: false, openSlotToggle: false, userLatencies: [], userLatenciesFailed: [] } createInstrument: (participant) -> @@ -29,26 +29,29 @@ SessionUtils = context.JK.SessionUtils instruments - createLatencyBadge: (participant) -> + createLatencyBadge: (userId) -> + logger.debug(">>>PARTICIPANT", userId) logger.debug(">>>userLatencies", @state.userLatencies) - latency = @state.userLatencies.find((latency) -> - latency.user_id == participant.id; + logger.debug(">>>userLatenciesFailed", @state.userLatenciesFailed) + latency = @state.userLatencies.find((userLatency) -> + userLatency.user_id == userId + ) + failed = @state.userLatenciesFailed.find((failedId) -> + failedId == userId ) - # latencyData = SessionUtils.changeLatencyDataStructure(latency) - # data = $.extend(latencyData, SessionUtils.createLatency(latencyData)) - # latency_text = data.latency_text - # latency_style = data.latency_text - `{latency_text}` + logger.debug(">>>latencies=====>>>>", latency) + logger.debug(">>>Failed=======>>>>>", failed) + `` createInSessionUser: (participant) -> instruments = @createInstrument(participant) - latencyBadge = @createLatencyBadge(participant) + latencyBadge = @createLatencyBadge(participant.user.id) - `` + `` createOpenSlot:(slot, isLast) -> @@ -115,9 +118,9 @@ SessionUtils = context.JK.SessionUtils moreLinkHtml = `{text}` - latencyBadge = @createLatencyBadge(user) + latencyBadge = @createLatencyBadge(user.id) - `` + `` inSessionUsersHtml: (session) -> inSessionUsers = [] @@ -410,8 +413,11 @@ SessionUtils = context.JK.SessionUtils createListenLink: () -> null - onLatencyUpdate: (userLatencies) -> - @setState(userLatencies: userLatencies) + onLatencyUpdate: (latencyResp) -> + if latencyResp.users + @setState(userLatencies: latencyResp.users) + else if latencyResp.user_ids + @setState(userLatenciesFailed: latencyResp.user_ids) render: () -> diff --git a/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee b/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee index 04a858e70..8238a19d7 100644 --- a/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee @@ -11,7 +11,7 @@ MAX_MINUTES_SHOW_START = 15 render: () -> user = this.props.user - + latencyBadge = this.props.latencyBadge userId = user.id name = user.name avatar_url = context.JK.resolveAvatarUrl(user.photo_url) @@ -31,7 +31,7 @@ MAX_MINUTES_SHOW_START = 15
{this.props.instruments}
-
GOOD
+
{latencyBadge}
{this.props.more} ` diff --git a/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee new file mode 100644 index 000000000..337eb4007 --- /dev/null +++ b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee @@ -0,0 +1,78 @@ +LATENCY = { + ME : {description: "ME", style: "latency-me", min: -1, max: -1}, + GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, + MEDIUM : {description: "FAIR", style: "latency-fair", min: 40.0, max: 70.0}, + POOR : {description: "POOR", style: "latency-poor", min: 70.0, max: 100}, + UNACCEPTABLE: {description: "UNACCEPTABLE", style: "latency-unacceptable", min: 100, max: 10000000}, + UNKNOWN: {description: "UNKNOWN", style: "latency-unknown", min: -2, max: -2}, + FAILED: {description: "FAILED", style: "latency-failed", min: -3, max: -3} + } + +@LatencyBadge = React.createClass({ + + render: () -> + latencyDescription = @props.failed + + # if @props.latency + # latency = @props.latency + # full_score = latency.ars.total_latency + # internet_score = parseInt(latency.internet_score); + # audio_latency = parseInt(latency.audio_latency); + + # latencyDescription = "XXXX" + # latencyStyle = "" + # iconName = "" + # description = "" + # latencyDetails = "" + + # # if !full_score || full_score <= LATENCY.UNKNOWN.max + # # latencyDescription = LATENCY.UNKNOWN.description + # # latencyStyle = LATENCY.UNKNOWN.style + # # iconName = "purple" + # # description = "missing" + # # latencyDetails = "" + # # else if full_score <= LATENCY.GOOD.max + # # latencyDescription = LATENCY.GOOD.description + # # latencyStyle = LATENCY.GOOD.style; + # # iconName = "green" + # # description = "good" + # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + # # else if full_score <= LATENCY.MEDIUM.max + # # latencyDescription = LATENCY.MEDIUM.description + # # latencyStyle = LATENCY.MEDIUM.style + # # iconName = "yellow" + # # description = "fair" + # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + # # else if full_score <= LATENCY.POOR.max + # # latencyDescription = LATENCY.POOR.description + # # latencyStyle = LATENCY.POOR.style + # # iconName = "red" + # # description = "poor" + # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + # # else if full_score > LATENCY.UNACCEPTABLE.min + # # latencyDescription = LATENCY.UNACCEPTABLE.description + # # latencyStyle = LATENCY.UNACCEPTABLE.style + # # iconName = "blue" + # # description = "unacceptable" + # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + + # else if @props.failed + # latencyDescription = LATENCY.FAILED.description + # latencyStyle = LATENCY.FAILED.style + # iconName = "gray" + # description = "failed" + # latencyDetails = "" + # else + # latencyDescription = @props + + # { + # latency_style: latencyStyle, + # latency_text: latencyDescription, + # icon_name: iconName, + # description: description, + # latency_details: latencyDetails + # } + + `{latencyDescription}` + +}) \ No newline at end of file diff --git a/web/spec/features/find_sessions_latency_badge_spec.rb b/web/spec/features/find_sessions_latency_badge_spec.rb index 8b9b9c40f..ae26455a9 100644 --- a/web/spec/features/find_sessions_latency_badge_spec.rb +++ b/web/spec/features/find_sessions_latency_badge_spec.rb @@ -63,8 +63,6 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur ) .to_return( body: creator_response_body, status: 200) - - fast_signin(finder_user, "/client#/findSession") wait_until_curtain_gone @@ -72,9 +70,12 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur find("a", text: "Open Jams").click expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) - expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") + #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") + + save_screenshot("find_session_latency.png") + # selector = "#sessions-active a[data-user-id=\"#{creator_user.id}\"][data-hoveraction=\"musician\"]" # find(selector, text: creator_user.name).hover_intent # find('h3', text: creator_user.name) @@ -91,6 +92,28 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur end end + xit "show FAIR" do + in_client(finder_user) do + creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 41.0, ars_internet_latency: 21.0, audio_latency: 20.0 }]) + + stub_request(:post, latency_data_uri) + .with( + :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} + ) + .to_return( body: creator_response_body, status: 200) + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) + + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "FAIR") + #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") + + end + end + end end \ No newline at end of file From 6483c40f82c76c84b3d85d549cad8a2422342afb Mon Sep 17 00:00:00 2001 From: Nuwan Date: Sat, 19 Jun 2021 17:18:59 +0530 Subject: [PATCH 08/10] latency badge showing in find sessions screen wip --- .../FindSessionRow.js.jsx.coffee | 29 +++-- .../LatencyBadge.js.jsx.coffee | 110 +++++++++--------- .../find_sessions_latency_badge_spec.rb | 7 +- 3 files changed, 74 insertions(+), 72 deletions(-) diff --git a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee index 53bc1cc48..138d12e3f 100644 --- a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee @@ -30,18 +30,24 @@ SessionUtils = context.JK.SessionUtils instruments createLatencyBadge: (userId) -> - logger.debug(">>>PARTICIPANT", userId) - logger.debug(">>>userLatencies", @state.userLatencies) - logger.debug(">>>userLatenciesFailed", @state.userLatenciesFailed) - latency = @state.userLatencies.find((userLatency) -> - userLatency.user_id == userId - ) - failed = @state.userLatenciesFailed.find((failedId) -> - failedId == userId - ) + #logger.debug(">>>PARTICIPANT", userId) + #logger.debug(">>>userLatencies", @state.userLatencies) + #logger.debug(">>>userLatenciesFailed", @state.userLatenciesFailed) + latency = null + failed = false - logger.debug(">>>latencies=====>>>>", latency) - logger.debug(">>>Failed=======>>>>>", failed) + if @state.userLatencies.latencies + latency = @state.userLatencies.latencies.find((userLatency) -> + userLatency.user_id == userId + ) + + if @state.userLatenciesFailed + failed = @state.userLatenciesFailed.find((failedId) -> + failedId == userId + ) + + logger.debug(">>>createLatencyBadge.latency = ", latency) + logger.debug(">>>createLatencyBadge.failed =", failed) `` @@ -414,6 +420,7 @@ SessionUtils = context.JK.SessionUtils null onLatencyUpdate: (latencyResp) -> + logger.debug("latencyResp}}}}}}}}}}}}}}}}", latencyResp) if latencyResp.users @setState(userLatencies: latencyResp.users) else if latencyResp.user_ids diff --git a/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee index 337eb4007..82449bd2b 100644 --- a/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee @@ -13,65 +13,63 @@ LATENCY = { render: () -> latencyDescription = @props.failed - # if @props.latency - # latency = @props.latency - # full_score = latency.ars.total_latency - # internet_score = parseInt(latency.internet_score); - # audio_latency = parseInt(latency.audio_latency); + if @props.latency + latency = @props.latency + full_score = latency.ars.total_latency + internet_score = parseInt(latency.internet_score); + audio_latency = parseInt(latency.audio_latency); - # latencyDescription = "XXXX" - # latencyStyle = "" - # iconName = "" - # description = "" - # latencyDetails = "" + latencyDescription = "" + latencyStyle = "" + iconName = "" + description = "" + latencyDetails = "" - # # if !full_score || full_score <= LATENCY.UNKNOWN.max - # # latencyDescription = LATENCY.UNKNOWN.description - # # latencyStyle = LATENCY.UNKNOWN.style - # # iconName = "purple" - # # description = "missing" - # # latencyDetails = "" - # # else if full_score <= LATENCY.GOOD.max - # # latencyDescription = LATENCY.GOOD.description - # # latencyStyle = LATENCY.GOOD.style; - # # iconName = "green" - # # description = "good" - # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" - # # else if full_score <= LATENCY.MEDIUM.max - # # latencyDescription = LATENCY.MEDIUM.description - # # latencyStyle = LATENCY.MEDIUM.style - # # iconName = "yellow" - # # description = "fair" - # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" - # # else if full_score <= LATENCY.POOR.max - # # latencyDescription = LATENCY.POOR.description - # # latencyStyle = LATENCY.POOR.style - # # iconName = "red" - # # description = "poor" - # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" - # # else if full_score > LATENCY.UNACCEPTABLE.min - # # latencyDescription = LATENCY.UNACCEPTABLE.description - # # latencyStyle = LATENCY.UNACCEPTABLE.style - # # iconName = "blue" - # # description = "unacceptable" - # # latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + if !full_score || full_score <= LATENCY.UNKNOWN.max + latencyDescription = LATENCY.UNKNOWN.description + latencyStyle = LATENCY.UNKNOWN.style + iconName = "purple" + description = "missing" + latencyDetails = "" + else if full_score <= LATENCY.GOOD.max + latencyDescription = LATENCY.GOOD.description + latencyStyle = LATENCY.GOOD.style; + iconName = "green" + description = "good" + latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + else if full_score <= LATENCY.MEDIUM.max + latencyDescription = LATENCY.MEDIUM.description + latencyStyle = LATENCY.MEDIUM.style + iconName = "yellow" + description = "fair" + latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + else if full_score <= LATENCY.POOR.max + latencyDescription = LATENCY.POOR.description + latencyStyle = LATENCY.POOR.style + iconName = "red" + description = "poor" + latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + else if full_score > LATENCY.UNACCEPTABLE.min + latencyDescription = LATENCY.UNACCEPTABLE.description + latencyStyle = LATENCY.UNACCEPTABLE.style + iconName = "blue" + description = "unacceptable" + latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" - # else if @props.failed - # latencyDescription = LATENCY.FAILED.description - # latencyStyle = LATENCY.FAILED.style - # iconName = "gray" - # description = "failed" - # latencyDetails = "" - # else - # latencyDescription = @props - - # { - # latency_style: latencyStyle, - # latency_text: latencyDescription, - # icon_name: iconName, - # description: description, - # latency_details: latencyDetails - # } + else if @props.failed + latencyDescription = LATENCY.FAILED.description + latencyStyle = LATENCY.FAILED.style + iconName = "gray" + description = "failed" + latencyDetails = "" + + { + latency_style: latencyStyle, + latency_text: latencyDescription, + icon_name: iconName, + description: description, + latency_details: latencyDetails + } `{latencyDescription}` diff --git a/web/spec/features/find_sessions_latency_badge_spec.rb b/web/spec/features/find_sessions_latency_badge_spec.rb index ae26455a9..1b6279ea8 100644 --- a/web/spec/features/find_sessions_latency_badge_spec.rb +++ b/web/spec/features/find_sessions_latency_badge_spec.rb @@ -38,7 +38,6 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur end end - before(:all) do Capybara.default_max_wait_time = 10 end @@ -51,12 +50,10 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur create_and_join_session(creator_user, joiner_user) end - it "show GOOD" do in_client(finder_user) do creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, - - + stub_request(:post, latency_data_uri) .with( :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} @@ -70,7 +67,7 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur find("a", text: "Open Jams").click expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) - #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") From d8fa7efdae485086010c7ccd59efd14ea0d58546 Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Sat, 19 Jun 2021 22:13:54 +0530 Subject: [PATCH 09/10] show latency badge in find session screen --- .../FindSessionOpen.js.jsx.coffee | 8 +- .../FindSessionRow.js.jsx.coffee | 6 +- .../react-components/HoverUser.js.jsx.coffee | 2 +- .../LatencyBadge.js.jsx.coffee | 59 ++++--- .../stylesheets/client/sessionList.scss | 7 +- .../find_sessions_latency_badge_spec.rb | 149 +++++++++++++++--- 6 files changed, 169 insertions(+), 62 deletions(-) diff --git a/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee b/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee index 8ffdfd366..b25047214 100644 --- a/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/FindSessionOpen.js.jsx.coffee @@ -192,11 +192,11 @@ LatencyActions = @LatencyActions for session in sessionsChanged.sessions for participant in session.active_music_session.participants - @state.participant_ids.push(participant.user.id) + @state.participant_ids.push(participant.user.id) unless _.contains(@state.participant_ids, participant.user.id) - # for rsvp in session.approved_rsvps - # @state.participant_ids.push(rsvp.id) - #logger.debug("<<<<<<>>>>>>>>", _.unique(@state.participant_ids)) + for rsvp in session.approved_rsvps + @state.participant_ids.push(rsvp.id) unless _.contains(@state.participant_ids, rsvp.id) + LatencyActions.resolve(_.unique(@state.participant_ids)) @setState(sessionsChanged) diff --git a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee index 138d12e3f..93c5a2dd0 100644 --- a/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/FindSessionRow.js.jsx.coffee @@ -30,9 +30,7 @@ SessionUtils = context.JK.SessionUtils instruments createLatencyBadge: (userId) -> - #logger.debug(">>>PARTICIPANT", userId) - #logger.debug(">>>userLatencies", @state.userLatencies) - #logger.debug(">>>userLatenciesFailed", @state.userLatenciesFailed) + latency = null failed = false @@ -46,8 +44,6 @@ SessionUtils = context.JK.SessionUtils failedId == userId ) - logger.debug(">>>createLatencyBadge.latency = ", latency) - logger.debug(">>>createLatencyBadge.failed =", failed) `` diff --git a/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee b/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee index 8238a19d7..d8ad47a74 100644 --- a/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/HoverUser.js.jsx.coffee @@ -31,7 +31,7 @@ MAX_MINUTES_SHOW_START = 15
{this.props.instruments}
-
{latencyBadge}
+
{latencyBadge}
{this.props.more} ` diff --git a/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee index 82449bd2b..f5f86decb 100644 --- a/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee @@ -11,7 +11,6 @@ LATENCY = { @LatencyBadge = React.createClass({ render: () -> - latencyDescription = @props.failed if @props.latency latency = @props.latency @@ -21,56 +20,54 @@ LATENCY = { latencyDescription = "" latencyStyle = "" - iconName = "" - description = "" - latencyDetails = "" + #iconName = "" + #description = "" + #latencyDetails = "" if !full_score || full_score <= LATENCY.UNKNOWN.max latencyDescription = LATENCY.UNKNOWN.description latencyStyle = LATENCY.UNKNOWN.style - iconName = "purple" - description = "missing" - latencyDetails = "" + #iconName = "purple" + #description = "missing" + #latencyDetails = "" else if full_score <= LATENCY.GOOD.max latencyDescription = LATENCY.GOOD.description latencyStyle = LATENCY.GOOD.style; - iconName = "green" - description = "good" - latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + #iconName = "green" + #description = "good" + #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" else if full_score <= LATENCY.MEDIUM.max latencyDescription = LATENCY.MEDIUM.description latencyStyle = LATENCY.MEDIUM.style - iconName = "yellow" - description = "fair" - latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + #iconName = "yellow" + #description = "fair" + #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" else if full_score <= LATENCY.POOR.max latencyDescription = LATENCY.POOR.description latencyStyle = LATENCY.POOR.style - iconName = "red" - description = "poor" - latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + #iconName = "red" + #description = "poor" + #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" else if full_score > LATENCY.UNACCEPTABLE.min latencyDescription = LATENCY.UNACCEPTABLE.description latencyStyle = LATENCY.UNACCEPTABLE.style - iconName = "blue" - description = "unacceptable" - latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + #iconName = "blue" + #description = "unacceptable" + #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" else if @props.failed latencyDescription = LATENCY.FAILED.description latencyStyle = LATENCY.FAILED.style - iconName = "gray" - description = "failed" - latencyDetails = "" - - { - latency_style: latencyStyle, - latency_text: latencyDescription, - icon_name: iconName, - description: description, - latency_details: latencyDetails - } + #iconName = "gray" + #description = "failed" + #latencyDetails = "" + else + latencyDescription = LATENCY.UNKNOWN.description + latencyStyle = LATENCY.UNKNOWN.style + #iconName = "gray" + #description = "failed" + #latencyDetails = "" - `{latencyDescription}` + `{latencyDescription}` }) \ No newline at end of file diff --git a/web/app/assets/stylesheets/client/sessionList.scss b/web/app/assets/stylesheets/client/sessionList.scss index c5df7a844..e84784e36 100644 --- a/web/app/assets/stylesheets/client/sessionList.scss +++ b/web/app/assets/stylesheets/client/sessionList.scss @@ -1,7 +1,7 @@ @import "client/common"; -table.findsession-table, table.local-recordings, table.open-jam-tracks, table.open-backing-tracks, table.cart-items, #account-session-detail, table.payment-table, table.jamtable { +table.findsession-table, table.local-recordings, table.open-jam-tracks, table.open-backing-tracks, table.cart-items, #account-session-detail, table.payment-table, table.jamtable, .find-session-latency-badge { .latency-unacceptable { width: 50px; @@ -164,6 +164,11 @@ table.findsession-table, table.local-recordings, table.open-jam-tracks, table.op } } +.find-session-latency-badge{ + span{ + padding: 2px; + } +} .avatar-tiny { float:left; diff --git a/web/spec/features/find_sessions_latency_badge_spec.rb b/web/spec/features/find_sessions_latency_badge_spec.rb index 1b6279ea8..cedb68573 100644 --- a/web/spec/features/find_sessions_latency_badge_spec.rb +++ b/web/spec/features/find_sessions_latency_badge_spec.rb @@ -3,32 +3,29 @@ require 'webmock/rspec' describe "Find session latency badge", js: true, type: :feature, capybara_feature: true do let(:creator_user){ FactoryGirl.create(:user) } - let(:joiner_user){ FactoryGirl.create(:user) } let(:finder_user){ FactoryGirl.create(:user) } + let(:user1){ FactoryGirl.create(:user) } + let(:user2){ FactoryGirl.create(:user) } + let(:user3){ FactoryGirl.create(:user) } + let(:user4){ FactoryGirl.create(:user) } let(:latency_data_uri) { /\S+\/user_latencies/ } - def create_and_join_session(creator_user, joiner_user) + def create_session(creator_user) in_client(creator_user) do fast_signin(creator_user, "/client#/createSession") wait_until_curtain_gone find("h1", text: "session") find(".quick-start-open").click end - in_client(joiner_user) do - joiner_response_body = mock_latency_response([{ user: joiner_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) - stub_request(:post, latency_data_uri) - .with( - :headers => { - 'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} - ) - .to_return( body: joiner_response_body, status: 200) + end + def join_session(joiner_user) + in_client(joiner_user) do fast_signin(joiner_user, "/client#/findSession") wait_until_curtain_gone find("h1", text: "find a session") find("a", text: "Open Jams").click - expect(page).to have_selector("#sessions-active .found-session", count: 1) find("#sessions-active .found-session .join-link").click find("#session-terms-conditions") within("#session-terms-conditions") do @@ -47,12 +44,12 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur before(:each) do emulate_client ActiveMusicSession.delete_all - create_and_join_session(creator_user, joiner_user) + create_session(creator_user) end it "show GOOD" do in_client(finder_user) do - creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) #sessionUtils.LATENCY.GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, + creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.5, audio_latency: 0.5 }]) stub_request(:post, latency_data_uri) .with( @@ -60,19 +57,15 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur ) .to_return( body: creator_response_body, status: 200) - fast_signin(finder_user, "/client#/findSession") wait_until_curtain_gone find("h1", text: "find a session") find("a", text: "Open Jams").click - expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") - - save_screenshot("find_session_latency.png") - # selector = "#sessions-active a[data-user-id=\"#{creator_user.id}\"][data-hoveraction=\"musician\"]" # find(selector, text: creator_user.name).hover_intent # find('h3', text: creator_user.name) @@ -89,7 +82,7 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur end end - xit "show FAIR" do + it "show FAIR" do in_client(finder_user) do creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 41.0, ars_internet_latency: 21.0, audio_latency: 20.0 }]) @@ -103,7 +96,7 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur wait_until_curtain_gone find("h1", text: "find a session") find("a", text: "Open Jams").click - expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 2) + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "FAIR") #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") @@ -111,6 +104,122 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur end end + it "show POOR" do + in_client(finder_user) do + creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 71.0, ars_internet_latency: 41.0, audio_latency: 30.0 }]) + + stub_request(:post, latency_data_uri) + .with( + :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} + ) + .to_return( body: creator_response_body, status: 200) + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) + + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "POOR") + #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") + + end + end + + it "show UNACCEPTABLE" do + in_client(finder_user) do + creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 101.0, ars_internet_latency: 51.0, audio_latency: 50.0 }]) + + stub_request(:post, latency_data_uri) + .with( + :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} + ) + .to_return( body: creator_response_body, status: 200) + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) + + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "UNACCEPTABLE") + #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") + + end + end + + it "show UNKNOWN" do + in_client(finder_user) do + creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: -2, ars_internet_latency: 0, audio_latency: 0 }]) + + stub_request(:post, latency_data_uri) + .with( + :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'} + ) + .to_return( body: creator_response_body, status: 200) + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) + + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "UNKNOWN") + #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") + + end + end + + it "show FAILED" do + in_client(finder_user) do + creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: -3, ars_internet_latency: 0, audio_latency: 0 }]) + + stub_request(:post, latency_data_uri) + .to_raise("some error") + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) + + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "FAILED") + #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") + + end + end + + it "shows latency of joiners of the session" do + response_body = mock_latency_response([ + { user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.4, audio_latency: 0.6 }, #GOOD + { user: user1, ars_total_latency: 1.0, ars_internet_latency: 0.4, audio_latency: 0.6 }, #GOOD + { user: user2, ars_total_latency: 71.0, ars_internet_latency: 35, audio_latency: 36 }, #POOR + { user: user3, ars_total_latency: 41.0, ars_internet_latency: 15, audio_latency: 26.0 }, #FAIR + { user: user4, ars_total_latency: 101.0, ars_internet_latency: 31.75, audio_latency: 70.25 } #UNACCEPTABLE + ]) + + stub_request(:post, latency_data_uri) + .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) + .to_return( body: response_body, status: 200) + + [user1, user2, user3, user4].each do |user| + join_session(user) + end + + fast_signin(finder_user, "/client#/findSession") + wait_until_curtain_gone + find("h1", text: "find a session") + find("a", text: "Open Jams").click + expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 5) + + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user1.id}\"]", text: "GOOD") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user2.id}\"]", text: "POOR") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user3.id}\"]", text: "FAIR") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user4.id}\"]", text: "UNACCEPTABLE") + save_screenshot("findSessionLatency.png") + end + end end \ No newline at end of file From 5da62ebd4090fa143c04ae978c782c0f6221e27f Mon Sep 17 00:00:00 2001 From: Nuwan Chathuranga Date: Wed, 23 Jun 2021 14:54:56 +0530 Subject: [PATCH 10/10] change latency badge text show HIGH instead of POOR and UNACCEPTABLE --- .../LatencyBadge.js.jsx.coffee | 46 +++++-------------- web/app/assets/javascripts/session_utils.js | 4 +- .../find_sessions_latency_badge_spec.rb | 16 +++---- web/spec/features/musician_hover_spec_1.rb | 12 ++--- web/spec/features/musician_hover_spec_2.rb | 4 +- 5 files changed, 30 insertions(+), 52 deletions(-) diff --git a/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee index f5f86decb..71c0e6877 100644 --- a/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/LatencyBadge.js.jsx.coffee @@ -2,8 +2,8 @@ LATENCY = { ME : {description: "ME", style: "latency-me", min: -1, max: -1}, GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, MEDIUM : {description: "FAIR", style: "latency-fair", min: 40.0, max: 70.0}, - POOR : {description: "POOR", style: "latency-poor", min: 70.0, max: 100}, - UNACCEPTABLE: {description: "UNACCEPTABLE", style: "latency-unacceptable", min: 100, max: 10000000}, + HIGH : {description: "HIGH", style: "latency-poor", min: 70.0, max: 10000000}, + #UNACCEPTABLE: {description: "UNACCEPTABLE", style: "latency-unacceptable", min: 100, max: 10000000}, UNKNOWN: {description: "UNKNOWN", style: "latency-unknown", min: -2, max: -2}, FAILED: {description: "FAILED", style: "latency-failed", min: -3, max: -3} } @@ -20,53 +20,31 @@ LATENCY = { latencyDescription = "" latencyStyle = "" - #iconName = "" - #description = "" - #latencyDetails = "" - + if !full_score || full_score <= LATENCY.UNKNOWN.max latencyDescription = LATENCY.UNKNOWN.description latencyStyle = LATENCY.UNKNOWN.style - #iconName = "purple" - #description = "missing" - #latencyDetails = "" + else if full_score <= LATENCY.GOOD.max latencyDescription = LATENCY.GOOD.description latencyStyle = LATENCY.GOOD.style; - #iconName = "green" - #description = "good" - #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" + else if full_score <= LATENCY.MEDIUM.max latencyDescription = LATENCY.MEDIUM.description latencyStyle = LATENCY.MEDIUM.style - #iconName = "yellow" - #description = "fair" - #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" - else if full_score <= LATENCY.POOR.max - latencyDescription = LATENCY.POOR.description - latencyStyle = LATENCY.POOR.style - #iconName = "red" - #description = "poor" - #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" - else if full_score > LATENCY.UNACCEPTABLE.min - latencyDescription = LATENCY.UNACCEPTABLE.description - latencyStyle = LATENCY.UNACCEPTABLE.style - #iconName = "blue" - #description = "unacceptable" - #latencyDetails = "Internet #{internet_score}ms + Audio #{audio_latency}ms" - + + else if full_score <= LATENCY.HIGH.max + latencyDescription = LATENCY.HIGH.description + latencyStyle = LATENCY.HIGH.style + else if @props.failed latencyDescription = LATENCY.FAILED.description latencyStyle = LATENCY.FAILED.style - #iconName = "gray" - #description = "failed" - #latencyDetails = "" + else latencyDescription = LATENCY.UNKNOWN.description latencyStyle = LATENCY.UNKNOWN.style - #iconName = "gray" - #description = "failed" - #latencyDetails = "" + `{latencyDescription}` diff --git a/web/app/assets/javascripts/session_utils.js b/web/app/assets/javascripts/session_utils.js index e3ed04e24..4cb9c7c37 100644 --- a/web/app/assets/javascripts/session_utils.js +++ b/web/app/assets/javascripts/session_utils.js @@ -16,8 +16,8 @@ ME : {description: "ME", style: "latency-me", min: -1, max: -1}, GOOD : {description: "GOOD", style: "latency-good", min: 0.0, max: 40.0}, MEDIUM : {description: "FAIR", style: "latency-fair", min: 40.0, max: 70.0}, - POOR : {description: "POOR", style: "latency-poor", min: 70.0, max: 100}, - UNACCEPTABLE: {description: "UNACCEPTABLE", style: "latency-unacceptable", min: 100, max: 10000000}, + POOR : {description: "HIGH", style: "latency-poor", min: 70.0, max: 100}, + UNACCEPTABLE: {description: "HIGH", style: "latency-poor", min: 100, max: 10000000}, UNKNOWN: {description: "UNKNOWN", style: "latency-unknown", min: -2, max: -2}, FAILED: {description: "FAILED", style: "latency-failed", min: -3, max: -3} }; diff --git a/web/spec/features/find_sessions_latency_badge_spec.rb b/web/spec/features/find_sessions_latency_badge_spec.rb index cedb68573..dfa105421 100644 --- a/web/spec/features/find_sessions_latency_badge_spec.rb +++ b/web/spec/features/find_sessions_latency_badge_spec.rb @@ -104,7 +104,7 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur end end - it "show POOR" do + it "show HIGH if latency > 70", focus: true do in_client(finder_user) do creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 71.0, ars_internet_latency: 41.0, audio_latency: 30.0 }]) @@ -120,13 +120,13 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur find("a", text: "Open Jams").click expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) - expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "POOR") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "HIGH") #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") end end - it "show UNACCEPTABLE" do + it "show HIGH if latency > 100", focus: true do in_client(finder_user) do creator_response_body = mock_latency_response([{ user: creator_user, ars_total_latency: 101.0, ars_internet_latency: 51.0, audio_latency: 50.0 }]) @@ -142,7 +142,7 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur find("a", text: "Open Jams").click expect(page).to have_selector("#sessions-active .found-session table.musicians-category tr", count: 1) - expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "UNACCEPTABLE") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "HIGH") #expect(page).to have_selector("div.latency-badge[data-user-id=\"#{joiner_user.id}\"]", text: "GOOD") end @@ -193,9 +193,9 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur response_body = mock_latency_response([ { user: creator_user, ars_total_latency: 1.0, ars_internet_latency: 0.4, audio_latency: 0.6 }, #GOOD { user: user1, ars_total_latency: 1.0, ars_internet_latency: 0.4, audio_latency: 0.6 }, #GOOD - { user: user2, ars_total_latency: 71.0, ars_internet_latency: 35, audio_latency: 36 }, #POOR + { user: user2, ars_total_latency: 71.0, ars_internet_latency: 35, audio_latency: 36 }, #HIGH { user: user3, ars_total_latency: 41.0, ars_internet_latency: 15, audio_latency: 26.0 }, #FAIR - { user: user4, ars_total_latency: 101.0, ars_internet_latency: 31.75, audio_latency: 70.25 } #UNACCEPTABLE + { user: user4, ars_total_latency: 101.0, ars_internet_latency: 31.75, audio_latency: 70.25 } #HIGH ]) stub_request(:post, latency_data_uri) @@ -214,9 +214,9 @@ describe "Find session latency badge", js: true, type: :feature, capybara_featur expect(page).to have_selector("div.latency-badge[data-user-id=\"#{creator_user.id}\"]", text: "GOOD") expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user1.id}\"]", text: "GOOD") - expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user2.id}\"]", text: "POOR") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user2.id}\"]", text: "HIGH") expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user3.id}\"]", text: "FAIR") - expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user4.id}\"]", text: "UNACCEPTABLE") + expect(page).to have_selector("div.latency-badge[data-user-id=\"#{user4.id}\"]", text: "HIGH") save_screenshot("findSessionLatency.png") end diff --git a/web/spec/features/musician_hover_spec_1.rb b/web/spec/features/musician_hover_spec_1.rb index 34bd4b7ca..ce956c5ec 100644 --- a/web/spec/features/musician_hover_spec_1.rb +++ b/web/spec/features/musician_hover_spec_1.rb @@ -44,7 +44,7 @@ describe "Musician Hover", :js => true, :type => :feature, :capybara_feature => end - it "show POOR" do + it "show HIGH" do response_body = mock_latency_response([ {user: user2, ars_total_latency: 71.0, ars_internet_latency: 35, audio_latency: 36 }]) #sessionUtils.LATENCY.POOR : {description: "POOR", style: "latency-poor", min: 70.0, max: 100}, stub_request(:post, latency_data_uri) .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) @@ -53,7 +53,7 @@ describe "Musician Hover", :js => true, :type => :feature, :capybara_feature => site_search(user2.first_name, expand: true) find("#search-results a[user-id=\"#{user2.id}\"][hoveraction=\"musician\"]", text: user2.name).hover_intent find('h3', text: user2.name) - find("#musician-latency-badge .latency", text: 'POOR') + find("#musician-latency-badge .latency", text: 'HIGH') #sleep(2) #save_screenshot("latency-poor.png") find("#musician-latency-badge .latency-info", text: 'Internet 35ms + Audio 36ms') @@ -97,11 +97,11 @@ describe "Musician Hover", :js => true, :type => :feature, :capybara_feature => page.execute_script("$('#{selector}').mouseleave();") sleep(1) - #Show badge - POOR + #Show badge - HIGH selector = "#search-results a[user-id=\"#{user3.id}\"][hoveraction=\"musician\"]" find(selector, text: user3.name).hover_intent find('h3', text: user3.name) - find("#musician-latency-badge .latency", text: 'POOR') + find("#musician-latency-badge .latency", text: 'HIGH') find("#musician-latency-badge .latency-info", text: 'Internet 35ms + Audio 36ms') page.execute_script("$('#{selector}').mouseleave();") sleep(1) @@ -115,11 +115,11 @@ describe "Musician Hover", :js => true, :type => :feature, :capybara_feature => page.execute_script("$('#{selector}').mouseleave();") sleep(1) - #Show badge - UNACCEPTABLE + #Show badge - HIGH selector = "#search-results a[user-id=\"#{user5.id}\"][hoveraction=\"musician\"]" find(selector, text: user5.name).hover_intent find('h3', text: user5.name) - find("#musician-latency-badge .latency", text: 'UNACCEPTABLE') + find("#musician-latency-badge .latency", text: 'HIGH') find("#musician-latency-badge .latency-info", text: 'Internet 31ms + Audio 70ms') page.execute_script("$('#{selector}').mouseleave();") sleep(1) diff --git a/web/spec/features/musician_hover_spec_2.rb b/web/spec/features/musician_hover_spec_2.rb index aeea8e820..48e2eaf39 100644 --- a/web/spec/features/musician_hover_spec_2.rb +++ b/web/spec/features/musician_hover_spec_2.rb @@ -56,7 +56,7 @@ describe "Musician Hover", :js => true, :type => :feature, :capybara_feature => find("#musician-latency-badge .latency-info").should have_content("") end - it "show UNACCEPTABLE" do + it "show HIGH" do response_body = mock_latency_response([{ user: user2, ars_total_latency: 101.0, ars_internet_latency: 81, audio_latency: 20 }]) #sessionUtils.LATENCY.UNACCEPTABLE : {description: "UNACCEPTABLE", style: "latency-unacceptable", min: 100.0, max: 10000000}, stub_request(:post, latency_data_uri) .with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}) @@ -65,7 +65,7 @@ describe "Musician Hover", :js => true, :type => :feature, :capybara_feature => site_search(user2.first_name, expand: true) find("#search-results a[user-id=\"#{user2.id}\"][hoveraction=\"musician\"]", text: user2.name).hover_intent find('h3', text: user2.name) - find("#musician-latency-badge .latency", text: 'UNACCEPTABLE') + find("#musician-latency-badge .latency", text: 'HIGH') #sleep(2) #save_screenshot("latency-unaccptable.png") find("#musician-latency-badge .latency-info", text: 'Internet 81ms + Audio 20ms')