to prevent errors when the localStorage capacity is 0, which is the case e.g. on private browsing with Safari.
300 lines
11 KiB
JavaScript
300 lines
11 KiB
JavaScript
// This test is deprecated since v9 at least and thus no longer put in the bundles
|
|
|
|
odoo.define('web.test.menu', function (require) {
|
|
"use strict";
|
|
|
|
var Tour = require('web.Tour');
|
|
var local_storage = require('web.local_storage');
|
|
|
|
function openmenu () {
|
|
setTimeout(function () {
|
|
$(".collapse:not(.in)").addClass("in");
|
|
$(".dropdown:not(.open)").addClass("open");
|
|
},3000);
|
|
}
|
|
|
|
Tour.register({
|
|
id: 'test_menu',
|
|
name: "Test all menu items",
|
|
path: '/web',
|
|
mode: 'test',
|
|
steps: [
|
|
{
|
|
title: "begin test",
|
|
onload: function () {
|
|
local_storage.setItem('active_step', 0);
|
|
local_storage.setItem('menu_tested', "[]");
|
|
},
|
|
},
|
|
|
|
// log as admin
|
|
|
|
{
|
|
title: "log on as admin",
|
|
element: ".oe_login_form button",
|
|
onload: function () {
|
|
$('input[name="login"], input[name="password"]').val("admin");
|
|
},
|
|
},
|
|
{
|
|
title: "load web admin",
|
|
waitFor: ".oe_view_manager_body",
|
|
onload: function () {
|
|
local_storage.setItem('active_step', (+local_storage.getItem('active_step'))+1 );
|
|
openmenu();
|
|
},
|
|
},
|
|
{
|
|
title: "click on Settings",
|
|
element: '.oe_application_menu_placeholder a[data-menu]:contains(Settings)',
|
|
waitNot: '.oe_loading:visible, button.oe_form_button:contains(Apply).already_tested',
|
|
},
|
|
|
|
// add technical features to admin user
|
|
|
|
{
|
|
title: "click on User form Admin",
|
|
element: '.oe_secondary_menu a:visible:contains(Users)',
|
|
waitNot: ".oe_loading:visible",
|
|
},
|
|
{
|
|
title: "click on Admin",
|
|
element: '.oe_list_field_cell:contains(Admin)',
|
|
},
|
|
{
|
|
waitFor: '.oe_breadcrumb_item:contains(Admin)',
|
|
waitNot: ".oe_loading:visible",
|
|
},
|
|
{
|
|
title: "click on Edit button",
|
|
element: 'button.oe_form_button_edit',
|
|
},
|
|
{
|
|
title: "click on Technical Features",
|
|
element: 'td:contains(Technical Features) + td input:not(:disabled):visible',
|
|
onend: function () {
|
|
$('td:contains(Technical Features) + td input:not(:disabled):visible').attr("checked", true);
|
|
},
|
|
},
|
|
{
|
|
title: "click on Save User",
|
|
waitFor: 'td:contains(Technical Features) + td input:checked:not(:disabled):visible',
|
|
element: 'button.oe_form_button_save',
|
|
},
|
|
|
|
// add technical features to demo user
|
|
|
|
{
|
|
title: "click on User",
|
|
element: '.oe_secondary_menu a:visible:contains(Users)',
|
|
waitFor: 'td:contains(Technical Features) + td input:disabled:visible',
|
|
},
|
|
{
|
|
title: "click on Demo",
|
|
element: '.oe_list_field_cell:contains(Demo)',
|
|
},
|
|
{
|
|
waitFor: '.oe_breadcrumb_item:contains(Demo)',
|
|
waitNot: ".oe_loading:visible",
|
|
},
|
|
{
|
|
title: "click on Edit button",
|
|
element: 'button.oe_form_button_edit',
|
|
},
|
|
{
|
|
title: "click on Technical Features",
|
|
element: 'td:contains(Technical Features) + td input:not(:disabled):visible',
|
|
onend: function () {
|
|
$('td:contains(Technical Features) + td input:not(:disabled):visible').attr("checked", true);
|
|
if (local_storage.getItem('active_step') === "2") {
|
|
$('input').attr("checked", true);
|
|
$('.oe_view_manager_body td:contains(Portal) + td input:visible').attr("checked", null);
|
|
$('.oe_view_manager_body td:contains(Public) + td input:visible').attr("checked", null);
|
|
$('select').each(function () {
|
|
$('option:last', this).attr('selected', true);
|
|
});
|
|
}
|
|
},
|
|
},
|
|
{
|
|
title: "click on Save User",
|
|
waitFor: 'td:contains(Technical Features) + td input:checked:not(:disabled):visible',
|
|
element: 'button.oe_form_button_save',
|
|
onload: function () {
|
|
openmenu();
|
|
},
|
|
},
|
|
|
|
// log out
|
|
|
|
{
|
|
title: "log out amdin",
|
|
waitFor: 'td:contains(Technical Features) + td input:disabled:visible',
|
|
element: 'a[data-menu="logout"]',
|
|
},
|
|
|
|
// log as demo
|
|
|
|
{
|
|
title: "log on as demo user",
|
|
element: ".oe_login_form button",
|
|
onload: function () {
|
|
$('input[name="login"], input[name="password"]').val("demo");
|
|
},
|
|
},
|
|
{
|
|
title: "load web demo",
|
|
waitFor: ".oe_view_manager_body",
|
|
onload: function () {
|
|
openmenu();
|
|
},
|
|
next: "check",
|
|
},
|
|
|
|
// click all menu items
|
|
|
|
{
|
|
title: "Click on top menu",
|
|
element: '.oe_application_menu_placeholder a[data-menu]:not([data-action-model="ir.actions.act_url"]):not(.already_tested):first',
|
|
onload: function () {
|
|
var $menu = $(this.element);
|
|
console.log("Tour 'test_menu' click on: '"+$menu.text().replace(/^\s+|\s+$/g, '')+"'");
|
|
},
|
|
onend: function () {
|
|
$(this.element).addClass('already_tested');
|
|
$('.oe_secondary_submenu').show();
|
|
},
|
|
next: "check"
|
|
},
|
|
{
|
|
title: "Click on sub menu",
|
|
element: '.oe_secondary_menu a:not(.oe_menu_toggler):visible:not(.already_tested):first',
|
|
onload: function () {
|
|
var $menu = $(this.element);
|
|
console.log("Tour 'test_menu' click on: '"+$menu.find('span:first').text().replace(/^\s+|\s+$/g, '')+"'");
|
|
},
|
|
onend: function () {
|
|
$(this.element).addClass('already_tested');
|
|
},
|
|
next: "check"
|
|
},
|
|
{
|
|
title: "Click on need action",
|
|
element: '.oe_secondary_menu a:not(.oe_menu_toggler) div.badge:visible:not(.already_tested):first',
|
|
onload: function () {
|
|
var $menu = $(this.element);
|
|
console.log("Tour 'test_menu' click on need action: '"+$menu.parent().find('span:first').text().replace(/^\s+|\s+$/g, '')+"'");
|
|
},
|
|
onend: function () {
|
|
$(this.element).addClass('already_tested');
|
|
},
|
|
next: "check"
|
|
},
|
|
{
|
|
title: "Click on switch view",
|
|
element: '.oe_view_manager_switch li a:not(.already_tested):first',
|
|
onload: function () {
|
|
var $menu = $(this.element);
|
|
console.log("Tour 'test_menu' click on switch view: '"+$menu.data('original-title')+"'");
|
|
},
|
|
onend: function () {
|
|
$(this.element).addClass('already_tested');
|
|
},
|
|
next: "check"
|
|
},
|
|
|
|
{
|
|
title: "check",
|
|
waitNot: "body:has("+
|
|
".oe_view_manager_body > *:visible:not(:empty).already_loaded:not(.oe_searchview_drawer_container), "+
|
|
".oe_form_sheetbg.already_loaded"+
|
|
"):not(:has(.modal))",
|
|
wait: 100,
|
|
onerror: function () {
|
|
return "Select next action";
|
|
}
|
|
},
|
|
{
|
|
title: "add class already tested",
|
|
waitNot: "body.oe_wait",
|
|
onload: function () {
|
|
|
|
var tested = JSON.parse(local_storage.getItem('menu_tested') || "[]");
|
|
|
|
$('.oe_application_menu_placeholder li.active [data-menu]').addClass('already_tested');
|
|
|
|
var $menu = $('.oe_secondary_menus_container li.active [data-action-model]');
|
|
var model = $menu.data('action-model');
|
|
var id = $menu.data('action-id');
|
|
var key = '.oe_secondary_menus_container li [data-action-model="'+model+'"][data-action-id="'+id+'"]';
|
|
if (tested.indexOf(key) === -1) {
|
|
tested.push(key);
|
|
}
|
|
|
|
var type = $('.oe_view_manager_switch li.active [data-view-type]').data('view-type');
|
|
var key = 'body:has(.oe_secondary_menus_container li.active [data-action-model="' + model + '"][data-action-id="' + id + '"]) '+
|
|
'.oe_view_manager_switch li [data-view-type="'+type+'"]';
|
|
if (tested.indexOf(key) === -1) {
|
|
tested.push(key);
|
|
}
|
|
local_storage.setItem('menu_tested', JSON.stringify(tested));
|
|
|
|
|
|
$(tested.join(",")).addClass('already_tested');
|
|
$(".oe_view_manager_body > *:visible:not(:empty), .oe_form_sheet").addClass("already_loaded");
|
|
$('.oe_view_manager_switch li.active a').addClass('already_tested');
|
|
},
|
|
wait: 250, // delay to remove wrong-positive
|
|
onerror: function () {
|
|
return "Select next action";
|
|
}
|
|
},
|
|
{
|
|
title: "Select next action",
|
|
onload: function () {
|
|
if ($(".o_error_detail").size()) {
|
|
console.log("Tour 'test_menu' has detected an error.");
|
|
}
|
|
if ($(".o_dialog_warning").size()) {
|
|
console.log("Tour 'test_menu' has detected a warning.");
|
|
}
|
|
|
|
$('.modal').modal('hide').remove();
|
|
|
|
var steps = ["Click on switch view", "Click on sub menu", "Click on need action", "Click on top menu"];
|
|
for (var k in steps) {
|
|
var step = Tour.search_step(steps[k]);
|
|
if($(step.element).size()) {
|
|
return step.id;
|
|
}
|
|
}
|
|
|
|
openmenu();
|
|
},
|
|
},
|
|
|
|
// log out and re try
|
|
|
|
{
|
|
title: "log out",
|
|
element: 'a[data-menu="logout"]',
|
|
onend: function () {
|
|
if (local_storage.getItem('active_step') == "1") {
|
|
return "log on as admin";
|
|
}
|
|
},
|
|
},
|
|
|
|
{
|
|
title: "finish",
|
|
waitFor: "form.oe_login_form",
|
|
onload: function () {
|
|
local_storage.removeItem('active_step');
|
|
local_storage.removeItem('menu_tested');
|
|
},
|
|
}
|
|
]
|
|
});
|
|
|
|
});
|