how does auto browser updates work

Hi,

I’ve some questions concerning update mechanism of agent’s browsers (provided at http://www.webpagetest.org/installers/browsers/).

  • How and when get new versions provided (manually?)?
  • Is the date shown on the installers download site the exact time they got provided?
  • Do the updates block the tests in that new browser versions always get installed if they exist before new tests can run? Or is it possible that an agent installs new browser version hours or even days after they get provided, just because the agent was too busy before?
  • Are downloaded (and installed) new versions logged somewhere on the agent (except maybe in the browser itself)?
  • If I would need to call a REST service with each applied update: Could you point me to the right place to hook in?

Thanks in advance.
Regards, Nils

The updates that are applied by wptdriver are controlled by the installer= line in wptdriver.ini: https://github.com/WPO-Foundation/webpagetest/blob/master/agent/wptdriver/wptdriver.ini.sample#L25

If an url is provided for the browser config then it will check for a new browser at startup and every hour or so (may be randomized a bit to prevent swamping the server) it will check to see if an update is available.

The update checks only happen if the browser dat file indicates that wptdriver should also check for updates. Currently the firefox installer is set to check for updates so new installs are applied by wptdriver about an hour after I push them to the public server. Chrome’s built-in update mechanism works well on the agents so we don’t push updates from the server (just the initial install if configured).

As far as how often new versions are provided, for Chrome it will be right away since it usually uses chrome’s built-in updates. For firefox it is usually whenever I notice that an update was released and I get a chance to package it up.

In both cases, once the stable browser is available, wptdriver should already work with it though it may require a newer version of wptdriver than the latest full release. The public instance runs firefox nightlies and Chrome canary so if something breaks I usually know a couple of months before it reaches stable.

If you want to control the updates yourself, just point the installer= line to your own server instead of the public instance. You could run a cron job that checks for updates on the public server and lets you know so you can decide if you want to apply it.

So command in firefox.dat is what is executed on agents for updating the browser, I assume?
Could you point me to the source code where the update check in wptdriver takes place?

Correct.

The update code is here: https://github.com/WPO-Foundation/webpagetest/blob/master/agent/wptdriver/software_update.cc

Thanks, great!

Hi Patrick,

We are using ami-d0c76fa7 to create instance. We are able to run the tests on Chrome browser. We wanted to check the browser version of chrome on which it ran? Is there a way to know the browser version running on the agent. We don’t have any explicit wptdriver.ini specified on the server.

Regards
Rupesh

Look at the user agent string for any of the requests in a test result. It will tell you what browser was used (as long as you aren’t overriding the UA string or emulating mobile).

There’s also a browser version metric that can be extracted if you are using the API but the UA string is the easiest.

Thanks Patrik.