[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Worker](https://evolu.dev/docs/api-reference/common/Worker) › TestWorker

Defined in: [packages/common/src/Worker.ts:298](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Worker.ts#L298)

Test [Worker](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker) with access to its paired worker-side `self`.

Use `self` to simulate messages and behavior from inside the worker.

## Extends

- [`Worker`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker)\<`Input`, `Output`\>

## Methods

<a id="dispose"></a>

### \[dispose\]()

```ts
dispose: void;
```

Defined in: node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts:36

#### Inherited from

[`Worker`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker).[`[dispose]`](/docs/api-reference/common/Worker/interfaces/Worker#dispose)

## Properties

<a id="native"></a>

### native

```ts
readonly native: NativeMessagePort<Input, Output>;
```

Defined in: [packages/common/src/Worker.ts:72](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Worker.ts#L72)

The native underlying port for transferring via `postMessage`.

### Example

```ts
sharedWorker.port.postMessage(
  { type: "InitConsole", port: consoleChannel.port1.native },
  [consoleChannel.port1.native],
);
```

#### Inherited from

[`Worker`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker).[`native`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker#native)

---

<a id="onmessage"></a>

### onMessage

```ts
onMessage: ((message: Output) => void) | null;
```

Defined in: [packages/common/src/Worker.ts:58](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Worker.ts#L58)

Handler for incoming messages. Messages are queued until this is assigned,
matching native `MessagePort` behavior where setting `onmessage` implicitly
calls `start()`. This enables safe async initialization — the sender can
post messages immediately while the receiver sets up.

#### Inherited from

[`Worker`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker).[`onMessage`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker#onmessage)

---

<a id="postmessage"></a>

### postMessage

```ts
readonly postMessage: (message: Input, transfer?: readonly Transferable[]) => void;
```

Defined in: [packages/common/src/Worker.ts:47](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Worker.ts#L47)

#### Inherited from

[`Worker`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker).[`postMessage`](https://evolu.dev/docs/api-reference/common/Worker/interfaces/Worker#postmessage)

---

<a id="self"></a>

### self

```ts
readonly self: WorkerSelf<Input, Output>;
```

Defined in: [packages/common/src/Worker.ts:303](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Worker.ts#L303)

Typed `self` counterpart for worker-side testing assertions.