






















@@ -41,6 +41,26 @@ function expectRecordFields(value: unknown, expected: Record<string, unknown>):
4141}
4242}
434344+type MockWithCalls = {
45+mock: { calls: unknown[][] };
46+};
47+48+function mockFirstArg(
49+mock: MockWithCalls,
50+callIndex: number,
51+label: string,
52+): Record<string, unknown> {
53+const call = mock.mock.calls[callIndex];
54+if (!call) {
55+throw new Error(`expected ${label} call ${callIndex}`);
56+}
57+const value = call[0];
58+if (!value || typeof value !== "object" || Array.isArray(value)) {
59+throw new Error(`expected ${label} call ${callIndex} argument`);
60+}
61+return value as Record<string, unknown>;
62+}
63+4464async function postActAndReadError(base: string, body?: unknown): Promise<ActErrorHttpResponse> {
4565const realFetch = getBrowserTestFetch();
4666const response = await realFetch(`${base}/act`, {
@@ -345,7 +365,7 @@ describe("browser control server", () => {
345365});
346366expect(nav.ok).toBe(true);
347367expect(typeof nav.targetId).toBe("string");
348-const [navigateArgs] = pwMocks.navigateViaPlaywright.mock.calls[0] ?? [];
368+const navigateArgs = mockFirstArg(pwMocks.navigateViaPlaywright, 0, "navigate");
349369expectRecordFields(navigateArgs, {
350370cdpUrl: state.cdpBaseUrl,
351371targetId: "abcd1234",
@@ -362,7 +382,7 @@ describe("browser control server", () => {
362382modifiers: ["Shift"],
363383});
364384expect(click.ok).toBe(true);
365-const [clickArgs] = pwMocks.clickViaPlaywright.mock.calls[0] ?? [];
385+const clickArgs = mockFirstArg(pwMocks.clickViaPlaywright, 0, "click");
366386expectRecordFields(clickArgs, {
367387cdpUrl: state.cdpBaseUrl,
368388targetId: "abcd1234",
@@ -382,7 +402,7 @@ describe("browser control server", () => {
382402});
383403expect(clickSelector.status).toBe(200);
384404expect(((await clickSelector.json()) as { ok?: boolean }).ok).toBe(true);
385-const [clickSelectorArgs] = pwMocks.clickViaPlaywright.mock.calls[1] ?? [];
405+const clickSelectorArgs = mockFirstArg(pwMocks.clickViaPlaywright, 1, "click");
386406expectRecordFields(clickSelectorArgs, {
387407cdpUrl: state.cdpBaseUrl,
388408targetId: "abcd1234",
@@ -403,7 +423,7 @@ describe("browser control server", () => {
403423});
404424expect(clickCoords.ok).toBe(true);
405425expect(clickCoords.url).toBe("https://example.com");
406-const [clickCoordsArgs] = pwMocks.clickCoordsViaPlaywright.mock.calls[0] ?? [];
426+const clickCoordsArgs = mockFirstArg(pwMocks.clickCoordsViaPlaywright, 0, "click coords");
407427expectRecordFields(clickCoordsArgs, {
408428cdpUrl: state.cdpBaseUrl,
409429targetId: "abcd1234",
@@ -423,7 +443,7 @@ describe("browser control server", () => {
423443text: "",
424444});
425445expect(type.ok).toBe(true);
426-const [typeArgs] = pwMocks.typeViaPlaywright.mock.calls[0] ?? [];
446+const typeArgs = mockFirstArg(pwMocks.typeViaPlaywright, 0, "type");
427447expectRecordFields(typeArgs, {
428448cdpUrl: state.cdpBaseUrl,
429449targetId: "abcd1234",
@@ -441,7 +461,7 @@ describe("browser control server", () => {
441461key: "Enter",
442462});
443463expect(press.ok).toBe(true);
444-const [pressArgs] = pwMocks.pressKeyViaPlaywright.mock.calls[0] ?? [];
464+const pressArgs = mockFirstArg(pwMocks.pressKeyViaPlaywright, 0, "press");
445465expectRecordFields(pressArgs, {
446466cdpUrl: state.cdpBaseUrl,
447467targetId: "abcd1234",
@@ -457,7 +477,7 @@ describe("browser control server", () => {
457477ref: "2",
458478});
459479expect(hover.ok).toBe(true);
460-const [hoverArgs] = pwMocks.hoverViaPlaywright.mock.calls[0] ?? [];
480+const hoverArgs = mockFirstArg(pwMocks.hoverViaPlaywright, 0, "hover");
461481expectRecordFields(hoverArgs, {
462482cdpUrl: state.cdpBaseUrl,
463483targetId: "abcd1234",
@@ -470,7 +490,7 @@ describe("browser control server", () => {
470490ref: "2",
471491});
472492expect(scroll.ok).toBe(true);
473-const [scrollArgs] = pwMocks.scrollIntoViewViaPlaywright.mock.calls[0] ?? [];
493+const scrollArgs = mockFirstArg(pwMocks.scrollIntoViewViaPlaywright, 0, "scroll");
474494expectRecordFields(scrollArgs, {
475495cdpUrl: state.cdpBaseUrl,
476496targetId: "abcd1234",
@@ -484,7 +504,7 @@ describe("browser control server", () => {
484504endRef: "4",
485505});
486506expect(drag.ok).toBe(true);
487-const [dragArgs] = pwMocks.dragViaPlaywright.mock.calls[0] ?? [];
507+const dragArgs = mockFirstArg(pwMocks.dragViaPlaywright, 0, "drag");
488508expectRecordFields(dragArgs, {
489509cdpUrl: state.cdpBaseUrl,
490510targetId: "abcd1234",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。