123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- odoo.define('website_livechat.tour_common', function (require) {
- 'use strict';
- // Due to some issue with assets bundles, the current file can be loaded while
- // LivechatButtonView isn't, causing the patch to fail as the original model was
- // not registered beforehand. The following import is intended to stop the
- // execution of this file if @im_livechat/public_models/livechat_button_view is
- // not part of the current assets bundles (as trying to import it will silently
- // crash).
- require('@im_livechat/public_models/livechat_button_view');
- const { registerPatch } = require('@mail/model/model_core');
- registerPatch({
- name: 'LivechatButtonView',
- recordMethods: {
- /**
- * Alter this method for test purposes.
- *
- * Force fetch notifications after sending the message: listen/notify
- * mechanism is not active during tests, but available messages
- * are directly sent when updating channel subscription.
- *
- * Add a class to the chatter window after sendFeedback is done
- * to force the test to wait until feedback is really done
- * (to check afterwards if the livechat session is set to inactive)
- *
- * Note : this asset is loaded for tests only (rpc call done only during
- * tests)
- *
- * @override
- */
- async sendMessage(message) {
- await this._super(message);
- if (message.isFeedback) {
- $('div.o_thread_window_header').addClass('feedback_sent');
- } else {
- this.messaging.rpc({ route: '/bus/test_mode_activated' }).then(in_test_mode => {
- if (!in_test_mode) {
- return;
- }
- this.env.services['bus_service'].forceUpdateChannels();
- });
- }
- },
- },
- });
- /*******************************
- * Common Steps
- *******************************/
- var startStep = [{
- content: "click on livechat widget",
- trigger: "div.o_livechat_button"
- }, {
- content: "Say hello!",
- trigger: "input.o_composer_text_field",
- run: "text Hello Sir!"
- }, {
- content: "Send the message",
- trigger: "input.o_composer_text_field",
- run: function() {
- $('input.o_composer_text_field').trigger($.Event('keydown', {which: $.ui.keyCode.ENTER}));
- }
- }, {
- content: "Verify your message has been typed",
- trigger: "div.o_thread_message_content>p:contains('Hello Sir!')"
- }, {
- content: "Verify there is no duplicates",
- trigger: "body",
- run: function () {
- if ($("div.o_thread_message_content p:contains('Hello Sir!')").length === 1) {
- $('body').addClass('no_duplicated_message');
- }
- }
- }, {
- content: "Is your message correctly sent ?",
- trigger: 'body.no_duplicated_message'
- }];
- var endDiscussionStep = [{
- content: "Close the chatter",
- trigger: "a.o_thread_window_close",
- run: function() {
- $('a.o_thread_window_close').click();
- }
- }];
- var feedbackStep = [{
- content: "Type a feedback",
- trigger: "div.o_livechat_rating_reason > textarea",
- run: "text ;-) This was really helpful. Thanks ;-)!"
- }, {
- content: "Send the feedback",
- trigger: "input[type='button'].o_rating_submit_button",
- }, {
- content: "Check if feedback has been sent",
- trigger: "div.o_thread_window_header.feedback_sent",
- }, {
- content: "Thanks for your feedback",
- trigger: "div.o_livechat_rating_box:has(div:contains('Thank you for your feedback'))",
- }];
- var transcriptStep = [{
- content: "Type your email",
- trigger: "input[id='o_email']",
- run: "text deboul@onner.com"
- }, {
- content: "Send the conversation to your email address",
- trigger: "button.o_email_chat_button",
- }, {
- content: "Type your email",
- trigger: "div.o_livechat_email:has(strong:contains('Conversation Sent'))",
- }];
- var closeStep = [{
- content: "Close the conversation with the x button",
- trigger: "a.o_thread_window_close",
- }, {
- content: "Check that the chat window is closed",
- trigger: 'body',
- run: function () {
- if ($('div.o_livechat_button').length === 1 && !$('div.o_livechat_button').is(':visible')) {
- $('body').addClass('tour_success');
- }
- }
- }, {
- content: "Is the Test succeded ?",
- trigger: 'body.tour_success'
- }];
- var goodRatingStep = [{
- content: "Send Good Rating",
- trigger: "div.o_livechat_rating_choices > img[data-value=5]",
- }, {
- content: "Check if feedback has been sent",
- trigger: "div.o_thread_window_header.feedback_sent",
- }, {
- content: "Thanks for your feedback",
- trigger: "div.o_livechat_rating_box:has(div:contains('Thank you for your feedback'))"
- }];
- var okRatingStep = [{
- content: "Send ok Rating",
- trigger: "div.o_livechat_rating_choices > img[data-value=3]",
- }];
- var sadRatingStep = [{
- content: "Send bad Rating",
- trigger: "div.o_livechat_rating_choices > img[data-value=1]",
- }];
- return {
- 'startStep': startStep,
- 'endDiscussionStep': endDiscussionStep,
- 'transcriptStep': transcriptStep,
- 'feedbackStep': feedbackStep,
- 'closeStep': closeStep,
- 'goodRatingStep': goodRatingStep,
- 'okRatingStep': okRatingStep,
- 'sadRatingStep': sadRatingStep,
- };
- });
|