diff --git a/cms/static/cms/js/build.js b/cms/static/cms/js/build.js index 70690676af..7c539fc6e1 100644 --- a/cms/static/cms/js/build.js +++ b/cms/static/cms/js/build.js @@ -21,7 +21,6 @@ 'js/factories/base', 'js/factories/course_create_rerun', 'js/factories/course_info', - 'js/factories/edit_tabs', 'js/factories/export', 'js/factories/group_configurations', 'js/certificates/factories/certificates_page_factory', diff --git a/cms/static/js/factories/edit_tabs.js b/cms/static/js/factories/edit_tabs.js index fddb8648a6..9f2912fc91 100644 --- a/cms/static/js/factories/edit_tabs.js +++ b/cms/static/js/factories/edit_tabs.js @@ -1,20 +1,25 @@ -define([ - 'js/models/explicit_url', 'js/views/tabs', 'xmodule', 'cms/js/main', 'xblock/cms.runtime.v1' -], function(TabsModel, TabsEditView, xmoduleLoader) { - 'use strict'; - return function(courseLocation, explicitUrl) { - xmoduleLoader.done(function() { - var model = new TabsModel({ - id: courseLocation, - explicit_url: explicitUrl - }), - editView; +import * as TabsModel from 'js/models/explicit_url'; +import * as TabsEditView from 'js/views/tabs'; +import * as xmoduleLoader from 'xmodule'; +import './base'; +import 'cms/js/main'; +import 'xblock/cms.runtime.v1'; - editView = new TabsEditView({ - el: $('.tab-list'), - model: model, - mast: $('.wrapper-mast') - }); +'use strict'; +export default function EditTabsFactory(courseLocation, explicitUrl) { + xmoduleLoader.done(function() { + var model = new TabsModel({ + id: courseLocation, + explicit_url: explicitUrl + }), + editView; + + editView = new TabsEditView({ + el: $('.tab-list'), + model: model, + mast: $('.wrapper-mast') }); - }; -}); + }); +}; + +export {EditTabsFactory} diff --git a/cms/templates/edit-tabs.html b/cms/templates/edit-tabs.html index 07500296dc..d2d06e25dc 100644 --- a/cms/templates/edit-tabs.html +++ b/cms/templates/edit-tabs.html @@ -22,7 +22,7 @@ <%block name="page_bundle"> <%static:webpack entry="js/factories/edit_tabs"> EditTabsFactory("${context_course.location | n, js_escaped_string}", "${reverse('tabs_handler', kwargs={'course_key_string': context_course.id})}"); - }); + <%block name="content"> diff --git a/common/djangoapps/terrain/ui_helpers.py b/common/djangoapps/terrain/ui_helpers.py index b43b485502..31522f126f 100644 --- a/common/djangoapps/terrain/ui_helpers.py +++ b/common/djangoapps/terrain/ui_helpers.py @@ -53,8 +53,14 @@ REQUIREJS_WAIT = { # Pages re.compile(r'^Pages \|'): [ - 'js/models/explicit_url', 'js/views/tabs', - 'xmodule', 'cms/js/main', 'xblock/cms.runtime.v1' + 'js/models/explicit_url', 'js/views/tabs', 'cms/js/main', 'xblock/cms.runtime.v1' + ], +} + +TRUTHY_WAIT = { + # Pages + re.compile(r'^Pages \|'): [ + 'XBlock' ], } @@ -71,6 +77,11 @@ def wait_for_js_to_load(): world.wait_for_requirejs(req) break + for test, req in TRUTHY_WAIT.items(): + if test.search(world.browser.title): + for var in req: + world.wait_for_js_variable_truthy(var) + # Selenium's `execute_async_script` function pauses Selenium's execution # until the browser calls a specific Javascript callback; in effect, diff --git a/webpack.common.config.js b/webpack.common.config.js index 6458225f08..2d648c4829 100644 --- a/webpack.common.config.js +++ b/webpack.common.config.js @@ -36,6 +36,7 @@ module.exports = { 'js/factories/context_course': './cms/static/js/factories/context_course.js', 'js/factories/library': './cms/static/js/factories/library.js', 'js/factories/xblock_validation': './cms/static/js/factories/xblock_validation.js', + 'js/factories/edit_tabs': './cms/static/js/factories/edit_tabs.js', 'js/sock': './cms/static/js/sock.js', // LMS