discourse/app/views/qunit/theme.html.erb

67 lines
2.3 KiB
Plaintext
Raw Normal View History

<!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 "locales/#{I18n.locale}" %>
<%= preload_script "vendor" %>
DEV: introduce Embroider behind a flag, and start testing in CI (#23005) Discourse core now builds and runs with Embroider! This commit adds the Embroider-based build pipeline (`USE_EMBROIDER=1`) and start testing it on CI. The new pipeline uses Embroider's compat mode + webpack bundler to build discourse code, and leave everything else (admin, wizard, markdown-it, plugins, etc) exactly the same using the existing Broccoli-based build as external bundles (<script> tags), passed to the build as `extraPublicTress` (which just means they get placed in the `/public` folder). At runtime, these "external" bundles are glued back together with `loader.js`. Specifically, the external bundles are compiled as AMD modules (just as they were before) and registered with the global `loader.js` instance. They expect their `import`s (outside of whatever is included in the bundle) to be already available in the `loader.js` runtime registry. In the classic build, _every_ module gets compiled into AMD and gets added to the `loader.js` runtime registry. In Embroider, the goal is to do this as little as possible, to give the bundler more flexibility to optimize modules, or omit them entirely if it is confident that the module is unused (i.e. tree-shaking). Even in the most compatible mode, there are cases where Embroider is confident enough to omit modules in the runtime `loader.js` registry (notably, "auto-imported" non-addon NPM packages). So we have to be mindful of that an manage those dependencies ourselves, as seen in #22703. In the longer term, we will look into using modern features (such as `import()`) to express these inter-dependencies. This will only be behind a flag for a short period of time while we perform some final testing. Within the next few weeks, we intend to enable by default and remove the flag. --------- Co-authored-by: David Taylor <david@taylorhq.com>
2023-09-07 07:15:43 -05:00
<%= preload_script "test-support" %>
<%= preload_script "discourse-for-tests" %>
<%= preload_script "admin" %>
<%- Discourse.find_plugin_js_assets(include_disabled: true).each do |file| %>
<%= preload_script file %>
<%- end %>
<%= preload_script "test-site-settings" %>
<%= theme_translations_lookup %>
<%= theme_js_lookup %>
<%= 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}/app/assets/javascripts/node_modules/qunit/qunit/qunit.css").html_safe %>
</style>
<%= discourse_stylesheet_link_tag(:desktop, theme_id: nil) %>
<%= discourse_stylesheet_link_tag("qunit-custom", theme_id: nil) %>
<%- else %>
<style>
html {
font-family: Arial;
}
</style>
<%- end %>
<%- if params['testem'] %>
<script defer src="/assets/testem.js"></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.size == 0 %>
<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 %>
</body>
</html>