Acceptance Testing
/ Automatisierte _ Web _ App _ Tests _ mit _ CasperJS /

- Björn Wilmsmann -
CasperJS
•
•
•

Frontend Testing für Web Applikationen

•

HTML5 und JavaScript

Automatisierte Acceptance Tests
Headless Browser Testing für die
Kommandozeile
Test-Driven
Development
Unit Tests
•
•
•

Individuelle Source Code Einheiten
Kleinste testbare Einheit
Isoliertes Testen kleiner Einheiten
Integration Tests
•
•

Testen von Modulen

•

Zwischen Unit Tests und Acceptance Tests

Test der Zusammenarbeit einzelner
Komponenten
Acceptance Tests
•

Sind die funktionalen Anforderungen an
eine Software erfüllt?

•
•

User Stories
High Level Tests
Continuous Integration
PhantomJS
•
•
•
•
•

Headless WebKit Browser
JavaScript Umgebung ähnlich Node.js
Voller HTML5 Funktionsumfang
Scripting in JavaScript und CoffeeScript
http://phantomjs.org
WebKit
•
•
•

Konqueror
Safari
Chrome
Anwendungsfälle
Screenshots
•
•
•

Rendering von Websites
Export als PNG, JPEG, GIF oder PDF
Unterstützt SVG und Canvas
Automatisierung
•
•

Makros

•
•

Cronjob für Websites

Automatisierung von wiederkehrenden
Aufgaben

Unterstützt JavaScript
Monitoring
•
•

Untersuchung von Datenverkehr

•

Export in HAR (HTTP Archive) Format

onResourceRequested,
onResourceReceived
Code Beispiele
PhantomJS ist kein Test
Framework
Testing
•
•

Headless Testing von Websites
Test Frameworks

•
•
•
•

Capybara (via Poltergeist)
Mocha
…
CasperJS
CasperJS
•
•
•
•

Nutzt PhantomJS als Grundlage
Testing Framework
Scripting in JavaScript und CoffeeScript
http://casperjs.org
Funktionsumfang
•
•
•
•

Navigation Scripting
Formulare ausfüllen & abschicken
DOM Manipulation
Asserts & xUnit Ergebnisse
Test Suites
•
•
•

Vollständige Testabläufe
Strukturierte Tests
Set up and tear down
DOM Manipulation
•
•
•

DOM Selectors
CSS3
XPath
Events
•
•
•

Event Handler ähnlich Node.js
Filter
http://casperjs.org/events-filters.html
Hilfsfunktionen
•

Utils: Hilfsfunktionen / JavaScript
Erweiterungen

•
•
•
•

Client Side Utils
Logging
Debugging
Vererbung (via Prototypes)
Down to business
Und cross-browser
Kompatibilität?
Slimer.js
•
•

Nutzt Gecko (Mozilla) statt WebKit

•

http://slimerjs.org/

Wird von CasperJS seit 1.1-beta1 ebenfalls
unterstützt
TrifleJS
•
•
•

Headless Internet Explorer (via .NET API)
API analog PhantomJS
http://triflejs.org/
Tools
Resurrectio
•
•
•

Chrome Erweiterung
Aufnahme von Scripts und Abläufen

https://github.com/ebrehault/resurrectio
SpookyJS
•
•

CasperJS aus Node.js fernsteuern

https://github.com/WaterfallEngineering/
SpookyJS
PhantomFlow

•
•

Visualisierung von Nutzerführung
https://github.com/Huddle/PhantomFlow
PhantomCSS

•
•

Visual diff für CSS
https://github.com/Huddle/PhantomCSS
Weitere Links
•

https://github.com/BjoernKW/
CasperJS_presentation

•

http://blog.codeship.io/2013/03/07/
Smoke-Testing-with-Casperjs.html
Björn Wilmsmann

Stefan-George-Str. 15a

46117 Oberhausen
!

Website: http://wilmsmann.de 

eMail: bjoern@wilmsmann.de

Tel.: +49-151-25209060

Acceptance Testing - Automatisierte Web App Tests mit CasperJS