Skip to content

Commit 68ec1c2

Browse files
committed
chore: migrate fixtures to createServer
1 parent 9d7cd32 commit 68ec1c2

6 files changed

Lines changed: 78 additions & 88 deletions

File tree

fixtures/additional-modules/test/index.test.ts

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
import childProcess from "node:child_process";
2-
import { existsSync } from "node:fs";
2+
import { existsSync, mkdtempSync } from "node:fs";
33
import fs from "node:fs/promises";
44
import os from "node:os";
55
import path from "node:path";
66
import { removeDir } from "@fixture/shared/src/fs-helpers";
77
import { afterAll, assert, beforeAll, describe, test, vi } from "vitest";
8-
import { unstable_startWorker } from "wrangler";
8+
import { createServer, type WorkerServer } from "wrangler";
99
import { wranglerEntryPath } from "../../shared/src/run-wrangler-long-lived";
1010

11-
async function getTmpDir() {
12-
return fs.mkdtemp(path.join(os.tmpdir(), "wrangler-modules-"));
13-
}
14-
15-
type WranglerDev = Awaited<ReturnType<typeof unstable_startWorker>>;
16-
function get(worker: WranglerDev, pathname: string) {
17-
const url = `http://example.com${pathname}`;
18-
// Disable Miniflare's pretty error page, so we can parse errors as JSON
19-
return worker.fetch(url, { headers: { "MF-Disable-Pretty-Error": "true" } });
20-
}
21-
2211
describe("find_additional_modules dev", () => {
23-
let tmpDir: string;
24-
let worker: WranglerDev;
12+
const tmpDir = mkdtempSync(path.join(os.tmpdir(), "wrangler-modules-"));
13+
const server = createServer({
14+
root: tmpDir,
15+
workers: [{ configPath: "wrangler.jsonc" }],
16+
watch: true,
17+
});
18+
19+
function get(server: WorkerServer, pathname: string) {
20+
const url = `http://example.com${pathname}`;
21+
// Disable Miniflare's pretty error page, so we can parse errors as JSON
22+
return server.fetch(url, {
23+
headers: { "MF-Disable-Pretty-Error": "true" },
24+
});
25+
}
2526

2627
beforeAll(async () => {
2728
// Copy over files to a temporary directory as we'll be modifying them
28-
tmpDir = await getTmpDir();
2929
await fs.cp(
3030
path.resolve(__dirname, "..", "src"),
3131
path.join(tmpDir, "src"),
@@ -36,37 +36,35 @@ describe("find_additional_modules dev", () => {
3636
path.join(tmpDir, "wrangler.jsonc")
3737
);
3838

39-
worker = await unstable_startWorker({
40-
config: path.join(tmpDir, "wrangler.jsonc"),
41-
});
39+
await server.listen();
4240
});
4341
afterAll(async () => {
44-
await worker.dispose();
42+
await server.close();
4543
removeDir(tmpDir, { fireAndForget: true });
4644
});
4745

4846
test("supports bundled modules", async ({ expect }) => {
49-
const res = await get(worker, "/dep");
47+
const res = await get(server, "/dep");
5048
expect(await res.text()).toBe("bundled");
5149
});
5250
test("supports text modules", async ({ expect }) => {
53-
const res = await get(worker, "/text");
51+
const res = await get(server, "/text");
5452
expect(await res.text()).toBe("test\n");
5553
});
5654
test("supports SQL modules", async ({ expect }) => {
57-
const res = await get(worker, "/sql");
55+
const res = await get(server, "/sql");
5856
expect(await res.text()).toBe("SELECT * FROM users;\n");
5957
});
6058
test("supports dynamic imports", async ({ expect }) => {
61-
const res = await get(worker, "/dynamic");
59+
const res = await get(server, "/dynamic");
6260
expect(await res.text()).toBe("dynamic");
6361
});
6462
test("supports commonjs lazy imports", async ({ expect }) => {
65-
const res = await get(worker, "/common");
63+
const res = await get(server, "/common");
6664
expect(await res.text()).toBe("common");
6765
});
6866
test("supports variable dynamic imports", async ({ expect }) => {
69-
const res = await get(worker, "/lang/en");
67+
const res = await get(server, "/lang/en");
7068
expect(await res.text()).toBe("hello");
7169
});
7270

@@ -79,15 +77,15 @@ describe("find_additional_modules dev", () => {
7977
'export default "new dynamic";'
8078
);
8179
await vi.waitFor(async () => {
82-
const res = await get(worker, "/dynamic");
80+
const res = await get(server, "/dynamic");
8381
assert.strictEqual(await res.text(), "new dynamic");
8482
});
8583

8684
// Delete dynamically imported file
8785
await fs.rm(path.join(srcDir, "lang", "en.js"));
8886

8987
await vi.waitFor(async () => {
90-
await expect(get(worker, "/lang/en")).rejects.toThrowError(
88+
await expect(get(server, "/lang/en")).rejects.toThrowError(
9189
'No such module "lang/en.js".'
9290
);
9391
});
@@ -99,7 +97,7 @@ describe("find_additional_modules dev", () => {
9997
'export default { hello: "hey" };'
10098
);
10199
await vi.waitFor(async () => {
102-
const res = await get(worker, "/lang/en/us");
100+
const res = await get(server, "/lang/en/us");
103101
assert.strictEqual(await res.text(), "hey");
104102
});
105103

@@ -109,7 +107,7 @@ describe("find_additional_modules dev", () => {
109107
'export default { hello: "bye" };'
110108
);
111109
await vi.waitFor(async () => {
112-
const res = await get(worker, "/lang/en/us");
110+
const res = await get(server, "/lang/en/us");
113111
assert.strictEqual(await res.text(), "bye");
114112
});
115113
});
@@ -126,7 +124,7 @@ function build(cwd: string, outDir: string) {
126124
describe("find_additional_modules deploy", () => {
127125
let tmpDir: string;
128126
beforeAll(async () => {
129-
tmpDir = await getTmpDir();
127+
tmpDir = mkdtempSync(path.join(os.tmpdir(), "wrangler-modules-"));
130128
});
131129
afterAll(async () => await removeDir(tmpDir, { fireAndForget: true }));
132130

fixtures/no-bundle-import/src/index.test.ts

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
import path from "path";
22
import { afterAll, beforeAll, describe, test } from "vitest";
3-
import { unstable_startWorker } from "wrangler";
3+
import { createServer } from "wrangler";
44

5-
describe("Worker", () => {
6-
let worker: Awaited<ReturnType<typeof unstable_startWorker>>;
5+
const server = createServer({
6+
root: path.resolve(__dirname, ".."),
7+
workers: [{ configPath: "wrangler.jsonc" }],
8+
});
79

10+
describe("Worker", () => {
811
beforeAll(async () => {
9-
worker = await unstable_startWorker({
10-
entrypoint: path.resolve(__dirname, "index.js"),
11-
dev: {
12-
logLevel: "none",
13-
server: { hostname: "127.0.0.1", port: 0 },
14-
inspector: false,
15-
},
16-
});
12+
await server.listen();
1713
}, 30_000);
1814

19-
afterAll(() => worker.dispose());
15+
afterAll(() => server.close());
2016

2117
test("module traversal results in correct response", async ({ expect }) => {
22-
const resp = await worker.fetch("http://example.com/");
18+
const resp = await server.fetch("http://example.com/");
2319
const text = await resp.text();
2420
expect(text).toMatchInlineSnapshot(
2521
`"Hello Jane Smith and Hello John Smith"`
@@ -29,7 +25,7 @@ describe("Worker", () => {
2925
test("module traversal results in correct response for CommonJS", async ({
3026
expect,
3127
}) => {
32-
const resp = await worker.fetch("http://example.com/cjs");
28+
const resp = await server.fetch("http://example.com/cjs");
3329
const text = await resp.text();
3430
expect(text).toMatchInlineSnapshot(
3531
`"CJS: Hello Jane Smith and Hello John Smith"`
@@ -39,43 +35,43 @@ describe("Worker", () => {
3935
test("correct response for CommonJS which imports ESM", async ({
4036
expect,
4137
}) => {
42-
const resp = await worker.fetch("http://example.com/cjs-loop");
38+
const resp = await server.fetch("http://example.com/cjs-loop");
4339
const text = await resp.text();
4440
expect(text).toMatchInlineSnapshot('"CJS: cjs-string"');
4541
});
4642

4743
test("support for dynamic imports", async ({ expect }) => {
48-
const resp = await worker.fetch("http://example.com/dynamic");
44+
const resp = await server.fetch("http://example.com/dynamic");
4945
const text = await resp.text();
5046
expect(text).toMatchInlineSnapshot(`"dynamic"`);
5147
});
5248

5349
test("basic wasm support", async ({ expect }) => {
54-
const resp = await worker.fetch("http://example.com/wasm");
50+
const resp = await server.fetch("http://example.com/wasm");
5551
const text = await resp.text();
5652
expect(text).toMatchInlineSnapshot('"42"');
5753
});
5854

5955
test("resolves wasm import paths relative to root", async ({ expect }) => {
60-
const resp = await worker.fetch("http://example.com/wasm-nested");
56+
const resp = await server.fetch("http://example.com/wasm-nested");
6157
const text = await resp.text();
6258
expect(text).toMatchInlineSnapshot('"nested42"');
6359
});
6460

6561
test("wasm can be imported from a dynamic import", async ({ expect }) => {
66-
const resp = await worker.fetch("http://example.com/wasm-dynamic");
62+
const resp = await server.fetch("http://example.com/wasm-dynamic");
6763
const text = await resp.text();
6864
expect(text).toMatchInlineSnapshot('"sibling42subdirectory42"');
6965
});
7066

7167
test("text data can be imported", async ({ expect }) => {
72-
const resp = await worker.fetch("http://example.com/txt");
68+
const resp = await server.fetch("http://example.com/txt");
7369
const text = await resp.text();
7470
expect(text).toMatchInlineSnapshot('"TEST DATA"');
7571
});
7672

7773
test("binary data can be imported", async ({ expect }) => {
78-
const resp = await worker.fetch("http://example.com/bin");
74+
const resp = await server.fetch("http://example.com/bin");
7975
const bin = await resp.arrayBuffer();
8076
const expected = new Uint8Array(new ArrayBuffer(4));
8177
expected.set([0, 1, 2, 10]);
@@ -85,7 +81,7 @@ describe("Worker", () => {
8581
test("actual dynamic import (that cannot be inlined by an esbuild run)", async ({
8682
expect,
8783
}) => {
88-
const resp = await worker.fetch("http://example.com/lang/fr.json");
84+
const resp = await server.fetch("http://example.com/lang/fr.json");
8985
const text = await resp.text();
9086
expect(text).toMatchInlineSnapshot('"Bonjour"');
9187
});

fixtures/ratelimit-app/tests/index.test.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,49 @@
11
import path, { resolve } from "path";
22
import { afterAll, beforeAll, describe, it } from "vitest";
3-
import { unstable_startWorker } from "wrangler";
3+
import { createServer } from "wrangler";
44

55
const basePath = resolve(__dirname, "..");
6+
const server = createServer({
7+
workers: [{ configPath: path.join(basePath, "wrangler.jsonc") }],
8+
});
69

710
describe("Rate limiting bindings", () => {
8-
let worker: Awaited<ReturnType<typeof unstable_startWorker>>;
9-
1011
beforeAll(async () => {
11-
worker = await unstable_startWorker({
12-
config: path.join(basePath, "wrangler.jsonc"),
13-
});
12+
await server.listen();
1413
});
1514

1615
afterAll(async () => {
17-
await worker.dispose();
16+
await server.close();
1817
});
1918

2019
it("ratelimit binding is defined ", async ({ expect }) => {
21-
let response = await worker.fetch(`http://example.com`);
20+
let response = await server.fetch(`http://example.com`);
2221
let content = await response.text();
2322
expect(content).toEqual("Success");
2423

25-
response = await worker.fetch(`http://example.com`);
24+
response = await server.fetch(`http://example.com`);
2625
content = await response.text();
2726
expect(content).toEqual("Success");
2827

29-
response = await worker.fetch(`http://example.com`);
28+
response = await server.fetch(`http://example.com`);
3029
content = await response.text();
3130
expect(content).toEqual("Success");
3231

33-
response = await worker.fetch(`http://example.com`);
32+
response = await server.fetch(`http://example.com`);
3433
content = await response.text();
3534
expect(content).toEqual("Slow down");
3635
});
3736

3837
it("ratelimit unsafe binding is defined ", async ({ expect }) => {
39-
let response = await worker.fetch(`http://example.com/unsafe`);
38+
let response = await server.fetch(`http://example.com/unsafe`);
4039
let content = await response.text();
4140
expect(content).toEqual("unsafe: Success");
4241

43-
response = await worker.fetch(`http://example.com/unsafe`);
42+
response = await server.fetch(`http://example.com/unsafe`);
4443
content = await response.text();
4544
expect(content).toEqual("unsafe: Success");
4645

47-
response = await worker.fetch(`http://example.com/unsafe`);
46+
response = await server.fetch(`http://example.com/unsafe`);
4847
content = await response.text();
4948
expect(content).toEqual("unsafe: Slow down");
5049
});
Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,24 @@
11
import assert from "node:assert";
22
import test, { after, before, describe } from "node:test";
3-
import { unstable_startWorker } from "wrangler";
3+
import { createServer } from "wrangler";
44

5-
describe("worker", () => {
6-
/**
7-
* @type {Awaited<ReturnType<typeof unstable_startWorker>>}
8-
*/
9-
let worker;
5+
const server = createServer({
6+
workers: [{ configPath: "wrangler.json" }],
7+
});
108

9+
describe("worker", () => {
1110
before(async () => {
12-
worker = await unstable_startWorker({
13-
config: "wrangler.json",
14-
dev: { persist: false },
15-
});
11+
await server.listen();
1612
});
1713

1814
test("hello world", async () => {
1915
assert.strictEqual(
20-
await (await worker.fetch("http://example.com")).text(),
16+
await (await server.fetch("http://example.com")).text(),
2117
"Hello from even"
2218
);
2319
});
2420

2521
after(async () => {
26-
await worker.dispose();
22+
await server.close();
2723
});
2824
});

fixtures/unbound-durable-object/tests/index.test.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
import { join, resolve } from "path";
22
import { afterAll, beforeAll, describe, it } from "vitest";
3-
import { unstable_startWorker } from "wrangler";
3+
import { createServer } from "wrangler";
44

55
const basePath = resolve(__dirname, "..");
6+
const server = createServer({
7+
workers: [{ configPath: join(basePath, "wrangler.jsonc") }],
8+
});
69

710
describe("Unbound DO is available through `ctx.exports`", () => {
8-
let worker: Awaited<ReturnType<typeof unstable_startWorker>>;
9-
1011
beforeAll(async () => {
11-
worker = await unstable_startWorker({
12-
config: join(basePath, "wrangler.jsonc"),
13-
});
12+
await server.listen();
1413
});
1514

1615
afterAll(async () => {
17-
await worker.dispose();
16+
await server.close();
1817
});
1918

2019
it("can execute storage operations", async ({ expect }) => {
2120
const doName = crypto.randomUUID();
22-
let response = await worker.fetch(`http://example.com?name=${doName}`);
21+
let response = await server.fetch(`http://example.com?name=${doName}`);
2322
let content = await response.text();
2423
expect(content).toMatchInlineSnapshot(`"count: 0"`);
2524

26-
response = await worker.fetch(
25+
response = await server.fetch(
2726
`http://example.com/increment?name=${doName}`
2827
);
2928
content = await response.text();

packages/wrangler/src/cli.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import type {
4141
Unstable_MiniflareWorkerOptions,
4242
Unstable_RawConfig,
4343
Unstable_RawEnvironment,
44+
WorkerServer,
4445
} from "./api";
4546
import type { Logger } from "./logger";
4647
import type { Request, Response } from "miniflare";
@@ -91,6 +92,7 @@ export type {
9192
Unstable_MiniflareWorkerOptions,
9293
Experimental_GenerateTypesOptions,
9394
Experimental_GenerateTypesResult,
95+
WorkerServer,
9496
};
9597

9698
export { printBindings as unstable_printBindings } from "./utils/print-bindings";

0 commit comments

Comments
 (0)