From 8cfce058d9d002526fd93e66957f8359985c92bf Mon Sep 17 00:00:00 2001 From: Jon Moss Date: Mon, 9 May 2016 15:42:28 -0400 Subject: CI: run Action Cable browser tests in Sauce Labs Allow failures until test runs are consistently stable, not hanging. Closes #24943. Signed-off-by: Jeremy Daer --- .travis.yml | 9 +++++++++ Gemfile | 2 ++ Gemfile.lock | 23 ++++++++++++++++++++++- actioncable/Rakefile | 8 ++++++-- actioncable/blade.yml | 21 +++++++++++++++++++++ ci/travis.rb | 1 + 6 files changed, 61 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5c9e4b51f4..461bd172c1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,6 +28,11 @@ before_install: before_script: - bundle update + # Set Sauce Labs username and access key. Obfuscated, purposefully not encrypted. + # Decodes to e.g. `export VARIABLE=VALUE` + - $(base64 --decode <<< "ZXhwb3J0IFNBVUNFX0FDQ0VTU19LRVk9YTAzNTM0M2YtZTkyMi00MGIzLWFhM2MtMDZiM2VhNjM1YzQ4") + - $(base64 --decode <<< "ZXhwb3J0IFNBVUNFX1VTRVJOQU1FPXJ1YnlvbnJhaWxz") + script: 'ci/travis.rb' env: @@ -36,6 +41,8 @@ env: - "GEM=ap" - "GEM=ac" - "GEM=ac FAYE=1" + - "GEM=ac:integration" + - "GEM=ac:integration FAYE=1" - "GEM=am,amo,as,av,aj" - "GEM=as PRESERVE_TIMEZONES=1" - "GEM=ar:mysql2" @@ -65,6 +72,8 @@ matrix: allow_failures: - rvm: ruby-head - rvm: jruby-9.0.5.0 + - env: "GEM=ac:integration" + - env: "GEM=ac:integration FAYE=1" fast_finish: true notifications: diff --git a/Gemfile b/Gemfile index 776d39d569..858aa55916 100644 --- a/Gemfile +++ b/Gemfile @@ -64,7 +64,9 @@ group :cable do gem 'redis', require: false gem 'faye-websocket', require: false + gem 'blade', '~> 0.5.5', require: false + gem 'blade-sauce_labs_plugin', github: 'javan/blade-sauce_labs_plugin', require: false end # Add your own local bundler stuff. diff --git a/Gemfile.lock b/Gemfile.lock index 4a9ac10244..41fd2197e3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -21,6 +21,15 @@ GIT activerecord (>= 3.0, < 5.1) delayed_job (>= 3.0, < 5) +GIT + remote: git://github.com/javan/blade-sauce_labs_plugin.git + revision: dd4230c556aaa19b62cca757d6faeb2bb6bf95e7 + specs: + blade-sauce_labs_plugin (0.5.1) + childprocess + faraday + selenium-webdriver + GIT remote: git://github.com/rails/coffee-rails.git revision: aa2e623cbda4f3c789a0a15d1f707239e68f5736 @@ -134,6 +143,8 @@ GEM bunny (2.2.2) amq-protocol (>= 2.0.1) byebug (8.2.5) + childprocess (0.5.9) + ffi (~> 1.0, >= 1.0.11) coffee-script (2.4.1) coffee-script-source execjs @@ -161,6 +172,8 @@ GEM eventmachine (1.2.0.1-x64-mingw32) eventmachine (1.2.0.1-x86-mingw32) execjs (2.6.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) faye (1.1.2) cookiejar (>= 0.3.0) em-http-request (>= 0.3.0) @@ -206,6 +219,7 @@ GEM metaclass (~> 0.0.1) mono_logger (1.1.0) multi_json (1.12.0) + multipart-post (2.0.0) mustache (1.0.3) mysql2 (0.4.4) mysql2 (0.4.4-x64-mingw32) @@ -262,10 +276,15 @@ GEM redis (~> 3.0) resque (~> 1.25) rufus-scheduler (~> 3.2) + rubyzip (1.2.0) rufus-scheduler (3.2.1) sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) + selenium-webdriver (2.53.0) + childprocess (~> 0.5) + rubyzip (~> 1.0) + websocket (~> 1.0) sequel (4.34.0) serverengine (1.5.11) sigdump (~> 0.2.2) @@ -317,6 +336,7 @@ GEM json nokogiri wdm (0.1.1) + websocket (1.2.3) websocket-driver (0.6.3) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) @@ -334,6 +354,7 @@ DEPENDENCIES bcrypt (~> 3.1.11) benchmark-ips blade (~> 0.5.5) + blade-sauce_labs_plugin! byebug coffee-rails! dalli (>= 2.2.1) @@ -378,4 +399,4 @@ DEPENDENCIES wdm (>= 0.1.0) BUNDLED WITH - 1.11.2 + 1.12.4 diff --git a/actioncable/Rakefile b/actioncable/Rakefile index b0e9c0a4a8..a72142deb5 100644 --- a/actioncable/Rakefile +++ b/actioncable/Rakefile @@ -24,8 +24,12 @@ namespace :test do end or raise "Failures" end - task :javascript do - Blade.start(interface: :runner) + task :integration do + if ENV['CI'] + Blade.start(interface: :ci) + else + Blade.start(interface: :runner) + end end end diff --git a/actioncable/blade.yml b/actioncable/blade.yml index 9cdb318c97..e21151099a 100644 --- a/actioncable/blade.yml +++ b/actioncable/blade.yml @@ -11,3 +11,24 @@ build: - action_cable.js path: lib/assets/compiled clean: true + +plugins: + sauce_labs: + browsers: + Google Chrome: + os: Mac, Windows + version: -2 + Firefox: + os: Mac, Windows + version: -2 + Safari: + platform: Mac + version: -3 + Microsoft Edge: + version: -2 + Internet Explorer: + version: 11 + iPhone: + version: [9.2, 8.4] + Motorola Droid 4 Emulator: + version: [5.1, 4.4] diff --git a/ci/travis.rb b/ci/travis.rb index 3faef500f2..b8891d6889 100755 --- a/ci/travis.rb +++ b/ci/travis.rb @@ -148,6 +148,7 @@ ENV['GEM'].split(',').each do |gem| next if ENV['TRAVIS_PULL_REQUEST'] && ENV['TRAVIS_PULL_REQUEST'] != 'false' && isolated next if gem == 'railties' && isolated next if gem == 'ac' && isolated + next if gem == 'ac:integration' && isolated next if gem == 'aj:integration' && isolated next if gem == 'guides' && isolated -- cgit v1.2.3