Some checks failed
Verify / Install node dependencies (push) Failing after 2s
Verify / Build packages (push) Has been skipped
Verify / Check linting & formatting (push) Has been skipped
Verify / Run unit tests (push) Has been skipped
Verify / Run e2e tests (shard 1/4) (push) Has been skipped
Verify / Run e2e tests (shard 2/4) (push) Has been skipped
Verify / Run e2e tests (shard 3/4) (push) Has been skipped
Verify / Run e2e tests (shard 4/4) (push) Has been skipped
Publish / Resolve publish config (push) Failing after 2s
Publish / Send notification to Slack (push) Has been skipped
Publish / Send failure notification to Slack (push) Failing after 8s
Verify / Merge e2e reports (push) Has been skipped
Publish / Build (push) Has been skipped
Publish / Bump Versions OR Release to Registry (push) Has been skipped
27 lines
912 B
TypeScript
27 lines
912 B
TypeScript
/**
|
|
* @vitest-environment node
|
|
*/
|
|
import { readFileSync } from 'node:fs'
|
|
import { fileURLToPath } from 'node:url'
|
|
|
|
import { describe, expect, it } from 'vite-plus/test'
|
|
|
|
// The package boundary must stay a client module so it can be imported from
|
|
// React Server Components without evaluating the class components inside.
|
|
const entries = ['../../src/index.ts', '../../src/menus/index.ts']
|
|
|
|
describe('use client boundary', () => {
|
|
it.each(entries)('%s starts with the "use client" directive', entry => {
|
|
const path = fileURLToPath(new URL(entry, import.meta.url))
|
|
|
|
// The directive must be the very first statement (only a BOM may precede
|
|
// it), otherwise some RSC tooling ignores it. Do not trim leading blanks.
|
|
const firstLine = readFileSync(path, 'utf8')
|
|
.replace(/^\uFEFF/, '')
|
|
.split('\n')[0]
|
|
.trimEnd()
|
|
|
|
expect(firstLine).toMatch(/^(['"])use client\1;?$/)
|
|
})
|
|
})
|