Author: vjrj_ Date: 2011-11-08 05:06:31 +0100 (Tue, 08 Nov 2011) New Revision: 1591 Added: trunk/img/icons/cursor-orange.png trunk/src/main/webapp/others/cursor-orange.png Modified: trunk/img/icons/Black_Cursor.svg trunk/src/main/java/cc/kune/core/public/ws.css trunk/src/main/webapp/ws.html trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java trunk/src/test/java/cc/kune/selenium/PageObjectModule.java trunk/src/test/java/cc/kune/selenium/SeleniumModule.java trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java Log: NEW - # 127: Generate some screencast while doing automate testing http://kune.ourproject.org/issues/ticket/127 Modified: trunk/img/icons/Black_Cursor.svg =================================================================== --- trunk/img/icons/Black_Cursor.svg 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/img/icons/Black_Cursor.svg 2011-11-08 04:06:31 UTC (rev 1591) @@ -14,7 +14,7 @@ width="20" height="20" id="svg2" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.2 r9819" sodipodi:docname="Black_Cursor.svg"> <sodipodi:namedview pagecolor="#ffffff" @@ -31,9 +31,9 @@ showgrid="false" inkscape:showpageshadow="false" showborder="false" - inkscape:zoom="1" - inkscape:cx="6.5104813" - inkscape:cy="10.563713" + inkscape:zoom="4.4875" + inkscape:cx="10" + inkscape:cy="10" inkscape:window-x="0" inkscape:window-y="947" inkscape:window-maximized="0" @@ -110,7 +110,7 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> + <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> @@ -268,4 +268,100 @@ id="g3078-1" /> </g> </g> + <g + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/cursor-orange.png" + id="g3039" + transform="matrix(-0.89284025,1.2053366,1.2053366,0.89284025,-1205.9051,-972.00694)" + style="fill:#ff6600"> + <g + id="g3041" + transform="matrix(0.05527655,0,0,0.05527655,-22.484133,1026.5598)" + style="fill:#ff6600"> + <g + id="g3043" + transform="matrix(1.25,0,0,-1.25,385.16156,1124.4318)" + style="fill:#ff6600" /> + <g + id="g3045" + transform="matrix(1.25,0,0,-1.25,385.16156,1124.4318)" + style="fill:#ff6600" /> + <g + id="g3047" + transform="matrix(1.25,0,0,-1.25,385.16156,1124.4318)" + style="fill:#ff6600" /> + <g + id="g3049" + transform="matrix(1.25,0,0,-1.25,385.16156,1124.4318)" + style="fill:#ff6600"> + <g + id="g3051" + transform="matrix(221,0,0,306,1,526)" + style="fill:#ff6600"> + <image + id="image3053" + mask="url(#mask3036-4)" + transform="matrix(1,0,0,-1,0,1)" + height="1" + width="1" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN0AAAEyCAYAAAB+odX5AAAABHNCSVQICAgIfAhkiAAAA2dJREFUeJzt0zEBACAMwLCBf8/gohwkCvp0zcwZILNfB8BvTAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcRMBzHTQcx0EDMdxEwHMdNBzHQQMx3ETAcx00HMdBAzHcQu1KYDY6GxuR4AAAAASUVORK5CYII=" + style="fill:#ff6600" /> + </g> + </g> + <g + id="g3055" + transform="matrix(1.25,0,0,-1.25,385.16156,1124.4318)" + style="fill:#ff6600" /> + <g + id="g3057" + clip-path="url(#clipPath3048-6)" + transform="matrix(1.25,0,0,-1.25,385.16156,1124.4318)" + style="fill:#ff6600"> + <g + id="g3059" + style="fill:#ff6600" /> + <g + id="g3061" + style="fill:#ff6600"> + <g + id="g3063" + clip-path="url(#clipPath3054-7)" + style="fill:#ff6600"> + <g + id="g3065" + style="fill:#ff6600" /> + <g + id="g3067" + style="fill:#ff6600"> + <g + id="g3069" + clip-path="url(#clipPath3058-3)" + style="fill:#ff6600"> + <path + inkscape:connector-curvature="0" + style="fill:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3071" + d="m 41.14001,791.145 0,-187.8 42.2,40.8 40.99999,-69.2 22.8,0 0.4,19 -36.2,68 c 0,0 16.8,0 26.4,0 11.2667,0 36.2,0 36.2,0 l -132.79999,129.2 z" /> + <g + id="g3073" + transform="matrix(1,0,0,-1,0.1400146,841.945)" + style="fill:#ff6600"> + <path + inkscape:connector-curvature="0" + style="fill:#ff6600;stroke:#ffffff;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path3075" + d="M 41,50.79999 41,238.6 l 42.2,-40.8 41,69.2 22.8,0 0.4,-19 -36.2,-68 c 0,0 16.8,0 26.4,0 11.2667,0 36.2,0 36.2,0 L 41,50.79999 z" /> + </g> + </g> + </g> + </g> + </g> + </g> + <g + id="g3077" + transform="matrix(1.25,0,0,-1.25,385.16156,1124.4318)" + style="fill:#ff6600" /> + </g> + </g> </svg> Added: trunk/img/icons/cursor-orange.png =================================================================== (Binary files differ) Property changes on: trunk/img/icons/cursor-orange.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/src/main/java/cc/kune/core/public/ws.css =================================================================== --- trunk/src/main/java/cc/kune/core/public/ws.css 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-11-08 04:06:31 UTC (rev 1591) @@ -1543,7 +1543,7 @@ } div.jGrowl { - font-size: 18px; + font-size: 18px !important; } /* Dotted tab panel */ Added: trunk/src/main/webapp/others/cursor-orange.png =================================================================== (Binary files differ) Property changes on: trunk/src/main/webapp/others/cursor-orange.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/src/main/webapp/ws.html =================================================================== --- trunk/src/main/webapp/ws.html 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/main/webapp/ws.html 2011-11-08 04:06:31 UTC (rev 1591) @@ -75,6 +75,7 @@ <script type="text/javascript" src="http://wave.google.com/gadgets/js/core:rpc.js?c=1"></script> + <style type="text/css"> body { background-color: white; @@ -278,6 +279,85 @@ <![endif]--> </head> <body> + <div id="kcursor" + style="visibility: hidden; position: absolute; z-Index: 10000; height: 0; width: 0"> + <img src="/others/cursor-orange.png"> + </div> + <script type="text/javascript"> + <!-- // This is only used for tests (comment/remove in production) + var newx; + var newy; + var k_cur_x; + var k_cur_y; + var xGreat; + var x_inc; + var y_inc; + var diff_x; + var diff_y; + function kmove(x, y) { + newx = x - 18 + 15; + newy = y - 7 + 15; + kmoveit(); + } + + function recheck() { + if (newx >= k_cur_x) { + x_inc = 1; + } else { + x_inc = -1; + } + if (newy >= k_cur_y) { + y_inc = 1; + } else { + y_inc = -1; + } + diff_x = newx - k_cur_x * x_inc; + diff_y = newy - k_cur_y * y_inc; + xGreat = diff_x > diff_y; + } + + function kmoveit() { + recheck(); + if (k_cur_x != newx) + if (xGreat) { + k_cur_x = k_cur_x + 3 * x_inc; + } else { + k_cur_x = Math.round(k_cur_y * newx / newy); + } + if (k_cur_y != newy) + if (xGreat) { + k_cur_y = Math.round(k_cur_x * newy / newx); + } else { + k_cur_y = k_cur_y + 3 * y_inc; + } + + ksetCursorPos(k_cur_x, k_cur_y); + + if ((diff_x > 3) || (diff_y > 3)) { + window.setTimeout('kmoveit()', 1); + } + } + + function ksetCursorPos(x, y) { + document.getElementById('kcursor').style.top = k_cur_y + 'px'; + document.getElementById('kcursor').style.left = k_cur_x + 'px'; + } + function ksetCursor(x, y) { + k_cur_x = x; + k_cur_y = y; + ksetCursorPos(x, y); + } + + function khideCursor() { + document.getElementById('kcursor').style.visibility = 'hidden'; + } + + function kshowCursor() { + document.getElementById('kcursor').style.visibility = 'visible'; + } + ksetCursor(0, 0); + //--> + </script> <!-- Banner for wave errors --> <div class="banner" id="banner"></div> <!-- Autocomplete user/pass --> @@ -324,8 +404,8 @@ </li> <li style="background-image: url(ws/images/kune-intro-group.png);"> - <!-- Put here your site default group name --> - <a href="#site">Work in collaboration</a> + <!-- Put here your site default group name --> <a + href="#site">Work in collaboration</a> </li> <li style="background-image: url(ws/images/kune-intro-world.png);"> Modified: trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java 2011-11-08 04:06:31 UTC (rev 1591) @@ -1,7 +1,6 @@ package cc.kune.selenium; import org.openqa.selenium.By; -import org.openqa.selenium.OutputType; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; @@ -45,6 +44,7 @@ @Override public void beforeChangeValueOf(final WebElement element, final WebDriver driver) { SeleniumUtils.hightlight(element, driver); + sleep(300); } @Override @@ -76,7 +76,7 @@ @Override public void onException(final Throwable throwable, final WebDriver driver) { if (driver instanceof ChromeDriver) { - ((ChromeDriver) driver).getScreenshotAs(OutputType.FILE); + // ((ChromeDriver) driver).getScreenshotAs(OutputType.FILE); } } Modified: trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-08 04:06:31 UTC (rev 1591) @@ -68,8 +68,8 @@ public KuneSeleniumDefaults() { // baseUrl = "http://kune.beta.iepala.es/?locale=en#"; + baseUrl = "http://127.0.0.1:8888/?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#"; // baseUrl = "http://beta.eurosur.org/#"; - baseUrl = "http://127.0.0.1:8888/?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#"; injector = INJECTOR; webdriver = injector.getInstance(WebDriver.class); login = injector.getInstance(LoginPageObject.class); @@ -95,6 +95,9 @@ LOG.info("Going home"); home(); resize(); + SeleniumUtils.initCursor(webdriver); + SeleniumUtils.showCursor(webdriver); + login.getAnonMsg().click(); } public void close() { @@ -147,7 +150,6 @@ public void home() { assert baseUrl != null; webdriver.get(baseUrl); - login.getAnonMsg().click(); } public void open(final String url) { @@ -163,6 +165,10 @@ js.executeScript("window.resizeTo(806,707); window.moveTo(0,0);"); } + public void showCursor(final int x, final int y) { + SeleniumUtils.showCursor(webdriver, x, y); + } + public void showMsg(final String msg) { SeleniumUtils.showMsg(webdriver, "", msg); } @@ -181,7 +187,7 @@ public void showTitleSlide(final String title, final String description, final String token) { gotoToken(TokenUtils.subtitle(title, description, token)); - sleep(3000); + sleep(4000); webdriver.findElement(By.id(SeleniumConstants.GWTDEV + SubtitlesWidget.SUBTITLE_MANAGER_ID)).click(); } Modified: trunk/src/test/java/cc/kune/selenium/PageObjectModule.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/PageObjectModule.java 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/test/java/cc/kune/selenium/PageObjectModule.java 2011-11-08 04:06:31 UTC (rev 1591) @@ -29,6 +29,5 @@ final ElementLocatorFactory locator) { bind(componentType).toInstance(object); PageFactory.initElements(locator, object); - } } Modified: trunk/src/test/java/cc/kune/selenium/SeleniumModule.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-08 04:06:31 UTC (rev 1591) @@ -47,8 +47,8 @@ @Override protected void configure() { - // final RemoteWebDriver driver = createChromeDriver(); - final WebDriver driver = creatFirefoxDriver(); + final RemoteWebDriver driver = createChromeDriver(); + // final WebDriver driver = creatFirefoxDriver(); final EventFiringWebDriver wrap = new EventFiringWebDriver(driver); wrap.register(new CustomWebDriverEventListener()); Modified: trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java 2011-11-08 04:06:31 UTC (rev 1591) @@ -1,6 +1,9 @@ package cc.kune.selenium; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.Point; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; @@ -10,27 +13,57 @@ public class SeleniumUtils { + private static final Log LOG = LogFactory.getLog(SeleniumUtils.class); + + public static void hideCursor(final WebDriver webdriver) { + jsExec(webdriver).executeScript("khideCursor();"); + } + public static void hightlight(final WebElement element, final WebDriver webdriver) { - final JavascriptExecutor js = (JavascriptExecutor) webdriver; + showCursor(webdriver, element); + sleep(300); final String script = "window.jQuery('#" + element.getAttribute("id") + "').addClass('k-outline');" + "setTimeout('window.jQuery(\"#" + element.getAttribute("id") + "\").removeClass(\"k-outline\")', 1200);"; // Antes 700 // LOG.info("High: " + script); - js.executeScript(script); + jsExec(webdriver).executeScript(script); + } + public static void initCursor(final WebDriver webdriver) { + jsExec(webdriver).executeScript("ksetCursor(100,100);"); + showCursor(webdriver); + } + + private static JavascriptExecutor jsExec(final WebDriver webdriver) { + return (JavascriptExecutor) webdriver; + } + public static void moveMouseTo(final WebDriver webdriver, final WebElement element) { final Actions actions = new Actions(webdriver); actions.moveToElement(element); } + public static void showCursor(final WebDriver webdriver) { + jsExec(webdriver).executeScript("kshowCursor();"); + } + + public static void showCursor(final WebDriver webdriver, final int x, final int y) { + LOG.info("Mover cursor to x: " + x + ", y: " + y); + jsExec(webdriver).executeScript("kmove(" + x + "," + y + ");"); + } + + public static void showCursor(final WebDriver webdriver, final WebElement element) { + final Point location = element.getLocation(); + showCursor(webdriver, location.getX(), location.getY()); + } + public static void showMsg(final WebDriver webdriver, final String header, final String msg) { - final JavascriptExecutor js = (JavascriptExecutor) webdriver; final String opts = TextUtils.notEmpty(header) ? "header: '" + header + "'," : ""; // sticky: true, final String script = "window.jQuery.jGrowl(\"" + msg + "\", { " + opts + " theme: 'k-jgrowl' } )"; - js.executeScript(script); + jsExec(webdriver).executeScript(script); } public static void showTooltip(final WebDriver webdriver, final WebElement element) { @@ -46,5 +79,4 @@ Assert.fail("Exception in sleep method", e); } } - } Modified: trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java 2011-11-07 22:25:13 UTC (rev 1590) +++ trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java 2011-11-08 04:06:31 UTC (rev 1591) @@ -80,13 +80,17 @@ } public void openChat(final XmppURI uri) { + hightlight(openChat); openChat.click(); jid.sendKeys(uri.toString()); + hightlight(addToRoster); addToRoster.click(); + hightlight(openChatBtn); openChatBtn.click(); } public void show() { + hightlight(chatIcon); chatIcon.click(); }