From deac24546b04fa6abe451d3604ea8800be9f1ec1 Mon Sep 17 00:00:00 2001 From: Jane Chu <7559015+janechu@users.noreply.github.com> Date: Tue, 7 Apr 2026 14:14:06 -0700 Subject: [PATCH 1/4] test: add errors fixture for f-template error cases Add a test fixture that covers the two error conditions thrown by the f-template element: no template element present and multiple template elements present. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/fast-html/src/components/template.ts | 8 ++- packages/fast-html/src/debug.ts | 1 + packages/fast-html/src/interfaces.ts | 1 + .../test/fixtures/errors/errors.spec.ts | 49 +++++++++++++++++++ .../fast-html/test/fixtures/errors/index.html | 19 +++++++ .../fast-html/test/fixtures/errors/main.ts | 14 ++++++ 6 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 packages/fast-html/test/fixtures/errors/errors.spec.ts create mode 100644 packages/fast-html/test/fixtures/errors/index.html create mode 100644 packages/fast-html/test/fixtures/errors/main.ts diff --git a/packages/fast-html/src/components/template.ts b/packages/fast-html/src/components/template.ts index b7c59e808f2..08baa7d2cd3 100644 --- a/packages/fast-html/src/components/template.ts +++ b/packages/fast-html/src/components/template.ts @@ -239,9 +239,9 @@ class TemplateElement extends FASTElement { ); } - const template = this.getElementsByTagName("template").item(0); + const templates = this.getElementsByTagName("template"); - if (template) { + if (templates.length === 1) { // Callback: Before template has been evaluated and assigned TemplateElement.lifecycleCallbacks.templateWillUpdate?.(name); @@ -281,6 +281,10 @@ class TemplateElement extends FASTElement { values, ); } + } else if (templates.length > 1) { + throw FAST.error(Message.moreThanOneTemplateProvided, { + name: this.name, + }); } else { throw FAST.error(Message.noTemplateProvided, { name: this.name }); } diff --git a/packages/fast-html/src/debug.ts b/packages/fast-html/src/debug.ts index 18348fac9a3..d3e769c2fd4 100644 --- a/packages/fast-html/src/debug.ts +++ b/packages/fast-html/src/debug.ts @@ -1,3 +1,4 @@ export const debugMessages = { [2000 /* noTemplateProvided */]: `The first child of the must be a