diff --git a/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js b/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js
index a54885c2a7b..7b70a22b6e7 100644
--- a/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js
+++ b/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js
@@ -2,6 +2,7 @@
import { start, startServer } from "@mail/../tests/helpers/test_utils";
import { click, getFixture, patchWithCleanup, triggerHotkey } from "@web/../tests/helpers/utils";
+import { browser } from "@web/core/browser/browser";
import { registry } from "@web/core/registry";
import { session } from "@web/session";
import { dom, nextTick } from "web.test_utils";
@@ -79,6 +80,12 @@ QUnit.module("mail", {}, function () {
QUnit.test("many2many_avatar_user in kanban view", async function (assert) {
assert.expect(5);
+ patchWithCleanup(browser, {
+ setTimeout: async (fn) => {
+ await new Promise((r) => setTimeout(r))
+ fn();
+ },
+ });
const pyEnv = await startServer();
const resUsersIds = pyEnv["res.users"].create([
{ name: "Mario" },
diff --git a/addons/web/static/src/core/tooltip/tooltip_service.js b/addons/web/static/src/core/tooltip/tooltip_service.js
index dea57c09cb5..4e23025f75e 100644
--- a/addons/web/static/src/core/tooltip/tooltip_service.js
+++ b/addons/web/static/src/core/tooltip/tooltip_service.js
@@ -129,16 +129,19 @@ export const tooltipService = {
if (elementsWithTooltips.has(el)) {
openTooltip(el, elementsWithTooltips.get(el));
} else if (el.matches("[data-tooltip], [data-tooltip-template]")) {
- const {
- tooltip,
- tooltipInfo,
- tooltipDelay,
- tooltipTemplate: template,
- tooltipPosition: position,
- } = el.dataset;
- const delay = parseInt(tooltipDelay);
- const info = tooltipInfo ? JSON.parse(tooltipInfo) : null;
- openTooltip(el, { tooltip, template, delay, info, position });
+ const dataset = el.dataset;
+ const params = {
+ tooltip: dataset.tooltip,
+ template: dataset.tooltipTemplate,
+ position: dataset.tooltipPosition,
+ };
+ if (dataset.tooltipInfo) {
+ params.info = JSON.parse(dataset.tooltipInfo);
+ }
+ if (dataset.tooltipDelay) {
+ params.delay = parseInt(dataset.tooltipDelay, 10);
+ }
+ openTooltip(el, params);
}
}
diff --git a/addons/web/static/tests/core/tooltip/tooltip_service_tests.js b/addons/web/static/tests/core/tooltip/tooltip_service_tests.js
index 54ab588edb4..bad319ad41f 100644
--- a/addons/web/static/tests/core/tooltip/tooltip_service_tests.js
+++ b/addons/web/static/tests/core/tooltip/tooltip_service_tests.js
@@ -343,14 +343,27 @@ QUnit.module("Tooltip service", (hooks) => {
assert.containsNone(target, ".o_popover_container .o_popover");
});
- QUnit.test("tooltip with a delay", async (assert) => {
+ QUnit.test("tooltip with no delay (default delay)", async (assert) => {
+ assert.expect(1);
class MyComponent extends Component {}
- MyComponent.template = xml``;
+ MyComponent.template = xml``;
+ const mockSetTimeout = (fn, delay) => {
+ assert.strictEqual(delay, 400);
+ };
+ await makeParent(MyComponent, { mockSetTimeout });
+ target.querySelector("button.myBtn").dispatchEvent(new Event("mouseenter"));
+ await nextTick();
+ });
+
+ QUnit.test("tooltip with a delay", async (assert) => {
+ assert.expect(1);
+ class MyComponent extends Component {}
+ MyComponent.template = xml``;
const mockSetTimeout = (fn, delay) => {
assert.strictEqual(delay, 2000);
};
await makeParent(MyComponent, { mockSetTimeout });
- target.querySelector("button").dispatchEvent(new Event("mouseenter"));
+ target.querySelector("button.myBtn").dispatchEvent(new Event("mouseenter"));
await nextTick();
});