javascript testing should be awesome

33
Behaviour Driven Development Javascript testing should be awesome [ ] SFEIR BOF 4/19/2013

Upload: abderrazak-bouadma

Post on 04-Jul-2015

264 views

Category:

Technology


0 download

DESCRIPTION

quick presentation of very simple tools for acceptance testing with zombieJS and MochJS

TRANSCRIPT

Page 1: Javascript testing should be awesome

Behaviour Driven Development

Javascript testing shouldbe awesome

[ ]SFEIR BOF 4/19/2013

Page 2: Javascript testing should be awesome

Agenda

● A little story● A definition of acceptance tests● Some history● "Awesome" Tools matter● tested frameworks● demos● Q & A

Page 3: Javascript testing should be awesome

Disclaimer

All what I'll say is correct and could eventually be totally wrong and idiot.

Page 4: Javascript testing should be awesome

me

Abderrazak BOUADMAWeb DeveloperWork at SFEIR

Actually at CDC-FAST to do awesome stuff on a workflow driven encrypted document signature product.

Current interests#DIY #**/*.js #CLOUD

Keep in touch

Page 5: Javascript testing should be awesome

Poll

● Who ever did acceptance tests ?● Who used HttpUnit, HtmlUnit, Selenium, ...etc ?● Was it fun :P● How much would you get paid to maintain a

selenium test suite ?

Page 6: Javascript testing should be awesome

a little story ...

Your BOSS sent you a mail at 5:45pm on a friday evening asking you to add two acceptance tests for the last build as it's a last minute customer request before you go out for your 1 year previously scheduled vacancy to Hawaï #nightmare

Page 7: Javascript testing should be awesome

How do you feel in that moment ?

Photo Credit : Jill Greenberg

Page 8: Javascript testing should be awesome

Let's solve it with java !

Page 9: Javascript testing should be awesome

HttpUnit

Euh ... we're in 2013

Page 10: Javascript testing should be awesome

HtmlUnit

but it still something you've to integrate with your project

write java to test html/js !

Not that awesome yet !

Page 11: Javascript testing should be awesome

Seleniummaven plugin configuration

Page 12: Javascript testing should be awesome
Page 13: Javascript testing should be awesome
Page 14: Javascript testing should be awesome
Page 15: Javascript testing should be awesome
Page 16: Javascript testing should be awesome
Page 17: Javascript testing should be awesome

Rock star tools matter

Page 18: Javascript testing should be awesome

Marketplace

Zombie.js

karma

Page 19: Javascript testing should be awesome

Our tools

Zombie.js

Page 20: Javascript testing should be awesome

Practical part starts now

Page 21: Javascript testing should be awesome

zombie.js

Headless browser

Page 22: Javascript testing should be awesome

Mocha

Test runner

Page 23: Javascript testing should be awesome

Jasmine syntax

describe('Test SuiteCase', function() { it('Test description',function(){

// code to test })})

Page 24: Javascript testing should be awesome

var Browser = require("zombie")var assert = require("assert")

browser = new Browser()

describe('Zombie Test SuiteCase', function() { it('User [email protected] should login correctely',function(){

browser.visit(baseUrl, function() {browser.

fill("uEmail", '[email protected]').fill("uPassword", 'test').pressButton("Sign in", function() {

assert.ok(browser.success)assert.ok(browser.query("conferenceTable"))

})})

})})

zombie.js : example

Page 25: Javascript testing should be awesome

Pros & Cons

PROs CONs

Headless Browser It's not a real Browser (emulates)

Full HTML5 compliant doesn't really work under windows (who cares ?)

Generates XUnit no page screenshot

Complete Browsing API , CSS selectors

Insanely simple to get started with

Page 26: Javascript testing should be awesome

npm install zombie

npm install mocha

Installing nodejs modules

Page 27: Javascript testing should be awesome

Test Suite Case

Page 28: Javascript testing should be awesome

Testing Context : login page

Page 29: Javascript testing should be awesome

Login test caseAs a non connected user

I insert [email protected] as email

I insert test as password

I click on [login] button

I expect a 200 Http response,

I expect a cookie username=abderrazak

Page 30: Javascript testing should be awesome

Testing Context : talks page

Page 31: Javascript testing should be awesome

Talks test caseAs [email protected]

I insert a track name, time slot, speaker email

I click on [add] button

I expect there's a new row within the tracks table

I expect that track counter raised up

I expect that the rank of the latest track is 0

Page 32: Javascript testing should be awesome

Demo

Page 33: Javascript testing should be awesome

Thank you !Q&A