@validate.qa/runner 1.0.103 → 1.0.104
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 +7 -2
- package/dist/{chunk-YI3ZC2XI.mjs → chunk-6N4QCCEH.mjs} +2 -2
- package/dist/{chunk-CMM4DOXC.mjs → chunk-EBWZ7NGU.mjs} +11 -8
- package/dist/{chunk-OTKJZIOD.mjs → chunk-EKY6CN4Y.mjs} +659 -122
- package/dist/{chunk-CG75I3ZZ.mjs → chunk-MEE4DXRX.mjs} +13437 -1386
- package/dist/{chunk-WVLBQDFP.mjs → chunk-OXDU6ARE.mjs} +8 -2
- package/dist/{chunk-AAUHXGDS.mjs → chunk-PUMRAFJS.mjs} +37 -13
- package/dist/{chunk-BECCGMU4.mjs → chunk-TGVKABFN.mjs} +45 -3
- package/dist/{chunk-YIM746WO.mjs → chunk-TS4OUJVT.mjs} +1 -1
- package/dist/{chunk-NNJYKR3O.mjs → chunk-UR7KDOTP.mjs} +29 -6
- package/dist/{chunk-36AWDKPL.mjs → chunk-UZ67UBXH.mjs} +14 -3
- package/dist/{chunk-7SH3COMQ.mjs → chunk-VWE3SQ2Z.mjs} +1 -1
- package/dist/{chunk-TK5KEGNW.mjs → chunk-XXZZMG6Q.mjs} +15 -3
- package/dist/cli.js +20962 -7343
- package/dist/cli.mjs +1159 -245
- package/dist/credential-mcp-server.js +671 -127
- package/dist/credential-mcp-server.mjs +3 -3
- package/dist/discovery-mcp-server.js +710 -129
- package/dist/discovery-mcp-server.mjs +4 -4
- package/dist/dist-BXHLIG5H.mjs +17 -0
- package/dist/inbox-mcp-server.js +664 -123
- package/dist/inbox-mcp-server.mjs +3 -3
- package/dist/route-seed-worker.js +671 -124
- package/dist/route-seed-worker.mjs +3 -3
- package/dist/run-write-guard-preload.js +713 -125
- package/dist/run-write-guard-preload.mjs +4 -4
- package/dist/run-write-guard.js +713 -125
- package/dist/run-write-guard.mjs +3 -3
- package/dist/tar-extract-child.js +38 -14
- package/dist/tar-extract-child.mjs +2 -2
- package/package.json +3 -2
- package/dist/dist-2G7YTNH5.mjs +0 -17
package/README.md
CHANGED
|
@@ -30,9 +30,12 @@ npm install -g @validate.qa/runner
|
|
|
30
30
|
Generate a runner token from your validate.qa **Project Settings → Local Runner**. Your credentials will be saved securely to `~/.validate.qa/credentials.json`.
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
npx @validate.qa/runner login --
|
|
33
|
+
npx @validate.qa/runner login --server https://your-server.com
|
|
34
|
+
# Paste the runner token (urt_...) at the prompt; it is not shown, and it stays out of shell history and `ps`.
|
|
34
35
|
```
|
|
35
36
|
|
|
37
|
+
In a script, pipe it on stdin instead (`... login --server <url> < token.txt`). `--token urt_...` still works, but on the command line the token lands in your shell history.
|
|
38
|
+
|
|
36
39
|
### 3. Start the Runner
|
|
37
40
|
|
|
38
41
|
Starts the runner daemon, polling for pending test runs from the cloud and executing them locally:
|
|
@@ -92,8 +95,8 @@ The cloud runner image (`Dockerfile.runner`) sets `RUNNER_TEST_SANDBOX=required`
|
|
|
92
95
|
#### `login`
|
|
93
96
|
```bash
|
|
94
97
|
npx @validate.qa/runner login \
|
|
95
|
-
--token <token> \ # Runner token (urt_...) from dashboard
|
|
96
98
|
--server <url> \ # validate.qa server URL
|
|
99
|
+
--token <token> \ # Optional: runner token (urt_...); left out, it is read at a hidden prompt or from stdin
|
|
97
100
|
--project <id> # Optional: Project ID (embedded in urt_ tokens)
|
|
98
101
|
```
|
|
99
102
|
|
|
@@ -115,6 +118,8 @@ npx @validate.qa/runner status
|
|
|
115
118
|
# Shows: Server URL, Project ID, Token (masked), Connection status
|
|
116
119
|
```
|
|
117
120
|
|
|
121
|
+
It exits 0 only when the server answers the health check with your token. It exits 1 when no credentials are saved, the server can't be reached, or the server refuses the token (401/403) or the request, so a script can run it before `start`.
|
|
122
|
+
|
|
118
123
|
#### `doctor`
|
|
119
124
|
```bash
|
|
120
125
|
npx @validate.qa/runner doctor
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
require_google_signin,
|
|
3
3
|
require_harness_init_script,
|
|
4
4
|
require_test_inbox_broker
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OXDU6ARE.mjs";
|
|
6
6
|
import {
|
|
7
7
|
dist_exports,
|
|
8
8
|
init_dist
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-EKY6CN4Y.mjs";
|
|
10
10
|
import {
|
|
11
11
|
__commonJS,
|
|
12
12
|
__require,
|
|
@@ -179,7 +179,6 @@ var require_browser_config = __commonJS({
|
|
|
179
179
|
exports.NO_ERROR_PAGE_RELOAD_ARG,
|
|
180
180
|
"--disable-dev-shm-usage",
|
|
181
181
|
"--disable-gpu",
|
|
182
|
-
"--disable-software-rasterizer",
|
|
183
182
|
"--no-zygote",
|
|
184
183
|
"--disable-accelerated-2d-canvas",
|
|
185
184
|
"--js-flags=--max-old-space-size=512"
|
|
@@ -4020,6 +4019,7 @@ var require_cli_browser_socket = __commonJS({
|
|
|
4020
4019
|
exports.assertSlotLease = assertSlotLease;
|
|
4021
4020
|
exports.prepareSessionSocket = prepareSessionSocket;
|
|
4022
4021
|
exports.assertLaunchOpensNoPort = assertLaunchOpensNoPort;
|
|
4022
|
+
exports.devtoolsSwitchInCmdline = devtoolsSwitchInCmdline;
|
|
4023
4023
|
exports.assertBrowserProcessOpensNoPort = assertBrowserProcessOpensNoPort;
|
|
4024
4024
|
exports.confineOutputDirPaths = confineOutputDirPaths;
|
|
4025
4025
|
exports.openCliBrowserSocket = openCliBrowserSocket;
|
|
@@ -4332,6 +4332,9 @@ var require_cli_browser_socket = __commonJS({
|
|
|
4332
4332
|
}
|
|
4333
4333
|
return children;
|
|
4334
4334
|
}
|
|
4335
|
+
function devtoolsSwitchInCmdline(cmdline) {
|
|
4336
|
+
return cmdline.split(/[\0\s]+/).find((arg) => DEVTOOLS_ENDPOINT_SWITCH.test(arg));
|
|
4337
|
+
}
|
|
4335
4338
|
async function assertBrowserProcessOpensNoPort(rootPid) {
|
|
4336
4339
|
if (process.platform !== "linux")
|
|
4337
4340
|
return;
|
|
@@ -4344,15 +4347,15 @@ var require_cli_browser_socket = __commonJS({
|
|
|
4344
4347
|
if (pids.length === 0)
|
|
4345
4348
|
throw new CliBrowserSocketUnsafeError("could not find the browser process to check");
|
|
4346
4349
|
for (const pid of pids) {
|
|
4347
|
-
let
|
|
4350
|
+
let cmdline;
|
|
4348
4351
|
try {
|
|
4349
|
-
|
|
4352
|
+
cmdline = await (0, promises_1.readFile)(`/proc/${pid}/cmdline`, "utf8");
|
|
4350
4353
|
} catch (error) {
|
|
4351
4354
|
if (!rootPid && error.code === "ENOENT")
|
|
4352
4355
|
continue;
|
|
4353
4356
|
throw new CliBrowserSocketUnsafeError(`could not read the command line of the browser (pid ${pid})`);
|
|
4354
4357
|
}
|
|
4355
|
-
const flag =
|
|
4358
|
+
const flag = devtoolsSwitchInCmdline(cmdline);
|
|
4356
4359
|
if (flag)
|
|
4357
4360
|
throw new CliBrowserSocketUnsafeError(`the browser (pid ${pid}) was started with ${flag}`);
|
|
4358
4361
|
}
|
|
@@ -5733,6 +5736,8 @@ var require_credential_mcp_server = __commonJS({
|
|
|
5733
5736
|
|
|
5734
5737
|
export {
|
|
5735
5738
|
require_browser_config,
|
|
5739
|
+
require_proc_table,
|
|
5740
|
+
require_kill_tree,
|
|
5736
5741
|
require_cloud_runner,
|
|
5737
5742
|
require_runs_dir,
|
|
5738
5743
|
require_repo_read_sandbox,
|
|
@@ -5745,8 +5750,6 @@ export {
|
|
|
5745
5750
|
require_mcp_redaction_secrets,
|
|
5746
5751
|
require_playwright_mcp_server,
|
|
5747
5752
|
require_mcp_rooted_client,
|
|
5748
|
-
require_proc_table,
|
|
5749
|
-
require_kill_tree,
|
|
5750
5753
|
require_playwright_mcp_config,
|
|
5751
5754
|
require_cli_browser_socket,
|
|
5752
5755
|
require_credential_reference,
|