CasperJs, votre nouveau meilleur ami

13
CASPERJS L'OUTIL QUI VA DEVENIR VOTRE MEILLEUR AMI ! ParisJS #34 - 25 / 02 / 2014

Transcript of CasperJs, votre nouveau meilleur ami

Page 1: CasperJs, votre nouveau meilleur ami

CASPERJSL'OUTILQUIVADEVENIRVOTRE

MEILLEURAMI!

ParisJS#34-25/02/2014

Page 2: CasperJs, votre nouveau meilleur ami

QU'EST-CEQUECASPERJS?Unoutildescriptingwebetdetesting

Testsfonctionnels

InitialementunesurcouchedePhantomjs

Page 3: CasperJs, votre nouveau meilleur ami

FAITESENTRERLEFANTOMEInstallerPhantomJs: http://phantomjs.org

InstallerCasperJs:

LancerCasper:allons-y!

http://casperjs.org

varcasper=require('casper').create({});

ComplètementCross/Plateformebonus:lescriptshellen1clicpourlesdistribGNU/Linux

Page 4: CasperJs, votre nouveau meilleur ami

SUPPORTS...PhantomJspermetd'utiliserWebkitJs

SafariChrome&chromiumOpera

Firefox?=>CasperJssupportesSlimerJs

InternetExplorer?=> estenWIP,etgèreIE8+(\o/)TrifleJs

Page 5: CasperJs, votre nouveau meilleur ami

TESTERDESFORMSvarcasper=require('casper').create({});//http://docs.casperjs.org/en/latest/quickstart.html#now-let-s-scrape-googlecasper.start('http://www.google.fr',function(){this.test.pass('AccesstoGoogleSearchEngineSuccess');});//Fillloginformandsubmitcasper.thenOpen('http://www.google.fr',function(){this.test.info('Currentlocationis'+this.getCurrentUrl());this.fill('form[action="/search"]',{q:'esgi'},true);});

Rechercher"esgi"dansGoogle

Page 6: CasperJs, votre nouveau meilleur ami

CLIC&SUIVIDELIENSvarcasper=require('casper').create({});

//AccesstoGoogleSearchEngineFrancecasper.start('http://www.siteduzero.com/');casper.then(function(){//Clickon1stresultlinkthis.click('a[href="/conditions-generales-utilisation"]');});

//accesstoCGUpagecasper.then(function(){console.log('clickedok,newlocationis'+this.getCurrentUrl());});

AccéderàlapagedesCGUensuivantleclic

Page 7: CasperJs, votre nouveau meilleur ami

REALISERDESSCREENSHOTS//Isgooglesearchenginereachable?casper.start('http://www.google.fr',function(){if(!this.test.assertHttpStatus(200,'http://www.google.fr')){//Screenshotifgoogleisunreachablethis.capture('error.png');}});casper.thenOpen('http://www.cockpit.airlines-manager.com',function(){this.test.assertTitle('AirlinesManager:jeuenlignedegestiongratuit','Ok,it\'sgood');});

Supportesjpg/png/gifet...PDFCasperJsest"CSS3-sélecteur"compatible™

Page 8: CasperJs, votre nouveau meilleur ami

TESTSFONCTIONNELS//Isgooglesearchenginereachable?casper.test.begin('AtestSuite',2,functionsuite(test){casper.start('http://www.google.fr',function(){if(!test.assertHttpStatus(200,'http://www.google.fr')){//Screenshotifgoogleisunreachablethis.capture('error.png');}});casper.thenOpen('http://www.cockpit.airlines-manager.com',function(){test.assertTitle('AirlinesManager:jeuenlignedegestiongratuit','Ok,it\'sgood');});});

Disponibilitédelapage,d'élementsduDOM

Page 9: CasperJs, votre nouveau meilleur ami

TESTSUNITAIRES//fromhttp://docs.casperjs.org/en/latest/modules/tester.html#assertinstanceoffunctionCow(){this.moo=functionmoo(){return'moo!';};}casper.test.begin('assertInstanceOf()tests',2,functionsuite(test){vardaisy=newCow();test.assertInstanceOf(daisy,Cow,"Ok,daisyisacow.");test.assertInstanceOf(["moo","boo"],Array,"Wecantestforarraystoo!");test.done();});

Bienmoinsbonque Mocha.js

Page 10: CasperJs, votre nouveau meilleur ami

EXPORTSMULTIPLES

RetoursJUnit/console/(HTML)

Page 11: CasperJs, votre nouveau meilleur ami

ACCEDERAUSHELL(?)//dosomecaspersjsstuff...varchildProcess;try{childProcess=require('child_process');}catch(e){casper.log(e,'error');}if(childProcess){childProcess.execFile('/bin/bash',['echo.sh','Hello','World'],null,function(err,stdout,stderr){casper.log('execFileSTDOUT:'+stdout,'debug');casper.log('execFileSTDERR:'+stderr,'debug');});casper.log('Done','debug');}else{casper.log('Unabletorequirechild_processnativemodule','warning');}

Etd'autresbizarreriesàdécouvrir:-)

Page 12: CasperJs, votre nouveau meilleur ami

POURFINIR...Unesuperdocumentationcomplèteetàjour

Beaucoupdepossibilités:scripting,testing...

SortiesConsole&XML,"Jenkins-ready"

Vousenvoulezencoreplus?

Page 13: CasperJs, votre nouveau meilleur ami

DESQUESTIONS??