Tue 28 Feb 2012
Let me start by explaining what Travis CI is. Travis CI is an open source cloud CI solution that integrates with GitHub so you can build and test your applications. It is free to use for OSS projects. They started only supporting Ruby and have grown really quickly to support other languages.
The other week I explained what my team is up to and I mentioned that we are working on a Firefox Addon to visualise what is happening with Garbage collection in the browser. This is very important since garbage collection taking a lot of time can have a negative impact on the user experience.
This week I wanted to make sure that we have a CI for the work that we are doing so we can spot if we have any regressions. We all know that manual testing is long, tedious and can miss things. Below are the steps that you need to take to get a JetPack addon built and tested. This is for Addons not built on the Builder site. In theory this will work on older addons too.
You can see an example of this here. Thanks to Travis CI guys for making this possible and if you find it useful show them some Love!
Area: blog
Fri 24 Feb 2012
This week has been relatively quiet for the team in terms of their usual projects mainly because there was a chemsplill last week. A chemsplill is where a major exploit has been found and we need to get this closed as quickly as possible so that Firefox users are safe from malicious code execution. Unfortunately details of this have not been released yet but you will have noticed that 10.0.2 was released last week.
The team has also been working hard on getting more tasks for contributors. We have also added more mentored projects, below is links to projects that have tasks community members can get involved in
Cameron has been working hard on Case Conductor, the a test case management tool. 0.8 is now done and ready for deployment. Cameron is also working with WebQA to get more test coverage on it and get it out the door. Cameron has been discussing with the Case Conductor team about how we can have a 1.0 release by the end of March. Look out for more on this in weeks to come.
Look out for future updates and if you want to join our team meetings you can get all of the details at
here and you can also get notes from previous meetings.
Area: blog
Wed 15 Feb 2012
Automation Services, the team I co-lead with Henrik Skupin, are going to start sending out weekly updates so that
everyone can be aware of what we have been upto in the last week on our main projects.
Nightly Tester Tools
Our team is now taking ownership of the addon from Heather Arthur. This extension has over 100000 active users at the
moment and we want to grow that community. We need to still do a few logistical things with Heather to get it moved over
and we hope to have this sorted in the next few weeks. Once that is done we will do some house keeping on the project like changing the repository
structure and getting build scripts in place. Next quarter we hope to do some work on the project and will create some
issues out that will be mentored by someone in the team for anyone to work on!
Actually we will be creating mentored issues for a lot of our projects at the moment and will have a central place for these soon! In the mean
time you can have a look at:
MemChaser
One of the major projects on the go at the moment is a project to see where we have large GC/CC pauses in the browser.
Long pauses lead to the browser feeling jerky which isn't a great user experience. Last week Henrik blogged about the MemChaser 0.1.1
release and got a couple
of good comments! It has helped identify a few bugs. A really good example is where we identified memory leak with
Add-ons SDK bug, which is already partly fixed for SDK v1.6 and even for the upcoming v1.5 release.
Currently we have over 1000 downloads and nearing 400 active daily users
(statistics). We need to get docs in place for
further planning on the project but this is a great start!
Look out for future updates and if you want to join our team meetings you can get all of the details at
here and you can also get notes from previous
meetings.
Area: blog
Thu 26 Jan 2012
Back in 2008, David Henderson and I wanted to try automate collecting client side performance data for the web application that we were working on at the time. We were getting a large number of complaints from users about load time and we need to try solve this. The way that we decided on doing this was to use Selenium, which was already running our tests, and hack the Selenium server to give us the information we needed. What we came up with was showcased at GTAC 2009. It was really good for the time and we were happy.
About a year later just as the new movement for HTTP Archive or HAR as its commonly known was taking off I found that Jan "Honza" Odvarko had created a Firebug add on to export the network tab to HAR. This, when used with Selenium, could mean that we could get the same data that the browser wanted with little to no effort. Run your tests as you were with the new WebDriver API and get it to programmatically install the necessary addons as well as set all the preferences needed. I wrote this for Python and for .NET. This works really well but now limits this type of data to only being collected within Firefox. Some modern web applications can send back totally different javascript and sprites dependant on which browser hits.
What if you could run your Selenium tests and collect the same info as the if you were using the Firebug Net tab but using any browser. Browsermob Proxy is a good way to collect this information and it has a programmatic interface that allows us to set it before our tests start. It can also return a HTTP Archive of the traffic that it is routing. I have released the Python Library for BrowserMob Proxy that can be injected into tests quite easily. I have put an example below.
from browsermobproxy import Server
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("google")
driver.get("http://www.google.co.uk")
proxy.har # returns a HAR JSON blob
proxy.stop()
driver.quit()
If we now feed the data from proxy.har into HAR Viewer we can get a nice waterfall of the traffic as below! Jari Bakken has a useful commandline version called Har.
I recently showed this off at London Web Performance. Unfortunately it wasn't recorded but you can view the slides here
Area: blog
Thu 12 Jan 2012
WebDriver, the browser automation framework we all love, is on its way to becoming a browser standard. WebDriver as an OSS project is 5 years old and started being merged into the Selenium project about 3 years ago. From there we have seen WebDriver grow. It has had a lot updates in that time. The team is currently averaging ~100 commits a week.
In the short time, from GTAC 2009 when they were created, the Ruby bindings created by Jari Bakken have had over a million downloads! The Python bindings have around 3000 downloads a week and growing. Jim Evans work on the .NET bindings is great, I don't have figures because of Nuget. Same with the Java bindings. Maven makes it difficult to know how many downloads.
We have also seen that Selenium Jobs have overtook the commercial counterparts. All of these things point to us needing a standard to make sure if we can do the same thing on multiple devices and multiple OSes.
Yesterday we held a W3 meeting in the Google UK office. It was great to be able to get in a room and discuss what needed. A plan was hatched on what needs to be done next, and it is going to be a lot of work.You can see the minutes of the meeting here to see what we discussed.
Mozilla, Opera and Google are happy with the direction we are going and long may it last! It will be great to get Microsoft and Apple involved soon.
Remember that all of this work is happening out in the open and you can watch the Hg repository for the editors draft updates.
Area: blog