You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2016/06/10 13:54:01 UTC
svn commit: r1747709 [3/3] - in
/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src:
main/appended-resouces/META-INF/
main/java/org/apache/myfaces/tobago/example/demo/ main/webapp/
main/webapp/content/20-component/010-input/10-in/ main/webapp/...
Added: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/style/qunit-1.23.1.css
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/style/qunit-1.23.1.css?rev=1747709&view=auto
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/style/qunit-1.23.1.css (added)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/style/qunit-1.23.1.css Fri Jun 10 13:54:01 2016
@@ -0,0 +1,305 @@
+/*!
+ * QUnit 1.23.1
+ * https://qunitjs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2016-04-12T17:29Z
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+}
+
+#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #8699A4;
+ background-color: #0D3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: 400;
+
+ border-radius: 5px 5px 0 0;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #C2CCD1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #FFF;
+}
+
+#qunit-testrunner-toolbar label {
+ display: inline-block;
+ padding: 0 0.5em 0 0.1em;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0.5em 1em 0.5em 1em;
+ color: #5E740B;
+ background-color: #EEE;
+ overflow: hidden;
+}
+
+#qunit-filteredTest {
+ padding: 0.5em 1em 0.5em 1em;
+ background-color: #F4FF77;
+ color: #366097;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 1em 0.5em 1em;
+ background-color: #2B81AF;
+ color: #FFF;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+#qunit-modulefilter-container {
+ float: right;
+ padding: 0.2em;
+}
+
+.qunit-url-config {
+ display: inline-block;
+ padding: 0.1em;
+}
+
+.qunit-filter {
+ display: block;
+ float: right;
+ margin-left: 1em;
+}
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 1em 0.4em 1em;
+ border-bottom: 1px solid #FFF;
+ list-style-position: inside;
+}
+
+#qunit-tests > li {
+ display: none;
+}
+
+#qunit-tests li.running,
+#qunit-tests li.pass,
+#qunit-tests li.fail,
+#qunit-tests li.skipped {
+ display: list-item;
+}
+
+#qunit-tests.hidepass {
+ position: relative;
+}
+
+#qunit-tests.hidepass li.running,
+#qunit-tests.hidepass li.pass {
+ visibility: hidden;
+ position: absolute;
+ width: 0;
+ height: 0;
+ padding: 0;
+ border: 0;
+ margin: 0;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests li.skipped strong {
+ cursor: default;
+}
+
+#qunit-tests li a {
+ padding: 0.5em;
+ color: #C2CCD1;
+ text-decoration: none;
+}
+
+#qunit-tests li p a {
+ padding: 0.25em;
+ color: #6B6464;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+ color: #000;
+}
+
+#qunit-tests li .runtime {
+ float: right;
+ font-size: smaller;
+}
+
+.qunit-assert-list {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #FFF;
+
+ border-radius: 5px;
+}
+
+.qunit-source {
+ margin: 0.6em 0 0.3em;
+}
+
+.qunit-collapsed {
+ display: none;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: 0.2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 0.5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #E0F2BE;
+ color: #374E0C;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #FFCACA;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: #000; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ padding: 5px;
+ background-color: #FFF;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #3C510C;
+ background-color: #FFF;
+ border-left: 10px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #FFF;
+ border-left: 10px solid #EE5757;
+ white-space: pre;
+}
+
+#qunit-tests > li:last-child {
+ border-radius: 0 0 5px 5px;
+}
+
+#qunit-tests .fail { color: #000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: #008000; }
+
+#qunit-banner.qunit-fail { background-color: #EE5757; }
+
+/*** Skipped tests */
+
+#qunit-tests .skipped {
+ background-color: #EBECE9;
+}
+
+#qunit-tests .qunit-skipped-label {
+ background-color: #F4FF77;
+ display: inline-block;
+ font-style: normal;
+ color: #366097;
+ line-height: 1.8em;
+ padding: 0 0.5em;
+ margin: -0.4em 0.4em -0.4em 0;
+}
+
+/** Result */
+
+#qunit-testresult {
+ padding: 0.5em 1em 0.5em 1em;
+
+ color: #2B81AF;
+ background-color: #D2E0E6;
+
+ border-bottom: 1px solid #FFF;
+}
+#qunit-testresult .module-name {
+ font-weight: 700;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+ width: 1000px;
+ height: 1000px;
+}
Added: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/test.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/test.xhtml?rev=1747709&view=auto
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/test.xhtml (added)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/test.xhtml Fri Jun 10 13:54:01 2016
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<ui:composition template="/plain.xhtml"
+ xmlns:tc="http://myfaces.apache.org/tobago/component"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns="http://www.w3.org/1999/xhtml">
+ <tc:script file="script/qunit-1.23.1.js"/>
+ <tc:style file="style/qunit-1.23.1.css"/>
+ <tc:script file="#{param['testjs']}"/>
+
+ <div id="qunit"></div>
+ <div id="qunit-fixture"></div>
+
+ <tc:object id="testframe" src="#{param['page']}">
+ <tc:style width="100%" height="800px"/>
+ </tc:object>
+</ui:composition>
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/ArquillianTest.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/ArquillianTest.java?rev=1747709&r1=1747708&r2=1747709&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/ArquillianTest.java (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/ArquillianTest.java Fri Jun 10 13:54:01 2016
@@ -19,6 +19,7 @@
package org.apache.myfaces.tobago.example.demo;
+import java.io.File;
import java.net.URL;
import org.jboss.arquillian.container.test.api.Deployment;
@@ -53,22 +54,23 @@ public class ArquillianTest {
@ArquillianResource
private URL contextPath;
- @FindBy(id = "page:i8::field")
+ @FindBy(id = "page:iajax::field")
private WebElement input;
- @FindBy(id = "page:outputfield")
+ @FindBy(id = "page:oajax")
private WebElement output;
- @FindByJQuery("#page\\:outputfield > label")
+ @FindByJQuery("#page\\:oajax > label")
private WebElement outputLabel;
- @FindByJQuery("#page\\:outputfield > span")
+ @FindByJQuery("#page\\:oajax > span")
private WebElement outputField;
@Deployment(testable = false)
public static WebArchive createDeployment() {
+ File pom = new File("tobago-example/tobago-example-demo/pom.xml");
WebArchive webArchive = ShrinkWrap.create(MavenImporter.class).
- loadPomFromFile("pom.xml", "jsf-provided", "!myfaces-2.0").importBuildOutput()
+ loadPomFromFile(pom, "jsf-provided", "!myfaces-2.0").importBuildOutput()
.as(WebArchive.class);
// XXX there should be a proper profile in POM for that
webArchive.delete("/WEB-INF/lib/hibernate-validator-4.3.2.Final.jar");
Added: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java?rev=1747709&view=auto
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java (added)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java Fri Jun 10 13:54:01 2016
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.example.demo;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.RunAsClient;
+import org.jboss.arquillian.drone.api.annotation.Drone;
+import org.jboss.arquillian.graphene.findby.FindByJQuery;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.archive.importer.MavenImporter;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.net.URL;
+import java.util.List;
+
+@RunWith(Arquillian.class)
+@RunAsClient
+public class QUnitTests {
+
+ private static final Logger LOG = LoggerFactory.getLogger(QUnitTests.class);
+
+ @Drone
+ private WebDriver browser;
+ @ArquillianResource
+ private URL contextPath;
+
+ @FindByJQuery("#page\\:navbtns\\:toggletest")
+ private WebElement toggletest;
+ @FindByJQuery("#qunit")
+ private WebElement qunit;
+
+ @Deployment
+ public static WebArchive createDeployment() {
+ File pom = new File("tobago-example/tobago-example-demo/pom.xml");
+ WebArchive webArchive = ShrinkWrap.create(MavenImporter.class).
+ loadPomFromFile(pom, "jsf-provided", "!myfaces-2.0").importBuildOutput()
+ .as(WebArchive.class);
+ // XXX there should be a proper profile in POM for that
+ webArchive.delete("/WEB-INF/lib/hibernate-validator-4.3.2.Final.jar");
+ return webArchive;
+ }
+
+ private void checkResults(String page) {
+ String testJs = page.substring(0, page.length() - 6) + ".test.js";
+ browser.get(contextPath + "/faces/test.xhtml?page=" + page + "&testjs=" + testJs);
+
+ WebElement qunitTests = qunit.findElement(By.id("qunit-tests"));
+ List<WebElement> testCases = qunitTests.findElements(By.xpath("li"));
+ Assert.assertTrue("There must be at least one test case.", testCases.size() > 0);
+
+ for (WebElement testCase : testCases) {
+ String testName = testCase.findElement(By.className("test-name")).getText();
+ String runtime = testCase.findElement(By.className("runtime")).getText();
+
+ if ("pass".equals(testCase.getAttribute("class"))) {
+ LOG.info("test '" + testName + "' for " + page + " passed in " + runtime);
+ Assert.assertTrue(true);
+ } else if ("fail".equals(testCase.getAttribute("class"))) {
+ WebElement assertList = testCase.findElement(By.className("qunit-assert-list"));
+ List<WebElement> asserts = assertList.findElements(By.tagName("li"));
+
+ int assertionCount = 1;
+ for (WebElement assertion : asserts) {
+ if ("pass".equals(assertion.getAttribute("class"))) {
+ Assert.assertTrue(true);
+ } else if ("fail".equals(assertion.getAttribute("class"))) {
+ LOG.warn("test '" + testName + "' for " + page + " failed on assertion " + assertionCount);
+ String expected = assertion.findElement(By.className("test-expected")).getText();
+ expected = expected.substring(12, expected.length() - 1);
+ String actual = assertion.findElement(By.className("test-actual")).getText();
+ actual = actual.substring(10, actual.length() - 1);
+ Assert.assertEquals(expected, actual);
+ }
+ }
+ }
+ }
+ }
+
+ @Test
+ public void allPages() {
+
+ }
+
+ @Test
+ public void in() {
+ String page = "content/20-component/010-input/10-in/in.xhtml";
+ checkResults(page);
+ }
+
+ @Test
+ public void suggest() {
+ String page = "content/20-component/010-input/20-suggest/suggest.xhtml";
+ checkResults(page);
+ }
+
+ @Test
+ public void date() {
+ String page = "content/40-test/1040-date/date.xhtml";
+ checkResults(page);
+ }
+}