Skip to content

Commit cfc8994

Browse files
committed
Reproduce renderComponent error: 'Cannot read property of undefined: reading syscall'
1 parent 5da3f8a commit cfc8994

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

packages/@ember/-internals/glimmer/tests/integration/components/render-component-test.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,51 @@ moduleFor(
594594
expect: '<div data-one="">3</div><div data-two="">3</div>',
595595
});
596596
}
597+
598+
async '@test rendering multiple times to adjacent elements'() {
599+
let Child = defComponent(`Hi`, { scope: {} });
600+
let get = (id: string) => this.element.querySelector(id);
601+
let promises: Promise<unknown>[] = [];
602+
603+
function render(Comp: GlimmerishComponent, id: string, owner: Owner) {
604+
let promise = (async () => {
605+
await Promise.resolve();
606+
let element = get(`#${id}`);
607+
608+
renderComponent(Comp, {
609+
into: element!,
610+
owner,
611+
});
612+
})();
613+
614+
promises.push(promise);
615+
616+
return;
617+
}
618+
let A = defComponent('a:<Child />', { scope: { Child } });
619+
let B = defComponent('b:<Child />', { scope: { Child } });
620+
let Root = defComponent(
621+
[
622+
`<div id="a"></div><br>`,
623+
`<div id="b"></div>`,
624+
`{{render A 'a' owner}}`,
625+
`{{render B 'b' owner}}`,
626+
].join('\n'),
627+
{ scope: { render, A, B, owner: this.owner } }
628+
);
629+
630+
this.renderComponent(Root, {
631+
expect: [`<div id="a"></div><br>`, `<div id="b"></div>`, ``, ``].join('\n'),
632+
});
633+
634+
await Promise.all(promises);
635+
636+
assertHTML([`<div id="a">a:Hi</div><br>`, `<div id="b">b:Hi</div>`, ``, ``].join('\n'));
637+
638+
run(() => destroy(this));
639+
640+
assertHTML('');
641+
}
597642
}
598643
);
599644

0 commit comments

Comments
 (0)