wip: refactor tests
ci / test (push) Waiting to run Details
ci / continuous-release (push) Waiting to run Details

This commit is contained in:
daiwei 2025-05-14 11:17:02 +08:00
parent 7070f33300
commit 2be0d08de6
2 changed files with 6 additions and 49 deletions

View File

@ -87,7 +87,7 @@ export function makeRender<C = VaporComponent>(
return define
}
export { runtimeDom, runtimeVapor }
export { runtimeDom, runtimeVapor, VueServerRenderer }
export function compile(
sfc: string,
data: runtimeDom.Ref<any>,

View File

@ -1,51 +1,6 @@
import { createVaporSSRApp, delegateEvents } from '../src'
import { nextTick, ref } from '@vue/runtime-dom'
import { compileScript, parse } from '@vue/compiler-sfc'
import * as runtimeVapor from '../src'
import * as runtimeDom from '@vue/runtime-dom'
import * as VueServerRenderer from '@vue/server-renderer'
const Vue = { ...runtimeDom, ...runtimeVapor }
function compile(
sfc: string,
data: runtimeDom.Ref<any>,
components: Record<string, any> = {},
ssr = false,
) {
if (!sfc.includes(`<script`)) {
sfc =
`<script vapor>const data = _data; const components = _components;</script>` +
sfc
}
const descriptor = parse(sfc).descriptor
const script = compileScript(descriptor, {
id: 'x',
isProd: true,
inlineTemplate: true,
genDefaultAs: '__sfc__',
vapor: true,
templateOptions: {
ssr,
},
})
const code =
script.content
.replace(/\bimport {/g, 'const {')
.replace(/ as _/g, ': _')
.replace(/} from ['"]vue['"]/g, `} = Vue`)
.replace(/} from "vue\/server-renderer"/g, '} = VueServerRenderer') +
'\nreturn __sfc__'
return new Function('Vue', 'VueServerRenderer', '_data', '_components', code)(
Vue,
VueServerRenderer,
data,
components,
)
}
import { VueServerRenderer, compile, runtimeDom } from './_utils'
async function testHydration(
code: string,
@ -56,10 +11,12 @@ async function testHydration(
const clientComponents: any = {}
for (const key in components) {
clientComponents[key] = compile(components[key], data, clientComponents)
ssrComponents[key] = compile(components[key], data, ssrComponents, true)
ssrComponents[key] = compile(components[key], data, ssrComponents, {
ssr: true,
})
}
const serverComp = compile(code, data, ssrComponents, true)
const serverComp = compile(code, data, ssrComponents, { ssr: true })
const html = await VueServerRenderer.renderToString(
runtimeDom.createSSRApp(serverComp),
)