1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
odoo.define('website_sale.tour', function (require) {
'use strict';
var tour = require("web_tour.tour");
tour.register('shop_buy_product', {
test: true,
url: '/shop',
},
[
{
content: "search conference chair",
trigger: 'form input[name="search"]',
run: "text conference chair",
},
{
content: "search conference chair",
trigger: 'form:has(input[name="search"]) .oe_search_button',
},
{
content: "select conference chair",
trigger: '.oe_product_cart:first a:contains("Conference Chair")',
},
{
content: "select Conference Chair Aluminium",
extra_trigger: '#product_detail',
trigger: 'label:contains(Aluminium) input',
},
{
content: "select Conference Chair Steel",
extra_trigger: '#product_detail',
trigger: 'label:contains(Steel) input',
},
{
id: 'add_cart_step',
content: "click on add to cart",
extra_trigger: 'label:contains(Steel) input:propChecked',
trigger: '#product_detail form[action^="/shop/cart/update"] .btn-primary',
},
{
content: "add suggested",
extra_trigger: '#wrap:not(:has(#cart_products:contains("Storage Box")))',
trigger: '.oe_cart:has(tr:contains("Storage Box")) a:contains("Add to Cart")',
},
{
content: "add one more",
extra_trigger: '#cart_products tr:contains("Storage Box")',
trigger: '#cart_products tr:contains("Steel") a.js_add_cart_json:eq(1)',
},
{
content: "remove Storage Box",
extra_trigger: '#cart_products tr:contains("Steel") input.js_quantity:propValue(2)',
trigger: '#cart_products tr:contains("Storage Box") a.js_add_cart_json:first',
},
{
content: "set one",
extra_trigger: '#wrap:not(:has(#cart_products tr:contains("Storage Box")))',
trigger: '#cart_products input.js_quantity',
run: 'text 1',
},
{
content: "go to checkout",
extra_trigger: '#cart_products input.js_quantity:propValue(1)',
trigger: 'a[href*="/shop/checkout"]',
},
{
content: "select payment",
trigger: '#payment_method label:contains("Wire Transfer")',
},
{
content: "Pay Now",
//Either there are multiple payment methods, and one is checked, either there is only one, and therefore there are no radio inputs
extra_trigger: '#payment_method label:contains("Wire Transfer") input:checked,#payment_method:not(:has("input:radio:visible"))',
trigger: 'button[id="o_payment_form_pay"]:visible:not(:disabled)',
},
{
content: "finish",
trigger: '.oe_website_sale:contains("Please make a payment to:")',
// Leave /shop/confirmation to prevent RPC loop to /shop/payment/get_status.
// The RPC could be handled in python while the tour is killed (and the session), leading to crashes
run: function () {
window.location.href = '/contactus'; // Redirect in JS to avoid the RPC loop (20x1sec)
},
timeout: 30000,
},
{
content: "wait page loaded",
trigger: 'h1:contains("Contact us")',
run: function () {}, // it's a check
},
]
);
});
|