@@ -4,12 +4,12 @@ import {
44 type ElementNode ,
55 ElementTypes ,
66 type InterpolationNode ,
7- Namespaces ,
87 NodeTypes ,
98 type TextNode ,
109 baseParse as parse ,
1110} from '@vue/compiler-core'
1211import { parserOptions } from '../src/parserOptions'
12+ import { Namespaces } from '@vue/shared'
1313
1414describe ( 'DOM parser' , ( ) => {
1515 describe ( 'Text' , ( ) => {
@@ -491,6 +491,17 @@ describe('DOM parser', () => {
491491 expect ( element . ns ) . toBe ( Namespaces . SVG )
492492 } )
493493
494+ test ( 'SVG tags without explicit root' , ( ) => {
495+ const ast = parse ( '<text/><view/><tspan/>' , parserOptions )
496+ const textNode = ast . children [ 0 ] as ElementNode
497+ const viewNode = ast . children [ 1 ] as ElementNode
498+ const tspanNode = ast . children [ 2 ] as ElementNode
499+
500+ expect ( textNode . ns ) . toBe ( Namespaces . SVG )
501+ expect ( viewNode . ns ) . toBe ( Namespaces . SVG )
502+ expect ( tspanNode . ns ) . toBe ( Namespaces . SVG )
503+ } )
504+
494505 test ( 'MATH in HTML namespace' , ( ) => {
495506 const ast = parse ( '<html><math></math></html>' , parserOptions )
496507 const elementHtml = ast . children [ 0 ] as ElementNode
@@ -500,6 +511,17 @@ describe('DOM parser', () => {
500511 expect ( element . ns ) . toBe ( Namespaces . MATH_ML )
501512 } )
502513
514+ test ( 'MATH tags without explicit root' , ( ) => {
515+ const ast = parse ( '<mi/><mn/><mo/>' , parserOptions )
516+ const miNode = ast . children [ 0 ] as ElementNode
517+ const mnNode = ast . children [ 1 ] as ElementNode
518+ const moNode = ast . children [ 2 ] as ElementNode
519+
520+ expect ( miNode . ns ) . toBe ( Namespaces . MATH_ML )
521+ expect ( mnNode . ns ) . toBe ( Namespaces . MATH_ML )
522+ expect ( moNode . ns ) . toBe ( Namespaces . MATH_ML )
523+ } )
524+
503525 test ( 'root ns' , ( ) => {
504526 const ast = parse ( '<foreignObject><test/></foreignObject>' , {
505527 ...parserOptions ,
0 commit comments