P3: validate browser helper args before launching Chromium
This commit is contained in:
parent
c2de102bd6
commit
829739e5b4
|
|
@ -284,6 +284,18 @@ async function handle(req) {
|
||||||
}
|
}
|
||||||
|
|
||||||
case "click": {
|
case "click": {
|
||||||
|
if (
|
||||||
|
!req.selector &&
|
||||||
|
!req.role &&
|
||||||
|
!req.text &&
|
||||||
|
!req.label &&
|
||||||
|
!req.placeholder
|
||||||
|
) {
|
||||||
|
return fail(
|
||||||
|
id,
|
||||||
|
"click requires selector, role(+name), text, label, or placeholder"
|
||||||
|
);
|
||||||
|
}
|
||||||
const p = await ensurePage();
|
const p = await ensurePage();
|
||||||
const loc = await resolveLocator(p, req);
|
const loc = await resolveLocator(p, req);
|
||||||
await loc.click({ timeout: req.timeout_ms ?? 10000 });
|
await loc.click({ timeout: req.timeout_ms ?? 10000 });
|
||||||
|
|
@ -292,9 +304,9 @@ async function handle(req) {
|
||||||
}
|
}
|
||||||
|
|
||||||
case "type": {
|
case "type": {
|
||||||
const p = await ensurePage();
|
|
||||||
const text = req.text ?? req.value;
|
const text = req.text ?? req.value;
|
||||||
if (text == null) return fail(id, "type: missing text");
|
if (text == null) return fail(id, "type: missing text");
|
||||||
|
const p = await ensurePage();
|
||||||
const loc = await resolveLocator(p, req);
|
const loc = await resolveLocator(p, req);
|
||||||
if (req.clear !== false) {
|
if (req.clear !== false) {
|
||||||
await loc.fill(String(text), { timeout: req.timeout_ms ?? 10000 });
|
await loc.fill(String(text), { timeout: req.timeout_ms ?? 10000 });
|
||||||
|
|
@ -377,6 +389,7 @@ async function runSelfTest() {
|
||||||
r = await handle({ id: "t4", op: "nope" });
|
r = await handle({ id: "t4", op: "nope" });
|
||||||
cases.push(["unknown_op", r.ok === false]);
|
cases.push(["unknown_op", r.ok === false]);
|
||||||
|
|
||||||
|
await handle({ id: "t4b", op: "close" });
|
||||||
r = await handle({ id: "t5", op: "status" });
|
r = await handle({ id: "t5", op: "status" });
|
||||||
cases.push(["status", r.ok === true && r.browser_open === false]);
|
cases.push(["status", r.ok === true && r.browser_open === false]);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue