environment-react-ssr.spec.ts — vite Source File
Architecture documentation for environment-react-ssr.spec.ts, a typescript file in the vite codebase. 5 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 5036eafa_bc41_7e2e_8fee_b225ef724685["environment-react-ssr.spec.ts"] e6032fbc_44cf_58d6_868d_dd15106c18c5["node:fs"] 5036eafa_bc41_7e2e_8fee_b225ef724685 --> e6032fbc_44cf_58d6_868d_dd15106c18c5 51e96894_3556_ed5c_1ede_97d449867adf["node:path"] 5036eafa_bc41_7e2e_8fee_b225ef724685 --> 51e96894_3556_ed5c_1ede_97d449867adf 10809968_066c_58db_f8b4_cb0464da805e["node:util"] 5036eafa_bc41_7e2e_8fee_b225ef724685 --> 10809968_066c_58db_f8b4_cb0464da805e a340ba46_b2b7_3048_3bb3_6907a74c8464["vitest"] 5036eafa_bc41_7e2e_8fee_b225ef724685 --> a340ba46_b2b7_3048_3bb3_6907a74c8464 d3fd5575_295b_d6be_24dd_62d277645dc9["~utils"] 5036eafa_bc41_7e2e_8fee_b225ef724685 --> d3fd5575_295b_d6be_24dd_62d277645dc9 style 5036eafa_bc41_7e2e_8fee_b225ef724685 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import fs from 'node:fs'
import path from 'node:path'
import { stripVTControlCharacters } from 'node:util'
import { describe, expect, onTestFinished, test } from 'vitest'
import {
isBuild,
page,
readDepOptimizationMetadata,
readFile,
serverLogs,
testDir,
} from '~utils'
test('basic', async () => {
await page.getByText('hydrated: true').isVisible()
await page.getByText('Count: 0').isVisible()
await page.getByRole('button', { name: '+' }).click()
await page.getByText('Count: 1').isVisible()
})
describe.runIf(!isBuild)('pre-bundling', () => {
test('client', async () => {
const metaJson = readDepOptimizationMetadata()
expect(metaJson.optimized['react']).toBeTruthy()
expect(metaJson.optimized['react-dom/client']).toBeTruthy()
expect(metaJson.optimized['react/jsx-dev-runtime']).toBeTruthy()
expect(metaJson.optimized['react-dom/server']).toBeFalsy()
})
test('ssr', async () => {
const metaJson = readDepOptimizationMetadata('ssr')
expect(metaJson.optimized['react']).toBeTruthy()
expect(metaJson.optimized['react-dom/server']).toBeTruthy()
expect(metaJson.optimized['react/jsx-dev-runtime']).toBeTruthy()
expect(metaJson.optimized['react-dom/client']).toBeFalsy()
// process.env.NODE_ENV should be kept as keepProcessEnv is true
const depsFiles = fs
.readdirSync(path.resolve(testDir, 'node_modules/.vite/deps_ssr'), {
withFileTypes: true,
})
.filter((file) => file.isFile() && file.name.endsWith('.js'))
.map((file) => path.join(file.parentPath, file.name))
const depsFilesWithProcessEnvNodeEnv = depsFiles.filter((file) =>
fs.readFileSync(file, 'utf-8').includes('process.env.NODE_ENV'),
)
expect(depsFilesWithProcessEnvNodeEnv.length).toBeGreaterThan(0)
})
test('deps reload', async () => {
const envs = ['client', 'server'] as const
const clientMeta = readDepOptimizationMetadata('client')
const ssrMeta = readDepOptimizationMetadata('ssr')
expect(clientMeta.optimized['react-fake-client']).toBeFalsy()
expect(clientMeta.optimized['react-fake-server']).toBeFalsy()
expect(ssrMeta.optimized['react-fake-server']).toBeFalsy()
expect(ssrMeta.optimized['react-fake-client']).toBeFalsy()
envs.forEach((env) => {
const filePath = path.resolve(testDir, `src/entry-${env}.tsx`)
const originalContent = readFile(filePath)
fs.writeFileSync(
filePath,
`import 'react-fake-${env}'\n${originalContent}`,
'utf-8',
)
onTestFinished(() => {
fs.writeFileSync(filePath, originalContent, 'utf-8')
})
})
await expect
.poll(() =>
serverLogs
.map(
(log) =>
stripVTControlCharacters(log).match(
/new dependencies optimized: (react-fake-.*)/,
)?.[1],
)
.filter(Boolean),
)
.toStrictEqual(['react-fake-server', 'react-fake-client'])
const clientMetaNew = readDepOptimizationMetadata('client')
const ssrMetaNew = readDepOptimizationMetadata('ssr')
expect(clientMetaNew.optimized['react-fake-client']).toBeTruthy()
expect(clientMetaNew.optimized['react-fake-server']).toBeFalsy()
expect(ssrMetaNew.optimized['react-fake-server']).toBeTruthy()
expect(ssrMetaNew.optimized['react-fake-client']).toBeFalsy()
})
})
Dependencies
- node:fs
- node:path
- node:util
- vitest
- ~utils
Source
Frequently Asked Questions
What does environment-react-ssr.spec.ts do?
environment-react-ssr.spec.ts is a source file in the vite codebase, written in typescript.
What does environment-react-ssr.spec.ts depend on?
environment-react-ssr.spec.ts imports 5 module(s): node:fs, node:path, node:util, vitest, ~utils.
Where is environment-react-ssr.spec.ts in the architecture?
environment-react-ssr.spec.ts is located at playground/environment-react-ssr/__tests__/environment-react-ssr.spec.ts (directory: playground/environment-react-ssr/__tests__).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free