SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
CASPERJS
L'OUTIL	QUI	VA	DEVENIR	VOTRE
MEILLEUR	AMI	!
ParisJS		#34		-	25	/	02	/	2014
QU'EST-CE	QUE	CASPERJS	?
																																	Un	outil	de	scripting	web	et	de	testing
																																Tests	fonctionnels
																																Initialement	une	surcouche	de	Phantomjs
FAITES	ENTRER	LE	FANTOME
																											Installer	PhantomJs	:	 	http://phantomjs.org
																											Installer	CasperJs	:	 													
																											Lancer	Casper	:	allons-y		!
http://casperjs.org
var	casper	=	require('casper').create({});
Complètement	Cross/Plateforme
	bonus:	le	script	shell	en	1	clic	pour	les	distrib	GNU/Linux
SUPPORTS	...
PhantomJs	permet	d'utiliser	WebkitJs
Safari
Chrome	&	chromium
Opera
																																		Firefox	?
																																		=>	CasperJs	supportes	SlimerJs
																																	Internet	Explorer	?
																																	=>	 	est	en	WIP,	et	gère	IE8+	(o/	)TrifleJs
TESTER	DES	FORMS
var	casper	=	require('casper').create({});
//	http://docs.casperjs.org/en/latest/quickstart.html#now-let-s-scrape-google
casper.start('http://www.google.fr',	function()	{
				this.test.pass('Access	to	Google	Search	Engine	Success');
});
	
//	Fill	login	form	and	submit
casper.thenOpen('http://www.google.fr',function()	{
				this.test.info('Current	location	is	'	+	this.getCurrentUrl());
				this.fill('form[action="/search"]',	{	q:	'esgi'	},	true);
});
Rechercher	"esgi"	dans	Google
CLIC	&	SUIVI	DE	LIENS
var	casper	=	require('casper').create({});
//	Access	to	Google	Search	Engine	France
casper.start('http://www.siteduzero.com/');
	
casper.then(function()	{
				//	Click	on	1st	result	link
				this.click('a[href="/conditions-generales-utilisation"]');
});
//	access	to	CGU	page
casper.then(function()	{
				console.log('clicked	ok,	new	location	is		'+this.getCurrentUrl());
});
Accéder	à	la	page	des	CGU	en	suivant	le	clic
REALISER	DES	SCREENSHOTS
//	Is	google	search	engine	reachable	?
casper.start('http://www.google.fr',function()	{
				if(!this.test.assertHttpStatus(200,	'http://www.google.fr'))
				{
								//	Screenshot	if	google	is	unreachable
								this.capture('error.png');
				}
});
casper.thenOpen('http://www.cockpit.airlines-manager.com',	function()	{
				this.test.assertTitle('Airlines	Manager	:	jeu	en	ligne	de	gestion	gratuit','Ok,	it's	good
');
});
Supportes	jpg/png/gif	et	...	PDF
CasperJs	est	"CSS3-sélecteur"	compatible	™
TESTS	FONCTIONNELS
//	Is	google	search	engine	reachable	?
casper.test.begin('A	test	Suite',	2,	function	suite(test)	{
				casper.start('http://www.google.fr',function()	{
								if(!test.assertHttpStatus(200,	'http://www.google.fr'))
								{
												//	Screenshot	if	google	is	unreachable
												this.capture('error.png');
								}
				});
				casper.thenOpen('http://www.cockpit.airlines-manager.com',	function()	{
								test.assertTitle('Airlines	Manager	:	jeu	en	ligne	de	gestion	gratuit','Ok,	it's	good');
				});
});
Disponibilité	de	la	page,	d'élements	du	DOM
TESTS	UNITAIRES
//	from	http://docs.casperjs.org/en/latest/modules/tester.html#assertinstanceof
function	Cow()	{
				this.moo	=	function	moo()	{
								return	'moo!';
				};
}
casper.test.begin('assertInstanceOf()	tests',	2,	function	suite(test)	{
				var	daisy	=	new	Cow();
				test.assertInstanceOf(daisy,	Cow,	"Ok,	daisy	is	a	cow.");
				test.assertInstanceOf(["moo",	"boo"],	Array,	"We	can	test	for	arrays	too!");
				test.done();
});
Bien	moins	bon	que	 	Mocha.js
EXPORTS	MULTIPLES
Retours	JUnit/console/(HTML)
ACCEDER	AU	SHELL	(?)
//	do	some	caspersjs	stuff	...
var	childProcess;
try	{
				childProcess	=	require('child_process');
}catch(e)	{
				casper.log(e,	'error');
}
if	(childProcess)	{
				childProcess.execFile('/bin/bash',	['echo.sh',	'Hello',	'World'],	null,	function	(err,	stdo
ut,	stderr)	{
				casper.log('execFileSTDOUT:	'+	stdout,	'debug');
				casper.log('execFileSTDERR:	'+	stderr,	'debug');
});
casper.log('Done',	'debug');
}	else	{
				casper.log('Unable	to	require	child_process	native	module',	'warning');
}
							Et	d'autres	bizarreries	à	découvrir	:-)
POUR	FINIR	...
										Une	super	documentation	complète	et	à	jour																						
										Beaucoup	de	possibilités:	scripting,	testing		...																						
										Sorties	Console	&	XML,	"Jenkins-ready	"													
																						
		Vous	en	voulez	encore	plus	?
DES	QUESTIONS	??

Contenu connexe

Tendances

ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en devOlivier Doucet
 
BreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseBreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseAntonio Gomes Rodrigues
 
Un serveur rest en moins de 5 minutes
Un serveur rest en moins de 5 minutesUn serveur rest en moins de 5 minutes
Un serveur rest en moins de 5 minutesOlivier ETIENNE
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Philippe Gamache
 
Installer word press en local, automatique, simplement
Installer word press en local, automatique, simplementInstaller word press en local, automatique, simplement
Installer word press en local, automatique, simplementFabrice Ducarme
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelCocoaHeads France
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienRachid Zarouali
 
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Patrick Guimonet
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyXavier Gorse
 
Profiling Ansible et présentation lib mitogen
Profiling Ansible et présentation lib mitogenProfiling Ansible et présentation lib mitogen
Profiling Ansible et présentation lib mitogenYannig Perre
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravoSoumia Brabije
 
Presentation Hudson
Presentation HudsonPresentation Hudson
Presentation HudsonJS Bournival
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIRomain Cambien
 

Tendances (19)

NodeJs in real life
NodeJs in real lifeNodeJs in real life
NodeJs in real life
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en dev
 
BreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseBreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesse
 
Un serveur rest en moins de 5 minutes
Un serveur rest en moins de 5 minutesUn serveur rest en moins de 5 minutes
Un serveur rest en moins de 5 minutes
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009
 
Installer word press en local, automatique, simplement
Installer word press en local, automatique, simplementInstaller word press en local, automatique, simplement
Installer word press en local, automatique, simplement
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec Symfony
 
Profiling Ansible et présentation lib mitogen
Profiling Ansible et présentation lib mitogenProfiling Ansible et présentation lib mitogen
Profiling Ansible et présentation lib mitogen
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravo
 
Presentation Hudson
Presentation HudsonPresentation Hudson
Presentation Hudson
 
Slides de la
Slides de la Slides de la
Slides de la
 
Nagios
NagiosNagios
Nagios
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Kash Demo Fr
Kash Demo FrKash Demo Fr
Kash Demo Fr
 

En vedette

casperjs presentation
 casperjs presentation casperjs presentation
casperjs presentationAnsviaLab
 
Site Testing with CasperJS
Site Testing with CasperJSSite Testing with CasperJS
Site Testing with CasperJSJoseph Scott
 
High Performance WordPress II
High Performance WordPress IIHigh Performance WordPress II
High Performance WordPress IIBarry Abrahamson
 
CasperJS and PhantomJS for Automated Testing
CasperJS and PhantomJS for Automated TestingCasperJS and PhantomJS for Automated Testing
CasperJS and PhantomJS for Automated TestingX-Team
 
Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS Hervé Vũ Roussel
 

En vedette (7)

CasperJS
CasperJSCasperJS
CasperJS
 
casperjs presentation
 casperjs presentation casperjs presentation
casperjs presentation
 
Site Testing with CasperJS
Site Testing with CasperJSSite Testing with CasperJS
Site Testing with CasperJS
 
High Performance WordPress II
High Performance WordPress IIHigh Performance WordPress II
High Performance WordPress II
 
CasperJS
CasperJSCasperJS
CasperJS
 
CasperJS and PhantomJS for Automated Testing
CasperJS and PhantomJS for Automated TestingCasperJS and PhantomJS for Automated Testing
CasperJS and PhantomJS for Automated Testing
 
Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS Superfast Automated Web Testing with CasperJS & PhantomJS
Superfast Automated Web Testing with CasperJS & PhantomJS
 

Similaire à CasperJs, votre nouveau meilleur ami

PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP NextSQLI
 
Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsBoiteaweb
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderMohamed Ben Bouzid
 
Power shell saturday Paris 2017 Omiossec
Power shell saturday  Paris 2017 OmiossecPower shell saturday  Paris 2017 Omiossec
Power shell saturday Paris 2017 OmiossecOlivier Miossec
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieeXo Platform
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejsnaholyr
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distancepprem
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...sametmax
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.jsJulien Giovaresco
 
XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...
XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...
XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...Publicis Sapient Engineering
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natifHenri Gomez
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovyguest6e3bed
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
laravel.sillo.org-Cours Laravel 10 les bases installation et organisation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  installation et organisation.pdflaravel.sillo.org-Cours Laravel 10  les bases  installation et organisation.pdf
laravel.sillo.org-Cours Laravel 10 les bases installation et organisation.pdfHeartKing10
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Hamza Ben Marzouk
 

Similaire à CasperJs, votre nouveau meilleur ami (20)

PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
 
Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des plugins
 
CV
CVCV
CV
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
 
Power shell saturday Paris 2017 Omiossec
Power shell saturday  Paris 2017 OmiossecPower shell saturday  Paris 2017 Omiossec
Power shell saturday Paris 2017 Omiossec
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distance
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.js
 
XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...
XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...
XebiCon'16 : A la découverte de Nomad d'Hashicorp. Par Sergio Dos Santos, Dév...
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
laravel.sillo.org-Cours Laravel 10 les bases installation et organisation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  installation et organisation.pdflaravel.sillo.org-Cours Laravel 10  les bases  installation et organisation.pdf
laravel.sillo.org-Cours Laravel 10 les bases installation et organisation.pdf
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015
 
rapportWAS
rapportWASrapportWAS
rapportWAS
 

CasperJs, votre nouveau meilleur ami