mirror of
https://github.com/discourse/discourse.git
synced 2026-08-09 21:45:25 +08:00
Previously, locale bundles were using `require()` directly, and were very sensitive to load order. This made it very hard to refactor things, especially for our upcoming move to Vite. This commit updates the four types of locale bundle to contain only very simple JS code, with no dependencies at the top level. They simply add POJO and functions to the `window._discourse_locale_data` global. When `discourse-i18n` is loaded, it checks that global, loads up the data, and executes the functions (passing in any dependencies like messageformat/runtime where required). Changes in the HTML files are to bring the locale bundles up to the first position, since they no longer have any dependencies, and we need to be 100% sure they're loaded before discourse-i18n. Tests are updated for the new bundle format, and the most complex ones have been converted to system specs, so that we no longer need to create a mock environment for executing messageformat/discourse-i18n/etc. `lib/deprecated` changes (and associated pretty-text changes) are to make the dependencies more formalized, because `require()` is subject to race conditions, which started being hit following the locale refactor. --------- Co-authored-by: Jarek Radosz <jradosz@gmail.com>
73 lines
2.8 KiB
Text
Vendored
73 lines
2.8 KiB
Text
Vendored
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Theme QUnit Test Runner</title>
|
|
<%= discourse_color_scheme_stylesheets %>
|
|
<meta name="color-scheme" content="light dark">
|
|
|
|
<%- if @has_test_bundle && !@suggested_themes %>
|
|
<%= preload_script_url ExtraLocalesController.url("main"), type_module: true %>
|
|
<%= preload_script_url ExtraLocalesController.url("mf"), type_module: true %>
|
|
<%= theme_translations_lookup %>
|
|
|
|
<%= preload_script "vendor" %>
|
|
<%= preload_script "test-support" %>
|
|
<%= preload_script "discourse" %>
|
|
<%= preload_script "test" %>
|
|
<%- Discourse.find_plugin_js_assets(include_disabled: true, include_admin_asset: true, only: @required_plugins).each do |file| %>
|
|
<%= preload_script file %>
|
|
<%- end %>
|
|
<%= preload_script_url "/bootstrap/site-settings-for-tests.js", type_module: true %>
|
|
<%= theme_lookup("head_tag") %>
|
|
<%= theme_tests %>
|
|
|
|
<%= tag.meta id: 'data-discourse-setup', data: client_side_setup_data %>
|
|
<meta property="og:title" content="">
|
|
<meta property="og:url" content="">
|
|
<meta name="discourse/config/environment" content="<%=u discourse_config_environment(testing: true) %>" />
|
|
|
|
<style>
|
|
<%= File.read("#{Rails.root}/frontend/discourse/node_modules/qunit/qunit/qunit.css").html_safe %>
|
|
</style>
|
|
|
|
<%= discourse_stylesheet_link_tag(:common, theme_id: nil) %>
|
|
<%= discourse_stylesheet_link_tag(:desktop, theme_id: nil) %>
|
|
|
|
<%- Discourse.find_plugin_css_assets(include_disabled: true, only: @required_plugins, mobile_view: false, desktop_view: true, request: request).each do |file| %>
|
|
<%= discourse_stylesheet_link_tag(file) %>
|
|
<%- end %>
|
|
<%- else %>
|
|
<style>
|
|
html {
|
|
font-family: Arial;
|
|
}
|
|
</style>
|
|
<%- end %>
|
|
|
|
<%- if params['testem'] %>
|
|
<script defer src="/assets/testem.js" nonce="<%= csp_nonce_placeholder %>"></script>
|
|
<%- end %>
|
|
</head>
|
|
<body>
|
|
<%- if !@has_test_bundle %>
|
|
This is a production installation of Discourse, and cannot be used for theme testing.
|
|
For more information, see <a href="https://meta.discourse.org/t/66857">this guide</a>.
|
|
<% elsif @suggested_themes %>
|
|
<h2>Theme QUnit Test Runner</h2>
|
|
|
|
<%- if @suggested_themes.empty? %>
|
|
<p>Cannot find any theme tests.</p>
|
|
<%- else %>
|
|
<h3>Select a theme/component: </h3>
|
|
<%- @suggested_themes.each do |(id, name)| %>
|
|
<h4><%= link_to name, theme_qunit_path(id: id) %></h4>
|
|
<%- end %>
|
|
<%- end %>
|
|
<% else %>
|
|
<%= preload_script "scripts/discourse-test-listen-boot" %>
|
|
<%= preload_script "scripts/discourse-boot" %>
|
|
<%- end %>
|
|
|
|
<%= discourse_stylesheet_link_tag("qunit-custom", theme_id: nil) %>
|
|
</body>
|
|
</html>
|