* VRFS-2879 - adding 3 product pages (jamblaster, platform, jamtracks)

This commit is contained in:
Seth Call 2015-03-31 21:08:09 -05:00
parent 84ac9f049c
commit 80a48c60c6
18 changed files with 489 additions and 139 deletions

View File

@ -2740,6 +2740,12 @@
logger.debug("Unstable clocks: ", names, unstable)
context.JK.Banner.showAlert("Couldn't open metronome", context._.template($('#template-help-metronome-unstable').html(), {names: names}, { variable: 'data' }));
} else {
var data = {
value: 1,
session_size: sessionModel.participants().length,
user_id: context.JK.currentUserId,
user_name: context.JK.currentUserName }
context.stats.write('web.metronome.open', {})
var bpm = 120;
logger.debug("opening the metronome with bpm: " + bpm + ", sound:" + metroSound)
rest.openMetronome({id: sessionModel.id()})

View File

@ -0,0 +1,62 @@
(function (context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.IndividualJamTrack = function (app) {
var rest = context.JK.Rest();
var logger = context.JK.logger;
var $page = null;
var $jamtrack_name = null;
var $previews = null;
var $jamTracksButton = null;
var $genericHeader = null;
var $individualizedHeader = null;
function fetchJamTrack() {
rest.getJamTrack({plan_code: gon.jam_track_plan_code})
.done(function (jam_track) {
logger.debug("jam_track", jam_track)
if(!gon.just_previews) {
if (gon.generic) {
$genericHeader.removeClass('hidden');
}
else {
$individualizedHeader.removeClass('hidden')
$jamtrack_name.text(jam_track.name);
$jamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrack')
}
}
context._.each(jam_track.tracks, function (track) {
var $element = $('<div class="jam-track-preview-holder"></div>')
$previews.append($element);
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false})
})
$previews.append('<br clear = "all" />')
})
.fail(function () {
app.notify({title: 'Unable to fetch JamTrack', text: "Please refresh the page or try again later."})
})
}
function initialize() {
$page = $('body')
$jamtrack_name = $page.find('.jamtrack_name')
$previews = $page.find('.previews')
$jamTracksButton = $page.find('.browse-jamtracks-wrapper .white-bordered-button')
$genericHeader = $page.find('h1.generic')
$individualizedHeader = $page.find('h1.individualized')
fetchJamTrack();
}
this.initialize = initialize;
}
})(window, jQuery);

View File

@ -0,0 +1,60 @@
(function (context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.IndividualJamTrackBand = function (app) {
var rest = context.JK.Rest();
var logger = context.JK.logger;
var $page = null;
var $jamTrackBandInfo = null;
var $jamTrackNoun = null;
var $previews = null;
var $jamTracksButton = null;
var $checkItOut = null;
function fetchJamTrack() {
rest.getJamTrackWithArtistInfo({plan_code: gon.jam_track_plan_code})
.done(function (jam_track) {
logger.debug("jam_track", jam_track)
$jamTrackBandInfo.text(jam_track.band_jam_track_count + ' ' + jam_track.original_artist);
$jamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrack')
if(jam_track.band_jam_track_count == 1) {
$jamTrackNoun.text('JamTrack')
$checkItOut.text(', Check It Out!')
}
context._.each(jam_track.tracks, function (track) {
var $element = $('<div class="jam-track-preview-holder"></div>')
$previews.append($element);
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false})
})
$previews.append('<br clear = "all" />')
})
.fail(function () {
app.notify({title: 'Unable to fetch JamTrack', text: "Please refresh the page or try again later."})
})
}
function initialize() {
$page = $('body')
$jamTrackBandInfo = $page.find('.jamtrack_band_info')
$previews = $page.find('.previews')
$jamTracksButton = $page.find('.browse-jamtracks-wrapper .white-bordered-button')
$jamTrackNoun = $page.find('.jamtrack_noun')
$checkItOut = $page.find('.check-it-out')
fetchJamTrack();
}
this.initialize = initialize;
}
})(window, jQuery);

View File

@ -62,6 +62,8 @@
//= require web/session_info
//= require web/recordings
//= require web/welcome
//= require web/individual_jamtrack
//= require web/individual_jamtrack_band
//= require fakeJamClient
//= require fakeJamClientMessages
//= require fakeJamClientRecordings

View File

@ -134,7 +134,7 @@ input[type="button"] {
}
.hidden {
display:none;
display:none !important;
}
.small {

View File

@ -5,11 +5,17 @@ body.web.landing_page {
.two_by_two {
h1 {
margin:0 0 10px;
margin:0 0 5px;
padding:7px 0;
display:inline-block;
}
.row {
@include border_box_sizing;
&:nth-of-type(1) {
padding:20px 0 0 0;
}
.column {
width:50%;
@ -19,7 +25,7 @@ body.web.landing_page {
}
}
&.landing_jamtrack {
&.landing_jamtrack, &.landing_product {
.landing-tag {
left:50%;
@ -34,7 +40,10 @@ body.web.landing_page {
}
ul {
list-style-type: disc;
}
li {
margin-left:20px;
}
.video-container {
margin-top:0;

View File

@ -0,0 +1,53 @@
@import "client/common.css.scss";
body.web.landing_product {
h1.product-headline {
color:white;
background-color:$ColorScreenPrimary;
margin-bottom:20px;
padding:7px;
border-radius:4px;
}
.product-description {
margin-bottom:20px;
}
.white-bordered-button {
margin-top: 20px;
}
.cta-big-button {
text-align:center;
width:90%;
}
.linked-video-holder {
text-align:center;
width:90%;
margin-top:20px;
}
.previews {
margin-top:10px;
}
.jamtrack-reasons {
margin-top:20px;
}
.jam-track-preview-holder {
margin-bottom: 7px;
float: left;
&[data-track-type="Master"] {
width: 100%;
}
&[data-track-type="Track"] {
width: 50%;
}
}
}

View File

@ -77,5 +77,25 @@ class LandingsController < ApplicationController
render 'individual_jamtrack_band', layout: 'web'
end
def product_jamblaster
render 'product_jamblaster', layout: 'web'
end
def product_platform
render 'product_platform', layout: 'web'
end
def product_jamtracks
gon.generic = true
gon.just_previews = true
jam_track = JamTrack.select('plan_code').where(plan_code: Rails.application.config.nominated_jam_track).first
unless jam_track
jam_track = JamTrack.first
end
gon.jam_track_plan_code = jam_track.plan_code
render 'product_jamtracks', layout: 'web'
end
end

View File

@ -31,75 +31,16 @@
| Unlike traditional backing tracks, JamTracks are complete multitrack recordings,&nbsp;
| with fully isolated tracks for each part. Used with the free JamKazam app/service, you can:
ul.jamtrack-reasons
li - Solo just the individual track you want to play to hear and learn it
li - Mute just the track you want to play, and play along with the rest
li - Make audio recordings and share them via Facebook or URL
li - Make video recordings and share them via YouTube or URL
li - And even go online to play JamTracks with others in real time!
li Solo just the individual track you want to play to hear and learn it
li Mute just the track you want to play, and play along with the rest
li Make audio recordings and share them via Facebook or URL
li Make video recordings and share them via YouTube or URL
li And even go online to play JamTracks with others in real time!
br clear="all"
br clear="all"
javascript:
(function (context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.IndividualJamTrack = function (app) {
var rest = context.JK.Rest();
var logger = context.JK.logger;
var $page = null;
var $jamtrack_name = null;
var $previews = null;
var $jamTracksButton = null;
var $genericHeader = null;
var $individualizedHeader = null;
function fetchJamTrack() {
rest.getJamTrack({plan_code: gon.jam_track_plan_code})
.done(function (jam_track) {
logger.debug("jam_track", jam_track)
if(gon.generic) {
$genericHeader.removeClass('hidden');
}
else {
$individualizedHeader.removeClass('hidden')
$jamtrack_name.text(jam_track.name);
$jamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrack')
}
context._.each(jam_track.tracks, function (track) {
var $element = $('<div class="jam-track-preview-holder"></div>')
$previews.append($element);
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false})
})
$previews.append('<br clear = "all" />')
})
.fail(function () {
app.notify({title: 'Unable to fetch JamTrack', text: "Please refresh the page or try again later."})
})
}
function initialize() {
$page = $('body')
$jamtrack_name = $page.find('.jamtrack_name')
$previews = $page.find('.previews')
$jamTracksButton = $page.find('.browse-jamtracks-wrapper .white-bordered-button')
$genericHeader = $page.find('h1.generic')
$individualizedHeader = $page.find('h1.individualized')
fetchJamTrack();
}
this.initialize = initialize;
}
})(window, jQuery);
$(document).on('JAMKAZAM_READY', function(e, data) {
var song = new JK.IndividualJamTrack(data.app);

View File

@ -31,75 +31,15 @@
| Unlike traditional backing tracks, JamTracks are complete multitrack recordings,&nbsp;
| with fully isolated tracks for each part. Used with the free JamKazam app/service, you can:
ul.jamtrack-reasons
li - Solo just the individual track you want to play to hear and learn it
li - Mute just the track you want to play, and play along with the rest
li - Make audio recordings and share them via Facebook or URL
li - Make video recordings and share them via YouTube or URL
li - And even go online to play JamTracks with others in real time!
li Solo just the individual track you want to play to hear and learn it
li Mute just the track you want to play, and play along with the rest
li Make audio recordings and share them via Facebook or URL
li Make video recordings and share them via YouTube or URL
li And even go online to play JamTracks with others in real time!
br clear="all"
br clear="all"
javascript:
(function (context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.IndividualJamTrackBand = function (app) {
var rest = context.JK.Rest();
var logger = context.JK.logger;
var $page = null;
var $jamTrackBandInfo = null;
var $jamTrackNoun = null;
var $previews = null;
var $jamTracksButton = null;
var $checkItOut = null;
function fetchJamTrack() {
rest.getJamTrackWithArtistInfo({plan_code: gon.jam_track_plan_code})
.done(function (jam_track) {
logger.debug("jam_track", jam_track)
$jamTrackBandInfo.text(jam_track.band_jam_track_count + ' ' + jam_track.original_artist);
$jamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrack')
if(jam_track.band_jam_track_count == 1) {
$jamTrackNoun.text('JamTrack')
$checkItOut.text(', Check It Out!')
}
context._.each(jam_track.tracks, function (track) {
var $element = $('<div class="jam-track-preview-holder"></div>')
$previews.append($element);
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false})
})
$previews.append('<br clear = "all" />')
})
.fail(function () {
app.notify({title: 'Unable to fetch JamTrack', text: "Please refresh the page or try again later."})
})
}
function initialize() {
$page = $('body')
$jamTrackBandInfo = $page.find('.jamtrack_band_info')
$previews = $page.find('.previews')
$jamTracksButton = $page.find('.browse-jamtracks-wrapper .white-bordered-button')
$jamTrackNoun = $page.find('.jamtrack_noun')
$checkItOut = $page.find('.check-it-out')
fetchJamTrack();
}
this.initialize = initialize;
}
})(window, jQuery);
$(document).on('JAMKAZAM_READY', function(e, data) {
var song = new JK.IndividualJamTrackBand(data.app);
song.initialize();

View File

@ -0,0 +1,37 @@
- provide(:page_name, 'landing_page full landing_product product_jamblaster')
.two_by_two
.row
.column
h1.product-headline
| The JamBlaster by JamKazam
p.product-description
| The JamBlaster is a device designed from the ground up to meet the unique requirements of real-time, online, distributed music performance. This device vastly extends the range/distance over which musicians can play together across the Internet.
ul
li Radically reduces audio processing latency compared to today's industry standard computers and audio interfaces.
li Delivers plug-and-play ease of use, with no worries about hardware and software incompatibilities, driver problems, and arcane configurations.
li Combines both a computer and an audio interface into a single elegant device.
li Works with computers (even old crappy ones), tablets or smartphones.
li Works with your favorite recording software applications like Garage Band, Reaper, Pro Tools, etc.
.column
h1 See What You Can Do With The JamBlaster
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/2Zk7-04IAx4" frameborder="0" allowfullscreen
br clear="all"
.row
.column
h1
| Want a JamBlaster? Need One?
p If you are a registered member of the JamKazam community, and if you "know" you will buy a JamBlaster for $199 as soon as they become available, then click the button below to add yourself to our wait list. When we get enough "virtual orders", we'll reach back out to all signups to take real orders.
.cta-big-button
a.white-bordered-button href="#" SIGN UP TO BUY A JAMBLASTER
.column
h1 Want To Know More About Latency?
p
| How is it possible that someone hundreds of miles away could feel like they are 20 feet away from you? Check out this video on latency to understand more:
.linked-video-holder
a href="https://www.youtube.com/watch?v=mB3_KMse-J4" rel="external" Watch Video About Latency - It's Pretty Fascinating
br clear="all"
br clear="all"

View File

@ -0,0 +1,42 @@
- provide(:page_name, 'landing_page full landing_product product_jamtracks')
.two_by_two
.row
.column
h1.product-headline
| JamTracks by JamKazam
p.product-description
| We have 100+ amazing JamTracks. Click the play buttons to hear the master mix and fully isolated track. All are included in each JamTrack.
.previews
.column
h1 See What You Can With JamTracks
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/2Zk7-04IAx4" frameborder="0" allowfullscreen
br clear="all"
.row
.column
h1
| Get Your First JamTrack Free Now!
p Click the GET A JAMTRACK FREE button below. Browse to find the one you want, click the Add to cart, and we'll apply a credit during checkout to make the first one free! We're confident you'll be back for more.
.cta-big-button
a.white-bordered-button href="/client#/jamtrack" GET A JAMTRACK FREE!
.column
h1 Why are JamTracks Better than Backing Tracks?
p
| JamTracks are the best way to play with your favorite music. Unlike traditional backing tracks, JamTracks are complete multitrack recordings, with fully isolated tracks for each part. Used with the free JamKazam app/service, you can:
ul.jamtrack-reasons
li Solo just the individual track you want to play to hear and learn it
li Mute just the track you want to play, and play along with the rest
li Make audio recordings and share them via Facebook or URL
li Make video recordings and share them via YouTube or URL
li And even go online to play JamTracks with others in real time!
br clear="all"
br clear="all"
javascript:
$(document).on('JAMKAZAM_READY', function (e, data) {
var song = new JK.IndividualJamTrack(data.app);
song.initialize();
})

View File

@ -0,0 +1,40 @@
- provide(:page_name, 'landing_page full landing_product product_platform')
.two_by_two
.row
.column
h1.product-headline
| The JamKazam Platform
p.product-description
| JamKazam is an innovative live music platform and social network, enabling musicians to play music together in real time from different locations over the internet as if they are sitting in the same room. The core platform is free to use and delivers immense value:
ul
li Play music from home with your friends and bandmates without packing and transporting gear, and without needing a rehearsal space
li Connect with new musician friends from our community of thousands of musicians to play more often, explore new styles, learn from others
li Find musicians to join your band, or find a band to join, either virtual on JamKazam, or real world to meet and play in person
li Schedule sessions or jump into ad hoc jams
li Make and share recordings or session performances via Facebook or URL
li Live broadcast sessions to family, friends, and fans
li List your band for hire to play gigs at clubs and events
li List yourself for hire to play studio sessions or lay down recorded tracks remotely
.column
h1 See What You Can Do With JamKazam
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
br clear="all"
.row
.column
h1
| Sign Up for JamKazam Now, It's Free!
p Yep, seriously. Sign up and start playing music online in real time with your friends - or make new ones from our community of thousands of musicians. It's free to play with others as much as you want.
.cta-big-button
a.white-bordered-button href="/signup" SIGN UP NOW FOR YOUR FREE ACCOUNT
.column
h1 Does This Really Work?
p
| Feeling skeptical about whether this can actually work? That's natural. We'd encourage you to watch a video of endorsements and kudos from just a few of the musicians who use JamKazam.
.linked-video-holder
a href="https://www.youtube.com/watch?v=_7qj5RXyHCo" rel="external" Check Out Endorsements Of Real Users
br clear="all"
br clear="all"

View File

@ -318,5 +318,7 @@ if defined?(Bundler)
config.metronome_available = true
config.backing_tracks_available = true
config.one_free_jamtrack_per_user = true
config.nominated_jam_track = 'jamtrack-pearljam-alive'
end
end

View File

@ -33,6 +33,11 @@ SampleApp::Application.routes.draw do
match '/landing/jamtracks/:plan_code', to: 'landings#individual_jamtrack', via: :get, as: 'individual_jamtrack'
match '/landing/jamtracks/band/:plan_code', to: 'landings#individual_jamtrack_band', via: :get, as: 'individual_jamtrack_band'
# product pages
match '/products/jamblaster', to: 'landings#product_jamblaster', via: :get, as: 'product_jamblaster'
match '/products/platform', to: 'landings#product_platform', via: :get, as: 'product_platform'
match '/products/jamtracks', to: 'landings#product_jamtracks', via: :get, as: 'product_jamtracks'
# oauth
match '/auth/:provider/callback', :to => 'sessions#oauth_callback'
match '/auth/failure', :to => 'sessions#failure'

View File

@ -14,7 +14,6 @@ describe "Individual JamTrack Band", :js => true, :type => :feature, :capybara_f
let(:user) { FactoryGirl.create(:user) }
let(:jamtrack_acdc_backinblack) { @jamtrack_acdc_backinblack }
let(:jamtrack_pearljam_evenflow) { @jamtrack_pearljam_evenflow }
let(:billing_info) {
{
@ -44,11 +43,9 @@ describe "Individual JamTrack Band", :js => true, :type => :feature, :capybara_f
@created_accounts = []
@jamtrack_acdc_backinblack = FactoryGirl.create(:jam_track, name: 'Back in Black', original_artist: 'AC/DC', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-acdc-backinblack')
@jamtrack_pearljam_evenflow = FactoryGirl.create(:jam_track, name: 'Even Flow', original_artist: 'Pearl Jam', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-pearljam-evenflow')
# make sure plans are there
@recurlyClient.create_jam_track_plan(@jamtrack_acdc_backinblack) unless @recurlyClient.find_jam_track_plan(@jamtrack_acdc_backinblack)
@recurlyClient.create_jam_track_plan(@jamtrack_pearljam_evenflow) unless @recurlyClient.find_jam_track_plan(@jamtrack_pearljam_evenflow)
end
@ -82,6 +79,9 @@ describe "Individual JamTrack Band", :js => true, :type => :feature, :capybara_f
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrack")
find('a.white-bordered-button').trigger(:click)
find('h1', text: 'jamtracks')
end
it "logged in" do
@ -98,6 +98,9 @@ describe "Individual JamTrack Band", :js => true, :type => :feature, :capybara_f
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrack")
find('a.white-bordered-button').trigger(:click)
find('h1', text: 'jamtracks')
end
end
end

View File

@ -14,7 +14,6 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
let(:user) { FactoryGirl.create(:user) }
let(:jamtrack_acdc_backinblack) { @jamtrack_acdc_backinblack }
let(:jamtrack_pearljam_evenflow) { @jamtrack_pearljam_evenflow }
let(:billing_info) {
{
@ -44,11 +43,9 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
@created_accounts = []
@jamtrack_acdc_backinblack = FactoryGirl.create(:jam_track, name: 'Back in Black', original_artist: 'AC/DC', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-acdc-backinblack')
@jamtrack_pearljam_evenflow = FactoryGirl.create(:jam_track, name: 'Even Flow', original_artist: 'Pearl Jam', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-pearljam-evenflow')
# make sure plans are there
@recurlyClient.create_jam_track_plan(@jamtrack_acdc_backinblack) unless @recurlyClient.find_jam_track_plan(@jamtrack_acdc_backinblack)
@recurlyClient.create_jam_track_plan(@jamtrack_pearljam_evenflow) unless @recurlyClient.find_jam_track_plan(@jamtrack_pearljam_evenflow)
end
@ -82,6 +79,9 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrack")
find('a.white-bordered-button').trigger(:click)
find('h1', text: 'jamtracks')
end
it "logged in" do
@ -98,6 +98,9 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrack")
find('a.white-bordered-button').trigger(:click)
find('h1', text: 'jamtracks')
end
it "generic version" do
@ -114,6 +117,9 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
end
end
find('a.white-bordered-button')['href'].should eq("/client#/jamtrack")
find('a.white-bordered-button').trigger(:click)
find('h1', text: 'jamtracks')
end
end
end

View File

@ -0,0 +1,122 @@
require 'spec_helper'
describe "Product Pages", :js => true, :type => :feature, :capybara_feature => true do
subject { page }
before(:all) do
ShoppingCart.delete_all
JamTrackRight.delete_all
JamTrack.delete_all
JamTrackTrack.delete_all
JamTrackLicensor.delete_all
end
let(:user) { FactoryGirl.create(:user) }
let(:jamtrack_acdc_backinblack) { @jamtrack_acdc_backinblack }
let(:billing_info) {
{
first_name: 'Seth',
last_name: 'Call',
address1: '10704 Buckthorn Drive',
city: 'Austin',
state: 'Texas',
country: 'US',
zip: '78759',
number: '4111111111111111',
month: '08',
year: '2017',
verification_value: '012'
}
}
def create_account(user, billing_info)
@recurlyClient.create_account(user, billing_info)
@created_accounts << user
end
before(:all) do
@recurlyClient = RecurlyClient.new
@created_accounts = []
@jamtrack_acdc_backinblack = FactoryGirl.create(:jam_track, name: 'Back in Black', original_artist: 'AC/DC', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-acdc-backinblack')
# make sure plans are there
@recurlyClient.create_jam_track_plan(@jamtrack_acdc_backinblack) unless @recurlyClient.find_jam_track_plan(@jamtrack_acdc_backinblack)
end
after(:each) do
@created_accounts.each do |user|
if user.recurly_code
begin
@account = Recurly::Account.find(user.recurly_code)
if @account.present?
@account.destroy
end
rescue
end
end
end
end
describe "JamBlaster" do
it "logged out" do
visit "/products/jamblaster"
find('h1', text: 'The JamBlaster by JamKazam')
find('a.white-bordered-button')['href'].should eq("#") # nowhere to go yet
end
it "logged in" do
fast_signin(user, "/products/jamblaster")
find('h1', text: 'The JamBlaster by JamKazam')
find('a.white-bordered-button')['href'].should eq("#") # nowhere to go yet
end
end
describe "Platform" do
it "logged out" do
visit "/products/platform"
find('h1', text: 'The JamKazam Platform')
find('a.white-bordered-button').trigger(:click)
find('h2', text: 'Create your free JamKazam account')
end
it "logged in" do
fast_signin(user, "/products/platform")
find('h1', text: 'The JamKazam Platform')
find('a.white-bordered-button').trigger(:click)
# clicking /signup just redirects you to the client
find('h2', text: 'create session')
end
end
describe "JamTracks" do
it "logged out" do
visit "/products/jamtracks"
find('h1', text: 'JamTracks by JamKazam')
find('a.white-bordered-button').trigger(:click)
find('h1', text: 'jamtracks')
end
it "logged in" do
fast_signin(user, "/products/jamtracks")
find('h1', text: 'JamTracks by JamKazam')
find('a.white-bordered-button').trigger(:click)
find('h1', text: 'jamtracks')
end
end
end