mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 04:11:33 +08:00
80b9c280ba
This will bring significant improvements to install speed & storage requirements. For information on how it may affect you, see https://meta.discourse.org/t/324521 This commit: - removes the `yarn.lock` and replaces with `pnpm-lock.yaml` - updates workspaces to pnpm format - adjusts package dependencies to work with pnpm's stricter resolution strategy - updates Rails app to load modules from more specific node_modules directories - adds a `.pnpmfile` which automatically cleans up old yarn-managed `node_modules` directories - updates various scripts to call `pnpm` instead of `yarn` - updates patches to use pnpm's native patch system instead of patch-package - adds a patch for licensee to support pnpm
78 lines
1.6 KiB
Ruby
78 lines
1.6 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("pnpm install", exception: true)
|
|
|
|
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
|
|
|
|
raise "TRIVIAL GET FAILED WITH #{code}: retried #{retries} times" if !success
|
|
|
|
results = +""
|
|
|
|
node_arguments = []
|
|
node_arguments << "--inspect-brk" if ENV["DEBUG_NODE"]
|
|
node_arguments << "#{Rails.root}/test/smoke-test.mjs"
|
|
node_arguments << url
|
|
|
|
IO
|
|
.popen("node #{node_arguments.join(" ")}")
|
|
.each do |line|
|
|
puts line
|
|
results << line
|
|
end
|
|
|
|
raise "FAILED" if results !~ /ALL PASSED/
|
|
end
|