diff --git a/addons/web/static/src/views/fields/domain/domain_field.xml b/addons/web/static/src/views/fields/domain/domain_field.xml
index cf6c75a8215..7e208917a8d 100644
--- a/addons/web/static/src/views/fields/domain/domain_field.xml
+++ b/addons/web/static/src/views/fields/domain/domain_field.xml
@@ -77,10 +77,9 @@
t-on-click="() => this.checkProps()"
/>
-
-
-
-
+
+
+
diff --git a/addons/web/static/tests/views/fields/domain_field_tests.js b/addons/web/static/tests/views/fields/domain_field_tests.js
index a37730131fd..575befae9d4 100644
--- a/addons/web/static/tests/views/fields/domain_field_tests.js
+++ b/addons/web/static/tests/views/fields/domain_field_tests.js
@@ -954,6 +954,45 @@ QUnit.module("Fields", (hooks) => {
assert.containsOnce(target, ".modal", "the domain is invalid: the dialog is not closed");
});
+ QUnit.test(
+ "edit domain button is available even while loading records count",
+ async function (assert) {
+ serverData.models.partner.fields.display_name.default = "[]";
+ patchWithCleanup(odoo, {
+ debug: true,
+ });
+ const searchCountDeffered = makeDeferred();
+ await makeView({
+ type: "form",
+ resModel: "partner",
+ serverData,
+ arch: `
+
`,
+ mockRPC: async (route) => {
+ if (route === "/web/dataset/call_kw/partner/search_count") {
+ await searchCountDeffered;
+ }
+ if (route === "/web/domain/validate") {
+ return true;
+ }
+ },
+ });
+ assert.containsNone(target, ".modal");
+ assert.containsOnce(target, ".o_field_domain_dialog_button");
+ await click(target, ".o_field_domain_dialog_button");
+ searchCountDeffered.resolve();
+ assert.containsOnce(target, ".modal");
+ await click(target, ".modal-footer .btn-primary");
+ assert.containsNone(target, ".modal");
+ assert.strictEqual(
+ target.querySelector(".o_domain_show_selection_button").textContent,
+ "5 record(s) "
+ );
+ }
+ );
+
QUnit.test(
"quick check on save if domain has been edited via the debug input",
async function (assert) {