-
-
Notifications
You must be signed in to change notification settings - Fork 9.7k
Angular: Component creation with TestBed API #31311
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: next
Are you sure you want to change the base?
Changes from 51 commits
bdc2876
7dfc0d5
df1923d
2dc32db
5e90152
87466cf
6937f05
2f920fb
c15a3fb
a217ee2
c952ddd
6809141
98bcd54
2feab65
e736144
93cd136
df4753f
a4d719f
7c48733
df05233
3922240
c3b955f
c06bce6
1c67e3a
529255a
9e3dc8b
f4c7209
1f7f262
ab11710
a084f95
d07394b
f4f82f2
e645640
07862e5
360d73c
fc1824d
d3ac778
68853bc
b6fb228
686f5dc
c67765c
595db12
5e39790
ced20e3
88ad304
3d64710
3b2808d
6080907
155a2a2
d350fd2
933fd0c
6aa3c90
f4ae462
2a51649
2d6b193
49c603c
04efc4f
fc7e574
63a06a3
927762c
2506aed
4840d2c
2c58729
37604c9
3b5df69
474b9ee
7dbd6a3
e418f78
1ed7890
2286ce1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -52,6 +52,8 @@ | |
"prep": "rimraf dist && jiti ../../../scripts/prepare/tsc.ts" | ||
}, | ||
"dependencies": { | ||
"@angular/platform-browser-dynamic": "^20.0.0", | ||
"@angular/router": "^20.0.0", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. style: Consider moving @angular/platform-browser-dynamic and @angular/router to peerDependencies since they should be provided by the host application |
||
"@storybook/builder-webpack5": "workspace:*", | ||
"@storybook/core-webpack": "workspace:*", | ||
"@storybook/global": "^5.0.0", | ||
|
@@ -65,17 +67,18 @@ | |
}, | ||
"devDependencies": { | ||
"@analogjs/vite-plugin-angular": "^1.12.1", | ||
"@angular-devkit/architect": "^0.1901.1", | ||
"@angular-devkit/build-angular": "^19.1.1", | ||
"@angular-devkit/core": "^19.1.1", | ||
"@angular/animations": "^19.1.1", | ||
"@angular/common": "^19.1.1", | ||
"@angular/compiler": "^19.1.1", | ||
"@angular/compiler-cli": "^19.1.1", | ||
"@angular/core": "^19.1.1", | ||
"@angular/forms": "^19.1.1", | ||
"@angular/platform-browser": "^19.1.1", | ||
"@angular/platform-browser-dynamic": "^19.1.1", | ||
"@angular-devkit/architect": "^0.2000.1", | ||
"@angular-devkit/build-angular": "^20.0.0", | ||
"@angular-devkit/core": "^20.0.0", | ||
"@angular/animations": "^20.0.0", | ||
"@angular/common": "^20.0.0", | ||
"@angular/compiler": "^20.0.0", | ||
"@angular/compiler-cli": "^20.0.0", | ||
"@angular/core": "^20.0.0", | ||
"@angular/forms": "^20.0.0", | ||
"@angular/platform-browser": "^20.0.0", | ||
"@angular/platform-browser-dynamic": "^20.0.0", | ||
"@angular/router": "^20.0.0", | ||
"@types/node": "^22.0.0", | ||
"rimraf": "^6.0.1", | ||
"typescript": "^5.8.3", | ||
|
@@ -95,6 +98,7 @@ | |
"@angular/forms": ">=18.0.0 < 21.0.0", | ||
"@angular/platform-browser": ">=18.0.0 < 21.0.0", | ||
"@angular/platform-browser-dynamic": ">=18.0.0 < 21.0.0", | ||
"@angular/router": ">=18.0.0 < 21.0.0", | ||
valentinpalkovic marked this conversation as resolved.
Show resolved
Hide resolved
|
||
"rxjs": "^6.5.3 || ^7.4.0", | ||
"storybook": "workspace:^", | ||
"typescript": "^4.9.0 || ^5.0.0", | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -40,12 +40,12 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
describe('CanvasRenderer', () => { | ||||||||||||||||||||||||||||
it('should get CanvasRenderer instance', async () => { | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
expect(render).toBeInstanceOf(CanvasRenderer); | ||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
it('should render my-story for story template', async () => { | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
await render?.render({ | ||||||||||||||||||||||||||||
storyFnAngular: { | ||||||||||||||||||||||||||||
template: '🦊', | ||||||||||||||||||||||||||||
|
@@ -62,7 +62,7 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
@Component({ selector: 'foo', template: '🦊' }) | ||||||||||||||||||||||||||||
class FooComponent {} | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
await render?.render({ | ||||||||||||||||||||||||||||
storyFnAngular: { | ||||||||||||||||||||||||||||
props: {}, | ||||||||||||||||||||||||||||
|
@@ -87,7 +87,7 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||
const token = new Thing(); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
await render?.render({ | ||||||||||||||||||||||||||||
storyFnAngular: { | ||||||||||||||||||||||||||||
|
@@ -105,7 +105,7 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
describe('when forced=true', () => { | ||||||||||||||||||||||||||||
beforeEach(async () => { | ||||||||||||||||||||||||||||
// Init first render | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
await render?.render({ | ||||||||||||||||||||||||||||
storyFnAngular: { | ||||||||||||||||||||||||||||
template: '{{ logo }}: {{ name }}', | ||||||||||||||||||||||||||||
|
@@ -125,7 +125,7 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
it('should not be re-rendered when only props change', async () => { | ||||||||||||||||||||||||||||
// only props change | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
await render?.render({ | ||||||||||||||||||||||||||||
storyFnAngular: { | ||||||||||||||||||||||||||||
props: { | ||||||||||||||||||||||||||||
|
@@ -140,7 +140,7 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
it('should be re-rendered when template change', async () => { | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
await render?.render({ | ||||||||||||||||||||||||||||
storyFnAngular: { | ||||||||||||||||||||||||||||
template: '{{ beer }}', | ||||||||||||||||||||||||||||
|
@@ -161,7 +161,7 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
describe('when canvas render is done before', () => { | ||||||||||||||||||||||||||||
beforeEach(async () => { | ||||||||||||||||||||||||||||
// Init first Canvas render | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootTargetDOMNode, false); | ||||||||||||||||||||||||||||
await render?.render({ | ||||||||||||||||||||||||||||
storyFnAngular: { | ||||||||||||||||||||||||||||
template: 'Canvas 🖼', | ||||||||||||||||||||||||||||
|
@@ -177,13 +177,13 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
.appendChild(global.document.createElement('👾')); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
expect(global.document.getElementById('storybook-root').innerHTML).toContain('Canvas 🖼'); | ||||||||||||||||||||||||||||
await rendererFactory.getRendererInstance(rootDocstargetDOMNode); | ||||||||||||||||||||||||||||
await rendererFactory.getRendererInstance(rootDocstargetDOMNode, false); | ||||||||||||||||||||||||||||
expect(global.document.getElementById('storybook-root').innerHTML).toBe(''); | ||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
it('should get DocsRenderer instance', async () => { | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootDocstargetDOMNode); | ||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance(rootDocstargetDOMNode, false); | ||||||||||||||||||||||||||||
expect(render).toBeInstanceOf(DocsRenderer); | ||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
|
@@ -193,7 +193,8 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
class FooComponent {} | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance( | ||||||||||||||||||||||||||||
global.document.getElementById('storybook-docs') | ||||||||||||||||||||||||||||
global.document.getElementById('storybook-docs'), | ||||||||||||||||||||||||||||
false | ||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
const targetDOMNode1 = global.document.createElement('div'); | ||||||||||||||||||||||||||||
|
@@ -223,7 +224,7 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
expect(global.document.querySelectorAll('#story-1 > story-1')[0].innerHTML).toBe( | ||||||||||||||||||||||||||||
'<foo>🦊</foo><!--container-->' | ||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||
expect(global.document.querySelectorAll('#story-1 > story-1')[1].innerHTML).toBe( | ||||||||||||||||||||||||||||
expect(global.document.querySelectorAll('#story-1 > story-1')[0].innerHTML).toBe( | ||||||||||||||||||||||||||||
'<foo>🦊</foo><!--container-->' | ||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||
Comment on lines
224
to
229
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. logic: Duplicate assertion using same selector '[0]' - second assertion is testing the exact same element as the first
Suggested change
|
||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
|
@@ -235,7 +236,8 @@ describe('RendererFactory', () => { | |||||||||||||||||||||||||||
class FooComponent {} | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
const render = await rendererFactory.getRendererInstance( | ||||||||||||||||||||||||||||
global.document.getElementById('storybook-docs') | ||||||||||||||||||||||||||||
global.document.getElementById('storybook-docs'), | ||||||||||||||||||||||||||||
false | ||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
const targetDOMNode1 = global.document.createElement('div'); | ||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have to remove these from the dev-dependencies. Do you need them because of some stories in our sandboxes?