How to setup up a stable javascript continuous integration environment and why you need it. Through a real life example, the talk explains all the benefits of having a development process that brings real control over javascript codebase. A deep analysis of developer and webapps needs and of the tools that fit those requirements.
6. Hello, who’s speaking?
Marco Cedaro
@cedmax
They said I am a...
Frontend Cowboy
Nicola Vitto Jr.
Javascript Pervert
Roberto Felter
Perfect Stranger
basically anyone else
7. Hello, who’s speaking?
Marco Cedaro
@cedmax
Actually I am:
a Frontend Developer at
Spreaker.com
8. Hello, who’s speaking?
Marco Cedaro
@cedmax
Actually I am:
a Frontend Developer at
Spreaker.com
a conference organizer
with From The Front
9. Hello, who’s speaking?
Marco Cedaro
@cedmax
Actually I am:
a Frontend Developer at
Spreaker.com
a conference organizer
with From The Front
and a javascript pervert
38. less bandwidth and
server load loading
resources and content
when needed
something we can achieve
39. less bandwidth and
performance boosts
server load loading
that can lead to better
resources and content
conversion rates
when needed
something we can achieve
40. less bandwidth and
performance boosts cross platform
server load loading
that can lead to better development: less
resources and content
conversion rates maintenance costs
when needed
something we can achieve
41. less bandwidth and
performance boosts cross platform
server load loading
that can lead to better development: less
resources and content
conversion rates maintenance costs
when needed
money
50. The designer
introduces a slider on
some websites:
”it’s cool on apple store”.
The developer gets a jQuery
plugin online
the small web agency
51. The designer
introduces a slider on Major release of the
some websites: most used browser.
”it’s cool on apple store”. A small fix has been
released, they have to change
The developer gets a jQuery 5 files in 5 different projects.
plugin online
the small web agency
52. The designer Oh damn! There’s no
introduces a slider on Major release of the
mouse wheel
some websites: most used browser.
integration!
”it’s cool on apple store”. A small fix has been
released, they have to change should they ask for support
The developer gets a jQuery 5 files in 5 different projects. or should they change the
plugin online library by themself?
the small web agency
55. The client-side Everything seems to be
architecture has been fine, except that the
built on the most well known framework
known and supported was being replaced by a
framework powerful new one
2006 2008 - 2010
the big corp
56. The client-side Everything seems to be They were forced to
architecture has been fine, except that the change the whole
built on the most well known framework codebase at once to
known and supported was being replaced by a reduce maintenance
framework powerful new one and development costs
2006 2008 - 2010 2011
the big corp
63. continuous integration
A software development
practice where members of a
team integrate their work
frequently [...] to detect
integration errors as quickly
as possible.
Martin Fowler
110. Unit testing is
supposed to test a
single atomic “unit” of
functionality without
dependencies on
anything else
The curious case of
Javascript unit testing
111. Unit testing is
This is where you start
supposed to test a
to run into serious
single atomic “unit” of
dependency problems
functionality without
due to the interrelation
dependencies on
with HTML and CSS
anything else
The curious case of
Javascript unit testing
112. Unit testing is What do you test?
This is where you start
supposed to test a Usually how the user
to run into serious
single atomic “unit” of interface responds to
dependency problems
functionality without user input.
due to the interrelation
dependencies on Actually, the realm of
with HTML and CSS
anything else functional testing
The curious case of
Javascript unit testing
143. SPIES
a function that records
arguments, return
value, the value of this
and exception thrown
(if any) for all its calls.
a mock library
144. SPIES STUBS
a function that records functions (spies) with
arguments, return pre-programmed
value, the value of this behavior.
and exception thrown
(if any) for all its calls.
a mock library
145. SPIES STUBS MOCKS
a function that records functions (spies) with functions (spies) with
arguments, return pre-programmed pre-programmed
value, the value of this behavior. behavior (stubs) as well
and exception thrown as pre-programmed
(if any) for all its calls. expectations.
a mock library
183. LOOKING FORWARD
the further we look at,
the more control we need
184. LOOKING FORWARD
the further we look at,
the more control we need
185. LOOKING FORWARD
the further we look at,
the more control we need
let's get ready
186. LOOKING FORWARD
the further we look at,
the more control we need
let's get ready
javascript is a programming language
187. LOOKING FORWARD
the further we look at,
the more control we need
let's get ready
javascript is a programming language
javascript is a serious business.
188. LOOKING FORWARD
the further we look at,
the more control we need
let's get ready
javascript is a programming language
javascript is a serious business.
and, most of all...