diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index ef5aad42df4..8ac94b40b69 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -19970,4 +19970,37 @@ QUnit.module("Views", (hooks) => { assert.verifySteps(["switch to form - resId: 5 activeIds: 5,1,2,3,4"]); } ); + + QUnit.test("onchange should only be called once after pressing enter on a field", async function (assert) { + serverData.models.foo.onchanges = { + foo(record) { + if (record.foo) { + record.int_field = 1; + } + }, + }; + await makeView({ + type: "list", + resModel: "foo", + serverData, + arch: ` + + + + `, + async mockRPC(_, { method }) { + if (method === "onchange") { + assert.step(method); + } + }, + }); + await click(target.querySelector(".o_data_cell")); + target.querySelector(".o_field_widget[name=foo] input").value = "1"; + await triggerEvents(target, ".o_field_widget[name=foo] input", [ + ["keydown", { key: "Enter" }], + ["change"], + ]); + await nextTick(); + assert.verifySteps(["onchange"], "There should only be one onchange call"); + }); });