diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/render-component-test.ts b/packages/@ember/-internals/glimmer/tests/integration/components/render-component-test.ts index 14649f1914d..476688d3c58 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/render-component-test.ts +++ b/packages/@ember/-internals/glimmer/tests/integration/components/render-component-test.ts @@ -594,6 +594,51 @@ moduleFor( expect: '
3
3
', }); } + + async '@test rendering multiple times to adjacent elements'() { + let Child = defComponent(`Hi`, { scope: {} }); + let get = (id: string) => this.element.querySelector(id); + let promises: Promise[] = []; + + function render(Comp: GlimmerishComponent, id: string, owner: Owner) { + let promise = (async () => { + await Promise.resolve(); + let element = get(`#${id}`); + + renderComponent(Comp, { + into: element!, + owner, + }); + })(); + + promises.push(promise); + + return; + } + let A = defComponent('a:', { scope: { Child } }); + let B = defComponent('b:', { scope: { Child } }); + let Root = defComponent( + [ + `

`, + `
`, + `{{render A 'a' owner}}`, + `{{render B 'b' owner}}`, + ].join('\n'), + { scope: { render, A, B, owner: this.owner } } + ); + + this.renderComponent(Root, { + expect: [`

`, `
`, ``, ``].join('\n'), + }); + + await Promise.all(promises); + + assertHTML([`
a:Hi

`, `
b:Hi
`, ``, ``].join('\n')); + + run(() => destroy(this)); + + assertHTML(''); + } } );