Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
bdc5828
Move classic component tests into components/classic
NullVoxPopuli Oct 1, 2026
fb5c5dc
Add Glimmer versions of nine tests that moved to components/classic
NullVoxPopuli Oct 1, 2026
a3cc15a
Move more classic component tests into components/classic
NullVoxPopuli Oct 1, 2026
679def2
Use Glimmer components in three more test files
NullVoxPopuli Oct 1, 2026
46ce689
Keep classic and Glimmer coverage for tests that can use both
NullVoxPopuli Oct 1, 2026
1a46798
Add Glimmer versions of eight classic component tests
NullVoxPopuli Oct 1, 2026
2958629
use queryParamType for serializing
NullVoxPopuli Oct 1, 2026
378f5ad
Merge pull request #21643 from emberjs/nvp/unify-serializeQueryPraam
NullVoxPopuli Oct 1, 2026
f693f24
Merge pull request #21642 from NullVoxPopuli-ai-agent/nvp/tests-witho…
NullVoxPopuli Oct 1, 2026
bbac5be
Release renderComponent roots (and renderers) when the result is dest…
claude Oct 1, 2026
4a79192
Document setModifierManager and modifier capabilities
claude Oct 2, 2026
06fffd9
Document how the get helper treats keys containing a period
claude Oct 2, 2026
f73ba4f
Document the order of {{on}} listeners, ...attributes and classic han…
claude Oct 2, 2026
3ee8cb3
Link RFC #373 from the setModifierManager docs
claude Oct 2, 2026
f4cbcdc
Use a Glimmer component for the {{on}} ordering test
claude Oct 2, 2026
d692ad8
Collect garbage between the phases of pnpm bench
claude Oct 2, 2026
20c63b0
Use settled from @ember/test-helpers in the transitionTo tests
NullVoxPopuli Oct 4, 2026
860195b
Pool the trackers of tracking frames
NullVoxPopuli Oct 6, 2026
8bb3a5b
Make the functions of a TrackedValue on their first use
NullVoxPopuli Oct 6, 2026
b76e9ad
Make the value field of a TrackedValue general from the first instance
NullVoxPopuli Oct 6, 2026
bc6dc98
Use an index in the loop over the subtags of a combined tag
NullVoxPopuli Oct 6, 2026
d7f60e2
Explain the tracker pool with diagrams
NullVoxPopuli Oct 6, 2026
3afe50e
Merge pull request #21648 from NullVoxPopuli-ai-agent/nvp/glimmer-ver…
ef4 Oct 6, 2026
847411c
Merge pull request #21647 from NullVoxPopuli-ai-agent/fix/render-comp…
ef4 Oct 6, 2026
379a7ca
Wait with renderSettled in the renderComponent tests, not run()
NullVoxPopuli Oct 3, 2026
615a221
Remove setter methods from TrackedValue class
NullVoxPopuli Oct 6, 2026
abdb539
Merge pull request #21658 from NullVoxPopuli-ai-agent/nvp/settled-fro…
NullVoxPopuli Oct 6, 2026
95ddc22
Merge pull request #21663 from NullVoxPopuli-ai-agent/nvp/tracker-pool
NullVoxPopuli Oct 6, 2026
82933a4
This test is not something we want to support
NullVoxPopuli Oct 6, 2026
0080d2d
Refactor comments in tracked-value.ts constructor
NullVoxPopuli Oct 6, 2026
67a9fad
Merge pull request #21665 from NullVoxPopuli-ai-agent/nvp/compute-ind…
NullVoxPopuli Oct 6, 2026
a77fdba
Add ember-qunit to the test build
NullVoxPopuli Oct 4, 2026
55670ee
Rename element-test.js to element-test.gjs
NullVoxPopuli Oct 4, 2026
cab58a2
Migrate the {{element}} helper tests to a plain .gjs test
NullVoxPopuli Oct 4, 2026
e248fa6
Merge pull request #21654 from NullVoxPopuli-ai-agent/claude/project-…
NullVoxPopuli Oct 6, 2026
d7f7b1c
Merge pull request #21653 from NullVoxPopuli-ai-agent/claude/project-…
NullVoxPopuli Oct 6, 2026
041763c
Merge pull request #21652 from NullVoxPopuli-ai-agent/claude/project-…
NullVoxPopuli Oct 6, 2026
2841cbc
Merge pull request #21651 from NullVoxPopuli-ai-agent/claude/project-…
NullVoxPopuli Oct 6, 2026
15684b4
Make base-renderer easier to read
NullVoxPopuli Oct 6, 2026
2ee0cde
Merge pull request #21646 from NullVoxPopuli-ai-agent/nvp/tests-witho…
NullVoxPopuli Oct 7, 2026
d4217d5
Merge pull request #21666 from NullVoxPopuli-ai-agent/nvp/tracked-val…
NullVoxPopuli Oct 7, 2026
7ee60db
Merge pull request #21659 from NullVoxPopuli-ai-agent/nvp/vanilla-gjs…
NullVoxPopuli Oct 7, 2026
9618011
Merge pull request #21667 from NullVoxPopuli-ai-agent/nvp/tracked-val…
NullVoxPopuli Oct 7, 2026
5707fdc
Merge pull request #21671 from NullVoxPopuli-ai-agent/nvp/base-render…
NullVoxPopuli Oct 7, 2026
9bec1cb
Merge pull request #21657 from NullVoxPopuli-ai-agent/nvp/render-comp…
NullVoxPopuli Oct 7, 2026
09d3409
Rename log-test.js and concat-test.js to .gjs
NullVoxPopuli Oct 7, 2026
41f1a01
Test cleanup 1/10: use the real @glimmer/component and public imports…
ef4 Oct 9, 2026
cb4772c
Test cleanup 2/10: delete Glimmer tests of fake Ember pieces that rea…
ef4 Oct 9, 2026
86fe1ea
Test cleanup 3/10: register test helpers and modifiers through the pu…
ef4 Oct 9, 2026
cb55cba
Merge pull request #21676 from emberjs/ef4/test-cleanup-1
ef4 Oct 9, 2026
f8e4371
Merge pull request #21677 from emberjs/ef4/test-cleanup-2
ef4 Oct 9, 2026
616437f
Migrate five glimmer integration tests to plain .gjs tests
NullVoxPopuli Oct 8, 2026
454f53c
Merge pull request #21678 from emberjs/ef4/test-cleanup-3
ef4 Oct 9, 2026
eef7970
Merge pull request #21672 from NullVoxPopuli-ai-agent/nvp/vanilla-gjs…
NullVoxPopuli Oct 9, 2026
05dd5ef
Rename nine glimmer integration tests to .gjs
NullVoxPopuli Oct 9, 2026
8ac18e5
Test cleanup 4/10: run the component fan-out on real Glimmer componen…
ef4 Oct 9, 2026
67b76a1
Migrate ten glimmer integration tests to plain tests
NullVoxPopuli Oct 9, 2026
f3edeb1
Merge pull request #21679 from emberjs/ef4/test-cleanup-4
ef4 Oct 10, 2026
e436b92
Merge pull request #21680 from NullVoxPopuli-ai-agent/nvp/vanilla-gjs…
NullVoxPopuli Oct 10, 2026
48ee383
Upgrade @ember/test-helpers to 5.7.0
NullVoxPopuli Oct 10, 2026
b80ff76
Merge pull request #21686 from NullVoxPopuli-ai-agent/nvp/upgrade-tes…
ef4 Oct 10, 2026
805aa16
Use native and tracked arrays in tests that are not about Ember arrays
NullVoxPopuli Oct 10, 2026
2413654
Test cleanup 5/10: render Glimmer tests through Ember's renderer, own…
ef4 Oct 9, 2026
ee24031
removing unhelpful comments
ef4 Oct 10, 2026
35172df
simplify custom iterable implementation
ef4 Oct 10, 2026
1dc7823
Import `tracked` from @glimmer/tracking directly in the Glimmer tests
ef4 Oct 10, 2026
59bb3d0
drop silly vestigial test helper
ef4 Oct 10, 2026
5813fb7
Use public APIs directly where Glimmer test helpers only wrapped them
ef4 Oct 10, 2026
4b1b2bf
Use native classes in routing tests that are not about classic classes
NullVoxPopuli Oct 11, 2026
caf26b9
Keep the classic class assertion in the typeOf test
NullVoxPopuli Oct 11, 2026
c49d802
Merge pull request #21684 from emberjs/ef4/test-cleanup-5
ef4 Oct 11, 2026
1dd02bd
Merge pull request #21690 from NullVoxPopuli-ai-agent/nvp/array-tests…
NullVoxPopuli Oct 11, 2026
313c24b
Merge pull request #21691 from NullVoxPopuli-ai-agent/nvp/routing-tes…
NullVoxPopuli Oct 11, 2026
7409409
Merge remote-tracking branch 'origin/main' into nvp/mixin-followups-m…
NullVoxPopuli Oct 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion babel.test.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,29 @@

import { createRequire } from 'node:module';
import baseConfig from './babel.config.mjs';
import { buildMacros } from '@embroider/macros/babel';

// eslint-disable-next-line no-redeclare
const require = createRequire(import.meta.url);
const buildDebugMacroPlugin = require('./broccoli/build-debug-macro-plugin.cjs');
const appEmberSatisfiesPlugin = require('./broccoli/app-ember-satisfies-plugin.cjs');
const isProduction = process.env.EMBER_ENV === 'production';

// @ember/test-helpers, @ember/test-waiters and ember-qunit use @embroider/macros.
//
// buildMacros() reads NODE_ENV, but our builds select the mode with EMBER_ENV.
const macros = buildMacros({
setConfig: {
// index.html loads the QUnit styles, and tests render into #qunit-fixture.
'ember-qunit': { theme: 'none', disableContainerStyles: true },
},
configure(config) {
if (!isProduction) {
config.enablePackageDevelopment(process.cwd());
}
},
});

export default {
...baseConfig,

Expand All @@ -27,5 +44,10 @@ export default {
],
],

plugins: [...baseConfig.plugins, ...buildDebugMacroPlugin(!isProduction)],
plugins: [
...baseConfig.plugins,
appEmberSatisfiesPlugin,
...macros.babelMacros,
...buildDebugMacroPlugin(!isProduction),
],
};
4 changes: 4 additions & 0 deletions bin/benchmark/run.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,10 @@ async function bootAndRun({ headless = true } = {}) {
// as the contradictory flags cause use-after-free crashes on macOS
'--disable-gpu',
'--disable-gpu-compositing',
// Exposes gc(), which the benchmark app calls between phases (see
// waitForIdle in smoke-tests/benchmark-app/app/run-benchmark.js), so
// the garbage of one phase is not collected inside a later one.
'--js-flags=--expose-gc',
].join(','),
];

Expand Down
32 changes: 32 additions & 0 deletions broccoli/app-ember-satisfies-plugin.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const semver = require('semver');
const { version } = require('../package.json');

/*
`appEmberSatisfies` from @embroider/macros reads the ember-source version
from the dependencies of the app.

In this repo the app is ember-source, and a package cannot depend on itself.
So this plugin answers the macro with the version of this repo, before
@embroider/macros sees it.
*/
module.exports = function appEmberSatisfiesPlugin({ types: t }) {
return {
name: 'app-ember-satisfies',
visitor: {
Program(program) {
program.traverse({
CallExpression(call) {
if (!call.get('callee').referencesImport('@embroider/macros', 'appEmberSatisfies')) {
return;
}

let [range] = call.node.arguments;
let satisfied = semver.satisfies(version, range.value, { includePrerelease: true });

call.replaceWith(t.booleanLiteral(satisfied));
},
});
},
},
};
};
20 changes: 15 additions & 5 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,14 @@
</head>
<body>
<script type="module">
import 'qunit/qunit/qunit.js';
// By package name, as in the tests. The dev server then gives this page
// and the tests the same copy of QUnit.
import 'qunit';
import 'qunit/qunit/qunit.css';

// The last script of this page starts QUnit, after all tests are loaded.
QUnit.config.autostart = false;

window.EmberENV = {};

// Test under octane defaults
Expand Down Expand Up @@ -46,13 +51,11 @@

<script type="module">
import setupQUnit from './packages/internal-test-helpers/lib/ember-dev/setup-qunit.ts';
import setupTestHelpers from './packages/internal-test-helpers/lib/ember-dev/setup-test-helpers.js';
import { setTesting } from './packages/@ember/debug/index.ts';
setupQUnit();
setupTestHelpers();
setTesting(true);

let s = document.createElement('script');
s.src = '/testem.js';
document.body.append(s);
</script>

<script type="module">
Expand All @@ -79,6 +82,13 @@
eager: true,
}
);

// ember-qunit calls the testem hook when a test imports it, and that call
// throws if testem is already hooked. So testem loads after the tests.
let testem = document.createElement('script');
testem.src = '/testem.js';
testem.onload = testem.onerror = () => QUnit.start();
document.body.append(testem);
</script>

<div id="qunit"></div>
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@
"@babel/plugin-transform-typescript": "^7.26.8",
"@babel/preset-env": "^7.16.11",
"@babel/types": "^7.22.5",
"@ember/test-helpers": "^5.7.0",
"@embroider/macros": "^1.20.2",
"@embroider/shared-internals": "^3.0.2",
"@embroider/vite": "^1.7.2",
Expand All @@ -131,6 +132,7 @@
"ember-cli-browserstack": "^4.0.0",
"ember-cli-dependency-checker": "^3.3.1",
"ember-cli-yuidoc": "^0.9.1",
"ember-qunit": "^9.1.0",
"eslint": "^9.21.0",
"eslint-import-resolver-node": "^0.3.10",
"eslint-plugin-disable-features": "^0.1.3",
Expand All @@ -150,6 +152,7 @@
"npm-run-all2": "^8.0.0",
"prettier": "^3.5.3",
"qunit": "^2.19.4",
"qunit-dom": "^3.6.0",
"recast": "^0.22.0",
"release-plan": "^0.19.0",
"resolve.exports": "^2.0.3",
Expand Down
Loading
Loading