diff --git a/lms/static/js/components/tabbed/views/tabbed_view.js b/lms/static/js/components/tabbed/views/tabbed_view.js index a3c4dfd8c5..77bc1b4210 100644 --- a/lms/static/js/components/tabbed/views/tabbed_view.js +++ b/lms/static/js/components/tabbed/views/tabbed_view.js @@ -41,12 +41,14 @@ }, setActiveTab: function (index) { + var tab = this.tabs[index], + view = tab.view; this.$('a.is-active').removeClass('is-active').attr('aria-selected', 'false'); this.$('a[data-index='+index+']').addClass('is-active').attr('aria-selected', 'true'); - var view = this.tabs[index].view; view.render(); this.$('.page-content-main').html(view.$el.html()); this.$('.sr-is-focusable').focus(); + this.router.navigate(tab.url, {replace: true}); }, switchTab: function (event) { diff --git a/lms/static/js/spec/components/tabbed/tabbed_view_spec.js b/lms/static/js/spec/components/tabbed/tabbed_view_spec.js index 69a18e045e..b9b5fb31fb 100644 --- a/lms/static/js/spec/components/tabbed/tabbed_view_spec.js +++ b/lms/static/js/spec/components/tabbed/tabbed_view_spec.js @@ -72,6 +72,11 @@ expect(view.$('.nav-item[data-index=0]')).toHaveAttr('aria-selected', 'false'); expect(view.$('.nav-item[data-index=1]')).toHaveAttr('aria-selected', 'true'); }); + + it('updates the page URL on tab switches without adding to browser history', function () { + view.$('.nav-item[data-index=1]').click(); + expect(Backbone.history.navigate).toHaveBeenCalledWith('test 2', {replace: true}); + }); }); } );