desc "run phantomjs based smoke tests on current build" task "smoke:test" do phantom_path = File.expand_path('~/phantomjs/bin/phantomjs') phantom_path = nil unless File.exists?(phantom_path) phantom_path = phantom_path || 'phantomjs' url = ENV["URL"] if !url require "#{Rails.root}/config/environment" url = Discourse.base_url end puts "Testing: #{url}" require 'open-uri' require 'net/http' uri = URI(url) request = Net::HTTP::Get.new(uri) if ENV["AUTH_USER"] && ENV["AUTH_PASSWORD"] request.basic_auth(ENV['AUTH_USER'], ENV['AUTH_PASSWORD']) end response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http| http.request(request) end if response.code != "200" raise "TRIVIAL GET FAILED WITH #{response.code}" end results = "" IO.popen("#{phantom_path} #{Rails.root}/spec/phantom_js/smoke_test.js #{url}").each do |line| puts line results << line end if results !~ /ALL PASSED/ raise "FAILED" end end