diff --git a/db/manifest b/db/manifest
index 5c93932dc..94acb060f 100755
--- a/db/manifest
+++ b/db/manifest
@@ -278,4 +278,4 @@ show_whats_next_count.sql
recurly_adjustments.sql
signup_hints.sql
packaging_notices.sql
-first_played_jamtrack_at.sql
\ No newline at end of file
+first_played_jamtrack_at.sql
diff --git a/web/app/assets/images/content/icon_cam.png b/web/app/assets/images/content/icon_cam.png
new file mode 100644
index 000000000..e32bede67
Binary files /dev/null and b/web/app/assets/images/content/icon_cam.png differ
diff --git a/web/app/assets/javascripts/accounts.js b/web/app/assets/javascripts/accounts.js
index b7af8f033..a3b75f9b9 100644
--- a/web/app/assets/javascripts/accounts.js
+++ b/web/app/assets/javascripts/accounts.js
@@ -8,8 +8,10 @@
var rest = context.JK.Rest();
var userId;
var user = {};
+
function beforeShow(data) {
+ console.log("beforeShow", data)
userId = data.id;
}
@@ -43,6 +45,11 @@
var invalidProfiles = prettyPrintAudioProfiles(context.JK.getBadConfigMap());
var sessionSummary = summarizeSession(userDetail);
+ var webcam = context.jamClient.FTUECurrentSelectedVideoDevice
+ if (webcam==null || typeof(webcam)=="undefined" || webcam.length==0) {
+ webcam = "None Configured"
+ }
+
var $template = $(context._.template($('#template-account-main').html(), {
email: userDetail.email,
name: userDetail.name,
@@ -56,6 +63,7 @@
invalidProfiles : invalidProfiles,
isNativeClient: gon.isNativeClient,
musician: context.JK.currentUserMusician,
+ webcamName: webcam,
sales_count: userDetail.sales_count
} , { variable: 'data' }));
@@ -65,8 +73,9 @@
$('#account-scheduled-sessions-link').show();
} else {
$('#account-scheduled-sessions-link').hide();
- }
- }
+ }
+
+ }// function
function prettyPrintAudioProfiles(profileMap) {
var profiles = "";
@@ -110,6 +119,7 @@
$('#account-content-scroller').on('click', '#account-edit-subscriptions-link', function(evt) { evt.stopPropagation(); navToEditSubscriptions(); return false; } );
$('#account-content-scroller').on('click', '#account-edit-payments-link', function(evt) { evt.stopPropagation(); navToEditPayments(); return false; } );
$('#account-content-scroller').on('click', '#account-edit-audio-link', function(evt) { evt.stopPropagation(); navToEditAudio(); return false; } );
+ $('#account-content-scroller').on('click', '#account-edit-video-link', function(evt) { evt.stopPropagation(); navToEditVideo(); return false; } );
$('#account-content-scroller').on('avatar_changed', '#profile-avatar', function(evt, newAvatarUrl) { evt.stopPropagation(); updateAvatar(newAvatarUrl); return false; })
// License dialog:
@@ -158,6 +168,11 @@
window.location = "/client#/account/audio"
}
+ function navToEditVideo() {
+ resetForm()
+ window.location = "/client#/account/video"
+ }
+
function navToPaymentHistory() {
window.location = '/client#/account/paymentHistory'
}
@@ -178,6 +193,7 @@
}
function initialize() {
+
var screenBindings = {
'beforeShow': beforeShow,
'afterShow': afterShow
diff --git a/web/app/assets/javascripts/accounts_video_profile.js b/web/app/assets/javascripts/accounts_video_profile.js
new file mode 100644
index 000000000..fbb1a6d53
--- /dev/null
+++ b/web/app/assets/javascripts/accounts_video_profile.js
@@ -0,0 +1,32 @@
+(function (context, $) {
+
+ "use strict";
+
+ context.JK = context.JK || {};
+ context.JK.AccountVideoProfile = function (app) {
+ var $webcamViewer = new context.JK.WebcamViewer()
+ function initialize() {
+ var screenBindings = {
+ 'beforeShow': beforeShow,
+ 'beforeHide':beforeHide
+ };
+ app.bindScreen('account/video', screenBindings);
+
+ $webcamViewer.init($(".webcam-container"))
+ }
+
+ function beforeShow() {
+ $webcamViewer.beforeShow()
+ }
+
+ function beforeHide() {
+ $webcamViewer.setVideoOff()
+ }
+
+ this.beforeShow = beforeShow
+ this.beforeHide = beforeHide
+ this.initialize = initialize
+ return this;
+ };
+
+})(window, jQuery);
\ No newline at end of file
diff --git a/web/app/assets/javascripts/dialog/recordingFinishedDialog.js b/web/app/assets/javascripts/dialog/recordingFinishedDialog.js
index f78022877..1bb456b43 100644
--- a/web/app/assets/javascripts/dialog/recordingFinishedDialog.js
+++ b/web/app/assets/javascripts/dialog/recordingFinishedDialog.js
@@ -10,10 +10,10 @@
var $dialog = null;
function resetForm() {
-
// remove all display errors
$('#recording-finished-dialog form .error-text').remove()
$('#recording-finished-dialog form .error').removeClass("error")
+ removeGoogleLoginErrors()
}
function beforeShow() {
@@ -130,11 +130,47 @@
return false;
}
+ function startGoogleLogin(e) {
+ e.preventDefault()
+ logger.debug("Starting google login")
+ window._oauth_win = window.open("/auth/google_login", "Log In to Google", "height=500,width=500,menubar=no,resizable=no,status=no");
+
+ window._oauth_callback = function() {
+ window._oauth_win.close()
+ setGoogleAuthState()
+ }
+ return false;
+ }
+
function claimRecording(e) {
-
resetForm();
- registerClaimRecordingHandlers(false);
+ registerClaimRecordingHandlers(false)
+ var upload_to_youtube = $('#recording-finished-dialog form input[name=upload_to_youtube]').is(':checked')
+
+ if (upload_to_youtube) {
+ $.ajax({
+ type: "GET",
+ dataType: "json",
+ url: "/auth/has_google_auth"
+ }).success(function(data) {
+ if(data.has_google_auth) {
+ performClaim()
+ } else {
+ var error_ul = $('
identity:
diff --git a/web/app/views/clients/_account_video_profile.html.erb b/web/app/views/clients/_account_video_profile.html.erb
new file mode 100644
index 000000000..074bfefb7
--- /dev/null
+++ b/web/app/views/clients/_account_video_profile.html.erb
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ <%= image_tag "content/icon_account.png", {:width => 27, :height => 20} %>
+
+
+
my account
+
+ <%= render "screen_navigation" %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= render 'webcam' %>
+
+
+
+
+
+
+
+
diff --git a/web/app/views/clients/_session.html.slim b/web/app/views/clients/_session.html.slim
index 173640e97..0dbbde59b 100644
--- a/web/app/views/clients/_session.html.slim
+++ b/web/app/views/clients/_session.html.slim
@@ -7,7 +7,7 @@
.content-body
#session-controls
a#session-resync.button-grey.resync.left
- = image_tag "content/icon_resync.png", {:align => "texttop", :height => 14, :width => 12}
+ = image_tag "content/icon_resync.png", {:align => "texttop", :height => 12, :width => 12}
| RESYNC
a#session-settings-button.button-grey.left[layout-link="session-settings"]
= image_tag "content/icon_settings_sm.png", {:align => "texttop", :height => 12, :width => 12}
@@ -15,6 +15,10 @@
a.button-grey.left[layout-link="share-dialog"]
= image_tag "content/icon_share.png", {:align => "texttop", :height => 12, :width => 12}
| SHARE
+ - if Rails.application.config.video_available || (current_user && current_user.admin)
+ a#session-webcam.button-grey-toggle.video.left
+ = image_tag "content/icon_cam.png", {:align => "texttop", :height => 12, :width => 12}
+ | VIDEO
.block
.label
| VOLUME:
@@ -109,6 +113,9 @@
br[clear="all"]
.play-controls-holder
= render "play_controls"
+ .webcam-container.hidden
+ / Webcam is actually in another window.
+ = render 'webcam'
= render "configureTrack"
= render "addTrack"
= render "addNewGear"
diff --git a/web/app/views/clients/_webcam.html.slim b/web/app/views/clients/_webcam.html.slim
new file mode 100644
index 000000000..84d38525d
--- /dev/null
+++ b/web/app/views/clients/_webcam.html.slim
@@ -0,0 +1,11 @@
+h2.sub-header Webcam
+form.video
+ .webcam-select-container.wizard_control
+ select.w100
+ .webcam-resolution-select-container.wizard_control
+ select.w100
+ .configure-webcam.wizard_control
+ a.button-orange.webcam-test-btn Test Webcam
+ .configure-webcam.wizard_control
+ a.button-orange.webcam-settings-btn Webcam Settings
+em.no-webcam-msg.hidden No webcam detected. If using an external webcam, please make sure it is plugged in to your computer.
diff --git a/web/app/views/clients/index.html.erb b/web/app/views/clients/index.html.erb
index ffe780f31..6dfd09f94 100644
--- a/web/app/views/clients/index.html.erb
+++ b/web/app/views/clients/index.html.erb
@@ -15,7 +15,7 @@
<%= render "searchResults" %>
<%= render "faders" %>
<%= render "vu_meters" %>
-<%= render "ftue" %>
+
<%= render "jamServer" %>
<%= render "iconInstrumentSelect" %>
<%= render "muteSelect" %>
@@ -54,6 +54,7 @@
<%= render "account_profile" %>
<%= render "account_profile_avatar" %>
<%= render "account_audio_profile" %>
+<%= render "account_video_profile" %>
<%= render "account_sessions" %>
<%= render "account_jamtracks" %>
<%= render "account_session_detail" %>
@@ -215,6 +216,9 @@
var accountAudioProfile = new JK.AccountAudioProfile(JK.app);
accountAudioProfile.initialize();
+ var accountVideoProfile = new JK.AccountVideoProfile(JK.app);
+ accountVideoProfile.initialize();
+
var accountPaymentHistoryScreen = new JK.AccountPaymentHistoryScreen(JK.app);
accountPaymentHistoryScreen.initialize();
diff --git a/web/app/views/clients/wizard/gear/_gear_wizard.html.haml b/web/app/views/clients/wizard/gear/_gear_wizard.html.haml
index 1266a83c3..a26224413 100644
--- a/web/app/views/clients/wizard/gear/_gear_wizard.html.haml
+++ b/web/app/views/clients/wizard/gear/_gear_wizard.html.haml
@@ -157,13 +157,19 @@
%img{src:'assets/content/icon_playbutton.png', width:20, height:20, align:'top'}
%span.direct-monitoring-btn Play
+ -step=4
+ -if Rails.application.config.video_available || (current_user && current_user.admin)
+ .wizard-step.video-gear{ 'layout-wizard-step' => "#{step+=1}", 'dialog-title' => "Select Video Gear", 'dialog-purpose' => "SelectVideoGear" }
+ .ftuesteps
+ .clearall
+ = render :partial => '/clients/wizard/gear/video_gear'
- .wizard-step.network-test{ 'layout-wizard-step' => "5", 'dialog-title' => "Test Router & Network", 'dialog-purpose' => "TestRouterNetwork" }
+ .wizard-step.network-test{ 'layout-wizard-step' => "#{step+=1}", 'dialog-title' => "Test Router & Network", 'dialog-purpose' => "TestRouterNetwork" }
.ftuesteps
.clearall
= render :partial => '/clients/network_test'
- .wizard-step{ 'layout-wizard-step' => "6", 'dialog-title' => "Success!", 'dialog-purpose' => "Success" }
+ .wizard-step.success{ 'layout-wizard-step' => "#{step+=1}", 'dialog-title' => "Success!", 'dialog-purpose' => "Success" }
.ftuesteps
.clearall
.wizard-step-content
@@ -207,9 +213,13 @@
.ftue-step-title Configure Voice Chat
%a.ftue-stepnumber{'data-step-number' => 4} 5
.ftue-step-title Turn Off Direct Monitoring
- %a.ftue-stepnumber{'data-step-number' => 5} 6
+ -step = 4
+ -if Rails.application.config.video_available || (current_user && current_user.admin)
+ %a.ftue-stepnumber{'data-step-number' => step+=1}=step+1
+ .ftue-step-title Select Video Gear
+ %a.ftue-stepnumber{'data-step-number' => step+=1}=step+1
.ftue-step-title Test Router & Network
- %a.ftue-stepnumber{'data-step-number' => 6} 7
+ %a.ftue-stepnumber{'data-step-number' => step+=1}=step+1
.ftue-step-title Success!
diff --git a/web/app/views/clients/wizard/gear/_video_gear.html.haml b/web/app/views/clients/wizard/gear/_video_gear.html.haml
new file mode 100644
index 000000000..f87fd9802
--- /dev/null
+++ b/web/app/views/clients/wizard/gear/_video_gear.html.haml
@@ -0,0 +1,20 @@
+.help-text In this step, you will select your video gear. Please watch the video for best instructions.
+.wizard-step-content
+ .wizard-step-column
+ %h2 Instructions
+ .ftue-box.instructions
+ %ul
+ %li Select webcam to use for video in sessions.
+ %li Verify that you see the video for the webcam in the window to the right.
+ %li Configure webcam settings if desired.
+ .center
+ %a.button-orange.watch-video{href:'https://www.youtube.com/watch?v=f7niycdWm7Y', rel:'external'} WATCH VIDEO
+ .wizard-step-column
+ =render(partial: '/clients/webcam')
+ .clearall
+ / Webcam from client can't currently be embedded:
+ / .wizard-step-column
+ / %h2.video-header Preview
+ / .webcam-preview.ftue-box
+ / .webcam-content
+
\ No newline at end of file
diff --git a/web/app/views/dialogs/_recordingFinishedDialog.html.haml b/web/app/views/dialogs/_recordingFinishedDialog.html.haml
index 12b9643e6..9870e4943 100644
--- a/web/app/views/dialogs/_recordingFinishedDialog.html.haml
+++ b/web/app/views/dialogs/_recordingFinishedDialog.html.haml
@@ -23,16 +23,16 @@
.field.w100.left{:purpose => "description"}
%label{:for => "description"} Description:
%textarea#claim-recording-description.w100{:name => "description"}
- - if Rails.application.config.jam_tracks_available
- .field.left{:purpose => "save_video"}
- %input{:checked => "checked", :name => "save_video", :type => "checkbox"}/
- %label{:for => "save_video"} Save Video to Computer
- .field.left{:purpose => "upload_to_youtube"}
- %span
- %input{:checked => "checked", :name => "upload_to_youtube", :type => "checkbox"}/
- %label{:for => "upload_to_youtube"} Upload Video to YouTube
- %span
- = render(:partial => "shared/google_login")
+ - if Rails.application.config.video_available || (current_user && current_user.admin)
+ .field.left{:purpose => "save_video"}
+ %input{:checked => "checked", :name => "save_video", :type => "checkbox"}/
+ %label{:for => "save_video"} Save Video to Computer
+ .field.left{:purpose => "upload_to_youtube"}
+ %span
+ %input{:checked => "checked", :name => "upload_to_youtube", :type => "checkbox"}/
+ %label{:for => "upload_to_youtube"} Upload Video to YouTube
+ %span
+ = render(:partial => "shared/google_login")
.field.left{:purpose => "is_public"}
%input{:checked => "checked", :name => "is_public", :type => "checkbox"}/
%label{:for => "is_public"} Public Recording
diff --git a/web/app/views/shared/_google_login.html.slim b/web/app/views/shared/_google_login.html.slim
index a190c6366..d248a4c80 100644
--- a/web/app/views/shared/_google_login.html.slim
+++ b/web/app/views/shared/_google_login.html.slim
@@ -1,26 +1,3 @@
--content_for :extra_js do
- javascript:
- // Check for google authorization using AJAX and show/hide the
- // google login button / "signed in" label as appropriate:
- $(window).on('focus', function() {
- $.ajax({
- type: "GET",
- dataType: "json",
- url: "/auth/has_google_auth"
- }).success(function(data) {
- if(data.has_google_auth) {
- $("input.google_login_button").addClass("hidden")
- $("span.signed_in_to_google").removeClass("hidden")
- if (window._oauth_win) {
- window._oauth_win.close()
- }
- } else {
- $("span.signed_in_to_google").addClass("hidden")
- $("input.google_login_button").removeClass("hidden")
- }
- })
- });
-
-google_auth = (current_user.nil?) ? nil : !!JamRuby::UserAuthorization.google_auth(current_user).first
span.signed_in_to_google class=((!google_auth) ? "hidden" : "") ="(Signed in)"
-input.google_login_button class=((google_auth) ? "hidden" : "") type='image' onclick='window._oauth_win = window.open("/auth/google_login", "_blank", "height=500,width=500,menubar=no,resizable=no,status=no");' src="/assets/google_signin.png" height="30px"
+input.google_login_button class=((google_auth) ? "hidden" : "") type='image' src="/assets/google_signin.png" height="30px"
diff --git a/web/app/views/users/_user_dropdown.html.erb b/web/app/views/users/_user_dropdown.html.erb
index dd694bdb8..75af674db 100644
--- a/web/app/views/users/_user_dropdown.html.erb
+++ b/web/app/views/users/_user_dropdown.html.erb
@@ -21,7 +21,10 @@
<% if current_user && current_user.musician? %>
<% class_val = current_user.affiliate_partner.present? ? 'audio' : 'audio account-menu-group' %>
-
<%= link_to "Audio Gear", '/client#/account/audio' %>
+
<%= link_to "Audio Gear", '/client#/account/audio' %>
+ <% if Rails.application.config.video_available || (current_user && current_user.admin) %>
+
<%= link_to "Video Gear", '/client#/account/video' %>
+ <% end %>
<% end %>
<% if current_user && current_user.affiliate_partner.present? %>
diff --git a/web/config/application.rb b/web/config/application.rb
index 905894be7..ae56c864c 100644
--- a/web/config/application.rb
+++ b/web/config/application.rb
@@ -326,5 +326,6 @@ if defined?(Bundler)
config.recurly_tax_estimate_jam_track_plan = 'jamtrack-acdc-backinblack'
config.minimal_curtain = false
+ config.video_available = false
end
end
diff --git a/web/config/environments/development.rb b/web/config/environments/development.rb
index 675416dcd..51e10582b 100644
--- a/web/config/environments/development.rb
+++ b/web/config/environments/development.rb
@@ -91,4 +91,5 @@ SampleApp::Application.configure do
config.youtube_app_name = "JamKazamDev"
config.jam_tracks_available=true
config.minimal_curtain = true
+ config.video_available=false
end
diff --git a/web/config/environments/test.rb b/web/config/environments/test.rb
index 4b5c92b6f..7e7ea6d9f 100644
--- a/web/config/environments/test.rb
+++ b/web/config/environments/test.rb
@@ -105,5 +105,6 @@ SampleApp::Application.configure do
config.recurly_subdomain = 'jamkazam-test'
config.log_level = :debug
config.jam_tracks_available = true
+ config.video_available = true
end
diff --git a/web/lib/tasks/jam_tracks.rake b/web/lib/tasks/jam_tracks.rake
index 5f21ae5bc..ef15aee85 100644
--- a/web/lib/tasks/jam_tracks.rake
+++ b/web/lib/tasks/jam_tracks.rake
@@ -27,12 +27,10 @@ namespace :jam_tracks do
end
task sync_all: :environment do |task, args|
-
JamTrackImporter.synchronize_all(skip_audio_upload:false)
end
task sync_all_dev: :environment do |task, args|
-
JamTrackImporter.synchronize_all(skip_audio_upload:true)
end
@@ -62,7 +60,6 @@ namespace :jam_tracks do
end
end
-
task sync_duration_all: :environment do |task, args|
importer = JamTrackImporter.synchronize_durations
end
diff --git a/web/spec/features/gear_wizard_spec.rb b/web/spec/features/gear_wizard_spec.rb
index 6edc6bd59..44badf594 100644
--- a/web/spec/features/gear_wizard_spec.rb
+++ b/web/spec/features/gear_wizard_spec.rb
@@ -8,14 +8,69 @@ describe "Gear Wizard", :js => true, :type => :feature, :capybara_feature => tru
before(:each) do
LatencyTester.delete_all
+ end
+ before(:all) do
+ @old_video_available=Rails.application.config.video_available
+ Rails.application.config.video_available=false
+ end
+
+ after(:all) do
+ Rails.application.config.video_available=@old_video_available
end
it "success path" do
FactoryGirl.create(:latency_tester)
fast_signin user, '/client#/account/audio'
find("div.account-audio a[data-purpose='add-profile']").trigger(:click)
- walk_gear_wizard
+
+ # step 1 - intro
+ find('.btn-next').trigger(:click)
+
+ # step 2 - select gear
+ find('.ftue-step-title', text: 'Select & Test Audio Gear')
+ should_not have_selector('.resync-status') # when you enter this step,
+ jk_select('Built-in', 'div[layout-wizard-step="1"] select.select-audio-input-device')
+ find('.btn-next.button-orange:not(.disabled)').trigger(:click)
+
+ # step 3 - configure tracks
+ find('.ftue-step-title', text: 'Configure Tracks')
+
+ # drag one input over to tracks area http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element#drag_to-instance_method
+ input = first('.ftue-input')
+ track_slot = first('.track-target')
+ input.drag_to(track_slot)
+
+ find('.btn-next.button-orange:not(.disabled)').trigger(:click)
+
+ # step 4 - configure voice chat
+ find('.ftue-step-title', text: 'Configure Voice Chat')
+ find('.btn-next.button-orange:not(.disabled)').trigger(:click)
+
+ # step 5 - configure direct monitoring
+ find('.ftue-step-title', text: 'Turn Off Direct Monitoring')
+
+ # make a diversion into the 'adjust gear speed' dialog
+ find('.adjust-settings-direct-monitor').trigger(:click)
+ # should see dialog header
+ find('h1', text: 'Adjust Gear Speed')
+ # change to 'moderate' speed
+ find('.speed-option.setting-fair ins').trigger(:click)
+ # should cause a spinner/io test, and then save button comes up as clickable
+ find('.btnSave.button-orange:not(.disabled)').trigger(:click)
+
+ find('.btn-next.button-orange:not(.disabled)').trigger(:click)
+
+ # step 6 - Test Router & Network
+ find('.ftue-step-title', text: 'Test Router & Network')
+ find('.button-orange.start-network-test').trigger(:click)
+ find('.user-btn', text: 'RUN NETWORK TEST ANYWAY').trigger(:click)
+ find('.button-orange.start-network-test')
+ find('.btn-next.button-orange:not(.disabled)').trigger(:click)
+
+ # step 7 - Success
+ find('.ftue-step-title', text: 'Success!')
+ find('.btn-close.button-orange').trigger(:click)
# should see prompt afterwards about joining a test session
find('h1', text: 'join test session')
diff --git a/web/spec/support/client_interactions.rb b/web/spec/support/client_interactions.rb
index 330e3bf95..2798f394a 100644
--- a/web/spec/support/client_interactions.rb
+++ b/web/spec/support/client_interactions.rb
@@ -125,53 +125,3 @@ def close_websocket
page.evaluate_script("window.JK.JamServer.close(true)")
end
-# does not launch it; expects that to have just been done
-def walk_gear_wizard
- # step 1 - intro
- find('.btn-next').trigger(:click)
-
- # step 2 - select gear
- find('.ftue-step-title', text: 'Select & Test Audio Gear')
- should_not have_selector('.resync-status') # when you enter this step,
- jk_select('Built-in', 'div[layout-wizard-step="1"] select.select-audio-input-device')
- find('.btn-next.button-orange:not(.disabled)').trigger(:click)
-
- # step 3 - configure tracks
- find('.ftue-step-title', text: 'Configure Tracks')
-
- # drag one input over to tracks area http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element#drag_to-instance_method
- input = first('.ftue-input')
- track_slot = first('.track-target')
- input.drag_to(track_slot)
-
- find('.btn-next.button-orange:not(.disabled)').trigger(:click)
-
- # step 4 - configure voice chat
- find('.ftue-step-title', text: 'Configure Voice Chat')
- find('.btn-next.button-orange:not(.disabled)').trigger(:click)
-
- # step 5 - configure direct monitoring
- find('.ftue-step-title', text: 'Turn Off Direct Monitoring')
-
- # make a diversion into the 'adjust gear speed' dialog
- find('.adjust-settings-direct-monitor').trigger(:click)
- # should see dialog header
- find('h1', text: 'Adjust Gear Speed')
- # change to 'moderate' speed
- find('.speed-option.setting-fair ins').trigger(:click)
- # should cause a spinner/io test, and then save button comes up as clickable
- find('.btnSave.button-orange:not(.disabled)').trigger(:click)
-
- find('.btn-next.button-orange:not(.disabled)').trigger(:click)
-
- # step 6 - Test Router & Network
- find('.ftue-step-title', text: 'Test Router & Network')
- find('.button-orange.start-network-test').trigger(:click)
- find('.user-btn', text: 'RUN NETWORK TEST ANYWAY').trigger(:click)
- find('.button-orange.start-network-test')
- find('.btn-next.button-orange:not(.disabled)').trigger(:click)
-
- # step 7 - Success
- find('.ftue-step-title', text: 'Success!')
- find('.btn-close.button-orange').trigger(:click)
-end
\ No newline at end of file