diff --git a/addons/board/static/tests/dashboard_tests.js b/addons/board/static/tests/dashboard_tests.js
index 83e65f7a9e6..d77055f11b8 100644
--- a/addons/board/static/tests/dashboard_tests.js
+++ b/addons/board/static/tests/dashboard_tests.js
@@ -417,5 +417,57 @@ QUnit.test('non-existing action in a dashboard', function (assert) {
form.destroy();
});
+QUnit.test('clicking on a kanban\'s button should trigger the action', function (assert) {
+ assert.expect(2);
+
+ var form = createView({
+ View: FormView,
+ model: 'board',
+ data: this.data,
+ arch: '
',
+ archs: {
+ 'partner,false,kanban':
+ '' +
+ '' +
+ '' +
+ '
' +
+ '' +
+ '
' +
+ '',
+ },
+ intercepts: {
+ execute_action: function (event) {
+ var data = event.data;
+ assert.strictEqual(data.env.model, 'partner', "should have correct model");
+ assert.strictEqual(data.action_data.name, 'sitting_on_a_park_bench',
+ "should call correct method");
+ }
+ },
+
+ mockRPC: function (route) {
+ if (route === '/board/static/src/img/layout_1-1-1.png') {
+ return $.when();
+ }
+ if (route === '/web/action/load') {
+ return $.when({res_model: 'partner', view_mode: 'kanban', views: [[false, 'kanban']]});
+ }
+ if (route === '/web/dataset/search_read') {
+ return $.when({records: [{foo: 'aqualung'}]});
+ }
+ return this._super.apply(this, arguments);
+ }
+ });
+
+ form.$('.o_kanban_test').find('button:first').click();
+
+ form.destroy();
+});
+
});
diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js
index 91ada3a2629..6e1ac4a6e2a 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -229,6 +229,7 @@ var KanbanController = BasicController.extend({
* @param {OdooEvent} event
*/
_onButtonClicked: function (event) {
+ event.stopPropagation();
var self = this;
var attrs = event.data.attrs;
var record = event.data.record;