Files
odoo_source/addons/web/static/test/menu.js
T
Adrien Dieudonne a9b0561106 [FIX] *: use new JS module to read from/write in localStorage
to prevent errors when the localStorage capacity is 0, which is the case e.g.
on private browsing with Safari.
2016-06-16 13:48:18 +02:00

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');
},
}
]
});
});