2019-05-02 18:17:27 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-12-19 02:59:41 -05:00
|
|
|
desc "run chrome headless smoke tests on current build"
|
2014-06-19 20:55:16 -04:00
|
|
|
task "smoke:test" do
|
2021-06-20 23:28:48 -04:00
|
|
|
require "chrome_installed_checker"
|
2019-06-07 12:20:48 -04:00
|
|
|
|
2021-06-20 23:28:48 -04:00
|
|
|
begin
|
|
|
|
ChromeInstalledChecker.run
|
2022-03-19 06:00:06 -04:00
|
|
|
rescue ChromeInstalledChecker::ChromeError => err
|
2021-06-20 23:28:48 -04:00
|
|
|
abort err.message
|
2017-12-19 02:59:41 -05:00
|
|
|
end
|
2013-02-21 00:01:18 -05:00
|
|
|
|
2021-02-10 19:19:47 -05:00
|
|
|
system("yarn install")
|
2018-06-05 06:46:41 -04:00
|
|
|
|
2014-06-19 20:55:16 -04:00
|
|
|
url = ENV["URL"]
|
|
|
|
if !url
|
|
|
|
require "#{Rails.root}/config/environment"
|
|
|
|
url = Discourse.base_url
|
|
|
|
end
|
2013-02-25 11:42:20 -05:00
|
|
|
|
2013-02-21 00:01:18 -05:00
|
|
|
puts "Testing: #{url}"
|
2013-02-21 00:37:17 -05:00
|
|
|
|
|
|
|
require "open-uri"
|
|
|
|
require "net/http"
|
|
|
|
|
2017-05-17 07:24:43 -04:00
|
|
|
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
|
|
|
|
|
2018-05-30 04:20:18 -04:00
|
|
|
dir = ENV["SMOKE_TEST_SCREENSHOT_PATH"] || "tmp/smoke-test-screenshots"
|
2022-01-05 12:45:08 -05:00
|
|
|
FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
|
2018-05-30 03:59:07 -04:00
|
|
|
|
2019-05-20 03:22:50 -04:00
|
|
|
wait = ENV["WAIT_FOR_URL"].to_i
|
|
|
|
|
|
|
|
success = false
|
|
|
|
code = nil
|
|
|
|
retries = 0
|
|
|
|
|
|
|
|
loop do
|
|
|
|
response =
|
|
|
|
Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
|
|
|
|
http.request(request)
|
|
|
|
end
|
|
|
|
|
|
|
|
success = response.code == "200"
|
|
|
|
code = response.code
|
|
|
|
|
|
|
|
if !success && wait > 0
|
|
|
|
sleep 5
|
|
|
|
wait -= 5
|
|
|
|
retries += 1
|
|
|
|
else
|
|
|
|
break
|
|
|
|
end
|
2018-06-10 20:47:32 -04:00
|
|
|
end
|
|
|
|
|
2019-05-20 03:22:50 -04:00
|
|
|
raise "TRIVIAL GET FAILED WITH #{code}: retried #{retries} times" if !success
|
2013-02-21 00:37:17 -05:00
|
|
|
|
2019-05-12 23:21:56 -04:00
|
|
|
results = +""
|
2017-12-18 03:32:58 -05:00
|
|
|
|
2019-10-24 09:10:18 -04:00
|
|
|
node_arguments = []
|
|
|
|
node_arguments << "--inspect-brk" if ENV["DEBUG_NODE"]
|
|
|
|
node_arguments << "#{Rails.root}/test/smoke_test.js"
|
|
|
|
node_arguments << url
|
|
|
|
|
|
|
|
IO
|
|
|
|
.popen("node #{node_arguments.join(" ")}")
|
|
|
|
.each do |line|
|
2014-04-10 02:57:23 -04:00
|
|
|
puts line
|
|
|
|
results << line
|
|
|
|
end
|
2013-02-21 00:01:18 -05:00
|
|
|
|
|
|
|
raise "FAILED" if results !~ /ALL PASSED/
|
2021-06-17 13:09:29 -04:00
|
|
|
|
|
|
|
api_key = ENV["ADMIN_API_KEY"]
|
|
|
|
api_username = ENV["ADMIN_API_USERNAME"]
|
|
|
|
theme_url = ENV["SMOKE_TEST_THEME_URL"]
|
|
|
|
|
|
|
|
next if api_key.blank? && api_username.blank? && theme_url.blank?
|
|
|
|
|
2022-04-02 15:15:38 -04:00
|
|
|
puts "Running QUnit tests for theme #{theme_url.inspect} using API key #{api_key[0..3]}... and username #{api_username.inspect}"
|
2021-06-17 13:09:29 -04:00
|
|
|
|
|
|
|
query_params = { seed: Random.new.seed, theme_url: theme_url, hidepassed: 1, report_requests: 1 }
|
|
|
|
url += "/" if !url.end_with?("/")
|
|
|
|
full_url = "#{url}theme-qunit?#{query_params.to_query}"
|
|
|
|
timeout = 1000 * 60 * 10
|
|
|
|
|
|
|
|
sh("node", "#{Rails.root}/test/run-qunit.js", full_url, timeout.to_s)
|
|
|
|
|
|
|
|
raise "THEME TESTS FAILED!" if !$?.success?
|
2013-02-20 20:07:22 -05:00
|
|
|
end
|