mirror of
https://github.com/discourse/discourse.git
synced 2024-12-19 04:30:32 +08:00
9060a045c2
1. `test/run-qunit.js` wasn't eslinted (I'm not adding it to the CI workflow for now, just fixed the issues) 2. "…" utf character isn't rendered correctly in Jenkins, replaced with three dots 3. Don't try to lint `tmp` when doing `eslint .` in the root dir
108 lines
2.3 KiB
Ruby
108 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
desc "run chrome headless smoke tests on current build"
|
|
task "smoke:test" do
|
|
require "chrome_installed_checker"
|
|
|
|
begin
|
|
ChromeInstalledChecker.run
|
|
rescue ChromeInstalledChecker::ChromeError => err
|
|
abort err.message
|
|
end
|
|
|
|
system("yarn install")
|
|
|
|
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
|
|
|
|
dir = ENV["SMOKE_TEST_SCREENSHOT_PATH"] || 'tmp/smoke-test-screenshots'
|
|
FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
|
|
|
|
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
|
|
end
|
|
|
|
if !success
|
|
raise "TRIVIAL GET FAILED WITH #{code}: retried #{retries} times"
|
|
end
|
|
|
|
results = +""
|
|
|
|
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|
|
|
puts line
|
|
results << line
|
|
end
|
|
|
|
if results !~ /ALL PASSED/
|
|
raise "FAILED"
|
|
end
|
|
|
|
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?
|
|
|
|
puts "Running QUnit tests for theme #{theme_url.inspect} using API key #{api_key[0..3]}... and username #{api_username.inspect}"
|
|
|
|
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
|
|
)
|
|
|
|
if !$?.success?
|
|
raise "THEME TESTS FAILED!"
|
|
end
|
|
end
|