import assert from 'node:assert/strict'; import { fileURLToPath } from 'node:url'; import vue from '@vitejs/plugin-vue'; import { createServer } from 'vite'; import { createSSRApp, h } from 'vue'; import { renderToString } from 'vue/server-renderer'; const server = await createServer({ configFile: false, plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('../../resources/js', import.meta.url)), }, }, server: { middlewareMode: true, hmr: false, watch: null }, appType: 'custom', }); try { const { createLocalization } = await server.ssrLoadModule( '/resources/js/lib/localization.ts', ); const { en } = await server.ssrLoadModule('/resources/js/locales/en.ts'); const { default: Button } = await server.ssrLoadModule( '/resources/js/components/ui/button/Button.vue', ); const { buttonVariants } = await server.ssrLoadModule( '/resources/js/components/ui/button/index.ts', ); const { default: Input } = await server.ssrLoadModule( '/resources/js/components/ui/input/Input.vue', ); const { default: Select } = await server.ssrLoadModule( '/resources/js/components/ui/select/Select.vue', ); const { default: SelectTrigger } = await server.ssrLoadModule( '/resources/js/components/ui/select/SelectTrigger.vue', ); const { default: SelectValue } = await server.ssrLoadModule( '/resources/js/components/ui/select/SelectValue.vue', ); const { default: Checkbox } = await server.ssrLoadModule( '/resources/js/components/ui/checkbox/Checkbox.vue', ); const { default: Badge } = await server.ssrLoadModule( '/resources/js/components/ui/badge/Badge.vue', ); const { badgeVariants } = await server.ssrLoadModule( '/resources/js/components/ui/badge/index.ts', ); const { default: Avatar } = await server.ssrLoadModule( '/resources/js/components/ui/avatar/Avatar.vue', ); const { default: AvatarFallback } = await server.ssrLoadModule( '/resources/js/components/ui/avatar/AvatarFallback.vue', ); const { default: UserAvatar } = await server.ssrLoadModule( '/resources/js/components/ui/avatar/UserAvatar.vue', ); const { avatarVariants } = await server.ssrLoadModule( '/resources/js/components/ui/avatar/index.ts', ); const german = createLocalization( { locale: 'de' }, { de: { ...en, 'common.loading': 'Wird geladen…' } }, ); const render = (component, props = {}, slots = {}) => renderToString( createSSRApp({ render: () => h(component, props, slots) }).use( german, ), ); const loadingButton = await render( Button, { loading: true }, { default: () => 'Save' }, ); assert.match(loadingButton, /