diff --git a/apps/web/e2e/sandbox-lifecycle.spec.ts b/apps/web/e2e/sandbox-lifecycle.spec.ts index 019da63b6..3e8d7430d 100644 --- a/apps/web/e2e/sandbox-lifecycle.spec.ts +++ b/apps/web/e2e/sandbox-lifecycle.spec.ts @@ -70,14 +70,14 @@ test("edits the sandbox network cap for new sandboxes", async ({ page, request } const area = page.getByRole("region", { name: "Network" }); const domains = area.getByLabel("Extra allowed domains"); await expect(area.getByRole("switch", { name: "Allow public internet" })).toBeChecked(); - await domains.fill("Git.example.com\n*.example.com"); - await expect(area.getByText("*.example.com is not a valid host name.")).toBeVisible(); + await domains.fill("Git.example.com\n*.com"); + await expect(area.getByText("*.com is not a valid host name.")).toBeVisible(); await expect(area.getByRole("button", { name: "Save", exact: true })).toBeDisabled(); - await domains.fill("gitlab.example.com"); + await domains.fill("gitlab.example.com\n*.corp.example"); await area.getByRole("switch", { name: "Allow public internet" }).uncheck(); const response = page.waitForResponse((response) => response.request().method() === "PUT" && response.url().endsWith("/sandbox/deployment")); await area.getByRole("button", { name: "Save", exact: true }).click(); - expect((await response).request().postDataJSON().network).toEqual({ public: false, domains: ["gitlab.example.com"] }); + expect((await response).request().postDataJSON().network).toEqual({ public: false, domains: ["gitlab.example.com", "*.corp.example"] }); await expect(page.getByText("New sandboxes will run with this policy")).toBeVisible(); }); diff --git a/apps/web/src/features/sandbox/NetworkSettings.test.tsx b/apps/web/src/features/sandbox/NetworkSettings.test.tsx index a94afc2c1..c71e392b8 100644 --- a/apps/web/src/features/sandbox/NetworkSettings.test.tsx +++ b/apps/web/src/features/sandbox/NetworkSettings.test.tsx @@ -8,8 +8,8 @@ const deployment = (provider: "microsandbox" | "e2b") => ({ provider, specificat describe("network policy", () => { it("validates domains with the generated rule", () => { - expect(domainIssues(parseDomains("gitlab.example.com\n\n a.b-c.example \nGit.Example.com"))).toEqual([]); - expect(domainIssues(["*.example.com", "-x.com", "a.com", "a.com", "a".repeat(254)]).map((issue) => issue.problem)).toEqual(["invalid", "invalid", "duplicate", "too_long"]); + expect(domainIssues(parseDomains("gitlab.example.com\n\n a.b-c.example \nGit.Example.com\n*.corp.example"))).toEqual([]); + expect(domainIssues(["a.*.example.com", "*.com", "-x.com", "a.com", "a.com", "a".repeat(254)]).map((issue) => issue.problem)).toEqual(["invalid", "invalid", "invalid", "duplicate", "too_long"]); expect(domainIssues(Array.from({ length: 101 }, (_, index) => `h${index}.example.com`))).toEqual([{ problem: "too_many" }]); }); diff --git a/apps/web/src/features/sandbox/NetworkSettings.tsx b/apps/web/src/features/sandbox/NetworkSettings.tsx index eea68a5cc..91a31e0cc 100644 --- a/apps/web/src/features/sandbox/NetworkSettings.tsx +++ b/apps/web/src/features/sandbox/NetworkSettings.tsx @@ -55,7 +55,7 @@ export function NetworkForm({ deployment, disabled, onSave }: { deployment: Sand
-
{support.private_domains ? t("One host name per line, such as gitlab.example.com, up to {{count}}. Sandboxes can reach these names, including names on your private network. Wildcards are not accepted.", { count: maxDomains }) : t("{{provider}} sandboxes run in the provider's cloud and cannot reach your private network.", { provider })}
+
{support.private_domains ? t("One host name per line, such as gitlab.example.com, up to {{count}}. Sandboxes can reach these names, including names on your private network. *.example.com allows its subdomains, not example.com itself.", { count: maxDomains }) : t("{{provider}} sandboxes run in the provider's cloud and cannot reach your private network.", { provider })}