Skip to content

[Bug] Cannot use router.isActive, without first calling router.urlForΒ #20663

@amk221

Description

@amk221

🐞 Describe the Bug

Here is a demo app with a failing test

When calling router.isActive, an error is thrown: Cannot read properties of undefined (reading 'isActiveIntent'). Which seems to suggest routerMicrolib is undefined. Calling router.urlFor first, makes the isActive call work. presumably it sets up routerMicrolib.

Stack trace

isActive	@	router-service.js:250
get isActive	@	foo.js:44
getPossibleMandatoryProxyValue	@	index.js:1611
_getProp	@	index.js:1635
(anonymous)	@	reference.js:164
(anonymous)	@	reference.js:125
track	@	validator.js:660
valueForRef	@	reference.js:124
(anonymous)	@	runtime.js:2971
(anonymous)	@	reference.js:125
track	@	validator.js:660
valueForRef	@	reference.js:124
(anonymous)	@	runtime.js:1736
evaluate	@	runtime.js:1061
evaluateSyscall	@	runtime.js:4920
evaluateInner	@	runtime.js:4898
evaluateOuter	@	runtime.js:4891
next	@	runtime.js:5744
_execute	@	runtime.js:5733
execute	@	runtime.js:5707
handleException	@	runtime.js:5036
handleException	@	runtime.js:5252
throw	@	runtime.js:4979
evaluate	@	runtime.js:1415
_execute	@	runtime.js:4966
(anonymous)	@	runtime.js:4940
debug.runInTrackingTransaction	@	validator.js:115
execute	@	runtime.js:4940
rerender	@	runtime.js:5278
(anonymous)	@	index.js:4724
(anonymous)	@	index.js:4691
(anonymous)	@	index.js:4981
inTransaction	@	runtime.js:4073
_renderRoots	@	index.js:4963
_renderRootsTransaction	@	index.js:5007
_revalidate	@	index.js:5039
invoke	@	backburner.js.js:272
flush	@	backburner.js.js:188
flush	@	backburner.js.js:344
_end	@	backburner.js.js:773
Backburner._boundAutorunEnd	@	backburner.js.js:509
Promise.then (async)		
iterations	@	backburner.js.js:26
flush	@	index.js:40
_scheduleAutorun	@	backburner.js.js:939
_end	@	backburner.js.js:779
Backburner._boundAutorunEnd	@	backburner.js.js:509
Promise.then (async)		
iterations	@	backburner.js.js:26
flush	@	index.js:40
_scheduleAutorun	@	backburner.js.js:939
_end	@	backburner.js.js:779
Backburner._boundAutorunEnd	@	backburner.js.js:509
Promise.then (async)		
iterations	@	backburner.js.js:26
flush	@	index.js:40
_scheduleAutorun	@	backburner.js.js:939
_ensureInstance	@	backburner.js.js:930
ensureInstance	@	backburner.js.js:742
scheduleRevalidate	@	index.js:3396
dirtyTag	@	validator.js:377
(anonymous)	@	index.js:4630
updateRef	@	reference.js:138
setOutletState	@	index.js:4657
(anonymous)	@	setup-rendering-context.js:163
Promise.then (async)		
render	@	setup-rendering-context.js:102
(anonymous)	@	foo-test.js:11
runTest	@	qunit.js:415
run	@	qunit.js:413
eval	@	qunit.js:457
processTaskQueue	@	qunit.js:673
advanceTaskQueue	@	qunit.js:667
advance	@	qunit.js:665
eval	@	qunit.js:543
setTimeout (async)		
internalStart	@	qunit.js:543
release	@	qunit.js:527
resolve	@	qunit.js:528
Promise.then (async)		
resolvePromise	@	qunit.js:530
callHook	@	qunit.js:417
runHook	@	qunit.js:426
processTaskQueue	@	qunit.js:673
advanceTaskQueue	@	qunit.js:667
advance	@	qunit.js:665
eval	@	qunit.js:543
setTimeout (async)		
internalStart	@	qunit.js:543
release	@	qunit.js:527
resolve	@	qunit.js:528
Promise.then (async)		
resolvePromise	@	qunit.js:530
callHook	@	qunit.js:417
runHook	@	qunit.js:426
processTaskQueue	@	qunit.js:673
eval	@	qunit.js:673
Promise.then (async)		
processTaskQueue	@	qunit.js:673
eval	@	qunit.js:673
Promise.then (async)		
processTaskQueue	@	qunit.js:673
advanceTaskQueue	@	qunit.js:667
advance	@	qunit.js:665
advanceTestQueue	@	qunit.js:675
advance	@	qunit.js:665
unblockAndAdvanceQueue	@	qunit.js:1059
Promise.then (async)		
begin	@	qunit.js:1067
eval	@	qunit.js:1059
setTimeout (async)		
scheduleBegin	@	qunit.js:1059
load	@	qunit.js:1058
load (async)		
addEvent	@	qunit.js:1158
eval	@	qunit.js:1250
eval	@	qunit.js:1269
eval	@	qunit.js:1269
./node_modules/qunit/qunit/qunit.js	@	chunk.vendors-node_m…eb5b7192bd18b.js:94
__webpack_require__	@	chunk.tests.3a32729….js:108
eval	@	tests.cjs:20
Module.exports	@	loader.js:106
Module._reify	@	loader.js:143
Module.reify	@	loader.js:130
Module.exports	@	loader.js:104
requireModule	@	loader.js:27
(anonymous)	@	tests-suffix.js:1

πŸ”¬ Minimal Reproduction

See demo app

πŸ˜• Actual Behavior

Error is thrown

πŸ€” Expected Behavior

isActive should return whether the route is active

🌍 Environment

ember-cli: 5.6.0
node: 18.16.0
os: darwin arm64

βž• Additional Context

Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions