import { Component, mount } from "../../src"; import { status } from "../../src/component/status"; import { xml } from "../../src/tags"; import { makeTestFixture, snapshotEverything } from "../helpers"; let fixture: HTMLElement; snapshotEverything(); beforeEach(() => { fixture = makeTestFixture(); }); describe("basics", () => { test("no component catching error lead to full app destruction", async () => { class ErrorComponent extends Component { static template = xml`
hey
`; } class Parent extends Component { static template = xml`
`; static components = { ErrorComponent }; state = { flag: false }; } const parent = await mount(Parent, fixture); expect(fixture.innerHTML).toBe("
heyfalse
"); parent.state.flag = true; let error; try { await parent.render(); } catch (e) { error = e; } expect(fixture.innerHTML).toBe(""); expect(status(parent)).toBe("destroyed"); expect(error).toBeDefined(); const regexp = /Cannot read properties of undefined \(reading 'this'\)|Cannot read property 'this' of undefined/g; expect(error.message).toMatch(regexp); }); });