Let The Internet Work For You

A session at Open Source Bridge 2013

Thursday 20th June, 2013

2:30pm to 3:15pm (PST)


Open source projects live off the fact that developers turn into contributors and invest their precious time into creating patches, bug fixes and or enhanced functionality for an Open Source code base.

As a maintainer of an Open Source project there's significant effort involved in correctly handling these contributions. Reviewing patches from contributors, ensuring the patches completeness (coding style issues and test coverage) are equally as important as running the patched code against the test suite before it’s acceptance. Nobody wants to destabilize the usability of the code base or jeopardize the projects success or momentum, right?!

=Let The Internet Work For You!=

We all love Github for their free code hosting and streamlined collaboration experience. Let's introduce two more players to the table to complete the stack:

Travis, the Continuous Integration Service
Sauce Labs, Selenium Cloud Service

Github hosts a lot of the Open Source code which is crucial to the productivity of a Web Developer, however there is a lot more than hosting needed (test execution, static analysis, linting etc) to ensure the hosted code's quality. Travis CI is our friend. The guys at Travis provide a continuous integration service for the open source community free of charge to handle exactly this. In addition to the awesome integration with Github, it'll check out the latest code and let us perform any given task we can think of, eg. kicking off a test runner for our unit tests or performing static analysis across the code base.

To keep up with outside contributions to one’s open source project -- it’s quite helpful to have a continuous build not just for the stable trunk of the project but also for contributing pull requests. Travis and Github came up with a nice solution to this problem -- they kick off builds in Travis-CI whenever a pull request was created and will make information about the build status available through the pull request management user interface.

Sauce Labs has a free service offering for Open Source developers, too. We’ll be using their Selenium Cloud to run QUnit Javascript browser test suites against various browser and platform combinations.

=Let’s Connect The Dots=

We’ll be using a Github hosted example project to illustrate end-to-end integrated test execution. In order to make all these free services work together we’ll need to write a thin layer of code to glue them all together. Enter node.js and grunt.js: Grunt.js is to node.js what GNU Make is to GCC. It’ll let you perform repetitive tasks in an elegant way, using a set of common and or hand-crafted build tasks.

I’ll show how we can leverage grunt.js tasks to make Travis-CI connect to Sauce Labs through an encrypted secure tunnel, launch a web server to serve the web pages that contain QUnit test suites and execute the javascript tests against a number of platform/browser combinations. Of course all the status information will be conveniently communicated across all the services.

Ever since javascript browser test execution has become such a common use case the sequence of steps required to accomplish aforementioned steps have already been implemented as a grunt.js task. I’ll show how to leverage this for any Github hosted project.

=How Does This Benefit Me As A Maintainer?=

I’ll show how Github, Travis-CI and Sauce Labs, can integrate build success / failure reporting into the collaboration workflow on Github to notify maintainers ahead of time about problems which may have gotten introduced with a code contribution.

The beauty of this end-to-end test integration is that it will not only run whenever new code was committed, but also branches that have been submitted for merge to master through a pull request. No need for the project maintainer to check out code to their local machines and run tests repeatedly. By the time maintainers review pull requests they will already able to see whether the branch submitted for merge, met style and syntax, and if there were any problems running the javascript browser test suite.

About the speaker

This person is speaking at this event.
Sebastian Tiedtke

largest fish at @saucelabs. passionate powder eater. cultivating german lifestyle in lovely san francisco. usually busy collecting parking tickets. bio from Twitter

Sign in to add slides, notes or videos to this session

Tell your friends!


Time 2:30pm3:15pm PST

Date Thu 20th June 2013

Short URL


Official session page


View the schedule



See something wrong?

Report an issue with this session