Files
insights-js/tooling/eslint-plugin-insights/no-external-replay-imports.test.js
zeekay 26a9531f7b merge: upstream/main (sync, brand preserved)
# Conflicts:
#	.github/workflows/check-insights-major-version.yml
#	.github/workflows/check-posthog-major-version.yml
#	.github/workflows/ci-security.yaml
#	.github/workflows/validate-versioning.yml
#	AGENTS.md
#	AGENTS.md~upstream_main
#	packages/ai/src/otel/capture.ts
#	packages/ai/src/otel/mappers/aiSdk.ts
#	packages/ai/src/otel/mappers/index.ts
#	packages/ai/src/otel/types.ts
#	packages/core/src/__tests__/posthog.init.spec.ts
#	packages/react-native/src/PostHogProvider.tsx
#	packages/react/src/context/PostHogContext.ts
#	packages/react/src/context/PostHogProvider.tsx
#	tooling/eslint-plugin-insights/no-unsafe-web-global.js
2026-06-02 10:52:56 -07:00

99 lines
4.0 KiB
JavaScript

const noExternalReplayImports = require('./no-external-replay-imports')
const { RuleTester } = require('eslint')
const ruleTester = new RuleTester({
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
},
env: {
browser: true,
},
})
ruleTester.run('no-external-replay-imports', noExternalReplayImports, {
valid: [
// Allowed imports from entrypoints
{
code: "import { something } from '@/extensions/replay/external/denylist'",
filename: '/project/src/entrypoints/recorder.ts',
},
// Allowed imports from the same directory
{
code: "import { something } from './external/denylist'",
filename: '/project/src/extensions/replay/external/other.ts',
},
// Allowed imports from the same directory using path alias
{
code: "import { something } from '~/extensions/replay/external/denylist'",
filename: '/project/src/extensions/replay/external/other.ts',
},
// Allowed imports from test files
{
code: "import { something } from '@/extensions/replay/external/denylist'",
filename: '/project/src/__tests__/extensions/replay/external/denylist.test.ts',
},
// Allowed imports from test files using relative path
{
code: "import { something } from '../../../../extensions/replay/external/denylist'",
filename: '/project/src/__tests__/extensions/replay/external/denylist.test.ts',
},
// Allowed imports from playwright specs (also test code)
{
code: "import { csrfHeaderCases } from '../../../src/__tests__/extensions/replay/external/test_data/header-cases'",
filename: '/project/packages/browser/playwright/mocked/session-recording/csrf-headers-preserved.spec.ts',
},
// Non-restricted imports should be allowed from anywhere
{
code: "import { something } from '@/utils'",
filename: '/project/src/some/other/file.ts',
},
],
invalid: [
// Disallowed import from regular source file
{
code: "import { something } from '@/extensions/replay/external/denylist'",
filename: '/project/src/utils/something.ts',
errors: [
{
message:
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
},
],
},
// Disallowed import using relative path
{
code: "import { something } from './external/denylist'",
filename: '/project/src/utils/something.ts',
errors: [
{
message:
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
},
],
},
// Disallowed import using path alias
{
code: "import { something } from '~/extensions/replay/external/denylist'",
filename: '/project/src/utils/something.ts',
errors: [
{
message:
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
},
],
},
// Disallowed dynamic import
{
code: "import('./external/denylist').then(module => {})",
filename: '/project/src/utils/something.ts',
errors: [
{
message:
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
},
],
},
],
})