diff --git a/addons/web/static/src/views/fields/relational_utils.xml b/addons/web/static/src/views/fields/relational_utils.xml
index f0da470686d..6173ec4e9be 100644
--- a/addons/web/static/src/views/fields/relational_utils.xml
+++ b/addons/web/static/src/views/fields/relational_utils.xml
@@ -13,6 +13,9 @@
+
+
+
diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js
index 300d051593f..fff8aab00e8 100644
--- a/addons/web/static/tests/views/fields/one2many_field_tests.js
+++ b/addons/web/static/tests/views/fields/one2many_field_tests.js
@@ -12325,4 +12325,48 @@ QUnit.module("Fields", (hooks) => {
assert.containsN(target, ".o_list_renderer tbody tr", 4);
}
);
+
+ QUnit.test("one2many can delete a new record", async (assert) => {
+ await makeView({
+ type: "form",
+ resModel: "partner",
+ serverData,
+ arch: `
+ `,
+ resId: 1,
+ mockRPC(route, args) {
+ if (args.method === "write") {
+ assert.step("write"); // should not happen
+ }
+ },
+ });
+ await clickEdit(target);
+ assert.containsNone(target, ".o_kanban_record:not(.o_kanban_ghost)");
+
+ await click(target, ".o-kanban-button-new");
+ await clickSave(target.querySelector(".modal"));
+ assert.containsOnce(target, ".o_kanban_record:not(.o_kanban_ghost)");
+
+ await click(target, ".o_kanban_record:not(.o_kanban_ghost)");
+ assert.containsOnce(target, ".modal .o_btn_remove");
+
+ await click(target, ".modal .o_btn_remove");
+ assert.containsNone(target, ".o_kanban_record:not(.o_kanban_ghost)");
+
+ await clickSave(target);
+ });
});