Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Install Latest Version of Firefox on Travis And Run with Protractor

Travis installs Firefox 31.0esr by default, but we want to always use the latest version. The reference here says it should be pretty straight forward, but it doesn't seem to actually install, rather it just seems to download the tar file. Protractor still uses Firefox version 31.0esr when it runs.

travis.yml

addons:
  firefox: "latest"

protractor.conf.js

capabilities: {
  'browserName': 'firefox'
}

Logs:

Initial Firefox install still happens:

[34m[1mInstalled Firefox version[0m
firefox 31.0esr

... the addon section kicks in and downloads the file fine, before the before_install section as expected:

[0Ktravis_fold:start:install_firefox
[0K$ export FIREFOX_SOURCE_URL='https://download.mozilla.org/?product=firefox-latest&lang=en-US&os=linux64'
[33;1mInstalling Firefox latest[0m
travis_time:start:0dff0345
[0K$ wget -O /tmp/firefox-latest.tar.bz2 $FIREFOX_SOURCE_URL
--2016-01-04 23:29:18--  https://download.mozilla.org/?product=firefox-latest&lang=en-US&os=linux64
Resolving download.mozilla.org (download.mozilla.org)... 52.20.26.65
Connecting to download.mozilla.org (download.mozilla.org)|52.20.26.65|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://download.cdn.mozilla.net/pub/firefox/releases/43.0.3/linux-x86_64/en-US/firefox-43.0.3.tar.bz2 [following]
--2016-01-04 23:29:18--  http://download.cdn.mozilla.net/pub/firefox/releases/43.0.3/linux-x86_64/en-US/firefox-43.0.3.tar.bz2
Resolving download.cdn.mozilla.net (download.cdn.mozilla.net)... 23.0.160.35, 23.0.160.65
Connecting to download.cdn.mozilla.net (download.cdn.mozilla.net)|23.0.160.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 52525181 (50M) [application/x-bzip2]
Saving to: `/tmp/firefox-latest.tar.bz2'


0% [                                       ] 0           --.-K/s              
33% [============>                          ] 17,618,150  84.0M/s              
67% [=========================>             ] 35,556,926  84.7M/s              
100%[======================================>] 52,525,181  83.6M/s   in 0.6s    

2016-01-04 23:29:18 (83.6 MB/s) - `/tmp/firefox-latest.tar.bz2' saved [52525181/52525181]

travis_time:end:0dff0345:start=1451950158289192377,finish=1451950158979104185,duration=689911808
[0Ktravis_fold:end:install_firefox

... then when protractor starts:

[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://172.17.1.120:39697/wd/hub
Browser details:
Platform:  LINUX
Browser Name:  firefox
Browser Version:  31.0 

I have a sneaking suspicion that even though the Travis docs says the addon section installs the file too, there is no indication this actually happens so I don't think it does.


For interests sake, this is how we print out the system information when protractor starts:

this.getBrowserCapabilities  = function() {
  return browser.getCapabilities().then(function (s) {

    var browserCapabilities = {
      browserName: '',
      browserVersion: '',
      platform: ''
    };

    browserCapabilities.platform = s.caps_.platform;
    browserCapabilities.browserName = s.caps_.browserName;
    browserCapabilities.browserVersion = s.caps_.version;

    return browserCapabilities;
  });
};
like image 464
Matt Rowles Avatar asked Jan 07 '23 21:01

Matt Rowles


1 Answers

I stumbled over the same issue myself and I can confirm that Travis only downloads the specified firefox version.

This is what I did in my build script to use the downloaded version (in my example 43.0).

First, configure the addon in your .travis.yml file:

addons:
  firefox: "43.0"

Now before runing your tests execute these steps:

echo "Extracting firefox and setting PATH variable..."
tar -xjf /tmp/firefox-43.0.tar.bz2 --directory /tmp
export PATH="/tmp/firefox:$PATH"
echo "Using firefox version `firefox --version`"

For a working example see also: https://github.com/astehlik/typo3-extension-news_richteaser/blob/master/.travis.yml

I'm using Selenium in my case but I guess it should work no different with protractor.

like image 72
Alex Avatar answered Jan 17 '23 14:01

Alex