From 5455bfcfdccd6e1003ebc760ef9f972a012de5e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Mon, 4 Dec 2023 15:07:19 +0100 Subject: [PATCH] [FIX] mail: fix test failing at "Write something in composer" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The issue is not easy to reproduce, so the fix is not a guaranteed one. Estimation: the click on the "send message" buttons happens too early, and it is either doing nothing, or being immediately reset by another action that happens at page load. Adding a little bit of extra delay (in particular waiting for messages to be loaded) might resolve the issue. Also back-port code allowing to use contains in tours. runbot-27847 closes odoo/odoo#144435 X-original-commit: 3b261b6856e935f8fe9d4e23cfddc09df8ff7fdf Signed-off-by: Alexandre Kühn (aku) Signed-off-by: Sébastien Theys (seb) --- addons/base_automation/tests/test_mail_composer.py | 3 ++- .../static/tests/tours/mail_composer_test_tour.js | 13 ++++++++++--- addons/mail/tests/test_mail_composer.py | 3 ++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/addons/base_automation/tests/test_mail_composer.py b/addons/base_automation/tests/test_mail_composer.py index 6eb76496dc9..df70df91321 100644 --- a/addons/base_automation/tests/test_mail_composer.py +++ b/addons/base_automation/tests/test_mail_composer.py @@ -34,10 +34,11 @@ class TestMailFullComposer(MailCommon, HttpCase): 'model_id': self.env.ref('mail.model_mail_compose_message').id, }) automation.write({'action_server_ids': [(4, server_action.id)]}) + partner = self.env["res.partner"].create({"name": "Jane", "email": "jane@example.com"}) user = self.env["res.users"].create({"name": "Not A Demo User", "login": "nadu"}) with self.mock_mail_app(): self.start_tour( - f"/web#id={self.user_employee.partner_id.id}&model=res.partner", + f"/web#id={partner.id}&model=res.partner", "mail/static/tests/tours/mail_composer_test_tour.js", login=self.user_employee.login ) diff --git a/addons/mail/static/tests/tours/mail_composer_test_tour.js b/addons/mail/static/tests/tours/mail_composer_test_tour.js index c5e63f7522d..4ac8c42ada6 100644 --- a/addons/mail/static/tests/tours/mail_composer_test_tour.js +++ b/addons/mail/static/tests/tours/mail_composer_test_tour.js @@ -1,7 +1,7 @@ /* @odoo-module */ import { registry } from "@web/core/registry"; -import { createFile, inputFiles } from "@web/../tests/utils"; +import { contains, createFile, inputFiles } from "@web/../tests/utils"; /** * This tour depends on data created by python test in charge of launching it. @@ -12,6 +12,13 @@ import { createFile, inputFiles } from "@web/../tests/utils"; registry.category("web_tour.tours").add("mail/static/tests/tours/mail_composer_test_tour.js", { test: true, steps: () => [ + { + content: "Wait for the chatter to be fully loaded", + trigger: ".o-mail-Chatter", + async run() { + await contains(".o-mail-Message", { count: 1 }); + }, + }, { content: "Click on Send Message", trigger: "button:contains(Send message)", @@ -65,9 +72,9 @@ registry.category("web_tour.tours").add("mail/static/tests/tours/mail_composer_t trigger: '[name="subject"] input', run() { const subjectValue = document.querySelector('[name="subject"] input').value; - if (subjectValue !== "Ernest Employee") { + if (subjectValue !== "Jane") { console.error( - `Full composer should have "Ernest Employee" in subject input (actual: ${subjectValue})` + `Full composer should have "Jane" in subject input (actual: ${subjectValue})` ); } }, diff --git a/addons/mail/tests/test_mail_composer.py b/addons/mail/tests/test_mail_composer.py index 6c340dd5a74..f27084334f2 100644 --- a/addons/mail/tests/test_mail_composer.py +++ b/addons/mail/tests/test_mail_composer.py @@ -275,10 +275,11 @@ class TestMailComposerUI(MailCommon, HttpCase): self.user_employee.write({ 'groups_id': [(4, self.env.ref('base.group_partner_manager').id)], }) + partner = self.env["res.partner"].create({"name": "Jane", "email": "jane@example.com"}) user = self.env["res.users"].create({"name": "Not A Demo User", "login": "nadu"}) with self.mock_mail_app(): self.start_tour( - f"/web#id={self.user_employee.partner_id.id}&model=res.partner", + f"/web#id={partner.id}&model=res.partner", "mail/static/tests/tours/mail_composer_test_tour.js", login=self.user_employee.login )