diff --git a/tests/frontend/specs/responsiveness.js b/tests/frontend/specs/responsiveness.js index 121851c25..e8efde713 100644 --- a/tests/frontend/specs/responsiveness.js +++ b/tests/frontend/specs/responsiveness.js @@ -17,73 +17,28 @@ describe('Responsiveness of Editor', function() { // create a new pad before each test run beforeEach(function(cb) { helper.newPad(cb); - this.timeout(6000); }); // JM commented out on 8th Sep 2020 for a release, after release this needs uncommenting // And the test needs to be fixed to work in Firefox 52 on Windows 7. I am not sure why it fails on this specific platform // The errors show this.timeout... then crash the browser but I am sure something is actually causing the stack trace and // I just need to narrow down what, offers to help accepted. it('Fast response to keypress in pad with large amount of contents', function(done) { + var start = Date.now(); // get the start time - //skip on Windows Firefox 52.0 - if(window.bowser && window.bowser.windows && window.bowser.firefox && window.bowser.version == "52.0") { - this.skip(); + // send some new text to the screen (ensure all 3 key events are sent) + var el = helper.padInner$('div').first(); + for(var i = 0; i < 300; ++i) { + var x = "0".charCodeAt(0); + ['keyup', 'keypress', 'keydown'].forEach(function(type) { + var e = $.Event(type); + e.keyCode = x; + el.trigger(e); + }); } - var inner$ = helper.padInner$; - var chrome$ = helper.padChrome$; - var chars = '0000000000'; // row of placeholder chars - var amount = 200000; //number of blocks of chars we will insert - var length = (amount * (chars.length) +1); // include a counter for each space - var text = ''; // the text we're gonna insert - this.timeout(amount * 150); // Changed from 100 to 150 to allow Mac OSX Safari to be slow. - - // get keys to send - var keyMultiplier = 10; // multiplier * 10 == total number of key events - var keysToSend = ''; - for(var i=0; i <= keyMultiplier; i++) { - keysToSend += chars; - } - - var textElement = inner$('div'); - textElement.sendkeys('{selectall}'); // select all - textElement.sendkeys('{del}'); // clear the pad text - - for(var i=0; i <= amount; i++) { - text = text + chars + ' '; // add the chars and space to the text contents - } - inner$('div').first().text(text); // Put the text contents into the pad - - helper.waitFor(function(){ // Wait for the new contents to be on the pad - return inner$('div').text().length > length; - }).done(function(){ - - expect( inner$('div').text().length ).to.be.greaterThan( length ); // has the text changed? - var start = Date.now(); // get the start time - - // send some new text to the screen (ensure all 3 key events are sent) - var el = inner$('div').first(); - for(var i = 0; i < keysToSend.length; ++i) { - var x = keysToSend.charCodeAt(i); - ['keyup', 'keypress', 'keydown'].forEach(function(type) { - var e = $.Event(type); - e.keyCode = x; - el.trigger(e); - }); - } - - helper.waitFor(function(){ // Wait for the ability to process - var el = inner$('body'); - if(el[0].textContent.length > amount) return true; - }).done(function(){ - var end = Date.now(); // get the current time - var delay = end - start; // get the delay as the current time minus the start time - - expect(delay).to.be.below(600); - done(); - }, 5000); - - }, 10000); - }); + var end = Date.now(); // get the current time + var delay = end - start; // get the delay as the current time minus the start time + expect(delay).to.be.below(1); + done(); + }) }); -