mirror of
https://github.com/browseros-ai/BrowserOS.git
synced 2026-05-18 19:16:22 +00:00
git-subtree-dir: packages/browseros-agent git-subtree-mainline:8f148d0918git-subtree-split:90bd4be300
286 lines
8.3 KiB
TypeScript
286 lines
8.3 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 BrowserOS
|
|
*/
|
|
|
|
import { describe, it } from 'bun:test'
|
|
import assert from 'node:assert'
|
|
|
|
import { transformCodeForExecution } from '../../src/graph/executor'
|
|
|
|
describe('transformCodeForExecution', () => {
|
|
describe('single-line imports', () => {
|
|
it('removes default import', () => {
|
|
const code = `import foo from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes named import', () => {
|
|
const code = `import { foo } from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes multiple named imports', () => {
|
|
const code = `import { foo, bar, baz } from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes namespace import', () => {
|
|
const code = `import * as pkg from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes side-effect import', () => {
|
|
const code = `import 'side-effect'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes default + named import', () => {
|
|
const code = `import foo, { bar } from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes import with alias', () => {
|
|
const code = `import { foo as f } from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('type imports', () => {
|
|
it('removes type import', () => {
|
|
const code = `import type { Foo } from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes type default import', () => {
|
|
const code = `import type Foo from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes inline type specifier', () => {
|
|
const code = `import { type Foo, bar } from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('multi-line imports', () => {
|
|
it('removes multi-line named imports', () => {
|
|
const code = `import {
|
|
foo,
|
|
bar,
|
|
} from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes multi-line type imports', () => {
|
|
const code = `import type {
|
|
Foo,
|
|
Bar,
|
|
} from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes multi-line imports with aliases', () => {
|
|
const code = `import {
|
|
foo as f,
|
|
bar as b,
|
|
} from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes deeply nested multi-line imports', () => {
|
|
const code = `import {
|
|
foo,
|
|
bar,
|
|
baz,
|
|
qux,
|
|
} from '@scoped/package-name'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('quote styles', () => {
|
|
it('handles single quotes', () => {
|
|
const code = `import foo from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('handles double quotes', () => {
|
|
const code = `import foo from "pkg"
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('multiple imports', () => {
|
|
it('removes all imports from different packages', () => {
|
|
const code = `import { z } from 'zod'
|
|
import { Agent } from '@browseros-ai/agent-sdk'
|
|
import type { Config } from './types'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes mixed single and multi-line imports', () => {
|
|
const code = `import foo from 'foo'
|
|
import {
|
|
bar,
|
|
baz,
|
|
} from 'bar'
|
|
import qux from 'qux'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('indentation', () => {
|
|
it('removes indented imports', () => {
|
|
const code = ` import foo from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes tab-indented imports', () => {
|
|
const code = `\timport foo from 'pkg'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('preserves non-import code', () => {
|
|
it('preserves all code after imports', () => {
|
|
const code = `import foo from 'pkg'
|
|
|
|
export async function run(agent) {
|
|
await agent.navigate('https://example.com')
|
|
return 'done'
|
|
}`
|
|
const result = transformCodeForExecution(code)
|
|
assert.ok(result.includes('export async function run(agent)'))
|
|
assert.ok(result.includes("await agent.navigate('https://example.com')"))
|
|
assert.ok(result.includes("return 'done'"))
|
|
assert.ok(!result.includes('import'))
|
|
})
|
|
|
|
it('preserves code with import-like strings', () => {
|
|
const code = `import foo from 'pkg'
|
|
const str = "import { x } from 'y'"
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.ok(result.includes(`const str = "import { x } from 'y'"`))
|
|
assert.ok(result.includes('const x = 1'))
|
|
})
|
|
|
|
it('preserves dynamic imports', () => {
|
|
const code = `import foo from 'pkg'
|
|
const mod = await import('./dynamic')
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.ok(result.includes("const mod = await import('./dynamic')"))
|
|
assert.ok(result.includes('const x = 1'))
|
|
})
|
|
})
|
|
|
|
describe('scoped packages', () => {
|
|
it('removes @scoped/package imports', () => {
|
|
const code = `import { Agent } from '@browseros-ai/agent-sdk'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes deeply scoped package imports', () => {
|
|
const code = `import { foo } from '@org/pkg/sub/path'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('relative imports', () => {
|
|
it('removes relative imports', () => {
|
|
const code = `import foo from './foo'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('removes parent directory imports', () => {
|
|
const code = `import foo from '../foo'
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
|
|
describe('edge cases', () => {
|
|
it('handles empty code', () => {
|
|
const result = transformCodeForExecution('')
|
|
assert.strictEqual(result, '')
|
|
})
|
|
|
|
it('handles code with no imports', () => {
|
|
const code = `const x = 1
|
|
const y = 2`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result, code)
|
|
})
|
|
|
|
it('handles code with only imports', () => {
|
|
const code = `import foo from 'foo'
|
|
import bar from 'bar'`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), '')
|
|
})
|
|
|
|
it('handles imports with trailing semicolons', () => {
|
|
const code = `import foo from 'pkg';
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
|
|
it('handles imports with trailing comments', () => {
|
|
const code = `import foo from 'pkg' // comment
|
|
const x = 1`
|
|
const result = transformCodeForExecution(code)
|
|
assert.strictEqual(result.trim(), 'const x = 1')
|
|
})
|
|
})
|
|
})
|