47 lines
2.0 KiB
TypeScript
47 lines
2.0 KiB
TypeScript
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');
|
|
});
|
|
});
|