adaptTo() is a meetup in Berlin focused on Apache Sling including Apache Jackrabbit and Apache Felix and is addressed to all using this stack or parts of it.
+
Read more...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extended Call for Papers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Although we got some great submissions for adaptTo() 2013, we still have some slots for further sessions. Therefore we extend the timeslot for submissions to the call for papers and for feedback by two weeks. This means you still can submit you submissions till 06.05.2013. We're looking forward to get more of your great talks.
adaptTo() is a technical meetup focused on the technical stack of Apache Sling including Apache Jackrabbit and Apache Felix and is addressed to all developers using this stack or parts of it.
+
2013 we'll have the third edition of adaptTo() and will again be located in Berlin, Germany. adaptTo() was successful in 2012 and will take place at a new location this year. The popular Kulturbrauerei offers more space to improve your experience. The location and the support of our main sponsor Adobe will again give you a platform to get in touch with some of the most experienced Sling, Jackrabbit and Felix developers and share your own experience with the community.
+
Additional sessions will cover commercial implementations like Adobe CQ and CRX, with particular focus on how these products leverage the architecture.
+
Date
+
23.-25.September 2013
+
Location
+
Kulturbrauerei Berlin
+More info on location
+
Ticketprice
+
149,95€
+
Next steps
+
Call for papers is ending 6. May 2013
+Submit your paper here
First of all this is a community event, so everyone attending is encouraged to actively participate at this meetup. By having a number of various tracks covering the various facets of the overall topic Apache Sling we want to give the community some startingpoints to discuss and interact. Since we just can cover our perspective we do need your help to get a really rich experience for everyone.
+
As a speaker you also will get free entrance to the meetup and obtain the speakershirt.
+
Session Details
+
+
Timeframe: the default timeframe for a talk is 45 minutes including the Q&As
+
Please add note to Submission if you require more or less time
Style of your session (e.g. Front presentation, Hands-on-Session, Workshop...)
+
Planned Material beside the slides (e.g. Codesamples that should be made available to attendees)
+
+
Topics of interest include, but are not limited to:
+
+
Integration of other Frameworks
+
Implementations based on Apache Sling
+
Field reports of projects utilizing Apache Sling / Apache Jackrabbit / Apache Felix and/or Products based upon this stack (like Adobe CQ5)
+
Hands-on sessions covering specific parts of the Stack (like Apache Sling CRUD or Apache Oak Extensions)
+
Solutions supporting development based on the Sling stack (like Dev-Tooling or Sling Extensions)
+
Best Practices (adressing topics like Security, Performance or Testing)
+
+
Manuscript Details
+
+
We will provide a standardized conference slidedeck to ensure a stable user experience (like fontsizes, colors and so on..)
+
Codesamples that should be made available for download need to be provided together with the manuscript
+
Livedemos should get a summary in the notes of the corresponding slide(just to ensure that the timeframe matches the amount of content of your session)
Till this date we will decide which sessions can be part of adaptTo() 2013 and get a feedback to you if we require some changes (e.g. when we identify overlap with other sessions)
+
Final manuscript due: 02.09.2013
+
Till this date we need the manuscript and corresponding material sent in for feedback and approval.
www.adaptto.org ist eine offizielle Website der pro!vision GmbH.
+
Standort Berlin
+pro!vision GmbH
+Wilmersdorfer Str. 50/51
+10627 Berlin
+Germany
+Tel. +49 (30) 818828-50
+
Standort Frankfurt
+pro!vision GmbH
+Löwengasse 27 A
+60385 Frankfurt am Main
+Germany
+Tel. +49 (69) 8700328-0
+
Verantwortlich für den Inhalt:
+Geschäftsführer: Karim Khan, Stefan Seifert
+Handelsregister Nr. HRB78141
+Amtsgericht Charlottenburg
+USt-IdNr.: DE209954974
+
+Haftungsausschluss/Disclaimer
+
Haftung für Inhalte
+
Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
+
Haftung für Links
+
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
+
Urheberrecht
+
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
+
Datenschutz
+
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
+
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
+
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.
").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
+
+/*
+ * #%L
+ * wcm.io
+ * %%
+ * Copyright (C) 2014 - 2015 wcm.io
+ * %%
+ * Licensed 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.
+ * #L%
+ */
+;/**
+ * Logs messages to the firebug console or creates an HTML div as alternative console.
+ * The plugin is based on the "jQuery plugin for debugging".
+ *
+ * @copyright (c) 2007 Ralf S. Engelschall
+ * @license GPL
+ * @see http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/
+ */
+
+/*global
+ jQuery
+*/
+
+/*
+ * Wrapper function to use "$" instead of "jQuery"
+ * For Aptana/Eclipse: Remove this function to get a Code Assitent and
+ * see the outline or generate a documentation
+ */
+(function($) {
+ /*
+ * jQuery class extension methods
+ */
+ $.extend({
+ /**
+ * boolean status whether debugging is enabled
+ */
+ _debug$: null,
+
+ /**
+ * boolean instance of the console created or not
+ */
+ _instance$: false,
+
+ /**
+ * method for getting and setting debug status
+ * @param boolean onoff
+ */
+ debug: function (onoff) {
+ var old_value = ($._debug$ === true ? true : false);
+ $._debug$ = (onoff ? true : false);
+ return old_value;
+ },
+
+ /**
+ * method for logging an object or message
+ * @param string message
+ */
+ log: function () {
+ if ($._debug$ === true) {
+ //create alternative html console
+ if($._instance$ === false) {
+ $.createConsole();
+ $._instance$ = true;
+ }
+ if(navigator.userAgent.toLowerCase().indexOf("msie") !== -1) {
+ var str = "";
+ for(var i=0; i node */
+ $("body").append('
jQuery debug console
');
+
+ /* attach a function to each of the Firebug methods */
+ var names = [
+ "log", "debug", "info", "warn", "error", "assert",
+ "dir", "dirxml", "group", "groupEnd", "time", "timeEnd",
+ "count", "trace", "profile", "profileEnd"
+ ];
+ window.console = {};
+ for (var i = 0; i < names.length; i++) {
+ window.console[names[i]] = function() {
+ $('#jQueryDebug')
+ .css("display", $._debug$ === true ? "block" : "none");
+
+ if(arguments.length == 1) {
+ $('#jQueryDebug ol.debugList')
+ .append('
' + object2text(arguments[0]) + '
');
+ } else {
+ var element = '
';
+ for(var k = 0; k < arguments.length; k++) {
+ element += '
' + object2text(arguments[k]) + '
';
+ }
+ element += '
';
+ $('#jQueryDebug ol.debugList').append(element);
+ }
+
+ };
+ }
+
+ /* indicate that we are the one who is proving the Firebug interface */
+ window.console.jQueryDebug = true;
+ }
+
+ }
+ });
+
+ /*
+ * jQuery object extension methods
+ */
+ $.fn.extend({
+ /**
+ * method for logging all jQuery items
+ * @param string message
+ */
+ log: function () {
+ if ($._debug$ === true) {
+ //create alternative html console
+ if($._instance$ === false) {
+ $.createConsole();
+ $._instance$ = true;
+ }
+
+ //cache arguments in extra array
+ var args = [];
+ for(var i = 0; i < arguments.length; i++) {
+ args.push(arguments[i]);
+ }
+
+ return this.each(function () {
+ //if arguments exits, use them and add element
+ if (args.length > 0) {
+ //make an independent copy
+ var args_temp = args.slice();
+ args_temp.push([this]);
+ $.log.apply($, args_temp);
+
+ //else only use element
+ } else {
+ $.log(this);
+ }
+ });
+ }
+ }
+ });
+
+})(jQuery);
+
+
+/*
+ * #%L
+ * wcm.io
+ * %%
+ * Copyright (C) 2014 - 2015 wcm.io
+ * %%
+ * Licensed 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.
+ * #L%
+ */
+;/**
+* navMenu - Hide and show menu in small screen
+*/
+(function($) {
+ $.fn.navMenu = function(options) {
+ // override the default options by parameter
+ var opts = $.extend({}, $.fn.navMenu.defaults, options);
+ var $this = this; // script
+ $this.each(function() {
+ var $self = $(this); // dom element
+ var $btn = $self.find(opts.menuOpener);
+ var $menu = $self.find(opts.menuContainer);
+ var open = $menu.hasClass(opts.menuActiveClass);
+ var toggleMenu = function(e) {
+ $.log("click menu");
+ e.preventDefault();
+ open = $menu.hasClass(opts.menuActiveClass);
+ if (open) {
+ $menu.slideUp(function(){
+ $menu.removeClass(opts.menuActiveClass);
+ // prevent inline display setting
+ $menu.css({"display":""});
+ });
+
+ } else {
+ $menu.slideDown(function(){
+ $menu.addClass(opts.menuActiveClass);
+ // prevent inline display setting
+ $menu.css({"display":""});
+ });
+
+ }
+ $.log("menu open:", open);
+ }
+ $.log("menu open:", open);
+ // bind click
+ $btn.on('click', toggleMenu);
+ });
+
+ };
+ /**
+ * Default settings
+ */
+ $.fn.navMenu.defaults = {
+ menuOpener: ".menu-opener",
+ menuContainer: ".navlist-main",
+ menuActiveClass: "active"
+ };
+})(jQuery);
+
+/*
+ * #%L
+ * wcm.io
+ * %%
+ * Copyright (C) 2014 - 2015 wcm.io
+ * %%
+ * Licensed 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.
+ * #L%
+ */
+;/**
+* navTabs - Hide and show tabs
+*/
+(function($) {
+ $.fn.navTabs = function(options) {
+ // override the default options by parameter
+ var opts = $.extend({}, $.fn.navTabs.defaults, options);
+ var $this = this;
+ $this.each(function() {
+ var $self = $(this); // dom element
+ // create target element for tabs
+ $target = $('');
+ $self.prepend($target);
+ // collect tab content
+ var $contents = $self.find(opts.tabContainer);
+ $btns = $self.find(opts.tabLink).find('a');
+ // move tab buttons to top and bind event to them
+ $btns.each(function(){
+ // bind click
+ $(this).on('click', function() {
+ // hide curently active element
+ $contents.each(function(){
+ $(this).removeClass(opts.tabActiveClass);
+ });
+ $btns.each(function(){
+ $(this).removeClass(opts.tabActiveClass);
+ });
+ $(this).addClass(opts.tabActiveClass);
+ // attach active class to related element
+ $('#'+$(this).attr('rel')).addClass(opts.tabActiveClass);
+ });
+ // move button to tab navigation
+ $target.append($(this));
+ });
+ // check whether tab is preselected
+ if (opts.tab !== "") { //.substr(1)
+ $target.find('a[href='+opts.tab+']').trigger('click');
+ }
+ });
+ };
+ /**
+ * Default settings
+ */
+ $.fn.navTabs.defaults = {
+ tabLink: ".tab-opener",
+ tabContainer: ".tab-wrapper",
+ tabActiveClass: "active"
+ };
+})(jQuery);
+
+/*
+ * #%L
+ * wcm.io
+ * %%
+ * Copyright (C) 2014 - 2015 wcm.io
+ * %%
+ * Licensed 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.
+ * #L%
+ */
+;/**
+* adjust position of links in teaserbar
+*/
+(function($) {
+ $.fn.teaserBar = function(options) {
+ // override the default options by parameter
+ var opts = $.extend({}, $.fn.teaserBar.defaults, options);
+ var $teaser;
+ //
+ var _calcPosition = function() {
+ var maxHeight = 0;
+ var req = $(this).innerWidth() > 600;
+ $teaser.each(function(){
+ $(this).find('.teaser-content').height('auto');
+ if (req) {
+ var thisHeight = $(this).find('.teaser-content').height();
+ maxHeight = Math.max(thisHeight, maxHeight);
+ }
+ });
+ if (req) {
+ $teaser.each(function(){
+ $(this).find('.teaser-content').height(maxHeight);
+ });
+ }
+ };
+ // listen for resize event
+ $(window).on('resize', _calcPosition);
+ //
+ $(this).each(function() {
+ var $self = $(this); // dom element
+ $teaser = $self.find(opts.teaserContainer);
+ _calcPosition();
+ });
+ };
+ /**
+ * Default settings
+ */
+ $.fn.teaserBar.defaults = {
+ teaserContainer: ".teaser",
+ teaserLink: ".link-teaser"
+ };
+})(jQuery);
+
+/*
+ * #%L
+ * wcm.io
+ * %%
+ * Copyright (C) 2014 - 2015 wcm.io
+ * %%
+ * Licensed 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.
+ * #L%
+ */
+;/**
+ * init.js
+ */
+
+// enable jQuery noConflict mode
+jQuery.noConflict();
+
+// enable underscore noConflict mode
+//var sampleApp_underscore = _.noConflict();
+
+// set up namespace
+var sampleApp = sampleApp || {};
+// set configuration
+sampleApp.config = sampleApp.config || {};
+// whether site runs in debug mode
+sampleApp.config.debug = (location.search.match(/frontend-debug/i) !== null || location.hostname.match(/local/i) !== null)? true : false;
+// start application
+jQuery(document).ready(function ($) {
+ if (jQuery.debug) {
+ // use Logging proxy
+ jQuery.debug(sampleApp.config.debug);
+ } else {
+ // Else create dummy log function to prevent errors
+ jQuery.extend({ log: function () {} });
+ jQuery.fn.extend({ log: function () {} });
+ }
+ $('#teaserbar').teaserBar();
+ $('#nav-main').navMenu();
+ $('.tab-navigation').navTabs({'tab':window.location.hash});
+});
diff --git a/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/favicon.ico b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/favicon.ico
new file mode 100644
index 00000000..9ebf8c7e
Binary files /dev/null and b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/favicon.ico differ
diff --git a/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-ipad.png b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-ipad.png
new file mode 100644
index 00000000..b0df9004
Binary files /dev/null and b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-ipad.png differ
diff --git a/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-iphone.png b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-iphone.png
new file mode 100644
index 00000000..3cc3a951
Binary files /dev/null and b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-iphone.png differ
diff --git a/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-iphone4.png b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-iphone4.png
new file mode 100644
index 00000000..ba294a85
Binary files /dev/null and b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/icon-iphone4.png differ
diff --git a/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/logo.png b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/logo.png
new file mode 100644
index 00000000..53f98cdf
Binary files /dev/null and b/examples/tests/src/main/webapp/etc.clientlibs/wcm-io-samples/clientlibs/wcm-io-samples.app/resources/img/logo.png differ
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/NavigationIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/NavigationIT.java
deleted file mode 100644
index e667c32f..00000000
--- a/examples/tests/src/test/java/io/wcm/qa/glnm/example/NavigationIT.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * #%L
- * wcm.io
- * %%
- * Copyright (C) 2017 wcm.io
- * %%
- * Licensed 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.
- * #L%
- */
-package io.wcm.qa.glnm.example;
-
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-import io.wcm.qa.glnm.device.TestDevice;
-import io.wcm.qa.glnm.providers.TestDeviceProvider;
-import io.wcm.qa.glnm.util.BrowserUtil;
-import io.wcm.qa.glnm.verification.driver.TitleAndUrlVerification;
-import io.wcm.qa.glnm.verification.util.Check;
-
-/**
- * Example for pure Selenium test based on Galenium.
- */
-public class NavigationIT extends AbstractExampleBase {
-
- @Factory(dataProviderClass = TestDeviceProvider.class, dataProvider = TestDeviceProvider.GALENIUM_TEST_DEVICES_FROM_DEVICE_CONFIG)
- public NavigationIT(TestDevice testDevice) {
- super(testDevice);
- }
-
- @Override
- public String getRelativePath() {
- return PATH_TO_HOMEPAGE;
- }
-
- @Test
- public void testNavigation() {
- loadStartUrl();
- openNav();
- clickConferenceNavLink();
- if (BrowserUtil.isFirefox()) {
- try {
- Thread.sleep(1000);
- }
- catch (InterruptedException ex) {
- getLogger().debug("exception when sleeping after click", ex);
- }
- }
- Check.verify(new TitleAndUrlVerification("conference"));
- }
-
-}
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/PageSourceIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/PageSourceIT.java
deleted file mode 100644
index 1b1cb5dd..00000000
--- a/examples/tests/src/test/java/io/wcm/qa/glnm/example/PageSourceIT.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * #%L
- * wcm.io
- * %%
- * Copyright (C) 2019 wcm.io
- * %%
- * Licensed 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.
- * #L%
- */
-package io.wcm.qa.glnm.example;
-
-import java.util.List;
-
-import org.htmlcleaner.CleanerProperties;
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-import io.wcm.qa.glnm.differences.difference.StringDifference;
-import io.wcm.qa.glnm.example.provider.ContentPathProvider;
-import io.wcm.qa.glnm.sampling.Sampler;
-import io.wcm.qa.glnm.sampling.aem.AemAuthorLoginSampler;
-import io.wcm.qa.glnm.sampling.htmlcleaner.HtmlCleanerSampler;
-import io.wcm.qa.glnm.sampling.jsoup.JsoupRawStringSampler;
-import io.wcm.qa.glnm.testcase.AbstractNamedTest;
-import io.wcm.qa.glnm.verification.diff.StringDiffVerification;
-import io.wcm.qa.glnm.verification.util.Check;
-
-/**
- *
- */
-public class PageSourceIT extends AbstractNamedTest {
-
- private String relativePath;
-
-
- @Factory(dataProviderClass = ContentPathProvider.class, dataProvider = ContentPathProvider.ALL_PAGES_FOR_EXAMPLE_TEMPLATES)
- public PageSourceIT(String contentPath) {
- setRelativePath(contentPath + ".html");
- getNameDifferences().addAdditionalDifference(new StringDifference(contentPath));
- }
-
- protected String getRelativePath() {
- return relativePath;
- }
-
- @Test
- public void testPageSource() {
- StringDiffVerification>,
- Sampler> verification = new StringDiffVerification>, Sampler>("sample stage", getSampler());
-
- verification.setCaching(true);
- verification.addDifference(new StringDifference(getRelativePath()));
- Check.verify(verification);
- }
-
- @SuppressWarnings("unchecked")
- private JsoupRawStringSampler getSampler() {
- HtmlCleanerSampler sampler = new HtmlCleanerSampler("http://localhost:4502" + getRelativePath());
- sampler.setCookieSampler(new AemAuthorLoginSampler());
- CleanerProperties properties = sampler.getHtmlCleanerProperties();
- properties.setTranslateSpecialEntities(false);
- properties.setOmitComments(true);
- properties.setOmitDoctypeDeclaration(false);
- return sampler;
- }
-
- protected void setRelativePath(String relativePath) {
- this.relativePath = relativePath;
- }
-
-}
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/GalenSpecTestIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/galen/GalenSpecTestIT.java
similarity index 80%
rename from examples/tests/src/test/java/io/wcm/qa/glnm/example/GalenSpecTestIT.java
rename to examples/tests/src/test/java/io/wcm/qa/glnm/example/galen/GalenSpecTestIT.java
index 83ce1e78..b978a0e8 100644
--- a/examples/tests/src/test/java/io/wcm/qa/glnm/example/GalenSpecTestIT.java
+++ b/examples/tests/src/test/java/io/wcm/qa/glnm/example/galen/GalenSpecTestIT.java
@@ -17,13 +17,14 @@
* limitations under the License.
* #L%
*/
-package io.wcm.qa.glnm.example;
+package io.wcm.qa.glnm.example.galen;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
+import io.qameta.allure.Description;
import io.wcm.qa.glnm.device.TestDevice;
-import io.wcm.qa.glnm.example.specs.Conference;
+import io.wcm.qa.glnm.example.AbstractExampleBase;
import io.wcm.qa.glnm.example.specs.Homepage;
import io.wcm.qa.glnm.providers.TestDeviceProvider;
@@ -38,17 +39,8 @@ public GalenSpecTestIT(TestDevice testDevice) {
}
@Test
- public void checkConferencePageWithNavigationAndGalenSpec() {
- getLogger().info("Testing Conference Page");
- loadStartUrl();
- openNav();
- clickConferenceNavLink();
- Conference.check();
- }
-
- @Test
+ @Description("Testing Homepage")
public void checkHomepageWithGalenSpec() {
- getLogger().info("Testing Homepage");
loadStartUrl();
Homepage.check();
}
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/generic/JavaScriptConsoleIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/generic/JavaScriptConsoleIT.java
new file mode 100644
index 00000000..61fb1793
--- /dev/null
+++ b/examples/tests/src/test/java/io/wcm/qa/glnm/example/generic/JavaScriptConsoleIT.java
@@ -0,0 +1,44 @@
+/*
+ * #%L
+ * wcm.io
+ * %%
+ * Copyright (C) 2019 wcm.io
+ * %%
+ * Licensed 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.
+ * #L%
+ */
+package io.wcm.qa.glnm.example.generic;
+
+import java.util.logging.Level;
+
+import org.testng.annotations.Test;
+
+import io.wcm.qa.glnm.example.AbstractExampleBase;
+import io.wcm.qa.glnm.interaction.Browser;
+import io.wcm.qa.glnm.verification.browser.BrowserLogVerification;
+import io.wcm.qa.glnm.verification.util.Check;
+
+public class JavaScriptConsoleIT extends AbstractExampleBase {
+
+ @Test
+ public void checkConsole() {
+ Browser.load(getStartUrl());
+ Check.verify(new BrowserLogVerification(Level.WARNING));
+ }
+
+ @Override
+ protected String getRelativePath() {
+ return "/en.html";
+ }
+
+}
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/generic/PageSourceIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/generic/PageSourceIT.java
new file mode 100644
index 00000000..98e245be
--- /dev/null
+++ b/examples/tests/src/test/java/io/wcm/qa/glnm/example/generic/PageSourceIT.java
@@ -0,0 +1,66 @@
+/*
+ * #%L
+ * wcm.io
+ * %%
+ * Copyright (C) 2019 wcm.io
+ * %%
+ * Licensed 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.
+ * #L%
+ */
+package io.wcm.qa.glnm.example.generic;
+
+import org.testng.annotations.Factory;
+import org.testng.annotations.Test;
+
+import io.wcm.qa.glnm.example.AbstractExampleBase;
+import io.wcm.qa.glnm.example.provider.ContentPathProvider;
+import io.wcm.qa.glnm.interaction.Browser;
+import io.wcm.qa.glnm.verification.driver.PageSourceVerification;
+import io.wcm.qa.glnm.verification.util.Check;
+
+public class PageSourceIT extends AbstractExampleBase {
+
+ private String relativePath;
+
+ @Factory(dataProviderClass = ContentPathProvider.class, dataProvider = ContentPathProvider.ALL_PAGES)
+ public PageSourceIT(String relativePath) {
+ super();
+ setRelativePath(relativePath);
+ }
+
+ @Test
+ public void checkPageSource() {
+ Browser.load(getStartUrl());
+ Check.verify(new ErrorInSource());
+ }
+
+ private void setRelativePath(String relativePath) {
+ this.relativePath = relativePath;
+ }
+
+ @Override
+ protected String getRelativePath() {
+ return relativePath;
+ }
+
+ private static class ErrorInSource extends PageSourceVerification {
+
+ ErrorInSource() {
+ super("Source Check");
+ mustNotContain("Exception", "Exception in source");
+ mustNotContain("Error", "Error in source");
+ }
+
+ }
+
+}
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/PageObjectIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/interactive/PageObjectIT.java
similarity index 61%
rename from examples/tests/src/test/java/io/wcm/qa/glnm/example/PageObjectIT.java
rename to examples/tests/src/test/java/io/wcm/qa/glnm/example/interactive/PageObjectIT.java
index 1cec76ba..763dede5 100644
--- a/examples/tests/src/test/java/io/wcm/qa/glnm/example/PageObjectIT.java
+++ b/examples/tests/src/test/java/io/wcm/qa/glnm/example/interactive/PageObjectIT.java
@@ -17,18 +17,19 @@
* limitations under the License.
* #L%
*/
-package io.wcm.qa.glnm.example;
+package io.wcm.qa.glnm.example.interactive;
import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import io.wcm.qa.glnm.device.TestDevice;
-import io.wcm.qa.glnm.interaction.Aem;
-import io.wcm.qa.glnm.providers.TestDeviceProvider;
-import io.wcm.qa.glnm.util.GaleniumContext;
+import io.wcm.qa.glnm.example.AbstractExampleBase;
import io.wcm.qa.glnm.example.pageobjects.Footer;
import io.wcm.qa.glnm.example.pageobjects.FooterNavSection;
import io.wcm.qa.glnm.example.pageobjects.Homepage;
@@ -36,12 +37,16 @@
import io.wcm.qa.glnm.example.pageobjects.Navigation;
import io.wcm.qa.glnm.example.pageobjects.NavigationTopLevelEntry;
import io.wcm.qa.glnm.example.pageobjects.Stage;
+import io.wcm.qa.glnm.interaction.aem.author.AuthorLogin;
+import io.wcm.qa.glnm.providers.TestDeviceProvider;
/**
* Showcase page object approach.
*/
public class PageObjectIT extends AbstractExampleBase {
+ private static final Logger LOG = LoggerFactory.getLogger(PageObjectIT.class);
+
private Homepage homepage;
@Factory(dataProviderClass = TestDeviceProvider.class, dataProvider = TestDeviceProvider.GALENIUM_TEST_DEVICES_ALL)
@@ -52,63 +57,52 @@ public PageObjectIT(TestDevice testDevice) {
@BeforeMethod(alwaysRun = true)
public void resetHomepage() {
if (homepage != null) {
- getLogger().debug("resetting homepage object for next test");
+ LOG.debug("resetting homepage object for next test");
homepage = null;
}
}
@Test
public void testWithPageObjects() {
- Aem.loginToAuthor(getHomepage().getPageUrl());
+ AuthorLogin.loginToAuthor(getHomepage().getPageUrl());
checkNavigation();
checkStage();
checkFooter();
}
- private void assertEquals(int actual, int expected, String msg) {
- GaleniumContext.getAssertion().assertEquals(actual, expected, msg);
- }
-
- private void assertEquals(String actual, String expected, String msg) {
- GaleniumContext.getAssertion().assertEquals(actual, expected, msg);
- }
-
private void checkFooter() {
Footer footer = getHomepage().getFooter();
List navSections = footer.getNavSections();
- assertEquals(navSections.size(), 3, "Meta nav sections");
+ Assert.assertEquals(navSections.size(), 2, "Meta nav sections");
FooterNavSection conferenceSection = navSections.get(0);
- assertEquals(conferenceSection.getTitle(), "CONFERENCE", "conference section title");
- assertEquals(conferenceSection.getNavLinks().size(), 3, "conference section link count");
- FooterNavSection venueSection = navSections.get(1);
- assertEquals(venueSection.getTitle(), "VENUE", "venue section title");
- assertEquals(venueSection.getNavLinks().size(), 1, "venue section link count");
- FooterNavSection archiveSection = navSections.get(2);
- assertEquals(archiveSection.getTitle(), "ARCHIVE", "archive section title");
- assertEquals(archiveSection.getNavLinks().size(), 2, "archive section link count");
+ Assert.assertEquals(conferenceSection.getTitle(), "CONFERENCE", "conference section title");
+ Assert.assertEquals(conferenceSection.getNavLinks().size(), 1, "conference section link count");
+ FooterNavSection archiveSection = navSections.get(1);
+ Assert.assertEquals(archiveSection.getTitle(), "ARCHIVE", "archive section title");
+ Assert.assertEquals(archiveSection.getNavLinks().size(), 2, "archive section link count");
}
private void checkNavigation() {
Navigation navigation = getHomepage().getNavigation();
List topLevelItems = navigation.getTopLevelItems();
- assertEquals(topLevelItems.size(), 2, "two top level items");
+ Assert.assertEquals(topLevelItems.size(), 2, "two top level items");
NavigationTopLevelEntry navHome = topLevelItems.get(0);
- assertEquals(navHome.getTitle(), "HOME", "Main navigation home");
+ Assert.assertEquals(navHome.getTitle(), "HOME", "Main navigation home");
NavigationTopLevelEntry navConference = topLevelItems.get(1);
- assertEquals(navConference.getTitle(), "CONFERENCE", "Main navigation conference");
+ Assert.assertEquals(navConference.getTitle(), "CONFERENCE", "Main navigation conference");
}
private void checkStage() {
Stage stage = getHomepage().getStage();
- assertEquals(stage.getTitle(), "adaptTo() 2013", "stage title");
- assertEquals(stage.getDescription(), "23.–25. September 2013 Kulturbrauerei Berlin", "stage description");
+ Assert.assertEquals(stage.getTitle(), "adaptTo() 2013", "stage title");
+ Assert.assertEquals(stage.getDescription(), "23.–25. September 2013 Kulturbrauerei Berlin", "stage description");
List ctaLinks = stage.getCtaLinks();
- assertEquals(ctaLinks.size(), 2, "two CTA links");
+ Assert.assertEquals(ctaLinks.size(), 2, "two CTA links");
}
private Homepage getHomepage() {
if (homepage == null) {
- getLogger().debug("new homepage");
+ LOG.debug("new homepage");
homepage = new Homepage();
}
return homepage;
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/ComponentSourceIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/ComponentSourceIT.java
similarity index 96%
rename from examples/tests/src/test/java/io/wcm/qa/glnm/example/ComponentSourceIT.java
rename to examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/ComponentSourceIT.java
index 7da54c64..fecd3c17 100644
--- a/examples/tests/src/test/java/io/wcm/qa/glnm/example/ComponentSourceIT.java
+++ b/examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/ComponentSourceIT.java
@@ -17,7 +17,7 @@
* limitations under the License.
* #L%
*/
-package io.wcm.qa.glnm.example;
+package io.wcm.qa.glnm.example.sampling;
import java.util.List;
import java.util.Map;
@@ -33,7 +33,7 @@
public class ComponentSourceIT extends AbstractNamedTest {
- @Test
+ @Test(groups = "aem")
public void checkStageSource() {
AemComponentHtmlSampler sampler = new AemComponentHtmlSampler(getRelativePath(), "stage");
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/ImageComparisonIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/ImageComparisonIT.java
similarity index 88%
rename from examples/tests/src/test/java/io/wcm/qa/glnm/example/ImageComparisonIT.java
rename to examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/ImageComparisonIT.java
index f61ff9da..52ae679b 100644
--- a/examples/tests/src/test/java/io/wcm/qa/glnm/example/ImageComparisonIT.java
+++ b/examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/ImageComparisonIT.java
@@ -17,14 +17,16 @@
* limitations under the License.
* #L%
*/
-package io.wcm.qa.glnm.example;
+package io.wcm.qa.glnm.example.sampling;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import io.wcm.qa.glnm.device.TestDevice;
+import io.wcm.qa.glnm.differences.difference.SystemPropertyDifference;
import io.wcm.qa.glnm.differences.difference.driver.BrowserDifference;
import io.wcm.qa.glnm.differences.difference.driver.ScreenWidthDifference;
+import io.wcm.qa.glnm.example.AbstractExampleBase;
import io.wcm.qa.glnm.example.selectors.common.Page;
import io.wcm.qa.glnm.example.selectors.homepage.Stage;
import io.wcm.qa.glnm.providers.TestDeviceProvider;
@@ -37,6 +39,8 @@
*/
public class ImageComparisonIT extends AbstractExampleBase {
+ private static final String GALENIUM_EXAMPLE_SUT = "galenium.example.sut";
+
@Factory(dataProviderClass = TestDeviceProvider.class, dataProvider = TestDeviceProvider.GALENIUM_TEST_DEVICES_ALL)
public ImageComparisonIT(TestDevice testDevice) {
super(testDevice);
@@ -65,6 +69,7 @@ private void checkVisually(Selector selector) {
// browser and viewport width will make a difference
verification.addDifference(new BrowserDifference());
verification.addDifference(new ScreenWidthDifference());
+ verification.addDifference(new SystemPropertyDifference(GALENIUM_EXAMPLE_SUT));
// compare image using spec
Check.verify(verification);
diff --git a/examples/tests/src/test/java/io/wcm/qa/glnm/example/VerificationIT.java b/examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/VerificationIT.java
similarity index 90%
rename from examples/tests/src/test/java/io/wcm/qa/glnm/example/VerificationIT.java
rename to examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/VerificationIT.java
index a81d9982..95f88542 100644
--- a/examples/tests/src/test/java/io/wcm/qa/glnm/example/VerificationIT.java
+++ b/examples/tests/src/test/java/io/wcm/qa/glnm/example/sampling/VerificationIT.java
@@ -17,7 +17,7 @@
* limitations under the License.
* #L%
*/
-package io.wcm.qa.glnm.example;
+package io.wcm.qa.glnm.example.sampling;
import static io.wcm.qa.glnm.verification.util.Check.verify;
@@ -27,6 +27,8 @@
import io.wcm.qa.glnm.device.TestDevice;
import io.wcm.qa.glnm.differences.difference.driver.BrowserDifference;
import io.wcm.qa.glnm.differences.difference.driver.ScreenWidthDifference;
+import io.wcm.qa.glnm.example.AbstractExampleBase;
+import io.wcm.qa.glnm.example.pageobjects.Homepage;
import io.wcm.qa.glnm.example.selectors.common.Page;
import io.wcm.qa.glnm.example.selectors.common.Page.Navigation;
import io.wcm.qa.glnm.example.selectors.homepage.Stage;
@@ -36,11 +38,9 @@
import io.wcm.qa.glnm.verification.element.CssClassVerification;
import io.wcm.qa.glnm.verification.element.InvisibilityVerification;
import io.wcm.qa.glnm.verification.element.LinkTargetVerification;
-import io.wcm.qa.glnm.verification.element.NoCssClassVerification;
import io.wcm.qa.glnm.verification.element.VisibilityVerification;
import io.wcm.qa.glnm.verification.element.VisualVerification;
import io.wcm.qa.glnm.verification.util.Check;
-import io.wcm.qa.glnm.example.pageobjects.Homepage;
/**
* Showcase {@link Verification} approach.
@@ -62,12 +62,10 @@ public void verificationTest() {
verify(new TitleAndUrlVerification("Homepage"), new LogoVerification(), new VisibilityVerification(Stage.SELF));
if (isMobile()) {
- verify(new InvisibilityVerification(Navigation.LINK_TO_HOMEPAGE),
- new InvisibilityVerification(Navigation.LINK_TO_CONFERENCE));
+ verify(new InvisibilityVerification(Navigation.LINK_TO_HOMEPAGE));
}
else {
- verify(new CssClassVerification(Navigation.LINK_TO_HOMEPAGE, CSS_CLASS_NAVLINK_ACTIVE),
- new NoCssClassVerification(Navigation.LINK_TO_CONFERENCE, CSS_CLASS_NAVLINK_ACTIVE));
+ verify(new CssClassVerification(Navigation.LINK_TO_HOMEPAGE, CSS_CLASS_NAVLINK_ACTIVE));
}
Check.verify(new LinkTargetVerification(Page.LOGO));
diff --git a/examples/tests/src/test/resources/devices.csv b/examples/tests/src/test/resources/devices.csv
index bcd8cc44..0070be19 100644
--- a/examples/tests/src/test/resources/devices.csv
+++ b/examples/tests/src/test/resources/devices.csv
@@ -4,4 +4,4 @@ iPhone 8,375,667,CHROME,iPhone 6/7/8
iPad Portrait,768,1024,CHROME,
iPad Landscape,1024,768,CHROME,
iPad Pro Portrait,1024,1366,CHROME,
-iPad Pro Landscape,1366,1024,CHROME,
\ No newline at end of file
+iPad Pro Landscape,1366,1024,CHROME,
diff --git a/examples/tests/src/test/resources/images/chrome/0400/page.logo.png b/examples/tests/src/test/resources/images/chrome/0400/page.logo.png
index fff81d4d..0f6030eb 100644
Binary files a/examples/tests/src/test/resources/images/chrome/0400/page.logo.png and b/examples/tests/src/test/resources/images/chrome/0400/page.logo.png differ
diff --git a/examples/tests/src/test/resources/images/chrome/0400/stage.png b/examples/tests/src/test/resources/images/chrome/0400/stage.png
deleted file mode 100644
index 6d203381..00000000
Binary files a/examples/tests/src/test/resources/images/chrome/0400/stage.png and /dev/null differ
diff --git a/examples/tests/src/test/resources/images/chrome/1400/page.logo.png b/examples/tests/src/test/resources/images/chrome/1400/page.logo.png
index 20331467..fa1713d2 100644
Binary files a/examples/tests/src/test/resources/images/chrome/1400/page.logo.png and b/examples/tests/src/test/resources/images/chrome/1400/page.logo.png differ
diff --git a/examples/tests/src/test/resources/images/chrome/1400/stage.png b/examples/tests/src/test/resources/images/chrome/1400/stage.png
deleted file mode 100644
index a683cf67..00000000
Binary files a/examples/tests/src/test/resources/images/chrome/1400/stage.png and /dev/null differ
diff --git a/examples/tests/src/test/resources/images/chrome/jetty/0400/page.logo.png b/examples/tests/src/test/resources/images/chrome/jetty/0400/page.logo.png
new file mode 100644
index 00000000..376c5367
Binary files /dev/null and b/examples/tests/src/test/resources/images/chrome/jetty/0400/page.logo.png differ
diff --git a/examples/tests/src/test/resources/images/chrome/jetty/0400/stage.png b/examples/tests/src/test/resources/images/chrome/jetty/0400/stage.png
new file mode 100644
index 00000000..875854a0
Binary files /dev/null and b/examples/tests/src/test/resources/images/chrome/jetty/0400/stage.png differ
diff --git a/examples/tests/src/test/resources/images/chrome/jetty/1400/page.logo.png b/examples/tests/src/test/resources/images/chrome/jetty/1400/page.logo.png
new file mode 100644
index 00000000..fa1713d2
Binary files /dev/null and b/examples/tests/src/test/resources/images/chrome/jetty/1400/page.logo.png differ
diff --git a/examples/tests/src/test/resources/images/chrome/jetty/1400/stage.png b/examples/tests/src/test/resources/images/chrome/jetty/1400/stage.png
new file mode 100644
index 00000000..afa8d5f4
Binary files /dev/null and b/examples/tests/src/test/resources/images/chrome/jetty/1400/stage.png differ
diff --git a/examples/tests/src/test/resources/images/firefox/1400/page.logo.png b/examples/tests/src/test/resources/images/firefox/1400/page.logo.png
deleted file mode 100644
index c0691673..00000000
Binary files a/examples/tests/src/test/resources/images/firefox/1400/page.logo.png and /dev/null differ
diff --git a/examples/tests/src/test/resources/images/firefox/1400/stage.png b/examples/tests/src/test/resources/images/firefox/1400/stage.png
deleted file mode 100644
index 676d0d31..00000000
Binary files a/examples/tests/src/test/resources/images/firefox/1400/stage.png and /dev/null differ
diff --git a/examples/tests/src/test/resources/images/firefox/400/page.logo.png b/examples/tests/src/test/resources/images/firefox/400/page.logo.png
deleted file mode 100644
index dcc4fccc..00000000
Binary files a/examples/tests/src/test/resources/images/firefox/400/page.logo.png and /dev/null differ
diff --git a/examples/tests/src/test/resources/images/firefox/400/stage.png b/examples/tests/src/test/resources/images/firefox/400/stage.png
deleted file mode 100644
index bf94903b..00000000
Binary files a/examples/tests/src/test/resources/images/firefox/400/stage.png and /dev/null differ
diff --git a/examples/tests/src/test/resources/mediaqueries.properties b/examples/tests/src/test/resources/mediaqueries.properties
index beabd2c6..e5b15fa0 100644
--- a/examples/tests/src/test/resources/mediaqueries.properties
+++ b/examples/tests/src/test/resources/mediaqueries.properties
@@ -1,2 +1,2 @@
desktop=1400
-mobile=400
\ No newline at end of file
+mobile=400
diff --git a/examples/tests/src/test/resources/text/expected.properties b/examples/tests/src/test/resources/text/expected.properties
index 72733a8c..93a11b8f 100644
--- a/examples/tests/src/test/resources/text/expected.properties
+++ b/examples/tests/src/test/resources/text/expected.properties
@@ -1,9 +1,8 @@
#Expected texts
-#Sun Jul 28 02:29:50 CEST 2019
+#Thu Dec 19 13:48:12 CET 2019
+LinkTarget.href=http\://localhost\:4502/content/wcm-io-samples/en.html
+CurrentUrl.url=http\://localhost\:4502/content/wcm-io-samples/en.html
+PageTitle.title=wcm.io Sample Site
#Sampled texts
-#Sun Jul 28 02:29:50 CEST 2019
-conference.title=Conference - wcm.io Sample Site
-conference.url=http\://localhost\:4502/content/wcm-io-samples/en/conference.html
-homepage.title=wcm.io Sample Site
-homepage.url=http\://localhost\:4502/content/wcm-io-samples/en.html
-page_logo.href=http\://localhost\:4502/content/wcm-io-samples/en.html
+#Thu Dec 19 13:48:12 CET 2019
+LinkTarget.page_logo.href=http\://localhost\:4502/content/wcm-io-samples/en.html
diff --git a/examples/tests/src/test/resources/text/sample_stage.txt b/examples/tests/src/test/resources/text/sample_stage.txt
deleted file mode 100644
index bebecba6..00000000
--- a/examples/tests/src/test/resources/text/sample_stage.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-