browser-debugger-cli 0.2.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +137 -126
- package/dist/__tests__/fixtures/schema-v0.2.1.golden.json +47 -0
- package/dist/__tests__/schema.contract.test.d.ts +19 -0
- package/dist/__tests__/schema.contract.test.d.ts.map +1 -0
- package/dist/__tests__/schema.contract.test.js +236 -0
- package/dist/__tests__/schema.contract.test.js.map +1 -0
- package/dist/__tests__/smoke/error-handling.smoke.test.d.ts +8 -0
- package/dist/__tests__/smoke/error-handling.smoke.test.d.ts.map +1 -0
- package/dist/__tests__/smoke/error-handling.smoke.test.js +106 -0
- package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -0
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.d.ts +8 -0
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.d.ts.map +1 -0
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +109 -0
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -0
- package/dist/__testutils__/commandRunner.d.ts +45 -0
- package/dist/__testutils__/commandRunner.d.ts.map +1 -0
- package/dist/__testutils__/commandRunner.js +108 -0
- package/dist/__testutils__/commandRunner.js.map +1 -0
- package/dist/__testutils__/daemonHelpers.d.ts +81 -0
- package/dist/__testutils__/daemonHelpers.d.ts.map +1 -0
- package/dist/__testutils__/daemonHelpers.js +206 -0
- package/dist/__testutils__/daemonHelpers.js.map +1 -0
- package/dist/__testutils__/index.d.ts +1 -0
- package/dist/__testutils__/index.d.ts.map +1 -1
- package/dist/__testutils__/index.js +1 -0
- package/dist/__testutils__/index.js.map +1 -1
- package/dist/__testutils__/testCleanup.d.ts +45 -0
- package/dist/__testutils__/testCleanup.d.ts.map +1 -0
- package/dist/__testutils__/testCleanup.js +87 -0
- package/dist/__testutils__/testCleanup.js.map +1 -0
- package/dist/__testutils__/testHome.d.ts +26 -0
- package/dist/__testutils__/testHome.d.ts.map +1 -0
- package/dist/__testutils__/testHome.js +57 -0
- package/dist/__testutils__/testHome.js.map +1 -0
- package/dist/__testutils__/testProcess.d.ts.map +1 -1
- package/dist/__testutils__/testProcess.js +11 -3
- package/dist/__testutils__/testProcess.js.map +1 -1
- package/dist/cli/commands/__tests__/start.unit.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/start.unit.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/start.unit.test.js +131 -0
- package/dist/cli/commands/__tests__/start.unit.test.js.map +1 -0
- package/dist/cli/commands/cleanup.d.ts +1 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -1
- package/dist/cli/commands/cleanup.js +80 -61
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/details.d.ts +2 -1
- package/dist/cli/commands/details.d.ts.map +1 -1
- package/dist/cli/commands/details.js +104 -52
- package/dist/cli/commands/details.js.map +1 -1
- package/dist/cli/commands/peek.d.ts +2 -1
- package/dist/cli/commands/peek.d.ts.map +1 -1
- package/dist/cli/commands/peek.js +22 -67
- package/dist/cli/commands/peek.js.map +1 -1
- package/dist/cli/commands/query.d.ts +9 -0
- package/dist/cli/commands/query.d.ts.map +1 -0
- package/dist/cli/commands/query.js +125 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/start.d.ts +74 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +147 -38
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +37 -49
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.d.ts +1 -0
- package/dist/cli/commands/stop.d.ts.map +1 -1
- package/dist/cli/commands/stop.js +106 -120
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/formatters/detailsFormatter.d.ts +1 -1
- package/dist/cli/formatters/previewFormatter.d.ts +7 -7
- package/dist/cli/formatters/previewFormatter.d.ts.map +1 -1
- package/dist/cli/formatters/previewFormatter.js +5 -10
- package/dist/cli/formatters/previewFormatter.js.map +1 -1
- package/dist/cli/formatters/statusFormatter.d.ts +13 -10
- package/dist/cli/formatters/statusFormatter.d.ts.map +1 -1
- package/dist/cli/formatters/statusFormatter.js +26 -53
- package/dist/cli/formatters/statusFormatter.js.map +1 -1
- package/dist/cli/handlers/ChromeBootstrap.d.ts +24 -0
- package/dist/cli/handlers/ChromeBootstrap.d.ts.map +1 -0
- package/dist/cli/handlers/ChromeBootstrap.js +50 -0
- package/dist/cli/handlers/ChromeBootstrap.js.map +1 -0
- package/dist/cli/handlers/OutputBuilder.d.ts +2 -3
- package/dist/cli/handlers/OutputBuilder.d.ts.map +1 -1
- package/dist/cli/handlers/OutputBuilder.js +2 -4
- package/dist/cli/handlers/OutputBuilder.js.map +1 -1
- package/dist/cli/handlers/OutputWriter.d.ts +15 -0
- package/dist/cli/handlers/OutputWriter.d.ts.map +1 -0
- package/dist/cli/handlers/OutputWriter.js +34 -0
- package/dist/cli/handlers/OutputWriter.js.map +1 -0
- package/dist/cli/handlers/PreviewWriter.d.ts +52 -0
- package/dist/cli/handlers/PreviewWriter.d.ts.map +1 -0
- package/dist/cli/handlers/PreviewWriter.js +118 -0
- package/dist/cli/handlers/PreviewWriter.js.map +1 -0
- package/dist/cli/handlers/SessionLock.d.ts +16 -0
- package/dist/cli/handlers/SessionLock.d.ts.map +1 -0
- package/dist/cli/handlers/SessionLock.js +35 -0
- package/dist/cli/handlers/SessionLock.js.map +1 -0
- package/dist/cli/handlers/SessionLoop.d.ts +19 -0
- package/dist/cli/handlers/SessionLoop.d.ts.map +1 -0
- package/dist/cli/handlers/SessionLoop.js +47 -0
- package/dist/cli/handlers/SessionLoop.js.map +1 -0
- package/dist/cli/handlers/ShutdownController.d.ts +41 -0
- package/dist/cli/handlers/ShutdownController.d.ts.map +1 -0
- package/dist/cli/handlers/ShutdownController.js +94 -0
- package/dist/cli/handlers/ShutdownController.js.map +1 -0
- package/dist/cli/handlers/SignalHandler.d.ts +35 -0
- package/dist/cli/handlers/SignalHandler.d.ts.map +1 -0
- package/dist/cli/handlers/SignalHandler.js +81 -0
- package/dist/cli/handlers/SignalHandler.js.map +1 -0
- package/dist/cli/handlers/TargetSetup.d.ts +42 -0
- package/dist/cli/handlers/TargetSetup.d.ts.map +1 -0
- package/dist/cli/handlers/TargetSetup.js +87 -0
- package/dist/cli/handlers/TargetSetup.js.map +1 -0
- package/dist/cli/handlers/sessionController.d.ts +41 -0
- package/dist/cli/handlers/sessionController.d.ts.map +1 -1
- package/dist/cli/handlers/sessionController.js +266 -5
- package/dist/cli/handlers/sessionController.js.map +1 -1
- package/dist/cli/registry.d.ts +2 -2
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/registry.js +12 -37
- package/dist/cli/registry.js.map +1 -1
- package/dist/collectors/console.d.ts +1 -1
- package/dist/collectors/console.js +2 -2
- package/dist/collectors/console.js.map +1 -1
- package/dist/collectors/dom.d.ts +1 -1
- package/dist/collectors/network.d.ts +1 -2
- package/dist/collectors/network.d.ts.map +1 -1
- package/dist/collectors/network.js +3 -3
- package/dist/collectors/network.js.map +1 -1
- package/dist/commands/__tests__/cdp.contract.test.d.ts.map +1 -1
- package/dist/commands/__tests__/cdp.contract.test.js +0 -1
- package/dist/commands/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/commands/__tests__/domEval.contract.test.d.ts +17 -0
- package/dist/commands/__tests__/domEval.contract.test.d.ts.map +1 -0
- package/dist/commands/__tests__/domEval.contract.test.js +231 -0
- package/dist/commands/__tests__/domEval.contract.test.js.map +1 -0
- package/dist/commands/cdp.js +1 -1
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +51 -13
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +8 -8
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.js +2 -2
- package/dist/commands/details.js.map +1 -1
- package/dist/commands/dom.d.ts.map +1 -1
- package/dist/commands/dom.js +114 -128
- package/dist/commands/dom.js.map +1 -1
- package/dist/commands/domEvalHelpers.d.ts +7 -11
- package/dist/commands/domEvalHelpers.d.ts.map +1 -1
- package/dist/commands/domEvalHelpers.js +67 -22
- package/dist/commands/domEvalHelpers.js.map +1 -1
- package/dist/commands/domOptionsBuilder.d.ts +32 -0
- package/dist/commands/domOptionsBuilder.d.ts.map +1 -1
- package/dist/commands/domOptionsBuilder.js +35 -0
- package/dist/commands/domOptionsBuilder.js.map +1 -1
- package/dist/commands/machineReadableHelp.d.ts +98 -0
- package/dist/commands/machineReadableHelp.d.ts.map +1 -0
- package/dist/commands/machineReadableHelp.js +137 -0
- package/dist/commands/machineReadableHelp.js.map +1 -0
- package/dist/commands/network.d.ts.map +1 -1
- package/dist/commands/network.js +2 -4
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +3 -2
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +4 -2
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +18 -3
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/OutputBuilder.js +1 -1
- package/dist/commands/shared/OutputBuilder.js.map +1 -1
- package/dist/commands/shared/commonOptions.d.ts.map +1 -1
- package/dist/commands/shared/commonOptions.js +10 -3
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/shared/daemonSessionController.d.ts +2 -0
- package/dist/commands/shared/daemonSessionController.d.ts.map +1 -1
- package/dist/commands/shared/daemonSessionController.js +13 -16
- package/dist/commands/shared/daemonSessionController.js.map +1 -1
- package/dist/commands/shared/sessionController.d.ts.map +1 -1
- package/dist/commands/shared/sessionController.js +8 -9
- package/dist/commands/shared/sessionController.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +16 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +72 -54
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +16 -28
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts +11 -0
- package/dist/commands/tail.d.ts.map +1 -0
- package/dist/commands/tail.js +114 -0
- package/dist/commands/tail.js.map +1 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +2 -0
- package/dist/commands.js.map +1 -1
- package/dist/connection/__tests__/cdp.contract.test.d.ts.map +1 -1
- package/dist/connection/__tests__/cdp.contract.test.js +0 -1
- package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/connection/cdp.d.ts +46 -2
- package/dist/connection/cdp.d.ts.map +1 -1
- package/dist/connection/cdp.js +71 -5
- package/dist/connection/cdp.js.map +1 -1
- package/dist/connection/diagnostics.d.ts +16 -0
- package/dist/connection/diagnostics.d.ts.map +1 -0
- package/dist/connection/diagnostics.js +37 -0
- package/dist/connection/diagnostics.js.map +1 -0
- package/dist/connection/errors.d.ts +74 -0
- package/dist/connection/errors.d.ts.map +1 -0
- package/dist/connection/errors.js +83 -0
- package/dist/connection/errors.js.map +1 -0
- package/dist/connection/handlers.d.ts +31 -0
- package/dist/connection/handlers.d.ts.map +1 -0
- package/dist/connection/handlers.js +38 -0
- package/dist/connection/handlers.js.map +1 -0
- package/dist/connection/launcher.d.ts +3 -20
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +140 -32
- package/dist/connection/launcher.js.map +1 -1
- package/dist/connection/pageReadiness.d.ts +46 -0
- package/dist/connection/pageReadiness.d.ts.map +1 -0
- package/dist/connection/pageReadiness.js +270 -0
- package/dist/connection/pageReadiness.js.map +1 -0
- package/dist/connection/tabs.d.ts +52 -0
- package/dist/connection/tabs.d.ts.map +1 -0
- package/dist/connection/tabs.js +227 -0
- package/dist/connection/tabs.js.map +1 -0
- package/dist/constants.d.ts +20 -40
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +26 -40
- package/dist/constants.js.map +1 -1
- package/dist/daemon/ipcServer.d.ts +5 -7
- package/dist/daemon/ipcServer.d.ts.map +1 -1
- package/dist/daemon/ipcServer.js +178 -143
- package/dist/daemon/ipcServer.js.map +1 -1
- package/dist/daemon/launcher.js +1 -1
- package/dist/daemon/launcher.js.map +1 -1
- package/dist/daemon/server/SocketServer.d.ts +22 -0
- package/dist/daemon/server/SocketServer.d.ts.map +1 -0
- package/dist/daemon/server/SocketServer.js +67 -0
- package/dist/daemon/server/SocketServer.js.map +1 -0
- package/dist/daemon/server/WorkerManager.d.ts +36 -0
- package/dist/daemon/server/WorkerManager.d.ts.map +1 -0
- package/dist/daemon/server/WorkerManager.js +98 -0
- package/dist/daemon/server/WorkerManager.js.map +1 -0
- package/dist/daemon/startSession.d.ts +2 -0
- package/dist/daemon/startSession.d.ts.map +1 -1
- package/dist/daemon/startSession.js +9 -5
- package/dist/daemon/startSession.js.map +1 -1
- package/dist/daemon/worker/TelemetryStore.d.ts +18 -0
- package/dist/daemon/worker/TelemetryStore.d.ts.map +1 -0
- package/dist/daemon/worker/TelemetryStore.js +49 -0
- package/dist/daemon/worker/TelemetryStore.js.map +1 -0
- package/dist/daemon/worker/collectors.d.ts +8 -0
- package/dist/daemon/worker/collectors.d.ts.map +1 -0
- package/dist/daemon/worker/collectors.js +19 -0
- package/dist/daemon/worker/collectors.js.map +1 -0
- package/dist/daemon/worker/commandRegistry.d.ts +10 -0
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -0
- package/dist/daemon/worker/commandRegistry.js +289 -0
- package/dist/daemon/worker/commandRegistry.js.map +1 -0
- package/dist/daemon/worker/plugins.d.ts +21 -0
- package/dist/daemon/worker/plugins.d.ts.map +1 -0
- package/dist/daemon/worker/plugins.js +71 -0
- package/dist/daemon/worker/plugins.js.map +1 -0
- package/dist/daemon/worker/types.d.ts +13 -0
- package/dist/daemon/worker/types.d.ts.map +1 -0
- package/dist/daemon/worker/types.js +2 -0
- package/dist/daemon/worker/types.js.map +1 -0
- package/dist/daemon/worker.js +232 -484
- package/dist/daemon/worker.js.map +1 -1
- package/dist/help/machineReadableHelp.d.ts +100 -0
- package/dist/help/machineReadableHelp.d.ts.map +1 -0
- package/dist/help/machineReadableHelp.js +139 -0
- package/dist/help/machineReadableHelp.js.map +1 -0
- package/dist/index.js +18 -9
- package/dist/index.js.map +1 -1
- package/dist/ipc/__tests__/client.contract.test.js +2 -2
- package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
- package/dist/ipc/client.d.ts +16 -1
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +40 -11
- package/dist/ipc/client.js.map +1 -1
- package/dist/ipc/commands.d.ts +20 -0
- package/dist/ipc/commands.d.ts.map +1 -1
- package/dist/ipc/commands.js +4 -0
- package/dist/ipc/commands.js.map +1 -1
- package/dist/ipc/types.d.ts +2 -0
- package/dist/ipc/types.d.ts.map +1 -1
- package/dist/session/BdgSession.d.ts +91 -0
- package/dist/session/BdgSession.d.ts.map +1 -0
- package/dist/session/BdgSession.js +230 -0
- package/dist/session/BdgSession.js.map +1 -0
- package/dist/session/cleanup.d.ts.map +1 -1
- package/dist/session/cleanup.js +67 -65
- package/dist/session/cleanup.js.map +1 -1
- package/dist/session/fileOps.d.ts +25 -0
- package/dist/session/fileOps.d.ts.map +1 -0
- package/dist/session/fileOps.js +39 -0
- package/dist/session/fileOps.js.map +1 -0
- package/dist/session/metadata.js +2 -2
- package/dist/session/metadata.js.map +1 -1
- package/dist/session/paths.d.ts +2 -7
- package/dist/session/paths.d.ts.map +1 -1
- package/dist/session/paths.js +8 -8
- package/dist/session/paths.js.map +1 -1
- package/dist/session/queryCache.js +1 -1
- package/dist/session/queryCache.js.map +1 -1
- package/dist/telemetry/__tests__/filters.unit.test.d.ts +2 -0
- package/dist/telemetry/__tests__/filters.unit.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/filters.unit.test.js +239 -0
- package/dist/telemetry/__tests__/filters.unit.test.js.map +1 -0
- package/dist/telemetry/console.d.ts +1 -1
- package/dist/telemetry/console.d.ts.map +1 -1
- package/dist/telemetry/console.js +5 -3
- package/dist/telemetry/console.js.map +1 -1
- package/dist/telemetry/dialogs.d.ts +27 -0
- package/dist/telemetry/dialogs.d.ts.map +1 -0
- package/dist/telemetry/dialogs.js +51 -0
- package/dist/telemetry/dialogs.js.map +1 -0
- package/dist/telemetry/filters.d.ts +148 -0
- package/dist/telemetry/filters.d.ts.map +1 -0
- package/dist/telemetry/filters.js +358 -0
- package/dist/telemetry/filters.js.map +1 -0
- package/dist/telemetry/navigation.d.ts +49 -0
- package/dist/telemetry/navigation.d.ts.map +1 -0
- package/dist/telemetry/navigation.js +69 -0
- package/dist/telemetry/navigation.js.map +1 -0
- package/dist/telemetry/network.d.ts +1 -0
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js +23 -34
- package/dist/telemetry/network.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/errors/CommandError.d.ts +39 -0
- package/dist/ui/errors/CommandError.d.ts.map +1 -0
- package/dist/ui/errors/CommandError.js +48 -0
- package/dist/ui/errors/CommandError.js.map +1 -0
- package/dist/ui/errors/SystemErrors.d.ts +22 -0
- package/dist/ui/errors/SystemErrors.d.ts.map +1 -0
- package/dist/ui/errors/SystemErrors.js +23 -0
- package/dist/ui/errors/SystemErrors.js.map +1 -0
- package/dist/ui/errors/index.d.ts +9 -0
- package/dist/ui/errors/index.d.ts.map +1 -0
- package/dist/ui/errors/index.js +12 -0
- package/dist/ui/errors/index.js.map +1 -0
- package/dist/ui/errors/utils.d.ts +24 -0
- package/dist/ui/errors/utils.d.ts.map +1 -0
- package/dist/ui/errors/utils.js +28 -0
- package/dist/ui/errors/utils.js.map +1 -0
- package/dist/ui/errors.d.ts +39 -0
- package/dist/ui/errors.d.ts.map +1 -0
- package/dist/ui/errors.js +48 -0
- package/dist/ui/errors.js.map +1 -0
- package/dist/ui/formatters/cookies.d.ts.map +1 -1
- package/dist/ui/formatters/cookies.js +18 -21
- package/dist/ui/formatters/cookies.js.map +1 -1
- package/dist/ui/formatters/details.d.ts.map +1 -1
- package/dist/ui/formatters/details.js +34 -36
- package/dist/ui/formatters/details.js.map +1 -1
- package/dist/ui/formatters/dom.d.ts +135 -0
- package/dist/ui/formatters/dom.d.ts.map +1 -0
- package/dist/ui/formatters/dom.js +193 -0
- package/dist/ui/formatters/dom.js.map +1 -0
- package/dist/ui/formatters/index.d.ts +1 -0
- package/dist/ui/formatters/index.d.ts.map +1 -1
- package/dist/ui/formatters/index.js +1 -0
- package/dist/ui/formatters/index.js.map +1 -1
- package/dist/ui/formatters/preview.js +43 -38
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/formatters/status.d.ts.map +1 -1
- package/dist/ui/formatters/status.js +45 -45
- package/dist/ui/formatters/status.js.map +1 -1
- package/dist/ui/formatting.d.ts +104 -1
- package/dist/ui/formatting.d.ts.map +1 -1
- package/dist/ui/formatting.js +138 -2
- package/dist/ui/formatting.js.map +1 -1
- package/dist/ui/logging/index.d.ts +7 -0
- package/dist/ui/logging/index.d.ts.map +1 -0
- package/dist/ui/logging/index.js +7 -0
- package/dist/ui/logging/index.js.map +1 -0
- package/dist/ui/logging/logger.d.ts +98 -0
- package/dist/ui/logging/logger.d.ts.map +1 -0
- package/dist/ui/logging/logger.js +93 -0
- package/dist/ui/logging/logger.js.map +1 -0
- package/dist/ui/messages/chrome.d.ts +120 -1
- package/dist/ui/messages/chrome.d.ts.map +1 -1
- package/dist/ui/messages/chrome.js +168 -0
- package/dist/ui/messages/chrome.js.map +1 -1
- package/dist/ui/messages/debug.d.ts +4 -2
- package/dist/ui/messages/debug.d.ts.map +1 -1
- package/dist/ui/messages/debug.js +31 -29
- package/dist/ui/messages/debug.js.map +1 -1
- package/dist/ui/messages/deprecation.d.ts +30 -0
- package/dist/ui/messages/deprecation.d.ts.map +1 -0
- package/dist/ui/messages/deprecation.js +49 -0
- package/dist/ui/messages/deprecation.js.map +1 -0
- package/dist/ui/messages/errors.d.ts +11 -0
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +13 -0
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/preview.d.ts +24 -0
- package/dist/ui/messages/preview.d.ts.map +1 -1
- package/dist/ui/messages/preview.js +32 -1
- package/dist/ui/messages/preview.js.map +1 -1
- package/dist/ui/messages/session.d.ts.map +1 -1
- package/dist/ui/messages/session.js +21 -7
- package/dist/ui/messages/session.js.map +1 -1
- package/dist/ui/messages/validation.d.ts +14 -0
- package/dist/ui/messages/validation.d.ts.map +1 -1
- package/dist/ui/messages/validation.js +16 -0
- package/dist/ui/messages/validation.js.map +1 -1
- package/dist/utils/__tests__/session.contract.test.js +15 -1
- package/dist/utils/__tests__/session.contract.test.js.map +1 -1
- package/dist/utils/filters.d.ts +40 -0
- package/dist/utils/filters.d.ts.map +1 -1
- package/dist/utils/filters.js +55 -1
- package/dist/utils/filters.js.map +1 -1
- package/dist/utils/pageReadiness.d.ts +9 -14
- package/dist/utils/pageReadiness.d.ts.map +1 -1
- package/dist/utils/pageReadiness.js +40 -41
- package/dist/utils/pageReadiness.js.map +1 -1
- package/dist/utils/session.d.ts +200 -0
- package/dist/utils/session.d.ts.map +1 -0
- package/dist/utils/session.js +498 -0
- package/dist/utils/session.js.map +1 -0
- package/dist/utils/url.d.ts +58 -6
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +137 -20
- package/dist/utils/url.js.map +1 -1
- package/dist/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +20 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +3 -5
- package/dist/cli/commands/__tests__/cdp.contract.test.d.ts +0 -24
- package/dist/cli/commands/__tests__/cdp.contract.test.d.ts.map +0 -1
- package/dist/cli/commands/__tests__/cdp.contract.test.js +0 -467
- package/dist/cli/commands/__tests__/cdp.contract.test.js.map +0 -1
- package/dist/cli/commands/cdp.d.ts +0 -8
- package/dist/cli/commands/cdp.d.ts.map +0 -1
- package/dist/cli/commands/cdp.js +0 -45
- package/dist/cli/commands/cdp.js.map +0 -1
- package/dist/cli/commands/console.d.ts +0 -8
- package/dist/cli/commands/console.d.ts.map +0 -1
- package/dist/cli/commands/console.js +0 -97
- package/dist/cli/commands/console.js.map +0 -1
- package/dist/cli/commands/dom/helpers/domCache.d.ts +0 -36
- package/dist/cli/commands/dom/helpers/domCache.d.ts.map +0 -1
- package/dist/cli/commands/dom/helpers/domCache.js +0 -65
- package/dist/cli/commands/dom/helpers/domCache.js.map +0 -1
- package/dist/cli/commands/dom/helpers/domQuery.d.ts +0 -48
- package/dist/cli/commands/dom/helpers/domQuery.d.ts.map +0 -1
- package/dist/cli/commands/dom/helpers/domQuery.js +0 -104
- package/dist/cli/commands/dom/helpers/domQuery.js.map +0 -1
- package/dist/cli/commands/dom/helpers/errorHandler.d.ts +0 -45
- package/dist/cli/commands/dom/helpers/errorHandler.d.ts.map +0 -1
- package/dist/cli/commands/dom/helpers/errorHandler.js +0 -71
- package/dist/cli/commands/dom/helpers/errorHandler.js.map +0 -1
- package/dist/cli/commands/dom/helpers/evalHelpers.d.ts +0 -52
- package/dist/cli/commands/dom/helpers/evalHelpers.d.ts.map +0 -1
- package/dist/cli/commands/dom/helpers/evalHelpers.js +0 -75
- package/dist/cli/commands/dom/helpers/evalHelpers.js.map +0 -1
- package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts +0 -35
- package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts.map +0 -1
- package/dist/cli/commands/dom/helpers/optionsBuilder.js +0 -51
- package/dist/cli/commands/dom/helpers/optionsBuilder.js.map +0 -1
- package/dist/cli/commands/dom/helpers/selectorParser.d.ts +0 -20
- package/dist/cli/commands/dom/helpers/selectorParser.d.ts.map +0 -1
- package/dist/cli/commands/dom/helpers/selectorParser.js +0 -20
- package/dist/cli/commands/dom/helpers/selectorParser.js.map +0 -1
- package/dist/cli/commands/dom/index.d.ts +0 -8
- package/dist/cli/commands/dom/index.d.ts.map +0 -1
- package/dist/cli/commands/dom/index.js +0 -257
- package/dist/cli/commands/dom/index.js.map +0 -1
- package/dist/cli/commands/dom.d.ts +0 -8
- package/dist/cli/commands/dom.d.ts.map +0 -1
- package/dist/cli/commands/dom.js +0 -257
- package/dist/cli/commands/dom.js.map +0 -1
- package/dist/cli/commands/domErrorHandler.d.ts +0 -45
- package/dist/cli/commands/domErrorHandler.d.ts.map +0 -1
- package/dist/cli/commands/domErrorHandler.js +0 -71
- package/dist/cli/commands/domErrorHandler.js.map +0 -1
- package/dist/cli/commands/domEvalHelpers.d.ts +0 -52
- package/dist/cli/commands/domEvalHelpers.d.ts.map +0 -1
- package/dist/cli/commands/domEvalHelpers.js +0 -76
- package/dist/cli/commands/domEvalHelpers.js.map +0 -1
- package/dist/cli/commands/domOptionsBuilder.d.ts +0 -35
- package/dist/cli/commands/domOptionsBuilder.d.ts.map +0 -1
- package/dist/cli/commands/domOptionsBuilder.js +0 -51
- package/dist/cli/commands/domOptionsBuilder.js.map +0 -1
- package/dist/cli/commands/domSelectorParser.d.ts +0 -20
- package/dist/cli/commands/domSelectorParser.d.ts.map +0 -1
- package/dist/cli/commands/domSelectorParser.js +0 -20
- package/dist/cli/commands/domSelectorParser.js.map +0 -1
- package/dist/cli/commands/network.d.ts +0 -8
- package/dist/cli/commands/network.d.ts.map +0 -1
- package/dist/cli/commands/network.js +0 -43
- package/dist/cli/commands/network.js.map +0 -1
- package/dist/cli/handlers/CommandRunner.d.ts +0 -60
- package/dist/cli/handlers/CommandRunner.d.ts.map +0 -1
- package/dist/cli/handlers/CommandRunner.js +0 -81
- package/dist/cli/handlers/CommandRunner.js.map +0 -1
- package/dist/cli/handlers/commonOptions.d.ts +0 -54
- package/dist/cli/handlers/commonOptions.d.ts.map +0 -1
- package/dist/cli/handlers/commonOptions.js +0 -64
- package/dist/cli/handlers/commonOptions.js.map +0 -1
- package/dist/cli/handlers/daemonSessionController.d.ts +0 -23
- package/dist/cli/handlers/daemonSessionController.d.ts.map +0 -1
- package/dist/cli/handlers/daemonSessionController.js +0 -79
- package/dist/cli/handlers/daemonSessionController.js.map +0 -1
- package/dist/cli/handlers/landingPage.d.ts +0 -8
- package/dist/cli/handlers/landingPage.d.ts.map +0 -1
- package/dist/cli/handlers/landingPage.js +0 -8
- package/dist/cli/handlers/landingPage.js.map +0 -1
- package/dist/collectors/__tests__/network.contract.test.d.ts +0 -28
- package/dist/collectors/__tests__/network.contract.test.d.ts.map +0 -1
- package/dist/collectors/__tests__/network.contract.test.js +0 -540
- package/dist/collectors/__tests__/network.contract.test.js.map +0 -1
- package/dist/commandRegistry.d.ts +0 -11
- package/dist/commandRegistry.d.ts.map +0 -1
- package/dist/commandRegistry.js +0 -45
- package/dist/commandRegistry.js.map +0 -1
- package/dist/commands/domErrorHandler.d.ts +0 -45
- package/dist/commands/domErrorHandler.d.ts.map +0 -1
- package/dist/commands/domErrorHandler.js +0 -71
- package/dist/commands/domErrorHandler.js.map +0 -1
- package/dist/dom/cache.d.ts +0 -36
- package/dist/dom/cache.d.ts.map +0 -1
- package/dist/dom/cache.js +0 -65
- package/dist/dom/cache.js.map +0 -1
- package/dist/dom/index.d.ts +0 -9
- package/dist/dom/index.d.ts.map +0 -1
- package/dist/dom/index.js +0 -9
- package/dist/dom/index.js.map +0 -1
- package/dist/dom/query.d.ts +0 -48
- package/dist/dom/query.d.ts.map +0 -1
- package/dist/dom/query.js +0 -104
- package/dist/dom/query.js.map +0 -1
- package/dist/utils/formatters/network.d.ts +0 -23
- package/dist/utils/formatters/network.d.ts.map +0 -1
- package/dist/utils/formatters/network.js +0 -35
- package/dist/utils/formatters/network.js.map +0 -1
- package/dist/utils/ui.d.ts +0 -36
- package/dist/utils/ui.d.ts.map +0 -1
- package/dist/utils/ui.js +0 -47
- package/dist/utils/ui.js.map +0 -1
- package/dist/utils/url/safeParseUrl.d.ts +0 -63
- package/dist/utils/url/safeParseUrl.d.ts.map +0 -1
- package/dist/utils/url/safeParseUrl.js +0 -84
- package/dist/utils/url/safeParseUrl.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handling.smoke.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/smoke/error-handling.smoke.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error handling smoke tests.
|
|
3
|
+
*
|
|
4
|
+
* Tests error paths and user-facing error messages.
|
|
5
|
+
* WHY: Errors are high-risk areas - tests ensure helpful messages and proper exit codes.
|
|
6
|
+
*/
|
|
7
|
+
import * as assert from 'node:assert/strict';
|
|
8
|
+
import { describe, it, afterEach } from 'node:test';
|
|
9
|
+
import { runCommand } from '../../__testutils__/commandRunner.js';
|
|
10
|
+
import { cleanupAllSessions, isDaemonRunning, killDaemon, waitForDaemon, } from '../../__testutils__/daemonHelpers.js';
|
|
11
|
+
import { EXIT_CODES } from '../../utils/exitCodes.js';
|
|
12
|
+
void describe('Error Handling Smoke Tests', () => {
|
|
13
|
+
afterEach(async () => {
|
|
14
|
+
// Cleanup after each test (no beforeEach needed if this works properly)
|
|
15
|
+
await cleanupAllSessions();
|
|
16
|
+
});
|
|
17
|
+
void it('should fail with helpful message when daemon not running', async () => {
|
|
18
|
+
// Try to peek without daemon running
|
|
19
|
+
// Note: peek auto-starts daemon, so it returns 83 after starting daemon
|
|
20
|
+
const result = await runCommand('peek', [], { timeout: 5000 });
|
|
21
|
+
// Should fail with resource not found (no session)
|
|
22
|
+
assert.equal(result.exitCode, EXIT_CODES.RESOURCE_NOT_FOUND);
|
|
23
|
+
// Should provide helpful error message about no session
|
|
24
|
+
assert.ok(/no.*session|session.*not.*found/i.test(result.stderr));
|
|
25
|
+
});
|
|
26
|
+
void it('should fail with helpful message when trying to stop without session', async () => {
|
|
27
|
+
// Try to stop without session
|
|
28
|
+
const result = await runCommand('stop', [], { timeout: 5000 });
|
|
29
|
+
// Should fail
|
|
30
|
+
assert.notEqual(result.exitCode, 0);
|
|
31
|
+
// Should provide helpful error message
|
|
32
|
+
assert.ok(result.stderr.includes('daemon'));
|
|
33
|
+
});
|
|
34
|
+
void it('should handle invalid URL gracefully', async () => {
|
|
35
|
+
// Note: URL validation is permissive - "not-a-valid-url" becomes "http://not-a-valid-url/"
|
|
36
|
+
// This test verifies error handling, not URL validation
|
|
37
|
+
const result = await runCommand('http://example.com', ['--port', '9229', '--headless'], {
|
|
38
|
+
timeout: 10000,
|
|
39
|
+
});
|
|
40
|
+
// Should succeed (URL is valid, session starts)
|
|
41
|
+
assert.equal(result.exitCode, 0);
|
|
42
|
+
// Should provide session started message
|
|
43
|
+
assert.ok(/session started|target:/i.test(result.stderr));
|
|
44
|
+
});
|
|
45
|
+
void it('should handle daemon crash during session', async () => {
|
|
46
|
+
// Start session with unique port
|
|
47
|
+
await runCommand('http://example.com', ['--port', '9230', '--headless'], { timeout: 10000 });
|
|
48
|
+
await waitForDaemon(5000);
|
|
49
|
+
// Kill daemon forcefully (simulate crash)
|
|
50
|
+
await killDaemon('SIGKILL');
|
|
51
|
+
// Wait for process to fully die
|
|
52
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
53
|
+
// Try to peek (should fail)
|
|
54
|
+
const peekResult = await runCommand('peek', [], { timeout: 5000 });
|
|
55
|
+
// Should fail
|
|
56
|
+
assert.notEqual(peekResult.exitCode, 0);
|
|
57
|
+
// Should provide helpful error message
|
|
58
|
+
assert.ok(peekResult.stderr.includes('daemon'));
|
|
59
|
+
// Daemon should not be running
|
|
60
|
+
assert.equal(isDaemonRunning(), false);
|
|
61
|
+
});
|
|
62
|
+
void it('should provide helpful error when Chrome fails to launch', async () => {
|
|
63
|
+
// Try to start with invalid Chrome path and unique port
|
|
64
|
+
const result = await runCommand('http://example.com', ['--port', '9231', '--headless'], {
|
|
65
|
+
timeout: 10000,
|
|
66
|
+
env: {
|
|
67
|
+
CHROME_PATH: '/nonexistent/chrome',
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
// Should fail (exit code 104 is acceptable for worker errors)
|
|
71
|
+
assert.notEqual(result.exitCode, 0);
|
|
72
|
+
// Should provide helpful error message mentioning Chrome
|
|
73
|
+
assert.ok(/chrome|browser|launch|binary/i.test(result.stderr));
|
|
74
|
+
});
|
|
75
|
+
void it('should cleanup stale sessions automatically', async () => {
|
|
76
|
+
// Start session with unique port
|
|
77
|
+
await runCommand('http://example.com', ['--port', '9232', '--headless'], { timeout: 10000 });
|
|
78
|
+
await waitForDaemon(5000);
|
|
79
|
+
// Kill daemon without cleanup (simulate crash)
|
|
80
|
+
await killDaemon('SIGKILL');
|
|
81
|
+
// Kill Chrome on port 9232 (simulating what happens when daemon crashes)
|
|
82
|
+
try {
|
|
83
|
+
const { execSync } = await import('child_process');
|
|
84
|
+
execSync(`lsof -ti:9232 | xargs kill -9 2>/dev/null || true`, { stdio: 'ignore' });
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Ignore errors if no process on port
|
|
88
|
+
}
|
|
89
|
+
// Wait for processes to fully die and port to be released
|
|
90
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
91
|
+
// Try to start new session (should cleanup stale and succeed)
|
|
92
|
+
const result = await runCommand('http://example.com', ['--port', '9232', '--headless'], {
|
|
93
|
+
timeout: 10000,
|
|
94
|
+
});
|
|
95
|
+
// Should succeed after cleanup
|
|
96
|
+
if (result.exitCode !== 0) {
|
|
97
|
+
console.error('Exit code:', result.exitCode);
|
|
98
|
+
console.error('Stderr:', result.stderr);
|
|
99
|
+
console.error('Stdout:', result.stdout);
|
|
100
|
+
}
|
|
101
|
+
assert.equal(result.exitCode, 0);
|
|
102
|
+
// New daemon should be running
|
|
103
|
+
assert.equal(isDaemonRunning(), true);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=error-handling.smoke.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handling.smoke.test.js","sourceRoot":"","sources":["../../../src/__tests__/smoke/error-handling.smoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session lifecycle smoke tests.
|
|
3
|
+
*
|
|
4
|
+
* Tests the complete user flow: start → collect data → stop → verify output.
|
|
5
|
+
* WHY: Highest-risk path with 0% coverage despite being critical user flow.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=session-lifecycle.smoke.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-lifecycle.smoke.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/smoke/session-lifecycle.smoke.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session lifecycle smoke tests.
|
|
3
|
+
*
|
|
4
|
+
* Tests the complete user flow: start → collect data → stop → verify output.
|
|
5
|
+
* WHY: Highest-risk path with 0% coverage despite being critical user flow.
|
|
6
|
+
*/
|
|
7
|
+
import * as assert from 'node:assert/strict';
|
|
8
|
+
import { describe, it, afterEach } from 'node:test';
|
|
9
|
+
import { runCommand, runCommandJSON } from '../../__testutils__/commandRunner.js';
|
|
10
|
+
import { cleanupAllSessions, isDaemonRunning, isSessionActive, readSessionOutput, waitForDaemon, } from '../../__testutils__/daemonHelpers.js';
|
|
11
|
+
void describe('Session Lifecycle Smoke Tests', () => {
|
|
12
|
+
afterEach(async () => {
|
|
13
|
+
// Cleanup after each test (no beforeEach needed if this works properly)
|
|
14
|
+
await cleanupAllSessions();
|
|
15
|
+
});
|
|
16
|
+
void it('should start session and create daemon', async () => {
|
|
17
|
+
// Start session with a simple URL using a unique port to avoid conflicts
|
|
18
|
+
const result = await runCommand('http://example.com', ['--port', '9223', '--headless'], {
|
|
19
|
+
timeout: 10000,
|
|
20
|
+
});
|
|
21
|
+
// Should succeed
|
|
22
|
+
assert.equal(result.exitCode, 0);
|
|
23
|
+
// Daemon should be running
|
|
24
|
+
assert.equal(isDaemonRunning(), true);
|
|
25
|
+
// Session should be active
|
|
26
|
+
assert.equal(isSessionActive(), true);
|
|
27
|
+
});
|
|
28
|
+
void it('should collect data during session', async () => {
|
|
29
|
+
// Start session with unique port
|
|
30
|
+
const startResult = await runCommand('http://example.com', ['--port', '9224', '--headless'], {
|
|
31
|
+
timeout: 10000,
|
|
32
|
+
});
|
|
33
|
+
assert.equal(startResult.exitCode, 0, `Session start failed: ${startResult.stderr}`);
|
|
34
|
+
// Wait for daemon to be ready
|
|
35
|
+
await waitForDaemon(5000);
|
|
36
|
+
// Give Chrome time to navigate and collect some data
|
|
37
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
38
|
+
// Peek at collected data
|
|
39
|
+
const peekResult = await runCommandJSON('peek', [
|
|
40
|
+
'--json',
|
|
41
|
+
]);
|
|
42
|
+
// Should have collected some data
|
|
43
|
+
assert.ok(peekResult);
|
|
44
|
+
assert.ok(typeof peekResult === 'object');
|
|
45
|
+
assert.ok('preview' in peekResult);
|
|
46
|
+
assert.ok('data' in peekResult.preview);
|
|
47
|
+
// Stop session to clean up
|
|
48
|
+
const stopResult = await runCommand('stop', [], { timeout: 10000 });
|
|
49
|
+
assert.equal(stopResult.exitCode, 0, `Stop failed: ${stopResult.stderr}`);
|
|
50
|
+
});
|
|
51
|
+
void it('should write output on stop', async () => {
|
|
52
|
+
// Start session with unique port
|
|
53
|
+
const startResult = await runCommand('http://example.com', ['--port', '9225', '--headless'], {
|
|
54
|
+
timeout: 10000,
|
|
55
|
+
});
|
|
56
|
+
assert.equal(startResult.exitCode, 0, `Session start failed: ${startResult.stderr}`);
|
|
57
|
+
await waitForDaemon(5000);
|
|
58
|
+
// Give Chrome time to collect data
|
|
59
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
60
|
+
// Stop session
|
|
61
|
+
const stopResult = await runCommand('stop', [], { timeout: 10000 });
|
|
62
|
+
// Should succeed
|
|
63
|
+
assert.equal(stopResult.exitCode, 0, `Stop failed: ${stopResult.stderr}`);
|
|
64
|
+
// Give filesystem time to write the file (increased for test stability)
|
|
65
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
66
|
+
// Output file should exist
|
|
67
|
+
const output = readSessionOutput();
|
|
68
|
+
assert.ok(output, 'Session output file should exist after stop');
|
|
69
|
+
assert.ok(typeof output === 'object');
|
|
70
|
+
// Output should have expected structure
|
|
71
|
+
assert.ok('version' in output);
|
|
72
|
+
assert.ok('success' in output);
|
|
73
|
+
assert.equal(output.success, true);
|
|
74
|
+
assert.ok('timestamp' in output);
|
|
75
|
+
assert.ok('data' in output);
|
|
76
|
+
assert.ok('target' in output);
|
|
77
|
+
});
|
|
78
|
+
void it('should cleanup daemon on stop', async () => {
|
|
79
|
+
// Start session with unique port
|
|
80
|
+
await runCommand('http://example.com', ['--port', '9226', '--headless'], { timeout: 10000 });
|
|
81
|
+
await waitForDaemon(5000);
|
|
82
|
+
// Stop session
|
|
83
|
+
await runCommand('stop', [], { timeout: 10000 });
|
|
84
|
+
// Wait for cleanup
|
|
85
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
86
|
+
// Daemon should no longer be running
|
|
87
|
+
assert.equal(isDaemonRunning(), false);
|
|
88
|
+
// Session should no longer be active
|
|
89
|
+
assert.equal(isSessionActive(), false);
|
|
90
|
+
});
|
|
91
|
+
void it('should handle concurrent session attempts gracefully', async () => {
|
|
92
|
+
// Start first session with unique port
|
|
93
|
+
const firstResult = await runCommand('http://example.com', ['--port', '9227', '--headless'], {
|
|
94
|
+
timeout: 10000,
|
|
95
|
+
});
|
|
96
|
+
assert.equal(firstResult.exitCode, 0, `First session start failed: ${firstResult.stderr}`);
|
|
97
|
+
await waitForDaemon(5000);
|
|
98
|
+
// Try to start second session (should fail)
|
|
99
|
+
const secondResult = await runCommand('http://another.com', ['--port', '9228', '--headless'], {
|
|
100
|
+
timeout: 10000,
|
|
101
|
+
});
|
|
102
|
+
// Should fail with daemon already running error
|
|
103
|
+
assert.notEqual(secondResult.exitCode, 0);
|
|
104
|
+
assert.ok(secondResult.stderr.includes('daemon') || secondResult.stderr.includes('already'), `Expected error about daemon, got: ${secondResult.stderr}`);
|
|
105
|
+
// First session should still be running
|
|
106
|
+
assert.equal(isDaemonRunning(), true);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=session-lifecycle.smoke.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-lifecycle.smoke.test.js","sourceRoot":"","sources":["../../../src/__tests__/smoke/session-lifecycle.smoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command runner for smoke tests.
|
|
3
|
+
*
|
|
4
|
+
* Executes bdg CLI commands in a subprocess and captures output.
|
|
5
|
+
* WHY: Enables end-to-end testing of CLI commands without mocking.
|
|
6
|
+
*/
|
|
7
|
+
export interface CommandResult {
|
|
8
|
+
exitCode: number;
|
|
9
|
+
stdout: string;
|
|
10
|
+
stderr: string;
|
|
11
|
+
error?: Error;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Run a bdg CLI command in a subprocess.
|
|
15
|
+
*
|
|
16
|
+
* @param command - Command name (e.g., 'start', 'stop', 'peek')
|
|
17
|
+
* @param args - Command arguments
|
|
18
|
+
* @param options - Execution options
|
|
19
|
+
* @returns Promise resolving to command result
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const result = await runCommand('start', ['http://localhost:3000']);
|
|
24
|
+
* assert.equal(result.exitCode, 0);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function runCommand(command: string, args?: string[], options?: {
|
|
28
|
+
timeout?: number;
|
|
29
|
+
env?: Record<string, string>;
|
|
30
|
+
}): Promise<CommandResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Run command and parse JSON output from stdout.
|
|
33
|
+
*
|
|
34
|
+
* @param command - Command name
|
|
35
|
+
* @param args - Command arguments
|
|
36
|
+
* @returns Parsed JSON output
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const data = await runCommandJSON('peek');
|
|
41
|
+
* assert.ok(data.data.network.length > 0);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function runCommandJSON<T = unknown>(command: string, args?: string[]): Promise<T>;
|
|
45
|
+
//# sourceMappingURL=commandRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandRunner.d.ts","sourceRoot":"","sources":["../../src/__testutils__/commandRunner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB,GACL,OAAO,CAAC,aAAa,CAAC,CAiExB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,GAClB,OAAO,CAAC,CAAC,CAAC,CAYZ"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command runner for smoke tests.
|
|
3
|
+
*
|
|
4
|
+
* Executes bdg CLI commands in a subprocess and captures output.
|
|
5
|
+
* WHY: Enables end-to-end testing of CLI commands without mocking.
|
|
6
|
+
*/
|
|
7
|
+
import { spawn } from 'child_process';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { ensureTestSessionDir, getTestHomeDir } from './testHome.js';
|
|
11
|
+
/**
|
|
12
|
+
* Run a bdg CLI command in a subprocess.
|
|
13
|
+
*
|
|
14
|
+
* @param command - Command name (e.g., 'start', 'stop', 'peek')
|
|
15
|
+
* @param args - Command arguments
|
|
16
|
+
* @param options - Execution options
|
|
17
|
+
* @returns Promise resolving to command result
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const result = await runCommand('start', ['http://localhost:3000']);
|
|
22
|
+
* assert.equal(result.exitCode, 0);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export async function runCommand(command, args = [], options = {}) {
|
|
26
|
+
const { timeout = 30000, env = {} } = options;
|
|
27
|
+
// Path to compiled CLI entry point (ESM module compatibility)
|
|
28
|
+
const currentFileDir = path.dirname(fileURLToPath(import.meta.url));
|
|
29
|
+
const cliPath = path.resolve(currentFileDir, '../../dist/index.js');
|
|
30
|
+
const testSessionDir = ensureTestSessionDir();
|
|
31
|
+
const testHomeDir = getTestHomeDir();
|
|
32
|
+
return new Promise((resolve) => {
|
|
33
|
+
let stdout = '';
|
|
34
|
+
let stderr = '';
|
|
35
|
+
let timedOut = false;
|
|
36
|
+
const child = spawn('node', [cliPath, command, ...args], {
|
|
37
|
+
env: {
|
|
38
|
+
...process.env,
|
|
39
|
+
BDG_SESSION_DIR: testSessionDir,
|
|
40
|
+
HOME: testHomeDir,
|
|
41
|
+
...env,
|
|
42
|
+
},
|
|
43
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
44
|
+
});
|
|
45
|
+
const timeoutId = setTimeout(() => {
|
|
46
|
+
timedOut = true;
|
|
47
|
+
child.kill('SIGKILL');
|
|
48
|
+
}, timeout);
|
|
49
|
+
child.stdout?.on('data', (chunk) => {
|
|
50
|
+
stdout += chunk.toString();
|
|
51
|
+
});
|
|
52
|
+
child.stderr?.on('data', (chunk) => {
|
|
53
|
+
stderr += chunk.toString();
|
|
54
|
+
});
|
|
55
|
+
child.on('error', (error) => {
|
|
56
|
+
clearTimeout(timeoutId);
|
|
57
|
+
resolve({
|
|
58
|
+
exitCode: 1,
|
|
59
|
+
stdout,
|
|
60
|
+
stderr,
|
|
61
|
+
error,
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
child.on('close', (code) => {
|
|
65
|
+
clearTimeout(timeoutId);
|
|
66
|
+
if (timedOut) {
|
|
67
|
+
resolve({
|
|
68
|
+
exitCode: 124, // Timeout exit code
|
|
69
|
+
stdout,
|
|
70
|
+
stderr: stderr + '\nCommand timed out',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
resolve({
|
|
75
|
+
exitCode: code ?? 1,
|
|
76
|
+
stdout,
|
|
77
|
+
stderr,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Run command and parse JSON output from stdout.
|
|
85
|
+
*
|
|
86
|
+
* @param command - Command name
|
|
87
|
+
* @param args - Command arguments
|
|
88
|
+
* @returns Parsed JSON output
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const data = await runCommandJSON('peek');
|
|
93
|
+
* assert.ok(data.data.network.length > 0);
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export async function runCommandJSON(command, args = []) {
|
|
97
|
+
const result = await runCommand(command, args);
|
|
98
|
+
if (result.exitCode !== 0) {
|
|
99
|
+
throw new Error(`Command failed: ${result.stderr}`);
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
return JSON.parse(result.stdout);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
throw new Error(`Failed to parse JSON: ${result.stdout}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=commandRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandRunner.js","sourceRoot":"","sources":["../../src/__testutils__/commandRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon helper utilities for smoke tests.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to check daemon status and manage session state.
|
|
5
|
+
* WHY: Enables testing daemon lifecycle without exposing internals.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if daemon is currently running.
|
|
9
|
+
*
|
|
10
|
+
* @returns True if daemon process is alive
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* await runCommand('http://localhost:3000', []);
|
|
15
|
+
* assert.ok(await isDaemonRunning());
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function isDaemonRunning(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Check if session is currently active.
|
|
21
|
+
*
|
|
22
|
+
* @returns True if session process is alive
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* await runCommand('http://localhost:3000', []);
|
|
27
|
+
* assert.ok(await isSessionActive());
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function isSessionActive(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Kill daemon process forcefully.
|
|
33
|
+
*
|
|
34
|
+
* @param signal - Kill signal (default: SIGTERM)
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* await killDaemon('SIGKILL'); // Simulate crash
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function killDaemon(signal?: NodeJS.Signals): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Clean up all session files forcefully.
|
|
44
|
+
*
|
|
45
|
+
* WHY: Ensures clean state between tests.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* afterEach(async () => {
|
|
50
|
+
* await cleanupAllSessions();
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function cleanupAllSessions(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Read session output file.
|
|
57
|
+
*
|
|
58
|
+
* @returns Parsed session output or null if not exists
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* await runCommand('stop', []);
|
|
63
|
+
* const output = readSessionOutput();
|
|
64
|
+
* assert.equal(output.success, true);
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function readSessionOutput(): unknown;
|
|
68
|
+
/**
|
|
69
|
+
* Wait for daemon to start (with timeout).
|
|
70
|
+
*
|
|
71
|
+
* @param timeoutMs - Timeout in milliseconds (default: 5000)
|
|
72
|
+
* @returns True if daemon started, false if timeout
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* runCommand('start', ['http://localhost:3000']); // Don't await
|
|
77
|
+
* assert.ok(await waitForDaemon(5000));
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function waitForDaemon(timeoutMs?: number): Promise<boolean>;
|
|
81
|
+
//# sourceMappingURL=daemonHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemonHelpers.d.ts","sourceRoot":"","sources":["../../src/__testutils__/daemonHelpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAmBzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAYzC;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,MAAM,GAAE,MAAM,CAAC,OAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiDxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAW9E"}
|