From 42e19eea0b5c531470af91e23d255b20ffb0c42a Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Tue, 3 Mar 2026 17:06:24 -0500 Subject: [PATCH 1/2] Migrade node tests to scenarios Update dependencies in smoke test node template ope Move build-info-test back to tests/node/ build-info-test tests build infrastructure (broccoli/build-info), not node support. It can't run as a smoke test because broccoli/ is not in the published package's files list. Co-Authored-By: Claude Opus 4.6 Restore commented-out code in overrides-test.js Keeps the PR diff minimal by not removing comments that were already present in the original file. Co-Authored-By: Claude Opus 4.6 update eslint --- eslint.config.mjs | 2 ++ pnpm-lock.yaml | 18 +++++++++++++ smoke-tests/node-template/package.json | 16 +++++++++++ .../tests}/node/app-boot-test.js | 0 .../tests}/node/component-rendering-test.js | 0 .../tests}/node/fastboot-sandbox-test.js | 0 .../tests}/node/fixtures/project.js | 0 .../node/helpers/assert-html-matches.js | 0 .../tests}/node/helpers/build-owner.js | 0 .../tests}/node/helpers/load-ember.js | 4 ++- .../tests}/node/helpers/setup-app.js | 0 .../tests}/node/helpers/setup-component.js | 0 .../tests}/node/instrumentation-test.js | 0 .../tests}/node/overrides-test.js | 4 ++- .../tests}/node/sourcemap-test.js | 5 +++- .../tests}/node/template-compiler-test.js | 3 ++- .../node-template/tests}/node/visit-test.js | 0 smoke-tests/scenarios/node-test.ts | 27 +++++++++++++++++++ smoke-tests/scenarios/scenarios.ts | 14 ++++++++++ 19 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 smoke-tests/node-template/package.json rename {tests => smoke-tests/node-template/tests}/node/app-boot-test.js (100%) rename {tests => smoke-tests/node-template/tests}/node/component-rendering-test.js (100%) rename {tests => smoke-tests/node-template/tests}/node/fastboot-sandbox-test.js (100%) rename {tests => smoke-tests/node-template/tests}/node/fixtures/project.js (100%) rename {tests => smoke-tests/node-template/tests}/node/helpers/assert-html-matches.js (100%) rename {tests => smoke-tests/node-template/tests}/node/helpers/build-owner.js (100%) rename {tests => smoke-tests/node-template/tests}/node/helpers/load-ember.js (91%) rename {tests => smoke-tests/node-template/tests}/node/helpers/setup-app.js (100%) rename {tests => smoke-tests/node-template/tests}/node/helpers/setup-component.js (100%) rename {tests => smoke-tests/node-template/tests}/node/instrumentation-test.js (100%) rename {tests => smoke-tests/node-template/tests}/node/overrides-test.js (99%) rename {tests => smoke-tests/node-template/tests}/node/sourcemap-test.js (72%) rename {tests => smoke-tests/node-template/tests}/node/template-compiler-test.js (93%) rename {tests => smoke-tests/node-template/tests}/node/visit-test.js (100%) create mode 100644 smoke-tests/scenarios/node-test.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index db1720fba68..8cc31b55b7e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -215,6 +215,7 @@ export default [ '**/babel.test.config.mjs', 'node-tests/**/*.js', 'tests/node/**/*.js', + 'smoke-tests/node-template/**/*.js', 'blueprints/**/*.js', 'bin/**/*.js', 'bin/**/*.mjs', @@ -244,6 +245,7 @@ export default [ '**/babel.test.config.mjs', 'node-tests/**/*.js', 'tests/node/**/*.js', + 'smoke-tests/node-template/**/*.js', 'blueprints/**/*.js', 'bin/**/*.js', 'bin/**/*.mjs', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e2fe00fbff..d83616368f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2964,6 +2964,24 @@ importers: specifier: ^7.3.0 version: 7.3.1(@types/node@22.19.11)(terser@5.46.0)(yaml@2.8.2) + smoke-tests/node-template: + dependencies: + git-repo-info: + specifier: ^2.1.1 + version: 2.1.1 + html-differ: + specifier: ^1.4.0 + version: 1.4.0 + qunit: + specifier: ^2.20.1 + version: 2.25.0 + semver: + specifier: ^7.6.0 + version: 7.7.4 + simple-dom: + specifier: ^1.4.0 + version: 1.4.0 + smoke-tests/scenarios: devDependencies: '@embroider/compat': diff --git a/smoke-tests/node-template/package.json b/smoke-tests/node-template/package.json new file mode 100644 index 00000000000..c33b74d91c5 --- /dev/null +++ b/smoke-tests/node-template/package.json @@ -0,0 +1,16 @@ +{ + "name": "ember-test-node-template", + "version": "0.0.0", + "private": true, + "description": "Node-focused smoke test template for ember-source", + "scripts": { + "test:node": "qunit tests/node/**/*-test.js" + }, + "dependencies": { + "git-repo-info": "^2.1.1", + "html-differ": "^1.4.0", + "qunit": "^2.20.1", + "semver": "^7.6.0", + "simple-dom": "^1.4.0" + } +} diff --git a/tests/node/app-boot-test.js b/smoke-tests/node-template/tests/node/app-boot-test.js similarity index 100% rename from tests/node/app-boot-test.js rename to smoke-tests/node-template/tests/node/app-boot-test.js diff --git a/tests/node/component-rendering-test.js b/smoke-tests/node-template/tests/node/component-rendering-test.js similarity index 100% rename from tests/node/component-rendering-test.js rename to smoke-tests/node-template/tests/node/component-rendering-test.js diff --git a/tests/node/fastboot-sandbox-test.js b/smoke-tests/node-template/tests/node/fastboot-sandbox-test.js similarity index 100% rename from tests/node/fastboot-sandbox-test.js rename to smoke-tests/node-template/tests/node/fastboot-sandbox-test.js diff --git a/tests/node/fixtures/project.js b/smoke-tests/node-template/tests/node/fixtures/project.js similarity index 100% rename from tests/node/fixtures/project.js rename to smoke-tests/node-template/tests/node/fixtures/project.js diff --git a/tests/node/helpers/assert-html-matches.js b/smoke-tests/node-template/tests/node/helpers/assert-html-matches.js similarity index 100% rename from tests/node/helpers/assert-html-matches.js rename to smoke-tests/node-template/tests/node/helpers/assert-html-matches.js diff --git a/tests/node/helpers/build-owner.js b/smoke-tests/node-template/tests/node/helpers/build-owner.js similarity index 100% rename from tests/node/helpers/build-owner.js rename to smoke-tests/node-template/tests/node/helpers/build-owner.js diff --git a/tests/node/helpers/load-ember.js b/smoke-tests/node-template/tests/node/helpers/load-ember.js similarity index 91% rename from tests/node/helpers/load-ember.js rename to smoke-tests/node-template/tests/node/helpers/load-ember.js index 740ae9c3c61..a625a599a5f 100644 --- a/tests/node/helpers/load-ember.js +++ b/smoke-tests/node-template/tests/node/helpers/load-ember.js @@ -1,5 +1,7 @@ const path = require('path'); -const distPath = path.join(__dirname, '../../../dist'); + +const emberSourceRoot = path.dirname(require.resolve('ember-source/package.json')); +const distPath = path.join(emberSourceRoot, 'dist'); const emberPath = path.join(distPath, 'ember.debug.js'); const templateCompilerPath = path.join(distPath, 'ember-template-compiler'); diff --git a/tests/node/helpers/setup-app.js b/smoke-tests/node-template/tests/node/helpers/setup-app.js similarity index 100% rename from tests/node/helpers/setup-app.js rename to smoke-tests/node-template/tests/node/helpers/setup-app.js diff --git a/tests/node/helpers/setup-component.js b/smoke-tests/node-template/tests/node/helpers/setup-component.js similarity index 100% rename from tests/node/helpers/setup-component.js rename to smoke-tests/node-template/tests/node/helpers/setup-component.js diff --git a/tests/node/instrumentation-test.js b/smoke-tests/node-template/tests/node/instrumentation-test.js similarity index 100% rename from tests/node/instrumentation-test.js rename to smoke-tests/node-template/tests/node/instrumentation-test.js diff --git a/tests/node/overrides-test.js b/smoke-tests/node-template/tests/node/overrides-test.js similarity index 99% rename from tests/node/overrides-test.js rename to smoke-tests/node-template/tests/node/overrides-test.js index fad26650362..48161e50f90 100644 --- a/tests/node/overrides-test.js +++ b/smoke-tests/node-template/tests/node/overrides-test.js @@ -1,7 +1,9 @@ 'use strict'; +const path = require('path'); +const emberSourceRoot = path.dirname(require.resolve('ember-source/package.json')); const Project = require('./fixtures/project'); -const Overrides = require('../../lib/overrides'); +const Overrides = require(path.join(emberSourceRoot, 'lib', 'overrides')); function cmp(a, b) { if (a == undefined || a < b) { diff --git a/tests/node/sourcemap-test.js b/smoke-tests/node-template/tests/node/sourcemap-test.js similarity index 72% rename from tests/node/sourcemap-test.js rename to smoke-tests/node-template/tests/node/sourcemap-test.js index 16000c99d86..a0051e3992d 100644 --- a/tests/node/sourcemap-test.js +++ b/smoke-tests/node-template/tests/node/sourcemap-test.js @@ -1,8 +1,11 @@ const fs = require('fs'); +const path = require('path'); + +const emberSourceRoot = path.dirname(require.resolve('ember-source/package.json')); QUnit.module('sourcemap validation', function () { QUnit.test(`ember.js has only a single sourcemaps comment`, function (assert) { - let jsPath = `dist/ember.debug.js`; + let jsPath = path.join(emberSourceRoot, 'dist', 'ember.debug.js'); assert.ok(fs.existsSync(jsPath)); let contents = fs.readFileSync(jsPath, 'utf-8'); diff --git a/tests/node/template-compiler-test.js b/smoke-tests/node-template/tests/node/template-compiler-test.js similarity index 93% rename from tests/node/template-compiler-test.js rename to smoke-tests/node-template/tests/node/template-compiler-test.js index 4fcb051a8ee..8ffa7c26119 100644 --- a/tests/node/template-compiler-test.js +++ b/smoke-tests/node-template/tests/node/template-compiler-test.js @@ -1,6 +1,7 @@ const path = require('path'); -const distPath = path.join(__dirname, '../../dist'); +const emberSourceRoot = path.dirname(require.resolve('ember-source/package.json')); +const distPath = path.join(emberSourceRoot, 'dist'); let templateCompiler; diff --git a/tests/node/visit-test.js b/smoke-tests/node-template/tests/node/visit-test.js similarity index 100% rename from tests/node/visit-test.js rename to smoke-tests/node-template/tests/node/visit-test.js diff --git a/smoke-tests/scenarios/node-test.ts b/smoke-tests/scenarios/node-test.ts new file mode 100644 index 00000000000..e0de605e4d9 --- /dev/null +++ b/smoke-tests/scenarios/node-test.ts @@ -0,0 +1,27 @@ +import { nodeScenarios } from './scenarios'; +import type { PreparedApp, Scenarios } from 'scenario-tester'; +import * as QUnit from 'qunit'; + +const { module: Qmodule, test } = QUnit; +QUnit.config.testTimeout = 120_000; + +function nodeTests(scenarios: Scenarios) { + scenarios + .map('node-tests', (_project) => {}) + .forEachScenario((scenario) => { + Qmodule(scenario.name, function (hooks) { + let app: PreparedApp; + + hooks.before(async () => { + app = await scenario.prepare(); + }); + + test('node tests', async function (assert) { + let result = await app.execute(`pnpm test:node`); + assert.equal(result.exitCode, 0, result.output); + }); + }); + }); +} + +nodeTests(nodeScenarios); diff --git a/smoke-tests/scenarios/scenarios.ts b/smoke-tests/scenarios/scenarios.ts index 66b04ce10ed..022fcb28580 100644 --- a/smoke-tests/scenarios/scenarios.ts +++ b/smoke-tests/scenarios/scenarios.ts @@ -44,3 +44,17 @@ export const v2AppScenarios = Scenarios.fromProject(() => ).expand({ embroiderVite, }); + +function node(project: Project) { + project.linkDevDependency('ember-source', { + baseDir: dirname(require.resolve('../app-template/package.json')), + }); +} + +export const nodeScenarios = Scenarios.fromProject(() => + Project.fromDir(dirname(require.resolve('../node-template/package.json')), { + linkDevDeps: true, + }) +).expand({ + node, +}); From 29a13205eb7af681116be45e2c5bf82bc62765db Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Tue, 3 Mar 2026 23:02:19 -0500 Subject: [PATCH 2/2] Remove some deps from the root package.json now that they are only used in node-template --- package.json | 4 +--- pnpm-lock.yaml | 6 ------ 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/package.json b/package.json index 1c5dc4c0602..a5dab7b4126 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,6 @@ "github": "^0.2.3", "glob": "^8.0.3", "globals": "^16.0.0", - "html-differ": "^1.4.0", "kill-port-process": "^3.2.1", "mocha": "^10.2.0", "node-gzip": "^1.1.2", @@ -144,7 +143,6 @@ "resolve.exports": "^2.0.3", "rollup": "^4.57.1", "rsvp": "^4.8.5", - "simple-dom": "^1.4.0", "table": "^6.9.0", "terser": "^5.42.0", "testem": "^3.10.1", @@ -390,4 +388,4 @@ } }, "packageManager": "pnpm@10.30.3" -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d83616368f0..85ae883ead3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -220,9 +220,6 @@ importers: globals: specifier: ^16.0.0 version: 16.5.0 - html-differ: - specifier: ^1.4.0 - version: 1.4.0 kill-port-process: specifier: ^3.2.1 version: 3.2.1 @@ -253,9 +250,6 @@ importers: rsvp: specifier: ^4.8.5 version: 4.8.5 - simple-dom: - specifier: ^1.4.0 - version: 1.4.0 table: specifier: ^6.9.0 version: 6.9.0