--- /dev/null
+/**
+ * @jest-environment node
+ */
+import { createRouter, createMemoryHistory } from '../src'
+import { createSSRApp, resolveComponent, Component } from 'vue'
+import {
+ renderToString,
+ ssrInterpolate,
+ ssrRenderComponent,
+} from '@vue/server-renderer'
+
+describe('SSR', () => {
+ it('works', async () => {
+ const Home = {
+ ssrRender(ctx: any, push: any) {
+ push('Home')
+ },
+ }
+ const Page = {
+ ssrRender(ctx: any, push: any) {
+ push(`${ssrInterpolate(ctx.$route.fullPath)}`)
+ },
+ }
+
+ const router = createRouter({
+ history: createMemoryHistory(),
+ routes: [
+ { path: '/', component: Home },
+ {
+ path: '/:id',
+ component: Page,
+ },
+ ],
+ })
+ const App = {
+ ssrRender(ctx: any, push: any, parent: any) {
+ push(
+ ssrRenderComponent(
+ resolveComponent('router-view') as Component,
+ null,
+ null,
+ parent
+ )
+ )
+ },
+ }
+ const app = createSSRApp(App)
+ app.use(router)
+ // const rootEl = document.createElement('div')
+ // document.body.appendChild(rootEl)
+
+ router.push('/hello')
+ await router.isReady()
+
+ const xxx = await renderToString(app)
+ expect(xxx).toMatchInlineSnapshot(`"/hello"`)
+ })
+})
"@types/webpack": "^4.41.12",
"@types/webpack-env": "^1.15.2",
"@vue/compiler-sfc": "3.0.0-beta.12",
+ "@vue/server-renderer": "^3.0.0-beta.12",
"axios": "^0.19.2",
"browserstack-local": "^1.4.5",
"chalk": "^4.0.0",
"@vue/shared" "3.0.0-beta.12"
csstype "^2.6.8"
+"@vue/server-renderer@^3.0.0-beta.12":
+ version "3.0.0-beta.12"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.0.0-beta.12.tgz#a649aa5704cfc6b0140c9e90a3801f15c4b467e9"
+ integrity sha512-ssuF4VNDoCTQ/upeT195bfplgOlg2MMgI46C41v93QrrWs/21O2ksnsdfMWhe+qu+XdhFiZLe/Q7KWLCLgL5wA==
+ dependencies:
+ "@vue/compiler-ssr" "3.0.0-beta.12"
+ "@vue/shared" "3.0.0-beta.12"
+
"@vue/shared@3.0.0-beta.12":
version "3.0.0-beta.12"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.0-beta.12.tgz#cb7a2bb047919d2c944bf822032b0a8aa869ba1d"