import fs from 'node:fs'; import path from 'node:path'; import { describe, expect, it } from 'vitest'; describe('VNC container entrypoint', () => { it('starts x11vnc with supported arguments and verifies its port before noVNC', () => { const script = fs.readFileSync(path.resolve('docker/entrypoint.sh'), 'utf8'); expect(script).not.toContain('-nopw_warn'); expect(script).toContain('kill -0 "${X11VNC_PID}"'); expect(script).toContain('/dev/tcp/127.0.0.1/${VNC_PORT}'); expect(script.indexOf('VNC server is ready')).toBeLessThan( script.indexOf('starting noVNC'), ); }); it('removes only stale Chromium singleton artifacts before launching the bot', () => { const script = fs.readFileSync(path.resolve('docker/entrypoint.sh'), 'utf8'); expect(script).toContain('"${BROWSER_SESSION_DIR}/SingletonLock"'); expect(script).toContain('"${BROWSER_SESSION_DIR}/SingletonSocket"'); expect(script).toContain('"${BROWSER_SESSION_DIR}/SingletonCookie"'); expect(script.indexOf('SingletonLock')).toBeLessThan(script.indexOf('launching bot')); }); it('launches regular Google Chrome before the bot and exposes its local CDP endpoint', () => { const script = fs.readFileSync(path.resolve('docker/entrypoint.sh'), 'utf8'); expect(script).toContain('google-chrome'); expect(script).toContain('--user-data-dir="${BROWSER_SESSION_DIR}"'); expect(script).toContain('--remote-debugging-port="${CHROME_CDP_PORT}"'); expect(script).toContain('export CHROME_CDP_URL='); expect(script).not.toContain('--enable-automation'); expect(script.indexOf('starting Google Chrome')).toBeLessThan( script.indexOf('launching bot'), ); }); it('installs the stable Google Chrome package rather than Chrome for Testing', () => { const dockerfile = fs.readFileSync(path.resolve('Dockerfile'), 'utf8'); expect(dockerfile).toContain('google-chrome-stable_current_amd64.deb'); expect(dockerfile).toContain('google-chrome-stable'); expect(dockerfile).not.toContain('chrome-for-testing'); }); });