diff --git a/addons/web/static/tests/chrome/user_menu_tests.js b/addons/web/static/tests/chrome/user_menu_tests.js
new file mode 100644
index 00000000000..f05a8a48120
--- /dev/null
+++ b/addons/web/static/tests/chrome/user_menu_tests.js
@@ -0,0 +1,31 @@
+odoo.define('web.user_menu_tests', function (require) {
+"use strict";
+
+var testUtils = require('web.test_utils');
+var UserMenu = require('web.UserMenu');
+var Widget = require('web.Widget');
+
+QUnit.module('chrome', {}, function () {
+ QUnit.module('UserMenu');
+
+ QUnit.test('basic rendering', function (assert) {
+ assert.expect(3);
+
+ var parent = new Widget();
+
+ testUtils.addMockEnvironment(parent, {});
+ var userMenu = new UserMenu(parent);
+ userMenu.appendTo($('body'));
+
+ assert.strictEqual($('.o_user_menu').length, 1,
+ "should have a user menu in the DOM");
+ assert.ok(userMenu.$el.hasClass('o_user_menu'),
+ "user menu in DOM should be from user menu widget instantiation");
+ assert.strictEqual(userMenu.$('.dropdown-item[data-menu="shortcuts"]').length, 1,
+ "should have a 'Shortcuts' item");
+
+ userMenu.destroy();
+ });
+});
+
+});
diff --git a/addons/web/views/webclient_templates.xml b/addons/web/views/webclient_templates.xml
index d673ad475f6..404c62430c8 100644
--- a/addons/web/views/webclient_templates.xml
+++ b/addons/web/views/webclient_templates.xml
@@ -546,6 +546,7 @@
+