Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Les tests en Javascript

Dev-Mind
October 24, 2015

Les tests en Javascript

Les slides de ma session donnée sur les tests à SoftShake 2015. Le but était de montrer que la mise en place des tests est simple quand nous utilisons les bons outils

Dev-Mind

October 24, 2015
Tweet

More Decks by Dev-Mind

Other Decks in Technology

Transcript

  1. @guillaumeehret #softshake15 Tests en Javascript un pas vers la sérénité

    @guillaumeehret Guillaume EHRET - @guillaumeehret
  2. @guillaumeehret #softshake15 @guillaumeehret Karma source: http://giphy.com/ Serveur HTTP Application Javascript

    Fichiers specs.js Runner (page qui lance les tests) HTML JS specs watch start start & exec results for reports 1 2 3 4
  3. @guillaumeehret #softshake15 @guillaumeehret Protractor source: http://giphy.com/ serveur Selenium (local ou

    remote) Application Javascript WebDriver (selenium) Browser drivers specs load send start exec results for reports Fichiers specs.js WebDrivers JS (selenium WebDriver API) protractor.conf.js seleniumAddress seleniumServerJar 1 2 3 4
  4. @guillaumeehret #softshake15 @guillaumeehret Protractor directconnect source: http://giphy.com/ Application Javascript WebDriver

    (selenium) Browser drivers specs load Fichiers specs.js WebDrivers JS (selenium WebDriver API) 1 seulement Chrome et Firefox results for reports start & exec 2 3 protractor.conf.js directConnect: true
  5. @guillaumeehret #softshake15 @guillaumeehret Les sélecteurs source: http://giphy.com/ <html> <body> <div

    id="foo"></div> <foo></foo> <input ng-model="foo"/> <span ng-repeat="foo in foos"/> ..etc... </body> </html> element(by.id('foo')) element(by.tagName('foo')) element(by.model('foo')) element(by.repeater('foo in foos')) ..etc...
  6. @guillaumeehret #softshake15 @guillaumeehret #softshake15 Angular mais pas que source: http://giphy.com/

    Vous pouvez utiliser directement l’API webdriver. Par exemple browser.driver. findElement(By.className('link_jquery')).click(); au lieu de element(by.className('link_jquery')).click(); ou en utilisant la même API mais en désactivant les sucres syntaxiques facilitant les problèmes de synchronisation browser.ignoreSynchronization = true;
  7. @guillaumeehret #softshake15 @guillaumeehret #softshake15 Angular mais pas que source: http://giphy.com/

    Si la propriété ignoreSynchronization est à true la méthode waitForAngular n’a plus aucun effet. Vous pouvez utiliser browser.sleep(200); pour attendre par exemple que le context soit chargé. browser.driver. wait(function() { return element.all(by.className('jt-talk-line')).count(); }); pour attendre qu’un élément apparaisse dans le DOM de la page
  8. @guillaumeehret #softshake15 @guillaumeehret Références source: http://giphy.com/ http://jasmine.github.io/2.3/introduction.html http://javamind-fr.blogspot.fr/2015/01/comment-ecrire-vos-tests-javascript.html http://karma-runner.github.io https://www.npmjs.com/browse/keyword/karma-plugin

    http://javamind-fr.blogspot.fr/2015/01/karma-lexecuteur-de-tests-javascript.html https://www.youtube.com/watch?v=Mu9c6-thcVU http://angular.github.io/protractor/#/ http://javamind-fr.blogspot.fr/2015/01/karma-lexecuteur-de-tests-javascript.html https://www.youtube.com/watch?v=aQipuiTcn3U http://webdriver.io/api.html / http://ramonvictor.github.io/protractor/slides/#/1