SlideShare a Scribd company logo
1 of 21
Front-end Testing
Visual testing with Wraith
2.
About me
Mircea Fernea
Drupal Consultant at Amplexor Romania
mircea.fernea@amplexor.com
drupal.org/u/mfernea
3.
Front-end testing
Test pages the html structure & interactions
Checking PageSpeed Insights
Testing page load times & render speeds
Check visual changes
4.
CasperJS
Allows for scripted actions to be tested with PhantomJS.
It’s easy to setup for front-end developers.
Test complex features or components within the page.
Automate complex user actions.
Test workflows like content creation.
Check http responses on sensitive pages.
HTML structure & Interactions
5.
Behat & Mink & PhantomJS
Behat can be integrated with PhantomJS through Mink
and Selenium2
Storing credentials, creating scenarios that include
backend interaction are easier to setup in Behat.
You can even run tests for multiple screen sizes.
HTML structure & Interactions
6.
grunt-pagespeed
https://www.npmjs.com/package/grunt-pagespeed
You get all the information from
https://developers.google.com/speed/pagespeed/insights/
?url=http%3A%2F%2Fwww.smashingmagazine.com%2F
&tab=mobile
PageSpeed Insights
7.
grunt-phantomas
https://www.npmjs.com/package/grunt-phantomas
A PhantomJS-based web performance metrics tool
http://stefanjudis.github.io/grunt-phantomas/gruntjs/
Page load times & render speeds
8.
grunt-phantomas
Page load times & render speeds
9.
grunt-perfbudget
https://github.com/tkadlec/grunt-perfbudget
It’s based on WebPageTest API
http://www.webpagetest.org/
It can leverage multiple browsers, geographic locations
and network speeds.
You can have budget for number of requests, load time
etc. See the budget as threshold value.
Performance budgets
10.
Wraith
https://github.com/BBC-News/wraith
Developed by the guys at BBC News
Wraith uses either PhantomJS or SlimerJS to create
screen-shots of webpages on different environments and
then creates a diff of the two images.
Imagemagick and PhantomJS or SlimmerJS are required
to use Wraith. CasperJS can be used to target specific
selectors.
Visual testing
11.
Wraith - Install
$ brew install phantomjs
$ brew install imagemagick
$ gem install wraith
Visual testing
12.
Wraith modes
Standard: take screenshots of two environments,
producing a visual diff of the two screenshots
Casper: take screenshots of an element from two
environments using selectors, producing a visual diff of the
two screenshots
History: rather than capture two environments, capture the
same environment at two different moments in time to
compare them if anything changed
Visual testing
13.
Standard mode
Take screenshots of two environments, producing a visual
diff of the two screenshots
$ wraith setup - creates configs/config.yaml and
javascript/snap.js
Adjust config.yaml to setup config and the two
environments (e.g. resolutions, pages)
$ wraith capture config
$ Open gallery.html from output dir to view results
$ wraith reset_shots config
Visual testing
14.
Visual testing
15.
Visual testing
16.
Casper mode
Casper: take screenshots of an element from two
environments using selectors, producing a visual diff of the
two screenshots
$ wraith setup_casper - creates configs/component.yaml
and javascripts/casper.js
Adjust component.yaml
$ wraith capture component
If multiple matches found, only the first one is captured
Don’t start your selector with “#”. Add “div” in front
Open gallery.html to see results
Visual testing
17.
History mode
Rather than capture two environments, capture the same
environment at two different moments in time to compare
them if anything changed
$ wraith setup
Adjust config.yaml and rename it (e.g. local-history)
$ wraith history local-history
$ wraith latest local-history
Open gallery.html and see results
Don’t run history command twice
Visual testing
18.
Tweaks
Add cookies
Add HTTP Authentication
Get debug information
Adjust PhantomJS parameters
Visual testing
19.
“Don’t believe me on anything. Try this out for yourself.”
Visual testing
20.
Questions?
Q & A
21.
Other sources & references
http://fourword.fourkitchens.com/article/testing-drupal-
casperjs
http://danmatthews.me/2014/05/09/behat-phantomjs.html
http://jaffamonkey.com/using-phantomjs-with-behat/
http://mink.behat.org/en/latest/index.html
https://amsterdam2014.drupal.org/session/automated-
frontend-testing

More Related Content

What's hot

Webpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSWebpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSEmil Öberg
 
webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slidesmattysmith
 
Backbone.js
Backbone.jsBackbone.js
Backbone.jsVO Tho
 
ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!Chang W. Doh
 
Javascript MVVM with Vue.JS
Javascript MVVM with Vue.JSJavascript MVVM with Vue.JS
Javascript MVVM with Vue.JSEueung Mulyana
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)Joseph Chiang
 
Service worker - Offline Web
Service worker - Offline WebService worker - Offline Web
Service worker - Offline WebBruno Oliveira
 
Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJSFITC
 
AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.Dragos Mihai Rusu
 
NodeWay in my project & sails.js
NodeWay in my project & sails.jsNodeWay in my project & sails.js
NodeWay in my project & sails.jsDmytro Ovcharenko
 
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST APIWordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST APIBrian Hogg
 
Vuejs for Angular developers
Vuejs for Angular developersVuejs for Angular developers
Vuejs for Angular developersMikhail Kuznetcov
 
Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with SprocketsSpike Brehm
 
Nuxt.JS Introdruction
Nuxt.JS IntrodructionNuxt.JS Introdruction
Nuxt.JS IntrodructionDavid Ličen
 

What's hot (20)

Webpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSWebpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JS
 
Jasmine with JS-Test-Driver
Jasmine with JS-Test-DriverJasmine with JS-Test-Driver
Jasmine with JS-Test-Driver
 
webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slides
 
An Intro into webpack
An Intro into webpackAn Intro into webpack
An Intro into webpack
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!
 
Webpack DevTalk
Webpack DevTalkWebpack DevTalk
Webpack DevTalk
 
Javascript MVVM with Vue.JS
Javascript MVVM with Vue.JSJavascript MVVM with Vue.JS
Javascript MVVM with Vue.JS
 
Nuxt.js - Introduction
Nuxt.js - IntroductionNuxt.js - Introduction
Nuxt.js - Introduction
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)
 
Nuxt Talk
Nuxt TalkNuxt Talk
Nuxt Talk
 
Service worker - Offline Web
Service worker - Offline WebService worker - Offline Web
Service worker - Offline Web
 
Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS
 
Angular2 ecosystem
Angular2 ecosystemAngular2 ecosystem
Angular2 ecosystem
 
AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.
 
NodeWay in my project & sails.js
NodeWay in my project & sails.jsNodeWay in my project & sails.js
NodeWay in my project & sails.js
 
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST APIWordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
 
Vuejs for Angular developers
Vuejs for Angular developersVuejs for Angular developers
Vuejs for Angular developers
 
Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with Sprockets
 
Nuxt.JS Introdruction
Nuxt.JS IntrodructionNuxt.JS Introdruction
Nuxt.JS Introdruction
 

Viewers also liked

Amplexor - Future of Document Management - DXM for the workplace
Amplexor - Future of Document Management - DXM for the workplaceAmplexor - Future of Document Management - DXM for the workplace
Amplexor - Future of Document Management - DXM for the workplaceAmplexor
 
Amplexor Sharepoint 2013 seminar
Amplexor Sharepoint 2013 seminarAmplexor Sharepoint 2013 seminar
Amplexor Sharepoint 2013 seminarAmplexor
 
Google Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCMGoogle Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCMAmplexor
 
Amplexor Customer Experience Management seminar presentation Damien Dewitte
Amplexor Customer Experience Management seminar presentation Damien DewitteAmplexor Customer Experience Management seminar presentation Damien Dewitte
Amplexor Customer Experience Management seminar presentation Damien DewitteAmplexor
 
Mobilize your website and web applications
Mobilize your website and web applicationsMobilize your website and web applications
Mobilize your website and web applicationsAmplexor
 
Amplexor Drupal for the Enterprise seminar - introduction
Amplexor Drupal for the Enterprise seminar - introductionAmplexor Drupal for the Enterprise seminar - introduction
Amplexor Drupal for the Enterprise seminar - introductionAmplexor
 
DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...
DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...
DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...Amplexor
 
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...Amplexor
 
Mobile enterprise content management
Mobile enterprise content managementMobile enterprise content management
Mobile enterprise content managementAmplexor
 
Enterprise Search - Introduction
Enterprise Search - IntroductionEnterprise Search - Introduction
Enterprise Search - IntroductionAmplexor
 
Amplexor Customer Experience Management seminar Adobe
Amplexor Customer Experience Management seminar Adobe Amplexor Customer Experience Management seminar Adobe
Amplexor Customer Experience Management seminar Adobe Amplexor
 
Amplexor - The K2 Case Management Framework
Amplexor - The K2 Case Management FrameworkAmplexor - The K2 Case Management Framework
Amplexor - The K2 Case Management FrameworkAmplexor
 
Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...
Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...
Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...Amplexor
 
Case Management by EMC - xCP Platform
 Case Management by EMC - xCP Platform Case Management by EMC - xCP Platform
Case Management by EMC - xCP PlatformAmplexor
 

Viewers also liked (14)

Amplexor - Future of Document Management - DXM for the workplace
Amplexor - Future of Document Management - DXM for the workplaceAmplexor - Future of Document Management - DXM for the workplace
Amplexor - Future of Document Management - DXM for the workplace
 
Amplexor Sharepoint 2013 seminar
Amplexor Sharepoint 2013 seminarAmplexor Sharepoint 2013 seminar
Amplexor Sharepoint 2013 seminar
 
Google Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCMGoogle Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCM
 
Amplexor Customer Experience Management seminar presentation Damien Dewitte
Amplexor Customer Experience Management seminar presentation Damien DewitteAmplexor Customer Experience Management seminar presentation Damien Dewitte
Amplexor Customer Experience Management seminar presentation Damien Dewitte
 
Mobilize your website and web applications
Mobilize your website and web applicationsMobilize your website and web applications
Mobilize your website and web applications
 
Amplexor Drupal for the Enterprise seminar - introduction
Amplexor Drupal for the Enterprise seminar - introductionAmplexor Drupal for the Enterprise seminar - introduction
Amplexor Drupal for the Enterprise seminar - introduction
 
DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...
DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...
DrupalCon Amsterdam 2014 - Between structure and flexibility: Drupal for Mark...
 
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
 
Mobile enterprise content management
Mobile enterprise content managementMobile enterprise content management
Mobile enterprise content management
 
Enterprise Search - Introduction
Enterprise Search - IntroductionEnterprise Search - Introduction
Enterprise Search - Introduction
 
Amplexor Customer Experience Management seminar Adobe
Amplexor Customer Experience Management seminar Adobe Amplexor Customer Experience Management seminar Adobe
Amplexor Customer Experience Management seminar Adobe
 
Amplexor - The K2 Case Management Framework
Amplexor - The K2 Case Management FrameworkAmplexor - The K2 Case Management Framework
Amplexor - The K2 Case Management Framework
 
Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...
Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...
Amplexor lunch seminar - Enhancing your digital workplace with Microsoft Offi...
 
Case Management by EMC - xCP Platform
 Case Management by EMC - xCP Platform Case Management by EMC - xCP Platform
Case Management by EMC - xCP Platform
 

Similar to Amplexor - Drupal Camp Romania 2015 - Front-end testing

Rest web service_with_spring_hateoas
Rest web service_with_spring_hateoasRest web service_with_spring_hateoas
Rest web service_with_spring_hateoasZeid Hassan
 
Beginning AngularJS
Beginning AngularJSBeginning AngularJS
Beginning AngularJSTroy Miles
 
Single Page JavaScript WebApps... A Gradle Story
Single Page JavaScript WebApps... A Gradle StorySingle Page JavaScript WebApps... A Gradle Story
Single Page JavaScript WebApps... A Gradle StoryKon Soulianidis
 
Cross browser testing using BrowserStack
Cross browser testing using BrowserStack Cross browser testing using BrowserStack
Cross browser testing using BrowserStack RapidValue
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Appschrisb206 chrisb206
 
Rails Engine | Modular application
Rails Engine | Modular applicationRails Engine | Modular application
Rails Engine | Modular applicationmirrec
 
Decapitating Selenium with JavaScript
Decapitating Selenium with JavaScriptDecapitating Selenium with JavaScript
Decapitating Selenium with JavaScriptAlan Parkinson
 
Java script performance tips
Java script performance tipsJava script performance tips
Java script performance tipsShakti Shrestha
 
Struts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web ApplicationsStruts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web Applicationselliando dias
 
Technical Tips: Visual Regression Testing and Environment Comparison with Bac...
Technical Tips: Visual Regression Testing and Environment Comparison with Bac...Technical Tips: Visual Regression Testing and Environment Comparison with Bac...
Technical Tips: Visual Regression Testing and Environment Comparison with Bac...Building Blocks
 
Magento Performance Optimization 101
Magento Performance Optimization 101Magento Performance Optimization 101
Magento Performance Optimization 101Angus Li
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
 
Front End performance as a Continuous Integration - Part1
Front End performance as a Continuous Integration - Part1Front End performance as a Continuous Integration - Part1
Front End performance as a Continuous Integration - Part1Tarence DSouza
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!David Gibbons
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt AEM HUB
 
Parkjihoon phonegap research_for_bada
Parkjihoon phonegap research_for_badaParkjihoon phonegap research_for_bada
Parkjihoon phonegap research_for_bada웹데브모바일
 
NLIT 2011: Chef & Capistrano
NLIT 2011: Chef & CapistranoNLIT 2011: Chef & Capistrano
NLIT 2011: Chef & Capistranonickblah
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applicationsAstrails
 

Similar to Amplexor - Drupal Camp Romania 2015 - Front-end testing (20)

Rest web service_with_spring_hateoas
Rest web service_with_spring_hateoasRest web service_with_spring_hateoas
Rest web service_with_spring_hateoas
 
Beginning AngularJS
Beginning AngularJSBeginning AngularJS
Beginning AngularJS
 
Single Page JavaScript WebApps... A Gradle Story
Single Page JavaScript WebApps... A Gradle StorySingle Page JavaScript WebApps... A Gradle Story
Single Page JavaScript WebApps... A Gradle Story
 
Capistrano
CapistranoCapistrano
Capistrano
 
Cross browser testing using BrowserStack
Cross browser testing using BrowserStack Cross browser testing using BrowserStack
Cross browser testing using BrowserStack
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
 
Rails Engine | Modular application
Rails Engine | Modular applicationRails Engine | Modular application
Rails Engine | Modular application
 
Web Controls Set-1
Web Controls Set-1Web Controls Set-1
Web Controls Set-1
 
Decapitating Selenium with JavaScript
Decapitating Selenium with JavaScriptDecapitating Selenium with JavaScript
Decapitating Selenium with JavaScript
 
Java script performance tips
Java script performance tipsJava script performance tips
Java script performance tips
 
Struts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web ApplicationsStruts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web Applications
 
Technical Tips: Visual Regression Testing and Environment Comparison with Bac...
Technical Tips: Visual Regression Testing and Environment Comparison with Bac...Technical Tips: Visual Regression Testing and Environment Comparison with Bac...
Technical Tips: Visual Regression Testing and Environment Comparison with Bac...
 
Magento Performance Optimization 101
Magento Performance Optimization 101Magento Performance Optimization 101
Magento Performance Optimization 101
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Front End performance as a Continuous Integration - Part1
Front End performance as a Continuous Integration - Part1Front End performance as a Continuous Integration - Part1
Front End performance as a Continuous Integration - Part1
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt
 
Parkjihoon phonegap research_for_bada
Parkjihoon phonegap research_for_badaParkjihoon phonegap research_for_bada
Parkjihoon phonegap research_for_bada
 
NLIT 2011: Chef & Capistrano
NLIT 2011: Chef & CapistranoNLIT 2011: Chef & Capistrano
NLIT 2011: Chef & Capistrano
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
 

More from Amplexor

Amplexor- Global Content Solutions
Amplexor- Global Content SolutionsAmplexor- Global Content Solutions
Amplexor- Global Content SolutionsAmplexor
 
Amplexor- Intellectual Property Translations
Amplexor- Intellectual Property TranslationsAmplexor- Intellectual Property Translations
Amplexor- Intellectual Property TranslationsAmplexor
 
Amplexor- Elearning Localization
Amplexor- Elearning LocalizationAmplexor- Elearning Localization
Amplexor- Elearning LocalizationAmplexor
 
Amplexor- Enterprise Terminology
Amplexor- Enterprise TerminologyAmplexor- Enterprise Terminology
Amplexor- Enterprise TerminologyAmplexor
 
Amplexor Enterprise Machine Translation
Amplexor Enterprise Machine TranslationAmplexor Enterprise Machine Translation
Amplexor Enterprise Machine TranslationAmplexor
 
AMPLEXOR Expérience Digitale avec Adobe
AMPLEXOR Expérience Digitale avec AdobeAMPLEXOR Expérience Digitale avec Adobe
AMPLEXOR Expérience Digitale avec AdobeAmplexor
 
AMPLEXOR Energy & Engineering - Services et Solutions
AMPLEXOR Energy & Engineering - Services et SolutionsAMPLEXOR Energy & Engineering - Services et Solutions
AMPLEXOR Energy & Engineering - Services et SolutionsAmplexor
 
AMPLEXOR Energy & Engineering Solutions
AMPLEXOR Energy & Engineering SolutionsAMPLEXOR Energy & Engineering Solutions
AMPLEXOR Energy & Engineering SolutionsAmplexor
 
AMPLEXOR and Drupal: Partnering for Premium Digital Experiences
AMPLEXOR and Drupal: Partnering for Premium Digital ExperiencesAMPLEXOR and Drupal: Partnering for Premium Digital Experiences
AMPLEXOR and Drupal: Partnering for Premium Digital ExperiencesAmplexor
 
20+ Years of International Documentum Expertise
20+ Years of International Documentum Expertise20+ Years of International Documentum Expertise
20+ Years of International Documentum ExpertiseAmplexor
 
AMPLEXOR Next-Generation Intranets
AMPLEXOR Next-Generation IntranetsAMPLEXOR Next-Generation Intranets
AMPLEXOR Next-Generation IntranetsAmplexor
 
AMPLEXOR - Global leading partner for digital experience, collaboration and c...
AMPLEXOR - Global leading partner for digital experience, collaboration and c...AMPLEXOR - Global leading partner for digital experience, collaboration and c...
AMPLEXOR - Global leading partner for digital experience, collaboration and c...Amplexor
 
AMPLEXOR | Career opportunities for graduates in Belgium
AMPLEXOR | Career opportunities for graduates in BelgiumAMPLEXOR | Career opportunities for graduates in Belgium
AMPLEXOR | Career opportunities for graduates in BelgiumAmplexor
 
Internship Program for developers in Romania | Java & AEM
Internship Program for developers in Romania | Java & AEMInternship Program for developers in Romania | Java & AEM
Internship Program for developers in Romania | Java & AEMAmplexor
 
Internship Program for developers in Romania | PHP & Drupal
Internship Program for developers in Romania | PHP & DrupalInternship Program for developers in Romania | PHP & Drupal
Internship Program for developers in Romania | PHP & DrupalAmplexor
 
AMPLEXOR Digital Experience-Lösungen
AMPLEXOR Digital Experience-LösungenAMPLEXOR Digital Experience-Lösungen
AMPLEXOR Digital Experience-LösungenAmplexor
 
AMPLEXOR Solutions d'Expérience Digitale
AMPLEXOR Solutions d'Expérience DigitaleAMPLEXOR Solutions d'Expérience Digitale
AMPLEXOR Solutions d'Expérience DigitaleAmplexor
 
AMPLEXOR & Kentico | La formule gagnante pour votre strategie digitale
AMPLEXOR & Kentico | La formule gagnante pour votre strategie digitaleAMPLEXOR & Kentico | La formule gagnante pour votre strategie digitale
AMPLEXOR & Kentico | La formule gagnante pour votre strategie digitaleAmplexor
 
Camka, your hands-on partner for service excellence
Camka, your hands-on partner for service excellenceCamka, your hands-on partner for service excellence
Camka, your hands-on partner for service excellenceAmplexor
 
AMPLEXOR - myInsight
AMPLEXOR - myInsight AMPLEXOR - myInsight
AMPLEXOR - myInsight Amplexor
 

More from Amplexor (20)

Amplexor- Global Content Solutions
Amplexor- Global Content SolutionsAmplexor- Global Content Solutions
Amplexor- Global Content Solutions
 
Amplexor- Intellectual Property Translations
Amplexor- Intellectual Property TranslationsAmplexor- Intellectual Property Translations
Amplexor- Intellectual Property Translations
 
Amplexor- Elearning Localization
Amplexor- Elearning LocalizationAmplexor- Elearning Localization
Amplexor- Elearning Localization
 
Amplexor- Enterprise Terminology
Amplexor- Enterprise TerminologyAmplexor- Enterprise Terminology
Amplexor- Enterprise Terminology
 
Amplexor Enterprise Machine Translation
Amplexor Enterprise Machine TranslationAmplexor Enterprise Machine Translation
Amplexor Enterprise Machine Translation
 
AMPLEXOR Expérience Digitale avec Adobe
AMPLEXOR Expérience Digitale avec AdobeAMPLEXOR Expérience Digitale avec Adobe
AMPLEXOR Expérience Digitale avec Adobe
 
AMPLEXOR Energy & Engineering - Services et Solutions
AMPLEXOR Energy & Engineering - Services et SolutionsAMPLEXOR Energy & Engineering - Services et Solutions
AMPLEXOR Energy & Engineering - Services et Solutions
 
AMPLEXOR Energy & Engineering Solutions
AMPLEXOR Energy & Engineering SolutionsAMPLEXOR Energy & Engineering Solutions
AMPLEXOR Energy & Engineering Solutions
 
AMPLEXOR and Drupal: Partnering for Premium Digital Experiences
AMPLEXOR and Drupal: Partnering for Premium Digital ExperiencesAMPLEXOR and Drupal: Partnering for Premium Digital Experiences
AMPLEXOR and Drupal: Partnering for Premium Digital Experiences
 
20+ Years of International Documentum Expertise
20+ Years of International Documentum Expertise20+ Years of International Documentum Expertise
20+ Years of International Documentum Expertise
 
AMPLEXOR Next-Generation Intranets
AMPLEXOR Next-Generation IntranetsAMPLEXOR Next-Generation Intranets
AMPLEXOR Next-Generation Intranets
 
AMPLEXOR - Global leading partner for digital experience, collaboration and c...
AMPLEXOR - Global leading partner for digital experience, collaboration and c...AMPLEXOR - Global leading partner for digital experience, collaboration and c...
AMPLEXOR - Global leading partner for digital experience, collaboration and c...
 
AMPLEXOR | Career opportunities for graduates in Belgium
AMPLEXOR | Career opportunities for graduates in BelgiumAMPLEXOR | Career opportunities for graduates in Belgium
AMPLEXOR | Career opportunities for graduates in Belgium
 
Internship Program for developers in Romania | Java & AEM
Internship Program for developers in Romania | Java & AEMInternship Program for developers in Romania | Java & AEM
Internship Program for developers in Romania | Java & AEM
 
Internship Program for developers in Romania | PHP & Drupal
Internship Program for developers in Romania | PHP & DrupalInternship Program for developers in Romania | PHP & Drupal
Internship Program for developers in Romania | PHP & Drupal
 
AMPLEXOR Digital Experience-Lösungen
AMPLEXOR Digital Experience-LösungenAMPLEXOR Digital Experience-Lösungen
AMPLEXOR Digital Experience-Lösungen
 
AMPLEXOR Solutions d'Expérience Digitale
AMPLEXOR Solutions d'Expérience DigitaleAMPLEXOR Solutions d'Expérience Digitale
AMPLEXOR Solutions d'Expérience Digitale
 
AMPLEXOR & Kentico | La formule gagnante pour votre strategie digitale
AMPLEXOR & Kentico | La formule gagnante pour votre strategie digitaleAMPLEXOR & Kentico | La formule gagnante pour votre strategie digitale
AMPLEXOR & Kentico | La formule gagnante pour votre strategie digitale
 
Camka, your hands-on partner for service excellence
Camka, your hands-on partner for service excellenceCamka, your hands-on partner for service excellence
Camka, your hands-on partner for service excellence
 
AMPLEXOR - myInsight
AMPLEXOR - myInsight AMPLEXOR - myInsight
AMPLEXOR - myInsight
 

Recently uploaded

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Amplexor - Drupal Camp Romania 2015 - Front-end testing

  • 2. 2. About me Mircea Fernea Drupal Consultant at Amplexor Romania mircea.fernea@amplexor.com drupal.org/u/mfernea
  • 3. 3. Front-end testing Test pages the html structure & interactions Checking PageSpeed Insights Testing page load times & render speeds Check visual changes
  • 4. 4. CasperJS Allows for scripted actions to be tested with PhantomJS. It’s easy to setup for front-end developers. Test complex features or components within the page. Automate complex user actions. Test workflows like content creation. Check http responses on sensitive pages. HTML structure & Interactions
  • 5. 5. Behat & Mink & PhantomJS Behat can be integrated with PhantomJS through Mink and Selenium2 Storing credentials, creating scenarios that include backend interaction are easier to setup in Behat. You can even run tests for multiple screen sizes. HTML structure & Interactions
  • 6. 6. grunt-pagespeed https://www.npmjs.com/package/grunt-pagespeed You get all the information from https://developers.google.com/speed/pagespeed/insights/ ?url=http%3A%2F%2Fwww.smashingmagazine.com%2F &tab=mobile PageSpeed Insights
  • 7. 7. grunt-phantomas https://www.npmjs.com/package/grunt-phantomas A PhantomJS-based web performance metrics tool http://stefanjudis.github.io/grunt-phantomas/gruntjs/ Page load times & render speeds
  • 9. 9. grunt-perfbudget https://github.com/tkadlec/grunt-perfbudget It’s based on WebPageTest API http://www.webpagetest.org/ It can leverage multiple browsers, geographic locations and network speeds. You can have budget for number of requests, load time etc. See the budget as threshold value. Performance budgets
  • 10. 10. Wraith https://github.com/BBC-News/wraith Developed by the guys at BBC News Wraith uses either PhantomJS or SlimerJS to create screen-shots of webpages on different environments and then creates a diff of the two images. Imagemagick and PhantomJS or SlimmerJS are required to use Wraith. CasperJS can be used to target specific selectors. Visual testing
  • 11. 11. Wraith - Install $ brew install phantomjs $ brew install imagemagick $ gem install wraith Visual testing
  • 12. 12. Wraith modes Standard: take screenshots of two environments, producing a visual diff of the two screenshots Casper: take screenshots of an element from two environments using selectors, producing a visual diff of the two screenshots History: rather than capture two environments, capture the same environment at two different moments in time to compare them if anything changed Visual testing
  • 13. 13. Standard mode Take screenshots of two environments, producing a visual diff of the two screenshots $ wraith setup - creates configs/config.yaml and javascript/snap.js Adjust config.yaml to setup config and the two environments (e.g. resolutions, pages) $ wraith capture config $ Open gallery.html from output dir to view results $ wraith reset_shots config Visual testing
  • 16. 16. Casper mode Casper: take screenshots of an element from two environments using selectors, producing a visual diff of the two screenshots $ wraith setup_casper - creates configs/component.yaml and javascripts/casper.js Adjust component.yaml $ wraith capture component If multiple matches found, only the first one is captured Don’t start your selector with “#”. Add “div” in front Open gallery.html to see results Visual testing
  • 17. 17. History mode Rather than capture two environments, capture the same environment at two different moments in time to compare them if anything changed $ wraith setup Adjust config.yaml and rename it (e.g. local-history) $ wraith history local-history $ wraith latest local-history Open gallery.html and see results Don’t run history command twice Visual testing
  • 18. 18. Tweaks Add cookies Add HTTP Authentication Get debug information Adjust PhantomJS parameters Visual testing
  • 19. 19. “Don’t believe me on anything. Try this out for yourself.” Visual testing
  • 21. 21. Other sources & references http://fourword.fourkitchens.com/article/testing-drupal- casperjs http://danmatthews.me/2014/05/09/behat-phantomjs.html http://jaffamonkey.com/using-phantomjs-with-behat/ http://mink.behat.org/en/latest/index.html https://amsterdam2014.drupal.org/session/automated- frontend-testing