[FIX] website_sale: prevent race condition on tour

As this race condition seems not possible to be reproduced in local, all this
is an assumption based on the logs.

After the checkout, the user is redirected to `/shop/confirmation` where there
is RPCs fired every seconds to fetch the payment status
(`/shop/payment/get_status`).

As the test was considered as finished on that page, sometimes the RPC would
still be processed in python while the tour was considered done and killed,
thus also the cookies, session & co.
From that point, the python would crash when accessing the session.
In the logs, the python crash in the RPC call occurs after the test is done.

closes odoo/odoo#44235

X-original-commit: 082c660071283c0475e7ce26954803701cd3d659
Signed-off-by: Romain Derie <rdeodoo@users.noreply.github.com>
This commit is contained in:
Romain Derie
2020-01-29 17:39:49 +00:00
parent 6a9ea9dbb2
commit 6e18e7f934
@@ -76,8 +76,18 @@ tour.register('shop_buy_product', {
{
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 = '/aboutus'; // Redirect in JS to avoid the RPC loop (20x1sec)
},
timeout: 30000,
}
},
{
content: "wait page loaded",
trigger: 'h3:contains("Great products for great people")',
run: function () {}, // it's a check
},
]
);