summaryrefslogtreecommitdiff
path: root/addons/website_livechat/static/tests/tours
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_livechat/static/tests/tours
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_livechat/static/tests/tours')
-rw-r--r--addons/website_livechat/static/tests/tours/website_livechat_common.js165
-rw-r--r--addons/website_livechat/static/tests/tours/website_livechat_rating.js38
-rw-r--r--addons/website_livechat/static/tests/tours/website_livechat_request.js46
3 files changed, 249 insertions, 0 deletions
diff --git a/addons/website_livechat/static/tests/tours/website_livechat_common.js b/addons/website_livechat/static/tests/tours/website_livechat_common.js
new file mode 100644
index 00000000..6568a82f
--- /dev/null
+++ b/addons/website_livechat/static/tests/tours/website_livechat_common.js
@@ -0,0 +1,165 @@
+odoo.define('website_livechat.tour_common', function(require) {
+'use strict';
+
+var session = require('web.session');
+var LivechatButton = require('im_livechat.legacy.im_livechat.im_livechat').LivechatButton;
+
+/**
+ * Alter this method for test purposes.
+ *
+ * Fake the notification after sending message
+ * As bus is not available, it's necessary to add the message in the chatter + in livechat.messages
+ *
+ * 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)
+ */
+LivechatButton.include({
+ _sendMessage: function (message) {
+ var self = this;
+ return this._super.apply(this, arguments).then(function () {
+ if (message.isFeedback) {
+ $('div.o_thread_window_header').addClass('feedback_sent');
+ }
+ else {
+ session.rpc('/bus/test_mode_activated', {}).then(function (in_test_mode) {
+ if (in_test_mode) {
+ var notification = [
+ self._livechat.getUUID(),
+ {
+ 'id': -1,
+ 'author_id': [0, 'Website Visitor Test'],
+ 'email_from': 'Website Visitor Test',
+ 'body': '<p>' + message.content + '</p>',
+ 'is_discussion': true,
+ 'subtype_id': [1, "Discussions"],
+ 'date': moment().format('YYYY-MM-DD HH:mm:ss'),
+ }
+ ]
+ self._handleNotification(notification);
+ }
+ });
+ }
+ });
+ },
+});
+
+/*******************************
+* 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,
+};
+
+});
diff --git a/addons/website_livechat/static/tests/tours/website_livechat_rating.js b/addons/website_livechat/static/tests/tours/website_livechat_rating.js
new file mode 100644
index 00000000..d3339f2b
--- /dev/null
+++ b/addons/website_livechat/static/tests/tours/website_livechat_rating.js
@@ -0,0 +1,38 @@
+odoo.define('website_livechat.tour', function(require) {
+'use strict';
+
+var commonSteps = require("website_livechat.tour_common");
+var tour = require("web_tour.tour");
+
+tour.register('website_livechat_complete_flow_tour', {
+ test: true,
+ url: '/',
+}, [].concat(commonSteps.startStep, commonSteps.endDiscussionStep, commonSteps.okRatingStep, commonSteps.feedbackStep, commonSteps.transcriptStep, commonSteps.closeStep));
+
+tour.register('website_livechat_happy_rating_tour', {
+ test: true,
+ url: '/',
+}, [].concat(commonSteps.startStep, commonSteps.endDiscussionStep, commonSteps.goodRatingStep));
+
+tour.register('website_livechat_ok_rating_tour', {
+ test: true,
+ url: '/',
+}, [].concat(commonSteps.startStep, commonSteps.endDiscussionStep, commonSteps.okRatingStep, commonSteps.feedbackStep));
+
+tour.register('website_livechat_sad_rating_tour', {
+ test: true,
+ url: '/',
+}, [].concat(commonSteps.startStep, commonSteps.endDiscussionStep, commonSteps.sadRatingStep, commonSteps.feedbackStep));
+
+tour.register('website_livechat_no_rating_tour', {
+ test: true,
+ url: '/',
+}, [].concat(commonSteps.startStep, commonSteps.endDiscussionStep, commonSteps.transcriptStep, commonSteps.closeStep));
+
+tour.register('website_livechat_no_rating_no_close_tour', {
+ test: true,
+ url: '/',
+}, [].concat(commonSteps.startStep));
+
+return {};
+});
diff --git a/addons/website_livechat/static/tests/tours/website_livechat_request.js b/addons/website_livechat/static/tests/tours/website_livechat_request.js
new file mode 100644
index 00000000..8c4042e3
--- /dev/null
+++ b/addons/website_livechat/static/tests/tours/website_livechat_request.js
@@ -0,0 +1,46 @@
+odoo.define('website_livechat.chat_request_tour', function(require) {
+'use strict';
+
+var commonSteps = require("website_livechat.tour_common");
+var tour = require("web_tour.tour");
+
+
+var stepWithChatRequestStep = [{
+ content: "Answer the chat request!",
+ trigger: "input.o_composer_text_field",
+ run: "text Hi ! What a coincidence! I need your help indeed."
+}, {
+ 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('Hi ! What a coincidence! I need your help indeed.')"
+}, {
+ content: "Verify there is no duplicates",
+ trigger: "body",
+ run: function () {
+ if ($("div.o_thread_message_content p:contains('Hi ! What a coincidence! I need your help indeed.')").length === 1) {
+ $('body').addClass('no_duplicated_message');
+ }
+ }
+}, {
+ content: "Is your message correctly sent ?",
+ trigger: 'body.no_duplicated_message'
+}];
+
+
+tour.register('website_livechat_chat_request_part_1_no_close_tour', {
+ test: true,
+ url: '/',
+}, [].concat(stepWithChatRequestStep));
+
+tour.register('website_livechat_chat_request_part_2_end_session_tour', {
+ test: true,
+ url: '/',
+}, [].concat(commonSteps.endDiscussionStep, commonSteps.okRatingStep, commonSteps.feedbackStep, commonSteps.transcriptStep, commonSteps.closeStep));
+
+return {};
+});