diff --git a/packages/runtime-dom/__tests__/nodeOps.spec.ts b/packages/runtime-dom/__tests__/nodeOps.spec.ts index ed30e42adee..db56ff25df5 100644 --- a/packages/runtime-dom/__tests__/nodeOps.spec.ts +++ b/packages/runtime-dom/__tests__/nodeOps.spec.ts @@ -18,6 +18,20 @@ describe('runtime-dom: node-ops', () => { expect(option2.selected).toBe(true) }) + test('create custom elements', () => { + const spyCreateElement = vi.spyOn(document, 'createElement') + + nodeOps.createElement('custom-element') + expect(spyCreateElement).toHaveBeenLastCalledWith('custom-element') + + nodeOps.createElement('custom-element', undefined, 'li') + expect(spyCreateElement).toHaveBeenLastCalledWith('custom-element', { + is: 'li', + }) + + spyCreateElement.mockClear() + }) + describe('insertStaticContent', () => { test('fresh insertion', () => { const content = `
one
two
three` diff --git a/packages/runtime-dom/src/nodeOps.ts b/packages/runtime-dom/src/nodeOps.ts index a318000aa91..ef3ef0748c1 100644 --- a/packages/runtime-dom/src/nodeOps.ts +++ b/packages/runtime-dom/src/nodeOps.ts @@ -25,7 +25,9 @@ export const nodeOps: Omit, 'patchProp'> = { ? doc.createElementNS(svgNS, tag) : namespace === 'mathml' ? doc.createElementNS(mathmlNS, tag) - : doc.createElement(tag, is ? { is } : undefined) + : is + ? doc.createElement(tag, { is }) + : doc.createElement(tag) if (tag === 'select' && props && props.multiple != null) { ;(el as HTMLSelectElement).setAttribute('multiple', props.multiple)