[IMP] components: rename onRender->onWillRender, add onRendered

This commit is contained in:
Géry Debongnie
2021-11-19 09:43:06 +01:00
committed by Samuel Degueldre
parent bdfe058279
commit 757dffefac
11 changed files with 508 additions and 249 deletions
+349 -169
View File
@@ -112,16 +112,20 @@ test("destroying/recreating a subwidget with different props (if start is not ov
expect(steps).toEqual([
"W:setup",
"W:willStart",
"W:render",
"W:willRender",
"W:rendered",
"W:mounted",
"W:render",
"W:willRender",
"Child:setup",
"Child:willStart",
"W:render",
"W:rendered",
"W:willRender",
"Child:destroyed",
"Child:setup",
"Child:willStart",
"Child:render",
"W:rendered",
"Child:willRender",
"Child:rendered",
"W:willPatch",
"Child:mounted",
"W:patched",
@@ -189,19 +193,24 @@ test("creating two async components, scenario 1", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"Parent:rendered",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"ChildA:setup",
"ChildA:willStart",
"Parent:render",
"Parent:rendered",
"Parent:willRender",
"ChildA:destroyed",
"ChildA:setup",
"ChildA:willStart",
"ChildB:setup",
"ChildB:willStart",
"ChildB:render",
"ChildA:render",
"Parent:rendered",
"ChildB:willRender",
"ChildB:rendered",
"ChildA:willRender",
"ChildA:rendered",
"Parent:willPatch",
"ChildB:mounted",
"ChildA:mounted",
@@ -263,20 +272,26 @@ test("creating two async components, scenario 2", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"ChildA:setup",
"ChildA:willStart",
"ChildA:render",
"Parent:rendered",
"ChildA:willRender",
"ChildA:rendered",
"ChildA:mounted",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"ChildA:willUpdateProps",
"Parent:render",
"Parent:rendered",
"Parent:willRender",
"ChildA:willUpdateProps",
"ChildB:setup",
"ChildB:willStart",
"ChildB:render",
"ChildA:render",
"Parent:rendered",
"ChildB:willRender",
"ChildB:rendered",
"ChildA:willRender",
"ChildA:rendered",
"Parent:willPatch",
"ChildA:willPatch",
"ChildB:mounted",
@@ -336,20 +351,26 @@ test("creating two async components, scenario 3 (patching in the same frame)", a
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"ChildA:setup",
"ChildA:willStart",
"ChildA:render",
"Parent:rendered",
"ChildA:willRender",
"ChildA:rendered",
"ChildA:mounted",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"ChildA:willUpdateProps",
"Parent:render",
"Parent:rendered",
"Parent:willRender",
"ChildA:willUpdateProps",
"ChildB:setup",
"ChildB:willStart",
"ChildB:render",
"ChildA:render",
"Parent:rendered",
"ChildB:willRender",
"ChildB:rendered",
"ChildA:willRender",
"ChildA:rendered",
"Parent:willPatch",
"ChildA:willPatch",
"ChildB:mounted",
@@ -396,17 +417,22 @@ test("update a sub-component twice in the same frame", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"ChildA:setup",
"ChildA:willStart",
"ChildA:render",
"Parent:rendered",
"ChildA:willRender",
"ChildA:rendered",
"ChildA:mounted",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"ChildA:willUpdateProps",
"Parent:render",
"Parent:rendered",
"Parent:willRender",
"ChildA:willUpdateProps",
"ChildA:render",
"Parent:rendered",
"ChildA:willRender",
"ChildA:rendered",
"Parent:willPatch",
"ChildA:willPatch",
"ChildA:patched",
@@ -447,15 +473,18 @@ test("update a sub-component twice in the same frame, 2", async () => {
expect(steps.splice(0)).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"ChildA:setup",
"ChildA:willStart",
"ChildA:render",
"Parent:rendered",
"ChildA:willRender",
"render",
"ChildA:rendered",
"ChildA:mounted",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"ChildA:willUpdateProps",
"Parent:rendered",
]);
await nextMicroTick();
// For an unknown reason, this test fails on windows without the next microtick. It works
@@ -463,22 +492,27 @@ test("update a sub-component twice in the same frame, 2", async () => {
// I do not see anything harmful in waiting an extra tick. But it is annoying to not
// know what is different.
await nextMicroTick();
expect(steps.splice(0)).toEqual(["ChildA:render", "render"]);
expect(steps.splice(0)).toEqual(["ChildA:willRender", "render", "ChildA:rendered"]);
expect(fixture.innerHTML).toBe("<div><span>1</span></div>");
parent.state.valA = 3;
await nextMicroTick();
await nextMicroTick();
expect(steps.splice(0)).toEqual(["Parent:render", "ChildA:willUpdateProps"]);
expect(steps.splice(0)).toEqual([
"Parent:willRender",
"ChildA:willUpdateProps",
"Parent:rendered",
]);
await nextMicroTick();
// same as above
await nextMicroTick();
expect(steps).toEqual(["ChildA:render", "render"]);
expect(steps).toEqual(["ChildA:willRender", "render", "ChildA:rendered"]);
expect(fixture.innerHTML).toBe("<div><span>1</span></div>");
await nextTick();
expect(fixture.innerHTML).toBe("<div><span>3</span></div>");
expect(steps).toEqual([
"ChildA:render",
"ChildA:willRender",
"render",
"ChildA:rendered",
"Parent:willPatch",
"ChildA:willPatch",
"ChildA:patched",
@@ -548,21 +582,27 @@ test("properly behave when destroyed/unmounted while rendering ", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"Child:setup",
"Child:willStart",
"Child:render",
"Parent:rendered",
"Child:willRender",
"SubChild:setup",
"SubChild:willStart",
"SubChild:render",
"Child:rendered",
"SubChild:willRender",
"SubChild:rendered",
"SubChild:mounted",
"Child:mounted",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"Child:willUpdateProps",
"Child:render",
"Parent:rendered",
"Child:willRender",
"SubChild:willUpdateProps",
"Parent:render",
"Child:rendered",
"Parent:willRender",
"Parent:rendered",
"Parent:willPatch",
"Child:willUnmount",
"SubChild:willUnmount",
@@ -612,16 +652,20 @@ test("rendering component again in next microtick", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"Parent:rendered",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"Child:setup",
"Child:willStart",
"Parent:render",
"Parent:rendered",
"Parent:willRender",
"Child:destroyed",
"Child:setup",
"Child:willStart",
"Child:render",
"Parent:rendered",
"Child:willRender",
"Child:rendered",
"Parent:willPatch",
"Child:mounted",
"Parent:patched",
@@ -689,23 +733,30 @@ test("concurrent renderings scenario 1", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentC:rendered",
"ComponentC:mounted",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentB:render",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentA:render",
"ComponentB:rendered",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentC:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentC:willPatch",
@@ -774,23 +825,30 @@ test("concurrent renderings scenario 2", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentC:rendered",
"ComponentC:mounted",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentB:render",
"ComponentB:rendered",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentC:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentC:willPatch",
@@ -858,23 +916,30 @@ test("concurrent renderings scenario 2bis", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentC:rendered",
"ComponentC:mounted",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentB:render",
"ComponentB:rendered",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentC:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentC:willPatch",
@@ -964,29 +1029,38 @@ test("concurrent renderings scenario 3", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentD:setup",
"ComponentD:willStart",
"ComponentD:render",
"ComponentC:rendered",
"ComponentD:willRender",
"ComponentD:rendered",
"ComponentD:mounted",
"ComponentC:mounted",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentC:render",
"ComponentA:rendered",
"ComponentC:willRender",
"ComponentD:willUpdateProps",
"ComponentB:render",
"ComponentC:rendered",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentD:willUpdateProps",
"ComponentD:render",
"ComponentC:rendered",
"ComponentD:willRender",
"ComponentD:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentC:willPatch",
@@ -1078,29 +1152,38 @@ test("concurrent renderings scenario 4", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentD:setup",
"ComponentD:willStart",
"ComponentD:render",
"ComponentC:rendered",
"ComponentD:willRender",
"ComponentD:rendered",
"ComponentD:mounted",
"ComponentC:mounted",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentC:render",
"ComponentA:rendered",
"ComponentC:willRender",
"ComponentD:willUpdateProps",
"ComponentB:render",
"ComponentC:rendered",
"ComponentB:willRender",
"ComponentC:willUpdateProps",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentD:willUpdateProps",
"ComponentD:render",
"ComponentC:rendered",
"ComponentD:willRender",
"ComponentD:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentC:willPatch",
@@ -1164,17 +1247,22 @@ test("concurrent renderings scenario 5", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentA:render",
"ComponentA:rendered",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentB:patched",
@@ -1235,17 +1323,22 @@ test("concurrent renderings scenario 6", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentA:render",
"ComponentA:rendered",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentB:patched",
@@ -1294,15 +1387,19 @@ test("concurrent renderings scenario 7", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentB:patched",
@@ -1354,15 +1451,19 @@ test("concurrent renderings scenario 8", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentB:patched",
@@ -1446,30 +1547,40 @@ test("concurrent renderings scenario 9", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentB:render",
"ComponentC:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentD:setup",
"ComponentD:willStart",
"ComponentD:render",
"ComponentC:rendered",
"ComponentD:willRender",
"ComponentD:rendered",
"ComponentD:mounted",
"ComponentC:mounted",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentC:willUpdateProps",
"ComponentC:render",
"ComponentA:rendered",
"ComponentC:willRender",
"ComponentD:willUpdateProps",
"ComponentD:render",
"ComponentC:render",
"ComponentC:rendered",
"ComponentD:willRender",
"ComponentD:rendered",
"ComponentC:willRender",
"ComponentD:willUpdateProps",
"ComponentD:render",
"ComponentB:render",
"ComponentC:rendered",
"ComponentD:willRender",
"ComponentD:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentC:willPatch",
@@ -1554,22 +1665,28 @@ test("concurrent renderings scenario 10", async () => {
expect(steps).toEqual([
"ComponentA:setup",
"ComponentA:willStart",
"ComponentA:render",
"ComponentA:willRender",
"ComponentB:setup",
"ComponentB:willStart",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentB:rendered",
"ComponentB:mounted",
"ComponentA:mounted",
"ComponentB:render",
"ComponentB:willRender",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentA:render",
"ComponentB:rendered",
"ComponentA:willRender",
"ComponentB:willUpdateProps",
"ComponentB:render",
"ComponentA:rendered",
"ComponentB:willRender",
"ComponentC:destroyed",
"ComponentC:setup",
"ComponentC:willStart",
"ComponentC:render",
"ComponentB:rendered",
"ComponentC:willRender",
"ComponentC:rendered",
"ComponentA:willPatch",
"ComponentB:willPatch",
"ComponentC:mounted",
@@ -1624,15 +1741,19 @@ test("concurrent renderings scenario 11", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"Child:setup",
"Child:willStart",
"Child:render",
"Parent:rendered",
"Child:willRender",
"Child:rendered",
"Child:mounted",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"Child:willUpdateProps",
"Child:render",
"Parent:rendered",
"Child:willRender",
"Child:rendered",
"Parent:willPatch",
"Child:willPatch",
"Child:patched",
@@ -1697,17 +1818,22 @@ test("concurrent renderings scenario 12", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"Child:setup",
"Child:willStart",
"Child:render",
"Parent:rendered",
"Child:willRender",
"Child:rendered",
"Child:mounted",
"Parent:mounted",
"Parent:render",
"Parent:willRender",
"Child:willUpdateProps",
"Parent:render",
"Parent:rendered",
"Parent:willRender",
"Child:willUpdateProps",
"Child:render",
"Parent:rendered",
"Child:willRender",
"Child:rendered",
"Parent:willPatch",
"Child:willPatch",
"Child:patched",
@@ -1761,28 +1887,36 @@ test("concurrent renderings scenario 13", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"Child:setup",
"Child:willStart",
"Child:render",
"Parent:rendered",
"Child:willRender",
"Child:rendered",
"Child:mounted",
"Parent:mounted",
"Child:render",
"Child:willRender",
"Child:rendered",
"Child:willPatch",
"Child:patched",
"Parent:render",
"Parent:willRender",
"Child:willUpdateProps",
"Child:setup",
"Child:willStart",
"Child:render",
"Child:render",
"Parent:rendered",
"Child:willRender",
"Child:rendered",
"Child:willRender",
"Child:rendered",
"Parent:willPatch",
"Child:willPatch",
"Child:mounted",
"Child:patched",
"Parent:patched",
"Child:render",
"Child:render",
"Child:willRender",
"Child:rendered",
"Child:willRender",
"Child:rendered",
"Child:willPatch",
"Child:patched",
"Child:willPatch",
@@ -1856,24 +1990,32 @@ test("concurrent renderings scenario 14", async () => {
expect(steps).toEqual([
"A:setup",
"A:willStart",
"A:render",
"A:willRender",
"B:setup",
"B:willStart",
"B:render",
"A:rendered",
"B:willRender",
"C:setup",
"C:willStart",
"C:render",
"B:rendered",
"C:willRender",
"C:rendered",
"C:mounted",
"B:mounted",
"A:mounted",
"A:render",
"A:willRender",
"B:willUpdateProps",
"B:render",
"A:rendered",
"B:willRender",
"C:willUpdateProps",
"C:render",
"B:render",
"B:rendered",
"C:willRender",
"C:rendered",
"B:willRender",
"C:willUpdateProps",
"C:render",
"B:rendered",
"C:willRender",
"C:rendered",
"A:willPatch",
"B:willPatch",
"C:willPatch",
@@ -1955,24 +2097,32 @@ test("concurrent renderings scenario 15", async () => {
expect(steps).toEqual([
"A:setup",
"A:willStart",
"A:render",
"A:willRender",
"B:setup",
"B:willStart",
"B:render",
"A:rendered",
"B:willRender",
"C:setup",
"C:willStart",
"C:render",
"B:rendered",
"C:willRender",
"C:rendered",
"C:mounted",
"B:mounted",
"A:mounted",
"A:render",
"A:willRender",
"B:willUpdateProps",
"B:render",
"A:rendered",
"B:willRender",
"C:willUpdateProps",
"C:render",
"B:render",
"B:rendered",
"C:willRender",
"C:rendered",
"B:willRender",
"C:willUpdateProps",
"C:render",
"B:rendered",
"C:willRender",
"C:rendered",
"A:willPatch",
"B:willPatch",
"C:willPatch",
@@ -2063,30 +2213,39 @@ test.skip("concurrent renderings scenario 16", async () => {
expect(steps).toEqual([
"A:setup",
"A:willStart",
"A:render",
"A:willRender",
"B:setup",
"B:willStart",
"B:render",
"A:rendered",
"B:willRender",
"C:setup",
"C:willStart",
"C:render",
"B:rendered",
"C:willRender",
"C:rendered",
"C:mounted",
"B:mounted",
"A:mounted",
"A:render",
"A:willRender",
"B:willUpdateProps",
"B:render",
"A:rendered",
"B:willRender",
"B:rendered",
"C:willUpdateProps",
"C:render",
"C:willRender",
"C:rendered",
"D:setup",
"D:willStart",
"B:render",
"B:willRender",
"B:rendered",
"C:willUpdateProps",
"C:render",
"C:willRender",
"C:rendered",
"D:destroyed",
"D:setup",
"D:willStart",
"D:render",
"D:willRender",
"D:rendered",
"A:willPatch",
"B:willPatch",
"C:willPatch",
@@ -2209,9 +2368,11 @@ test("change state and call manually render: no unnecessary rendering", async ()
expect(steps).toEqual([
"Test:setup",
"Test:willStart",
"Test:render",
"Test:willRender",
"Test:rendered",
"Test:mounted",
"Test:render",
"Test:willRender",
"Test:rendered",
"Test:willPatch",
"Test:patched",
]);
@@ -2242,7 +2403,13 @@ test("changing state before first render does not trigger a render", async () =>
await nextTick();
expect(renders).toBe(1);
expect(fixture.innerHTML).toBe("<div>3</div>");
expect(steps).toEqual(["TestW:setup", "TestW:willStart", "TestW:render", "TestW:mounted"]);
expect(steps).toEqual([
"TestW:setup",
"TestW:willStart",
"TestW:willRender",
"TestW:rendered",
"TestW:mounted",
]);
Object.freeze(steps);
});
@@ -2278,17 +2445,25 @@ test("changing state before first render does not trigger a render (with parent)
const parent = await mount(Parent, fixture);
expect(fixture.innerHTML).toBe("<div></div>");
expect(steps).toEqual(["Parent:setup", "Parent:willStart", "Parent:render", "Parent:mounted"]);
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:willRender",
"Parent:rendered",
"Parent:mounted",
]);
steps.splice(0);
parent.state.flag = true;
await nextTick();
expect(fixture.innerHTML).toBe("<div><div>3</div></div>");
expect(renders).toBe(1);
expect(steps).toEqual([
"Parent:render",
"Parent:willRender",
"TestW:setup",
"TestW:willStart",
"TestW:render",
"Parent:rendered",
"TestW:willRender",
"TestW:rendered",
"Parent:willPatch",
"TestW:mounted",
"Parent:patched",
@@ -2342,10 +2517,12 @@ test("two renderings initiated between willPatch and patched", async () => {
expect(steps).toEqual([
"Parent:setup",
"Parent:willStart",
"Parent:render",
"Parent:willRender",
"Panel:setup",
"Panel:willStart",
"Panel:render",
"Parent:rendered",
"Panel:willRender",
"Panel:rendered",
"Panel:mounted",
"Parent:mounted",
]);
@@ -2356,10 +2533,12 @@ test("two renderings initiated between willPatch and patched", async () => {
expect(fixture.innerHTML).toBe("<div><abc>Panel2</abc></div>");
expect(steps).toEqual([
"Parent:render",
"Parent:willRender",
"Panel:setup",
"Panel:willStart",
"Panel:render",
"Parent:rendered",
"Panel:willRender",
"Panel:rendered",
"Parent:willPatch",
"Panel:willUnmount",
"Panel:destroyed",
@@ -2373,7 +2552,8 @@ test("two renderings initiated between willPatch and patched", async () => {
expect(fixture.innerHTML).toBe("<div></div>");
expect(steps).toEqual([
"Parent:render",
"Parent:willRender",
"Parent:rendered",
"Parent:willPatch",
"Panel:willUnmount",
"Panel:destroyed",