var testHelper = {}; (function(){ var $iframeContainer = $("#iframe-container"), $iframe; testHelper.randomString = function randomString(len) { var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var randomstring = ''; for (var i = 0; i < len; i++) { var rnum = Math.floor(Math.random() * chars.length); randomstring += chars.substring(rnum, rnum + 1); } return randomstring; } testHelper.newPad = function(cb){ var padName = "FRONTEND_TEST_" + testHelper.randomString(20); $iframe = $("") $iframeContainer.empty().append($iframe); var checkInterval; $iframe.load(function(){ checkInterval = setInterval(function(){ var loaded = false; try { //check if loading div is hidden loaded = !testHelper.$getPadChrome().find("#editorloadingbox").is(":visible"); } catch(e){} if(loaded){ clearTimeout(timeout); clearInterval(checkInterval); cb(null, {name: padName}); } }, 100); }); var timeout = setTimeout(function(){ if(checkInterval) clearInterval(checkInterval); cb(new Error("Pad didn't load in 10 seconds")); }, 10000); return padName; } testHelper.$getPadChrome = function(){ return $iframe.contents() } testHelper.$getPadOuter = function(){ return testHelper.$getPadChrome().find('iframe.[name="ace_outer"]').contents(); } testHelper.$getPadInner = function(){ return testHelper.$getPadOuter().find('iframe.[name="ace_inner"]').contents(); } // copied from http://stackoverflow.com/questions/985272/jquery-selecting-text-in-an-element-akin-to-highlighting-with-your-mouse testHelper.selectText = function(element){ var doc = document, range, selection; if (doc.body.createTextRange) { //ms range = doc.body.createTextRange(); range.moveToElementText(element); range.select(); } else if (window.getSelection) { //all others selection = window.getSelection(); range = doc.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); } } })()