diff --git a/app/models/User.coffee b/app/models/User.coffee index 6af72c853..fb2c8e5bf 100644 --- a/app/models/User.coffee +++ b/app/models/User.coffee @@ -101,6 +101,17 @@ module.exports = class User extends CocoModel application.tracker.identify castButtonTextGroup: @castButtonTextGroup @castButtonTextGroup + getDirectFirstGroup: -> + # Group 0 is original behavior + # Group 1 goes directly to first level if new user + unless @directFirstGroup? + if me.isAdmin() + @directFirstGroup = 0 + else + @directFirstGroup = me.get('testGroupNumber') % 2 + application.tracker.identify directFirstGroup: @directFirstGroup + @directFirstGroup + getHighlightArrowSoundGroup: -> return @highlightArrowGroup if @highlightArrowGroup group = me.get('testGroupNumber') % 8 diff --git a/app/views/play/WorldMapView.coffee b/app/views/play/WorldMapView.coffee index c650b67d1..2d24c4538 100644 --- a/app/views/play/WorldMapView.coffee +++ b/app/views/play/WorldMapView.coffee @@ -108,7 +108,8 @@ module.exports = class WorldMapView extends RootView @$el.find('.level').tooltip() @$el.addClass _.string.slugify @terrain @updateVolume() - @highlightElement '.level.next', delay: 500, duration: 60000, rotation: 0, sides: ['top'] unless window.currentModal + unless window.currentModal or not @ABTestSkipHighlight? or @ABTestSkipHighlight + @highlightElement '.level.next', delay: 500, duration: 60000, rotation: 0, sides: ['top'] afterInsert: -> super() @@ -123,6 +124,28 @@ module.exports = class WorldMapView extends RootView for session in @sessions.models @levelStatusMap[session.get('levelID')] = if session.get('state')?.complete then 'complete' else 'started' @render() + @initABTestAutoFirstLevel() + + initABTestAutoFirstLevel: -> + # A/B testing directly navigating to first level + # Excluding admins and users who have already started + # TODO: Cleanup @afterRender when this test is finished + firstLevelID = 'dungeons-of-kithgard' + unless @nextLevel? or firstLevelID of @levelStatusMap + testGroup = me.getDirectFirstGroup() + if testGroup is 1 + @ABTestSkipHighlight = true + target = $("a[data-level-id='" + firstLevelID + "']") + return if $(target).attr('disabled') or $(target).parent().hasClass 'locked' + levelElement = $(target).parents('.level') + levelID = levelElement.data('level-id') + @startLevel levelElement + window.tracker?.trackEvent 'World Map', Action: 'ABAutoFirst', levelID: firstLevelID, directFirstGroup: testGroup + else if not me.isAdmin() + window.tracker?.trackEvent 'World Map', Action: 'ABAutoFirst', levelID: firstLevelID, directFirstGroup: testGroup + @ABTestSkipHighlight = false + else + @ABTestSkipHighlight = false onClickMap: (e) -> @$levelInfo?.hide() diff --git a/app/views/play/level/PlayLevelView.coffee b/app/views/play/level/PlayLevelView.coffee index b2abfe530..6b1277c13 100644 --- a/app/views/play/level/PlayLevelView.coffee +++ b/app/views/play/level/PlayLevelView.coffee @@ -433,7 +433,10 @@ module.exports = class PlayLevelView extends RootView @victorySeen = true victoryTime = (new Date()) - @loadEndTime if victoryTime > 10 * 1000 # Don't track it if we're reloading an already-beaten level - application.tracker?.trackEvent 'Saw Victory', level: @level.get('name'), label: @level.get('name') + application.tracker?.trackEvent 'Saw Victory', + level: @level.get('name') + label: @level.get('name') + getDirectFirstGroup: me.getDirectFirstGroup() application.tracker?.trackTiming victoryTime, 'Level Victory Time', @levelID, @levelID, 100 showVictory: ->