From 103e0f6747fa5fbf97df9596b86431a806b61aa4 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 26 Nov 2012 21:15:10 +0100 Subject: [PATCH 1/2] Add the basic structure of a timeslider test --- tests/frontend/specs/timeslider_revisions.js | 49 ++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/frontend/specs/timeslider_revisions.js diff --git a/tests/frontend/specs/timeslider_revisions.js b/tests/frontend/specs/timeslider_revisions.js new file mode 100644 index 000000000..b779935dc --- /dev/null +++ b/tests/frontend/specs/timeslider_revisions.js @@ -0,0 +1,49 @@ +describe("timeslider", function(){ + //create a new pad before each test run + beforeEach(function(cb){ + helper.newPad(cb); + this.timeout(6000); + }); + + it("loads adds a hundred revisions", function(done) { + var inner$ = helper.padInner$; + var chrome$ = helper.padChrome$; + + // make some changes to produce 100 revisions + var timePerRev = 900 + , revs = 150; + this.timeout(revs*timePerRev+10000); + for(var i=0; i < revs; i++) { + setTimeout(function() { + // type 'a' in the first text element + inner$("div").first().sendkeys('a'); + }, timePerRev*i); + } + + setTimeout(function() { + $('#iframe-container iframe').attr('src', $('#iframe-container iframe').attr('src')+'/timeslider'); + + var timeslider$ = $('#iframe-container iframe')[0].contentWindow.$; + + var $sliderHandle = timeslider$('#timeslider-slider ui-slider-handle'); + /* + //get the strikethrough button and click it + var $strikethroughButton = chrome$(".buttonicon-strikethrough"); + $strikethroughButton.click(); + + //ace creates a new dom element when you press a button, so just get the first text element again + var $newFirstTextElement = inner$("div").first(); + + // is there a element now? + var isstrikethrough = $newFirstTextElement.find("s").length === 1; + + //expect it to be strikethrough + expect(isstrikethrough).to.be(true); + + //make sure the text hasn't changed + expect($newFirstTextElement.text()).to.eql($firstTextElement.text()); + */ + done(); + }, revs*timePerRev); + }); +}); From 80ce0b5edb90e831d831a9a3c1404115e3ff7d95 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Fri, 7 Dec 2012 16:20:23 +0100 Subject: [PATCH 2/2] Refine timeslider test --- tests/frontend/specs/timeslider_revisions.js | 53 ++++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/tests/frontend/specs/timeslider_revisions.js b/tests/frontend/specs/timeslider_revisions.js index b779935dc..cf5790749 100644 --- a/tests/frontend/specs/timeslider_revisions.js +++ b/tests/frontend/specs/timeslider_revisions.js @@ -11,39 +11,50 @@ describe("timeslider", function(){ // make some changes to produce 100 revisions var timePerRev = 900 - , revs = 150; + , revs = 100; this.timeout(revs*timePerRev+10000); for(var i=0; i < revs; i++) { setTimeout(function() { - // type 'a' in the first text element + // enter 'a' in the first text element inner$("div").first().sendkeys('a'); }, timePerRev*i); } setTimeout(function() { + // go to timeslider $('#iframe-container iframe').attr('src', $('#iframe-container iframe').attr('src')+'/timeslider'); - var timeslider$ = $('#iframe-container iframe')[0].contentWindow.$; - - var $sliderHandle = timeslider$('#timeslider-slider ui-slider-handle'); - /* - //get the strikethrough button and click it - var $strikethroughButton = chrome$(".buttonicon-strikethrough"); - $strikethroughButton.click(); - - //ace creates a new dom element when you press a button, so just get the first text element again - var $newFirstTextElement = inner$("div").first(); - - // is there a element now? - var isstrikethrough = $newFirstTextElement.find("s").length === 1; + setTimeout(function() { + var timeslider$ = $('#iframe-container iframe')[0].contentWindow.$; + var $sliderBar = timeslider$('#ui-slider-bar'); + + var latestContents = timeslider$('#padcontent').text(); - //expect it to be strikethrough - expect(isstrikethrough).to.be(true); + // Click somewhere on the timeslider + var e = new jQuery.Event('mousedown'); + e.clientX = e.pageX = 150; + e.clientY = e.pageY = 45; + $sliderBar.trigger(e); + + e = new jQuery.Event('mousedown'); + e.clientX = e.pageX = 150; + e.clientY = e.pageY = 40; + $sliderBar.trigger(e); + + e = new jQuery.Event('mousedown'); + e.clientX = e.pageX = 150; + e.clientY = e.pageY = 50; + $sliderBar.trigger(e); + + $sliderBar.trigger('mouseup') - //make sure the text hasn't changed - expect($newFirstTextElement.text()).to.eql($firstTextElement.text()); - */ - done(); + setTimeout(function() { + //make sure the text has changed + expect( timeslider$('#padcontent').text() ).not.to.eql( latestContents ); + done(); + }, 1000); + + }, 6000); }, revs*timePerRev); }); });