diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 5795308..cede7a5 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.42.0"
+ ".": "0.42.1"
}
diff --git a/.stats.yml b/.stats.yml
index d4eead9..e1ce185 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 101
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-a935c8aae21f8ddb83ea5e289034df12cbde88d432fa2b287629814bb3f58bb6.yml
-openapi_spec_hash: df3189b9728372f01662a19c060bcbc5
-config_hash: 81f143f4bee47ae7b0b8357551babadf
+configured_endpoints: 103
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-ef24d4bf172555bcbe8e3b432c644a25a1c6afd99c958a2eda8c3b1ea9568113.yml
+openapi_spec_hash: b603c5a983e837928fa7d1100ed64fc9
+config_hash: cff4d43372b6fa66b64e2d4150f6aa76
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c924cc3..3403de7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,25 @@
# Changelog
+## 0.42.1 (2026-03-05)
+
+Full Changelog: [v0.42.0...v0.42.1](https://github.com/kernel/kernel-node-sdk/compare/v0.42.0...v0.42.1)
+
+### Features
+
+* [kernel-1028] add api clipboard support ([1ff017f](https://github.com/kernel/kernel-node-sdk/commit/1ff017f131009649dfc46318e351cb8d8ea07fff))
+* add force flag to viewport resize to bypass live view/recording check ([0a65b3a](https://github.com/kernel/kernel-node-sdk/commit/0a65b3a32d1b3c970580c0673b226c0f4cd63721))
+* expose smooth mouse movement via public API ([070c915](https://github.com/kernel/kernel-node-sdk/commit/070c9156259bfdb5e33f0809adc6f70f7ce1a37e))
+
+
+### Bug Fixes
+
+* use indexed bracket notation for multipart array encoding ([e2a7664](https://github.com/kernel/kernel-node-sdk/commit/e2a766470f90573d351c8507344b8e98c1f13cb6))
+
+
+### Chores
+
+* **internal:** codegen related update ([d55e6f5](https://github.com/kernel/kernel-node-sdk/commit/d55e6f590bf52a54ab1de762eb729fba2ce77c9a))
+
## 0.42.0 (2026-03-02)
Full Changelog: [v0.41.0...v0.42.0](https://github.com/kernel/kernel-node-sdk/compare/v0.41.0...v0.42.0)
diff --git a/api.md b/api.md
index d791b83..efe009c 100644
--- a/api.md
+++ b/api.md
@@ -167,6 +167,7 @@ Methods:
Types:
- ComputerGetMousePositionResponse
+- ComputerReadClipboardResponse
- ComputerSetCursorVisibilityResponse
Methods:
@@ -178,9 +179,11 @@ Methods:
- client.browsers.computer.getMousePosition(id) -> ComputerGetMousePositionResponse
- client.browsers.computer.moveMouse(id, { ...params }) -> void
- client.browsers.computer.pressKey(id, { ...params }) -> void
+- client.browsers.computer.readClipboard(id) -> ComputerReadClipboardResponse
- client.browsers.computer.scroll(id, { ...params }) -> void
- client.browsers.computer.setCursorVisibility(id, { ...params }) -> ComputerSetCursorVisibilityResponse
- client.browsers.computer.typeText(id, { ...params }) -> void
+- client.browsers.computer.writeClipboard(id, { ...params }) -> void
## Playwright
diff --git a/package-lock.json b/package-lock.json
index aaf45e4..6d85c3b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@onkernel/sdk",
- "version": "0.42.0",
+ "version": "0.42.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@onkernel/sdk",
- "version": "0.42.0",
+ "version": "0.42.1",
"license": "Apache-2.0",
"devDependencies": {
"@arethetypeswrong/cli": "^0.17.0",
diff --git a/package.json b/package.json
index 84e5c75..4529916 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@onkernel/sdk",
- "version": "0.42.0",
+ "version": "0.42.1",
"description": "The official TypeScript library for the Kernel API",
"author": "Kernel <>",
"types": "dist/index.d.ts",
diff --git a/src/client.ts b/src/client.ts
index d520668..73d0810 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -886,16 +886,46 @@ export class Kernel {
static toFile = Uploads.toFile;
+ /**
+ * Create and manage app deployments and stream deployment events.
+ */
deployments: API.Deployments = new API.Deployments(this);
+ /**
+ * List applications and versions.
+ */
apps: API.Apps = new API.Apps(this);
+ /**
+ * Invoke actions and stream or query invocation status and events.
+ */
invocations: API.Invocations = new API.Invocations(this);
+ /**
+ * Create and manage browser sessions.
+ */
browsers: API.Browsers = new API.Browsers(this);
+ /**
+ * Create, list, retrieve, and delete browser profiles.
+ */
profiles: API.Profiles = new API.Profiles(this);
auth: API.Auth = new API.Auth(this);
+ /**
+ * Create and manage proxy configurations for routing browser traffic.
+ */
proxies: API.Proxies = new API.Proxies(this);
+ /**
+ * Create, list, retrieve, and delete browser extensions.
+ */
extensions: API.Extensions = new API.Extensions(this);
+ /**
+ * Create and manage browser pools for acquiring and releasing browsers.
+ */
browserPools: API.BrowserPools = new API.BrowserPools(this);
+ /**
+ * Create and manage credentials for authentication.
+ */
credentials: API.Credentials = new API.Credentials(this);
+ /**
+ * Configure external credential providers like 1Password.
+ */
credentialProviders: API.CredentialProviders = new API.CredentialProviders(this);
}
diff --git a/src/resources/apps.ts b/src/resources/apps.ts
index 6dbd7a0..915193d 100644
--- a/src/resources/apps.ts
+++ b/src/resources/apps.ts
@@ -5,6 +5,9 @@ import * as Shared from './shared';
import { OffsetPagination, type OffsetPaginationParams, PagePromise } from '../core/pagination';
import { RequestOptions } from '../internal/request-options';
+/**
+ * List applications and versions.
+ */
export class Apps extends APIResource {
/**
* List applications. Optionally filter by app name and/or version label.
diff --git a/src/resources/auth/connections.ts b/src/resources/auth/connections.ts
index 6a41846..6f4dc1b 100644
--- a/src/resources/auth/connections.ts
+++ b/src/resources/auth/connections.ts
@@ -9,6 +9,9 @@ import { buildHeaders } from '../../internal/headers';
import { RequestOptions } from '../../internal/request-options';
import { path } from '../../internal/utils/path';
+/**
+ * Create and manage auth connections for automated credential capture and login.
+ */
export class Connections extends APIResource {
/**
* Creates an auth connection for a profile and domain combination. Returns 409
diff --git a/src/resources/browser-pools.ts b/src/resources/browser-pools.ts
index 0494b0b..3dd4426 100644
--- a/src/resources/browser-pools.ts
+++ b/src/resources/browser-pools.ts
@@ -8,6 +8,9 @@ import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Create and manage browser pools for acquiring and releasing browsers.
+ */
export class BrowserPools extends APIResource {
/**
* Create a new browser pool with the specified configuration and size.
diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts
index 43503a5..c008731 100644
--- a/src/resources/browsers/browsers.ts
+++ b/src/resources/browsers/browsers.ts
@@ -12,10 +12,12 @@ import {
ComputerGetMousePositionResponse,
ComputerMoveMouseParams,
ComputerPressKeyParams,
+ ComputerReadClipboardResponse,
ComputerScrollParams,
ComputerSetCursorVisibilityParams,
ComputerSetCursorVisibilityResponse,
ComputerTypeTextParams,
+ ComputerWriteClipboardParams,
} from './computer';
import * as LogsAPI from './logs';
import { LogStreamParams, Logs } from './logs';
@@ -74,6 +76,9 @@ import { RequestOptions } from '../../internal/request-options';
import { multipartFormRequestOptions } from '../../internal/uploads';
import { path } from '../../internal/utils/path';
+/**
+ * Create and manage browser sessions.
+ */
export class Browsers extends APIResource {
replays: ReplaysAPI.Replays = new ReplaysAPI.Replays(this._client);
fs: FsAPI.Fs = new FsAPI.Fs(this._client);
@@ -740,7 +745,22 @@ export interface BrowserUpdateParams {
/**
* Viewport configuration to apply to the browser session.
*/
- viewport?: Shared.BrowserViewport;
+ viewport?: BrowserUpdateParams.Viewport;
+}
+
+export namespace BrowserUpdateParams {
+ /**
+ * Viewport configuration to apply to the browser session.
+ */
+ export interface Viewport extends Shared.BrowserViewport {
+ /**
+ * If true, allow the viewport change even when a live view or recording/replay is
+ * active. Active recordings will be gracefully stopped and restarted at the new
+ * resolution as separate segments. If false (default), the resize is refused when
+ * a live view or recording is active.
+ */
+ force?: boolean;
+ }
}
export interface BrowserListParams extends OffsetPaginationParams {
@@ -867,6 +887,7 @@ export declare namespace Browsers {
export {
Computer as Computer,
type ComputerGetMousePositionResponse as ComputerGetMousePositionResponse,
+ type ComputerReadClipboardResponse as ComputerReadClipboardResponse,
type ComputerSetCursorVisibilityResponse as ComputerSetCursorVisibilityResponse,
type ComputerBatchParams as ComputerBatchParams,
type ComputerCaptureScreenshotParams as ComputerCaptureScreenshotParams,
@@ -877,6 +898,7 @@ export declare namespace Browsers {
type ComputerScrollParams as ComputerScrollParams,
type ComputerSetCursorVisibilityParams as ComputerSetCursorVisibilityParams,
type ComputerTypeTextParams as ComputerTypeTextParams,
+ type ComputerWriteClipboardParams as ComputerWriteClipboardParams,
};
export {
diff --git a/src/resources/browsers/computer.ts b/src/resources/browsers/computer.ts
index 6b15782..f5ed4d3 100644
--- a/src/resources/browsers/computer.ts
+++ b/src/resources/browsers/computer.ts
@@ -142,6 +142,19 @@ export class Computer extends APIResource {
});
}
+ /**
+ * Read text from the clipboard on the browser instance
+ *
+ * @example
+ * ```ts
+ * const response =
+ * await client.browsers.computer.readClipboard('id');
+ * ```
+ */
+ readClipboard(id: string, options?: RequestOptions): APIPromise {
+ return this._client.post(path`/browsers/${id}/computer/clipboard/read`, options);
+ }
+
/**
* Scroll the mouse wheel at a position on the host computer
*
@@ -194,6 +207,24 @@ export class Computer extends APIResource {
headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
});
}
+
+ /**
+ * Write text to the clipboard on the browser instance
+ *
+ * @example
+ * ```ts
+ * await client.browsers.computer.writeClipboard('id', {
+ * text: 'text',
+ * });
+ * ```
+ */
+ writeClipboard(id: string, body: ComputerWriteClipboardParams, options?: RequestOptions): APIPromise {
+ return this._client.post(path`/browsers/${id}/computer/clipboard/write`, {
+ body,
+ ...options,
+ headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
+ });
+ }
}
export interface ComputerGetMousePositionResponse {
@@ -208,6 +239,13 @@ export interface ComputerGetMousePositionResponse {
y: number;
}
+export interface ComputerReadClipboardResponse {
+ /**
+ * Current clipboard text content
+ */
+ text: string;
+}
+
/**
* Generic OK response.
*/
@@ -343,10 +381,21 @@ export namespace ComputerBatchParams {
*/
y: number;
+ /**
+ * Target total duration in milliseconds for the mouse movement when smooth=true.
+ * Omit for automatic timing based on distance.
+ */
+ duration_ms?: number;
+
/**
* Modifier keys to hold during the move
*/
hold_keys?: Array;
+
+ /**
+ * Use human-like Bezier curve path instead of instant mouse movement.
+ */
+ smooth?: boolean;
}
export interface PressKey {
@@ -533,10 +582,21 @@ export interface ComputerMoveMouseParams {
*/
y: number;
+ /**
+ * Target total duration in milliseconds for the mouse movement when smooth=true.
+ * Omit for automatic timing based on distance.
+ */
+ duration_ms?: number;
+
/**
* Modifier keys to hold during the move
*/
hold_keys?: Array;
+
+ /**
+ * Use human-like Bezier curve path instead of instant mouse movement.
+ */
+ smooth?: boolean;
}
export interface ComputerPressKeyParams {
@@ -606,9 +666,17 @@ export interface ComputerTypeTextParams {
delay?: number;
}
+export interface ComputerWriteClipboardParams {
+ /**
+ * Text to write to the system clipboard
+ */
+ text: string;
+}
+
export declare namespace Computer {
export {
type ComputerGetMousePositionResponse as ComputerGetMousePositionResponse,
+ type ComputerReadClipboardResponse as ComputerReadClipboardResponse,
type ComputerSetCursorVisibilityResponse as ComputerSetCursorVisibilityResponse,
type ComputerBatchParams as ComputerBatchParams,
type ComputerCaptureScreenshotParams as ComputerCaptureScreenshotParams,
@@ -619,5 +687,6 @@ export declare namespace Computer {
type ComputerScrollParams as ComputerScrollParams,
type ComputerSetCursorVisibilityParams as ComputerSetCursorVisibilityParams,
type ComputerTypeTextParams as ComputerTypeTextParams,
+ type ComputerWriteClipboardParams as ComputerWriteClipboardParams,
};
}
diff --git a/src/resources/browsers/fs/fs.ts b/src/resources/browsers/fs/fs.ts
index b6adb02..4e03aa7 100644
--- a/src/resources/browsers/fs/fs.ts
+++ b/src/resources/browsers/fs/fs.ts
@@ -17,6 +17,9 @@ import { RequestOptions } from '../../../internal/request-options';
import { multipartFormRequestOptions } from '../../../internal/uploads';
import { path } from '../../../internal/utils/path';
+/**
+ * Read, write, and manage files on the browser instance.
+ */
export class Fs extends APIResource {
watch: WatchAPI.Watch = new WatchAPI.Watch(this._client);
diff --git a/src/resources/browsers/fs/watch.ts b/src/resources/browsers/fs/watch.ts
index b0cc18c..41b5b43 100644
--- a/src/resources/browsers/fs/watch.ts
+++ b/src/resources/browsers/fs/watch.ts
@@ -7,6 +7,9 @@ import { buildHeaders } from '../../../internal/headers';
import { RequestOptions } from '../../../internal/request-options';
import { path } from '../../../internal/utils/path';
+/**
+ * Read, write, and manage files on the browser instance.
+ */
export class Watch extends APIResource {
/**
* Stream filesystem events for a watch
diff --git a/src/resources/browsers/index.ts b/src/resources/browsers/index.ts
index 44d503c..4af2fb1 100644
--- a/src/resources/browsers/index.ts
+++ b/src/resources/browsers/index.ts
@@ -22,6 +22,7 @@ export {
export {
Computer,
type ComputerGetMousePositionResponse,
+ type ComputerReadClipboardResponse,
type ComputerSetCursorVisibilityResponse,
type ComputerBatchParams,
type ComputerCaptureScreenshotParams,
@@ -32,6 +33,7 @@ export {
type ComputerScrollParams,
type ComputerSetCursorVisibilityParams,
type ComputerTypeTextParams,
+ type ComputerWriteClipboardParams,
} from './computer';
export {
Fs,
diff --git a/src/resources/browsers/logs.ts b/src/resources/browsers/logs.ts
index 485f9d7..13511b1 100644
--- a/src/resources/browsers/logs.ts
+++ b/src/resources/browsers/logs.ts
@@ -8,6 +8,9 @@ import { buildHeaders } from '../../internal/headers';
import { RequestOptions } from '../../internal/request-options';
import { path } from '../../internal/utils/path';
+/**
+ * Stream logs from the browser instance.
+ */
export class Logs extends APIResource {
/**
* Stream log files on the browser instance via SSE
diff --git a/src/resources/browsers/playwright.ts b/src/resources/browsers/playwright.ts
index bd99c52..022ccc7 100644
--- a/src/resources/browsers/playwright.ts
+++ b/src/resources/browsers/playwright.ts
@@ -5,6 +5,9 @@ import { APIPromise } from '../../core/api-promise';
import { RequestOptions } from '../../internal/request-options';
import { path } from '../../internal/utils/path';
+/**
+ * Execute Playwright code against the browser instance.
+ */
export class Playwright extends APIResource {
/**
* Execute arbitrary Playwright code in a fresh execution context against the
diff --git a/src/resources/browsers/process.ts b/src/resources/browsers/process.ts
index a19f8b9..40e04f0 100644
--- a/src/resources/browsers/process.ts
+++ b/src/resources/browsers/process.ts
@@ -7,6 +7,9 @@ import { buildHeaders } from '../../internal/headers';
import { RequestOptions } from '../../internal/request-options';
import { path } from '../../internal/utils/path';
+/**
+ * Execute and manage processes on the browser instance.
+ */
export class Process extends APIResource {
/**
* Execute a command synchronously
diff --git a/src/resources/browsers/replays.ts b/src/resources/browsers/replays.ts
index 208d8c3..7ac768d 100644
--- a/src/resources/browsers/replays.ts
+++ b/src/resources/browsers/replays.ts
@@ -6,6 +6,9 @@ import { buildHeaders } from '../../internal/headers';
import { RequestOptions } from '../../internal/request-options';
import { path } from '../../internal/utils/path';
+/**
+ * Record and manage browser session video replays.
+ */
export class Replays extends APIResource {
/**
* List all replays for the specified browser session.
diff --git a/src/resources/credential-providers.ts b/src/resources/credential-providers.ts
index 42733a9..091015c 100644
--- a/src/resources/credential-providers.ts
+++ b/src/resources/credential-providers.ts
@@ -6,6 +6,9 @@ import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Configure external credential providers like 1Password.
+ */
export class CredentialProviders extends APIResource {
/**
* Configure an external credential provider (e.g., 1Password) for automatic
diff --git a/src/resources/credentials.ts b/src/resources/credentials.ts
index 98b7df8..5ae0021 100644
--- a/src/resources/credentials.ts
+++ b/src/resources/credentials.ts
@@ -7,6 +7,9 @@ import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Create and manage credentials for authentication.
+ */
export class Credentials extends APIResource {
/**
* Create a new credential for storing login information.
diff --git a/src/resources/deployments.ts b/src/resources/deployments.ts
index 5f277da..8ea9843 100644
--- a/src/resources/deployments.ts
+++ b/src/resources/deployments.ts
@@ -11,6 +11,9 @@ import { RequestOptions } from '../internal/request-options';
import { multipartFormRequestOptions } from '../internal/uploads';
import { path } from '../internal/utils/path';
+/**
+ * Create and manage app deployments and stream deployment events.
+ */
export class Deployments extends APIResource {
/**
* Create a new deployment.
diff --git a/src/resources/extensions.ts b/src/resources/extensions.ts
index 5697a07..b28eb86 100644
--- a/src/resources/extensions.ts
+++ b/src/resources/extensions.ts
@@ -8,6 +8,9 @@ import { RequestOptions } from '../internal/request-options';
import { multipartFormRequestOptions } from '../internal/uploads';
import { path } from '../internal/utils/path';
+/**
+ * Create, list, retrieve, and delete browser extensions.
+ */
export class Extensions extends APIResource {
/**
* List extensions owned by the caller's organization.
diff --git a/src/resources/invocations.ts b/src/resources/invocations.ts
index eb85200..b48c129 100644
--- a/src/resources/invocations.ts
+++ b/src/resources/invocations.ts
@@ -10,6 +10,9 @@ import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Invoke actions and stream or query invocation status and events.
+ */
export class Invocations extends APIResource {
/**
* Invoke an action.
diff --git a/src/resources/profiles.ts b/src/resources/profiles.ts
index 2a3c613..4b9345c 100644
--- a/src/resources/profiles.ts
+++ b/src/resources/profiles.ts
@@ -9,6 +9,9 @@ import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Create, list, retrieve, and delete browser profiles.
+ */
export class Profiles extends APIResource {
/**
* Create a browser profile that can be used to load state into future browser
diff --git a/src/resources/proxies.ts b/src/resources/proxies.ts
index 7174a6f..0e0d271 100644
--- a/src/resources/proxies.ts
+++ b/src/resources/proxies.ts
@@ -6,6 +6,9 @@ import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
+/**
+ * Create and manage proxy configurations for routing browser traffic.
+ */
export class Proxies extends APIResource {
/**
* Create a new proxy configuration for the caller's organization.
diff --git a/src/version.ts b/src/version.ts
index e013417..7c38063 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.42.0'; // x-release-please-version
+export const VERSION = '0.42.1'; // x-release-please-version
diff --git a/tests/api-resources/browsers/computer.test.ts b/tests/api-resources/browsers/computer.test.ts
index 36b388b..ffb2b7d 100644
--- a/tests/api-resources/browsers/computer.test.ts
+++ b/tests/api-resources/browsers/computer.test.ts
@@ -48,7 +48,9 @@ describe('resource computer', () => {
move_mouse: {
x: 0,
y: 0,
+ duration_ms: 50,
hold_keys: ['string'],
+ smooth: true,
},
press_key: {
keys: ['string'],
@@ -174,7 +176,9 @@ describe('resource computer', () => {
const response = await client.browsers.computer.moveMouse('id', {
x: 0,
y: 0,
+ duration_ms: 50,
hold_keys: ['string'],
+ smooth: true,
});
});
@@ -199,6 +203,18 @@ describe('resource computer', () => {
});
});
+ // Mock server tests are disabled
+ test.skip('readClipboard', async () => {
+ const responsePromise = client.browsers.computer.readClipboard('id');
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
// Mock server tests are disabled
test.skip('scroll: only required params', async () => {
const responsePromise = client.browsers.computer.scroll('id', { x: 0, y: 0 });
@@ -255,4 +271,21 @@ describe('resource computer', () => {
test.skip('typeText: required and optional params', async () => {
const response = await client.browsers.computer.typeText('id', { text: 'text', delay: 0 });
});
+
+ // Mock server tests are disabled
+ test.skip('writeClipboard: only required params', async () => {
+ const responsePromise = client.browsers.computer.writeClipboard('id', { text: 'text' });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Mock server tests are disabled
+ test.skip('writeClipboard: required and optional params', async () => {
+ const response = await client.browsers.computer.writeClipboard('id', { text: 'text' });
+ });
});