File size: 1,627 Bytes
391c43e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import { describe, it, expect } from 'vitest';
import { stripPreviewScripts } from '../strip-preview-scripts';

const consoleCapture = `<script>
// Console Capture - Auto-injected by OSW Studio
(function() {
  if (window === window.parent) return;
  var levels = ['log', 'warn', 'error'];
})();
</script>
`;

const assetInterceptor = `<script>
// VFS Asset Interceptor
(function() {
  var map = {};
})();
</script>
`;

describe('stripPreviewScripts', () => {
  it('removes the Console Capture script', () => {
    const html = `<html><head>${consoleCapture}<title>X</title></head><body>hi</body></html>`;
    const out = stripPreviewScripts(html);
    expect(out).not.toContain('Console Capture');
    expect(out).toContain('<title>X</title>');
    expect(out).toContain('hi');
  });

  it('removes the VFS Asset Interceptor script', () => {
    const html = `<html><head>${assetInterceptor}</head><body>hi</body></html>`;
    const out = stripPreviewScripts(html);
    expect(out).not.toContain('VFS Asset Interceptor');
    expect(out).toContain('hi');
  });

  it('removes both and leaves user scripts alone', () => {
    const html = `<html><head>${consoleCapture}${assetInterceptor}</head><body><script>console.log('mine')</script></body></html>`;
    const out = stripPreviewScripts(html);
    expect(out).not.toContain('Console Capture');
    expect(out).not.toContain('VFS Asset Interceptor');
    expect(out).toContain("console.log('mine')");
  });

  it('returns non-instrumented HTML unchanged', () => {
    const html = '<html><body>plain</body></html>';
    expect(stripPreviewScripts(html)).toBe(html);
  });
});