From fb325bee48068dc87128e4bb7dbd0d4eed96ea38 Mon Sep 17 00:00:00 2001 From: Frederic van der Essen Date: Wed, 23 Jul 2014 15:58:08 +0200 Subject: [PATCH] [IMP] point_of_sale: add a basic UI unit test based on the new 'Tour' module --- addons/point_of_sale/static/src/js/tests.js | 176 ++++++++++---------- 1 file changed, 86 insertions(+), 90 deletions(-) diff --git a/addons/point_of_sale/static/src/js/tests.js b/addons/point_of_sale/static/src/js/tests.js index 018b343de58..08aa6e87213 100644 --- a/addons/point_of_sale/static/src/js/tests.js +++ b/addons/point_of_sale/static/src/js/tests.js @@ -1,93 +1,89 @@ -function openerp_pos_tests(instance, module){ //module is instance.point_of_sale +(function() { + 'use strict'; - // Various UI Tests to measure performance and memory leaks. - module.UiTester = function(){ - var running = false; - var queue = new module.JobQueue(); + openerp.Tour.register({ + id: 'pos_basic_order', + name: 'Complete a basic order trough the Front-End', + path: '/web#model=pos.session.opening&action=point_of_sale.action_pos_session_opening', + mode: 'test', + steps: [ + { + title: 'Wait fot the bloody screen to be ready', + wait: 200, + }, + { + title: 'Load the Session', + waitNot: '.oe_loading:visible', + element: 'span:contains("Resume Session"),span:contains("Start Session")', + }, + { + title: 'Loading the Loading Screen', + waitFor: '.loader' + }, + { + title: 'Waiting for the end of loading...', + waitFor: '.loader:hidden', + }, + { + title: 'Loading The Point of Sale', + waitFor: '.pos', + }, + { + title: 'On va manger des CHIPS!', + element: '.product-list .product-name:contains("250g Lays Pickels")', + }, + { + title: 'The chips have been added to the Order', + waitFor: '.order .product-name:contains("250g Lays Pickels")', + }, + { + title: 'The order total has been updated to the correct value', + wait: 2000, + waitFor: '.order .total .value:contains("1.48 €")', + }, + { + title: "Let's buy more chips", + element: '.product-list .product-name:contains("250g Lays Pickels")', + }, + { + title: "Let's veryify we pay the correct price for two bags of chips", + waitFor: '.order .total .value:contains("2.96 €")', + }, + { + title: "Let's pay with a debit card", + element: ".paypad-button:contains('Bank')", + }, + { + title: "Let's accept the payment", + onload: function(){ + // The test cannot validate or cancel the print() ... so we replace it by a noop !. + window._print = window.print; + window.print = function(){ console.log('Print!') }; + }, + element: ".button .iconlabel:contains('Validate'):visible", + }, + { + title: "Let's finish the order", + element: ".button:not(.disabled) .iconlabel:contains('Next'):visible", + }, + { + onload: function(){ + window.print = window._print; + window._print = undefined; + }, + title: "Let's wait for the order posting", + waitFor: ".oe_status.js_synch .js_connected:visible", + }, + { + title: "Let's close the Point of Sale", + element: ".header-button:contains('Close')", + }, + { + title: "Wait for the backend to ready itself", + element: 'span:contains("Resume Session"),span:contains("Start Session")', + }, + ], + }); - // stop the currently running test - this.stop = function(){ - queue.clear(); - }; +})(); - // randomly switch product categories - this.category_switch = function(interval){ - queue.schedule(function(){ - var breadcrumbs = $('.breadcrumb-button'); - var categories = $('.category-button'); - if(categories.length > 0){ - var rnd = Math.floor(Math.random()*categories.length); - categories.eq(rnd).click(); - }else{ - var rnd = Math.floor(Math.random()*breadcrumbs.length); - breadcrumbs.eq(rnd).click(); - } - },{repeat:true, duration:interval}); - }; - - // randomly order products then resets the order - this.order_products = function(interval){ - - queue.schedule(function(){ - var def = new $.Deferred(); - var order_queue = new module.JobQueue(); - var order_size = 1 + Math.floor(Math.random()*10); - - while(order_size--){ - order_queue.schedule(function(){ - var products = $('.product'); - if(products.length > 0){ - var rnd = Math.floor(Math.random()*products.length); - products.eq(rnd).click(); - } - },{duration:20}); - } - order_queue.finished().then(function(){ - $('.deleteorder-button').click(); - def.resolve(); - }); - return def; - },{repeat:true, duration: interval}); - - }; - - // makes a complete product order cycle ( print via proxy must be activated, and scale deactivated ) - this.full_order_cycle = function(interval){ - queue.schedule(function(){ - var def = new $.Deferred(); - var order_queue = new module.JobQueue(); - var order_size = 1 + Math.floor(Math.random()*50); - - while(order_size--){ - order_queue.schedule(function(){ - var products = $('.product'); - if(products.length > 0){ - var rnd = Math.floor(Math.random()*products.length); - products.eq(rnd).click(); - } - },{duration:50}); - } - order_queue.schedule(function(){ - $('.paypad-button:first').click(); - },{duration:250}); - order_queue.schedule(function(){ - $('.paymentline-input:first').val(10000); - $('.paymentline-input:first').keydown(); - $('.paymentline-input:first').keyup(); - },{duration:250}); - order_queue.schedule(function(){ - $('.pos-actionbar-button-list .button:eq(2)').click(); - },{duration:250}); - order_queue.schedule(function(){ - def.resolve(); - }); - return def; - },{repeat: true, duration: interval}); - }; - }; - - if(jQuery.deparam(jQuery.param.querystring()).debug !== undefined){ - window.pos_test_ui = new module.UiTester(); - } - -}