Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -231,4 +231,6 @@ dist/**
!.env.example
.node-cache/

AGENTS.local.md
.opencode/plans

AGENTS.local.md
12 changes: 1 addition & 11 deletions fixtures/get-platform-proxy/tests/get-platform-proxy.env.test.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
import path from "path";
import { D1Database, R2Bucket } from "@cloudflare/workers-types";
import { toMatchImageSnapshot } from "jest-image-snapshot";
import {
afterEach,
beforeEach,
describe,
expect,
it,
MockInstance,
vi,
} from "vitest";
import { beforeEach, describe, expect, it, MockInstance, vi } from "vitest";
import { getPlatformProxy } from "./shared";
import type {
Fetcher,
Expand All @@ -18,7 +10,6 @@ import type {
KVNamespace,
Workflow,
} from "@cloudflare/workers-types";
import type { Unstable_DevWorker } from "wrangler";

type Env = {
MY_VAR: string;
Expand All @@ -39,7 +30,6 @@ type Env = {
const wranglerConfigFilePath = path.join(__dirname, "..", "wrangler.jsonc");

describe("getPlatformProxy - env", () => {
let devWorkers: Unstable_DevWorker[];
let warn = {} as MockInstance<typeof console.warn>;

beforeEach(() => {
Expand Down
28 changes: 12 additions & 16 deletions fixtures/local-mode-tests/tests/logging.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import path from "node:path";
import { setTimeout } from "node:timers/promises";
import util from "node:util";
import { afterEach, beforeEach, expect, it, Mock, vi } from "vitest";
import { unstable_dev } from "wrangler";
import { unstable_startWorker } from "wrangler";

let output = "";
function spyOnConsoleMethod(name: keyof typeof console) {
Expand All @@ -25,21 +25,17 @@ afterEach(() => {
it("logs startup errors", async () => {
let caughtError: unknown;
try {
const worker = await unstable_dev(
path.resolve(__dirname, "..", "src", "nodejs-compat.ts"),
{
config: path.resolve(__dirname, "..", "wrangler.logging.jsonc"),
// Intentionally omitting `compatibilityFlags: ["nodejs_compat"]`
ip: "127.0.0.1",
experimental: {
disableExperimentalWarning: true,
disableDevRegistry: true,
devEnv: true,
},
}
);
await worker.stop();
expect.fail("Expected unstable_dev() to fail");
const worker = await unstable_startWorker({
entrypoint: path.resolve(__dirname, "..", "src", "nodejs-compat.ts"),
config: path.resolve(__dirname, "..", "wrangler.logging.jsonc"),
// Intentionally omitting `compatibilityFlags: ["nodejs_compat"]`
dev: {
server: { hostname: "127.0.0.1", port: 0 },
inspector: false,
},
});
await worker.dispose();
expect.fail("Expected unstable_startWorker() to fail");
} catch (e) {
caughtError = e;
}
Expand Down
62 changes: 35 additions & 27 deletions fixtures/local-mode-tests/tests/module.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import path from "path";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { unstable_dev } from "wrangler";
import type { Unstable_DevWorker } from "wrangler";
import { unstable_startWorker } from "wrangler";

describe("module worker", () => {
let worker: Unstable_DevWorker;
let worker: Awaited<ReturnType<typeof unstable_startWorker>>;

let originalNodeEnv: string | undefined;

Expand All @@ -14,33 +13,30 @@ describe("module worker", () => {

process.env.NODE_ENV = "local-testing";

worker = await unstable_dev(
path.resolve(__dirname, "..", "src", "module.ts"),
{
config: path.resolve(__dirname, "..", "wrangler.module.jsonc"),
vars: { VAR4: "https://google.com" },
ip: "127.0.0.1",
port: 0,
experimental: {
disableExperimentalWarning: true,
disableDevRegistry: true,
devEnv: true,
},
}
);
worker = await unstable_startWorker({
entrypoint: path.resolve(__dirname, "..", "src", "module.ts"),
config: path.resolve(__dirname, "..", "wrangler.module.jsonc"),
bindings: {
VAR4: { type: "plain_text", value: "https://google.com" },
},
dev: {
server: { hostname: "127.0.0.1", port: 0 },
inspector: false,
},
});
});

afterAll(async () => {
try {
await worker.stop();
await worker.dispose();
} catch (e) {
console.error("Failed to stop worker", e);
}
process.env.NODE_ENV = originalNodeEnv;
});

it("renders variables", async () => {
const resp = await worker.fetch("/vars");
const resp = await worker.fetch("http://example.com/vars");
expect(resp).not.toBe(undefined);

const text = await resp.text();
Expand All @@ -60,13 +56,15 @@ describe("module worker", () => {
});

it("should return Hi by default", async () => {
const resp = await worker.fetch("/");
const resp = await worker.fetch("http://example.com/");
expect(resp).not.toBe(undefined);
const respJson = await resp.text();
expect(respJson).toBe(JSON.stringify({ greeting: "Hi!" }));
});
it("should return Bonjour when French", async () => {
const resp = await worker.fetch("/", { headers: { lang: "fr-FR" } });
const resp = await worker.fetch("http://example.com/", {
headers: { lang: "fr-FR" },
});
expect(resp).not.toBe(undefined);
if (resp) {
const respJson = await resp.text();
Expand All @@ -75,7 +73,9 @@ describe("module worker", () => {
});

it("should return G'day when Australian", async () => {
const resp = await worker.fetch("/", { headers: { lang: "en-AU" } });
const resp = await worker.fetch("http://example.com/", {
headers: { lang: "en-AU" },
});
expect(resp).not.toBe(undefined);
if (resp) {
const respJson = await resp.text();
Expand All @@ -84,7 +84,9 @@ describe("module worker", () => {
});

it("should return Good day when British", async () => {
const resp = await worker.fetch("/", { headers: { lang: "en-GB" } });
const resp = await worker.fetch("http://example.com/", {
headers: { lang: "en-GB" },
});
expect(resp).not.toBe(undefined);
if (resp) {
const respJson = await resp.text();
Expand All @@ -93,7 +95,9 @@ describe("module worker", () => {
});

it("should return Howdy when Texan", async () => {
const resp = await worker.fetch("/", { headers: { lang: "en-TX" } });
const resp = await worker.fetch("http://example.com/", {
headers: { lang: "en-TX" },
});
expect(resp).not.toBe(undefined);
if (resp) {
const respJson = await resp.text();
Expand All @@ -102,7 +106,9 @@ describe("module worker", () => {
});

it("should return Hello when American", async () => {
const resp = await worker.fetch("/", { headers: { lang: "en-US" } });
const resp = await worker.fetch("http://example.com/", {
headers: { lang: "en-US" },
});
expect(resp).not.toBe(undefined);
if (resp) {
const respJson = await resp.text();
Expand All @@ -111,7 +117,9 @@ describe("module worker", () => {
});

it("should return Hola when Spanish", async () => {
const resp = await worker.fetch("/", { headers: { lang: "es-ES" } });
const resp = await worker.fetch("http://example.com/", {
headers: { lang: "es-ES" },
});
expect(resp).not.toBe(undefined);
if (resp) {
const respJson = await resp.text();
Expand All @@ -120,7 +128,7 @@ describe("module worker", () => {
});

it("returns hex string", async () => {
const resp = await worker.fetch("/buffer");
const resp = await worker.fetch("http://example.com/buffer");
expect(resp).not.toBe(undefined);

const text = await resp.text();
Expand Down
42 changes: 19 additions & 23 deletions fixtures/local-mode-tests/tests/ports.test.ts
Original file line number Diff line number Diff line change
@@ -1,49 +1,45 @@
import path from "path";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { unstable_dev } from "wrangler";
import type { Unstable_DevWorker } from "wrangler";
import { unstable_startWorker } from "wrangler";

describe("multiple workers", () => {
let workers: Unstable_DevWorker[];
let workers: Awaited<ReturnType<typeof unstable_startWorker>>[];

beforeAll(async () => {
//since the script is invoked from the directory above, need to specify index.js is in src/

workers = await Promise.all([
unstable_dev(path.resolve(__dirname, "..", "src", "module.ts"), {
ip: "127.0.0.1",
experimental: {
disableExperimentalWarning: true,
disableDevRegistry: true,
devEnv: true,
unstable_startWorker({
entrypoint: path.resolve(__dirname, "..", "src", "module.ts"),
dev: {
server: { hostname: "127.0.0.1", port: 0 },
inspector: false,
},
}),
unstable_dev(path.resolve(__dirname, "..", "src", "module.ts"), {
ip: "127.0.0.1",
experimental: {
disableExperimentalWarning: true,
disableDevRegistry: true,
devEnv: true,
unstable_startWorker({
entrypoint: path.resolve(__dirname, "..", "src", "module.ts"),
dev: {
server: { hostname: "127.0.0.1", port: 0 },
inspector: false,
},
}),
unstable_dev(path.resolve(__dirname, "..", "src", "module.ts"), {
ip: "127.0.0.1",
experimental: {
disableExperimentalWarning: true,
disableDevRegistry: true,
devEnv: true,
unstable_startWorker({
entrypoint: path.resolve(__dirname, "..", "src", "module.ts"),
dev: {
server: { hostname: "127.0.0.1", port: 0 },
inspector: false,
},
}),
]);
});

afterAll(async () => {
await Promise.all(workers.map(async (worker) => await worker.stop()));
await Promise.all(workers.map(async (worker) => await worker.dispose()));
});

it.concurrent("all workers should be fetchable", async () => {
const responses = await Promise.all(
workers.map(async (worker) => await worker.fetch())
workers.map(async (worker) => await worker.fetch("http://example.com/"))
);
const parsedResponses = await Promise.all(
responses.map(async (resp) => await resp.text())
Expand Down
30 changes: 12 additions & 18 deletions fixtures/local-mode-tests/tests/specified-port.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import assert from "node:assert";
import nodeNet from "node:net";
import path from "path";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { unstable_dev } from "wrangler";
import type { Unstable_DevWorker } from "wrangler";
import { unstable_startWorker } from "wrangler";

function getPort() {
return new Promise<number>((resolve, reject) => {
Expand All @@ -20,30 +19,25 @@ function getPort() {
}

describe("specific port", () => {
let worker: Unstable_DevWorker;
let worker: Awaited<ReturnType<typeof unstable_startWorker>>;

beforeAll(async () => {
worker = await unstable_dev(
path.resolve(__dirname, "..", "src", "module.ts"),
{
config: path.resolve(__dirname, "..", "wrangler.module.jsonc"),
port: await getPort(),
ip: "127.0.0.1",
experimental: {
disableExperimentalWarning: true,
disableDevRegistry: true,
devEnv: true,
},
}
);
worker = await unstable_startWorker({
entrypoint: path.resolve(__dirname, "..", "src", "module.ts"),
config: path.resolve(__dirname, "..", "wrangler.module.jsonc"),
dev: {
server: { hostname: "127.0.0.1", port: await getPort() },
inspector: false,
},
});
});

afterAll(async () => {
await worker?.stop();
await worker?.dispose();
});

it("fetches worker", async () => {
const resp = await worker.fetch("/");
const resp = await worker.fetch("http://example.com/");
expect(resp.status).toBe(200);
});
});
20 changes: 9 additions & 11 deletions fixtures/local-mode-tests/tests/sw.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import path from "path";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { unstable_dev } from "wrangler";
import type { Unstable_DevWorker } from "wrangler";
import { unstable_startWorker } from "wrangler";

describe("service worker", () => {
let worker: Unstable_DevWorker;
let worker: Awaited<ReturnType<typeof unstable_startWorker>>;

let originalNodeEnv: string | undefined;

Expand All @@ -14,24 +13,23 @@ describe("service worker", () => {
process.env.NODE_ENV = "local-testing";

//since the script is invoked from the directory above, need to specify index.js is in src/
worker = await unstable_dev(path.resolve(__dirname, "..", "src", "sw.ts"), {
worker = await unstable_startWorker({
entrypoint: path.resolve(__dirname, "..", "src", "sw.ts"),
config: path.resolve(__dirname, "..", "wrangler.sw.jsonc"),
ip: "127.0.0.1",
experimental: {
disableDevRegistry: true,
disableExperimentalWarning: true,
devEnv: true,
dev: {
server: { hostname: "127.0.0.1", port: 0 },
inspector: false,
},
});
});

afterAll(async () => {
await worker.stop();
await worker.dispose();
process.env.NODE_ENV = originalNodeEnv;
});

it("renders", async () => {
const resp = await worker.fetch();
const resp = await worker.fetch("http://example.com/");
expect(resp).not.toBe(undefined);

const text = await resp.text();
Expand Down
Loading
Loading