Skip to content

Commit 769ffb1

Browse files
authored
Wrangler preview urls e2e fixes and warning follow up (#10561)
* wrangler: test: fix e2e tests regarding recent preview_urls defaulting to false Fixes existing tests, and adds a new test for `preview_urls = true`. * wrangler: feat: do not show subdomain status mismatch warnings on first deploy These warnings are just noise on a first deploy, not really necessary.
1 parent ab26bcd commit 769ffb1

File tree

7 files changed

+191
-17
lines changed

7 files changed

+191
-17
lines changed

.changeset/real-regions-crash.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
Do not show subdomain status mismatch warnings on first deploy.
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
import dedent from "ts-dedent";
2+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
3+
import { CLOUDFLARE_ACCOUNT_ID } from "./helpers/account-id";
4+
import { WranglerE2ETestHelper } from "./helpers/e2e-wrangler-test";
5+
import { generateResourceName } from "./helpers/generate-resource-name";
6+
import { normalizeOutput } from "./helpers/normalize";
7+
8+
const TIMEOUT = 50_000;
9+
const workerName = generateResourceName();
10+
const normalize = (str: string) =>
11+
normalizeOutput(str, {
12+
[CLOUDFLARE_ACCOUNT_ID]: "CLOUDFLARE_ACCOUNT_ID",
13+
}).replaceAll(/^Author:.*$/gm, "Author: person@example.com");
14+
15+
describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)("deploy", { timeout: TIMEOUT }, () => {
16+
let helper: WranglerE2ETestHelper;
17+
beforeAll(async () => {
18+
helper = new WranglerE2ETestHelper();
19+
});
20+
21+
describe("subdomain warnings", () => {
22+
beforeAll(async () => {
23+
await helper.seed({
24+
"wrangler.toml": dedent`
25+
name = "${workerName}"
26+
main = "src/index.ts"
27+
compatibility_date = "2023-01-01"
28+
`,
29+
"src/index.ts": dedent`
30+
export default {
31+
fetch(request) {
32+
return new Response("Hello World!")
33+
}
34+
}
35+
`,
36+
"package.json": dedent`
37+
{
38+
"name": "${workerName}",
39+
"version": "0.0.0",
40+
"private": true
41+
}
42+
`,
43+
});
44+
});
45+
46+
afterAll(async () => {
47+
await helper.run(`wrangler delete`);
48+
});
49+
50+
it("omit subdomain warnings on 1st deploy", async () => {
51+
const deploy = await helper.run("wrangler deploy");
52+
expect(normalize(deploy.stdout)).toMatchInlineSnapshot(`
53+
"Total Upload: xx KiB / gzip: xx KiB
54+
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
55+
Deployed tmp-e2e-worker-00000000-0000-0000-0000-000000000000 triggers (TIMINGS)
56+
https://tmp-e2e-worker-00000000-0000-0000-0000-000000000000.SUBDOMAIN.workers.dev
57+
Current Version ID: 00000000-0000-0000-0000-000000000000"
58+
`);
59+
expect(normalize(deploy.stderr)).toMatchInlineSnapshot(`""`);
60+
});
61+
62+
it("show subdomain warnings on 2nd deploy, remote enabled", async () => {
63+
// Set remote state using `wrangler triggers deploy`.
64+
await helper.seed({
65+
"wrangler.toml": dedent`
66+
name = "${workerName}"
67+
main = "src/index.ts"
68+
compatibility_date = "2023-01-01"
69+
workers_dev = true
70+
preview_urls = true
71+
`,
72+
});
73+
await helper.run("wrangler triggers deploy");
74+
// Remove `workers_dev` and `preview_urls` props, and redeploy.
75+
await helper.seed({
76+
"wrangler.toml": dedent`
77+
name = "${workerName}"
78+
main = "src/index.ts"
79+
compatibility_date = "2023-01-01"
80+
`,
81+
});
82+
const deploy = await helper.run("wrangler deploy");
83+
expect(normalize(deploy.stdout)).toMatchInlineSnapshot(`
84+
"Total Upload: xx KiB / gzip: xx KiB
85+
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
86+
Deployed tmp-e2e-worker-00000000-0000-0000-0000-000000000000 triggers (TIMINGS)
87+
https://tmp-e2e-worker-00000000-0000-0000-0000-000000000000.SUBDOMAIN.workers.dev
88+
Current Version ID: 00000000-0000-0000-0000-000000000000"
89+
`);
90+
expect(normalize(deploy.stderr)).toMatchInlineSnapshot(`
91+
"▲ [WARNING] Worker has preview URLs enabled, but 'preview_urls' is not in the config.
92+
Using default config 'preview_urls = false', current status will be overwritten."
93+
`);
94+
});
95+
96+
it("show subdomain warnings on 3rd deploy, remote disabled", async () => {
97+
// Set remote state using `wrangler triggers deploy`.
98+
await helper.seed({
99+
"wrangler.toml": dedent`
100+
name = "${workerName}"
101+
main = "src/index.ts"
102+
compatibility_date = "2023-01-01"
103+
workers_dev = false
104+
preview_urls = false
105+
`,
106+
});
107+
await helper.run("wrangler triggers deploy");
108+
// Remove `workers_dev` and `preview_urls` props, and redeploy.
109+
await helper.seed({
110+
"wrangler.toml": dedent`
111+
name = "${workerName}"
112+
main = "src/index.ts"
113+
compatibility_date = "2023-01-01"
114+
`,
115+
});
116+
const deploy = await helper.run("wrangler deploy");
117+
expect(normalize(deploy.stdout)).toMatchInlineSnapshot(`
118+
"Total Upload: xx KiB / gzip: xx KiB
119+
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
120+
Deployed tmp-e2e-worker-00000000-0000-0000-0000-000000000000 triggers (TIMINGS)
121+
https://tmp-e2e-worker-00000000-0000-0000-0000-000000000000.SUBDOMAIN.workers.dev
122+
Current Version ID: 00000000-0000-0000-0000-000000000000"
123+
`);
124+
expect(normalize(deploy.stderr)).toMatchInlineSnapshot(`
125+
"▲ [WARNING] Worker has workers.dev disabled, but 'workers_dev' is not in the config.
126+
Using default config 'workers_dev = true', current status will be overwritten."
127+
`);
128+
});
129+
});
130+
});

packages/wrangler/e2e/versions.test.ts

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
3737
name = "${workerName}"
3838
main = "src/index.ts"
3939
compatibility_date = "2023-01-01"
40-
preview_urls = true
4140
`,
4241
"src/index.ts": dedent`
4342
export default {
@@ -70,7 +69,6 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
7069
Worker Startup Time: (TIMINGS)
7170
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
7271
Worker Version ID: 00000000-0000-0000-0000-000000000000
73-
Version Preview URL: https://tmp-e2e-worker-PREVIEW-URL.SUBDOMAIN.workers.dev
7472
To deploy this version to production traffic use the command wrangler versions deploy
7573
Changes to non-versioned settings (config properties 'logpush' or 'tail_consumers') take effect after your next deployment using the command wrangler versions deploy
7674
Changes to triggers (routes, custom domains, cron schedules, etc) must be applied with the command wrangler triggers deploy"
@@ -186,7 +184,6 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
186184
Worker Startup Time: (TIMINGS)
187185
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
188186
Worker Version ID: 00000000-0000-0000-0000-000000000000
189-
Version Preview URL: https://tmp-e2e-worker-PREVIEW-URL.SUBDOMAIN.workers.dev
190187
To deploy this version to production traffic use the command wrangler versions deploy
191188
Changes to non-versioned settings (config properties 'logpush' or 'tail_consumers') take effect after your next deployment using the command wrangler versions deploy
192189
Changes to triggers (routes, custom domains, cron schedules, etc) must be applied with the command wrangler triggers deploy"
@@ -590,7 +587,6 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
590587
Worker Startup Time: (TIMINGS)
591588
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
592589
Worker Version ID: 00000000-0000-0000-0000-000000000000
593-
Version Preview URL: https://tmp-e2e-worker-PREVIEW-URL.SUBDOMAIN.workers.dev
594590
To deploy this version to production traffic use the command wrangler versions deploy
595591
Changes to non-versioned settings (config properties 'logpush' or 'tail_consumers') take effect after your next deployment using the command wrangler versions deploy
596592
Changes to triggers (routes, custom domains, cron schedules, etc) must be applied with the command wrangler triggers deploy"
@@ -632,7 +628,6 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
632628
Worker Startup Time: (TIMINGS)
633629
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
634630
Worker Version ID: 00000000-0000-0000-0000-000000000000
635-
Version Preview URL: https://tmp-e2e-worker-PREVIEW-URL.SUBDOMAIN.workers.dev
636631
To deploy this version to production traffic use the command wrangler versions deploy
637632
Changes to non-versioned settings (config properties 'logpush' or 'tail_consumers') take effect after your next deployment using the command wrangler versions deploy
638633
Changes to triggers (routes, custom domains, cron schedules, etc) must be applied with the command wrangler triggers deploy"
@@ -653,6 +648,45 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
653648
`);
654649
});
655650

651+
it("should upload version of Worker with preview_urls enabled", async () => {
652+
await helper.seed({
653+
"wrangler.toml": dedent`
654+
name = "${workerName}"
655+
main = "src/index.ts"
656+
compatibility_date = "2023-01-01"
657+
preview_urls = true
658+
`,
659+
"src/index.ts": dedent`
660+
export default {
661+
fetch(request) {
662+
return new Response("Hello World!")
663+
}
664+
}
665+
`,
666+
"package.json": dedent`
667+
{
668+
"name": "${workerName}",
669+
"version": "0.0.0",
670+
"private": true
671+
}
672+
`,
673+
});
674+
await helper.run("wrangler triggers deploy");
675+
const upload = await helper.run(
676+
`wrangler versions upload --message "Upload via e2e test" --tag "e2e-version-with-preview"`
677+
);
678+
expect(normalize(upload.stdout)).toMatchInlineSnapshot(`
679+
"Total Upload: xx KiB / gzip: xx KiB
680+
Worker Startup Time: (TIMINGS)
681+
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
682+
Worker Version ID: 00000000-0000-0000-0000-000000000000
683+
Version Preview URL: https://tmp-e2e-worker-PREVIEW-URL.SUBDOMAIN.workers.dev
684+
To deploy this version to production traffic use the command wrangler versions deploy
685+
Changes to non-versioned settings (config properties 'logpush' or 'tail_consumers') take effect after your next deployment using the command wrangler versions deploy
686+
Changes to triggers (routes, custom domains, cron schedules, etc) must be applied with the command wrangler triggers deploy"
687+
`);
688+
});
689+
656690
it("should include version preview url in output file", async () => {
657691
const outputFile = path.join(helper.tmpPath, "output.jsonnd");
658692
const upload = await helper.run(
@@ -678,10 +712,10 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
678712
const { stdout } = await helper.run(`wrangler delete`);
679713

680714
expect(normalize(stdout)).toMatchInlineSnapshot(`
681-
"? Are you sure you want to delete tmp-e2e-worker-00000000-0000-0000-0000-000000000000? This action cannot be undone.
682-
🤖 Using fallback value in non-interactive context: yes
683-
Successfully deleted tmp-e2e-worker-00000000-0000-0000-0000-000000000000"
684-
`);
715+
"? Are you sure you want to delete tmp-e2e-worker-00000000-0000-0000-0000-000000000000? This action cannot be undone.
716+
🤖 Using fallback value in non-interactive context: yes
717+
Successfully deleted tmp-e2e-worker-00000000-0000-0000-0000-000000000000"
718+
`);
685719
});
686720
}
687721
);

packages/wrangler/src/__tests__/deploy.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6912,7 +6912,7 @@ addEventListener('fetch', event => {});`
69126912
expect(std.warn).toMatchInlineSnapshot(`
69136913
"▲ [WARNING] Worker has workers.dev disabled, but 'workers_dev' is not in the config.
69146914
6915-
Using fallback value 'workers_dev = true'.
6915+
Using default config 'workers_dev = true', current status will be overwritten.
69166916
69176917
"
69186918
`);
@@ -6939,7 +6939,7 @@ addEventListener('fetch', event => {});`
69396939
expect(std.warn).toMatchInlineSnapshot(`
69406940
"▲ [WARNING] Worker has preview URLs enabled, but 'preview_urls' is not in the config.
69416941
6942-
Using fallback value 'preview_urls = false'.
6942+
Using default config 'preview_urls = false', current status will be overwritten.
69436943
69446944
"
69456945
`);

packages/wrangler/src/deploy/deploy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,6 +1115,7 @@ See https://developers.cloudflare.com/workers/platform/compatibility-dates for m
11151115
// deploy triggers
11161116
const targets = await triggersDeploy({
11171117
...props,
1118+
firstDeploy: !workerExists,
11181119
routes: allDeploymentRoutes,
11191120
});
11201121

packages/wrangler/src/triggers/deploy.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type Props = {
3030
legacyEnv: boolean | undefined;
3131
dryRun: boolean | undefined;
3232
assetsOptions: AssetsOptions | undefined;
33+
firstDeploy: boolean;
3334
};
3435

3536
export default async function triggersDeploy(
@@ -90,7 +91,8 @@ export default async function triggersDeploy(
9091
envName,
9192
workerUrl,
9293
routes,
93-
deployments
94+
deployments,
95+
props.firstDeploy
9496
);
9597

9698
if (!wantWorkersDev && workersDevInSync && routes.length !== 0) {
@@ -315,7 +317,8 @@ async function subdomainDeploy(
315317
envName: string,
316318
workerUrl: string,
317319
routes: Route[],
318-
deployments: Array<Promise<string[]>>
320+
deployments: Array<Promise<string[]>>,
321+
firstDeploy: boolean
319322
) {
320323
const { config } = props;
321324

@@ -338,22 +341,22 @@ async function subdomainDeploy(
338341

339342
// Warn about mismatching config and current values.
340343

341-
if (config.workers_dev == undefined && !workersDevInSync) {
344+
if (!firstDeploy && config.workers_dev == undefined && !workersDevInSync) {
342345
const currWorkersDevStatus = currWorkersDev ? "enabled" : "disabled";
343346
logger.warn(
344347
[
345348
`Worker has workers.dev ${currWorkersDevStatus}, but 'workers_dev' is not in the config.`,
346-
`Using fallback value 'workers_dev = ${wantWorkersDev}'.`,
349+
`Using default config 'workers_dev = ${wantWorkersDev}', current status will be overwritten.`,
347350
].join("\n")
348351
);
349352
}
350353

351-
if (config.preview_urls == undefined && !previewsInSync) {
354+
if (!firstDeploy && config.preview_urls == undefined && !previewsInSync) {
352355
const currPreviewsStatus = currPreviews ? "enabled" : "disabled";
353356
logger.warn(
354357
[
355358
`Worker has preview URLs ${currPreviewsStatus}, but 'preview_urls' is not in the config.`,
356-
`Using fallback value 'preview_urls = ${wantPreviews}'.`,
359+
`Using default config 'preview_urls = ${wantPreviews}', current status will be overwritten.`,
357360
].join("\n")
358361
);
359362
}

packages/wrangler/src/triggers/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export const triggersDeployCommand = createCommand({
7474
legacyEnv: isLegacyEnv(config),
7575
dryRun: args.dryRun,
7676
assetsOptions,
77+
firstDeploy: false, // at this point the Worker should already exist.
7778
});
7879
},
7980
});

0 commit comments

Comments
 (0)