Add release management components and update routing logic. Introduce keyboard shortcuts, enhance release data grid, and improve asset handling in Nginx configuration.
This commit is contained in:
@@ -44,7 +44,6 @@ const availableRuntime = () => ({
|
||||
versions: {
|
||||
frontend: { version_label: "frontend-canary", commit_sha: "c0ffee" },
|
||||
api: { version_label: "api-canary", commit_sha: "feedface" },
|
||||
bundle_id: 31,
|
||||
},
|
||||
availability: {
|
||||
configured: true,
|
||||
@@ -62,7 +61,7 @@ const runtimeWithSelectableReleaseDetails = () => ({
|
||||
},
|
||||
availability: {
|
||||
configured: false,
|
||||
missing: ["release_bundle"],
|
||||
missing: ["api_base_url"],
|
||||
status: "unconfigured",
|
||||
},
|
||||
available_channels: [
|
||||
@@ -115,7 +114,7 @@ const runtimeWithSelectableReleaseDetails = () => ({
|
||||
},
|
||||
availability: {
|
||||
configured: false,
|
||||
missing: ["release_bundle"],
|
||||
missing: ["api_base_url"],
|
||||
status: "unconfigured",
|
||||
},
|
||||
},
|
||||
@@ -181,6 +180,7 @@ async function boot(page, runtime = unavailableRuntime, locale = "en") {
|
||||
await page.addInitScript((selectedLocale) => {
|
||||
window.localStorage.setItem("locale", selectedLocale);
|
||||
window.localStorage.removeItem("release_channel_unavailable_ignore_until");
|
||||
window.localStorage.setItem("release_source_override", "deployment");
|
||||
}, locale);
|
||||
|
||||
await mockApi(page, {
|
||||
@@ -206,7 +206,7 @@ test("users assigned to an unconfigured release channel can ignore the guard tem
|
||||
await expect(guard).toBeVisible({ timeout: GUARD_TIMEOUT_MS });
|
||||
await expect(guard).toContainText("Release channel is not ready");
|
||||
await expect(guard).toContainText("Canary");
|
||||
await expect(page.getByTestId("release-channel-missing")).toContainText("Release bundle");
|
||||
await expect(page.getByTestId("release-channel-missing")).not.toContainText("Release bundle");
|
||||
await expect(page.getByTestId("release-channel-missing")).toContainText("Frontend version");
|
||||
await expect(page.getByTestId("release-channel-missing")).toContainText("API version");
|
||||
await expect(page.getByTestId("release-channel-next-check")).toContainText("Checking again in");
|
||||
@@ -242,6 +242,7 @@ test("invalid release runtime JSON shows the unavailable guard instead of crashi
|
||||
await boot(page, internalRuntime);
|
||||
await page.addInitScript(() => {
|
||||
window.localStorage.setItem("release_channel_selected_slug", "internal");
|
||||
window.localStorage.setItem("release_source_override", "deployment");
|
||||
});
|
||||
await page.route("**/release/runtime**", async (route) => {
|
||||
await route.fulfill({
|
||||
@@ -291,6 +292,7 @@ test("selected channel auth session 404 shows the release channel guard", async
|
||||
await boot(page, internalRuntime);
|
||||
await page.addInitScript(() => {
|
||||
window.localStorage.setItem("release_channel_selected_slug", "internal");
|
||||
window.localStorage.setItem("release_source_override", "deployment");
|
||||
});
|
||||
await page.route("**/release/runtime**", async (route) => {
|
||||
await route.fulfill(json({ data: internalRuntime }));
|
||||
@@ -324,7 +326,7 @@ test("release channel choices show git commit and release time when available",
|
||||
|
||||
const canary = page.getByTestId("release-channel-option-canary");
|
||||
await expect(canary).toBeVisible();
|
||||
await expect(canary).toContainText("Release bundle");
|
||||
await expect(canary).not.toContainText("Release bundle");
|
||||
await expect(page.getByTestId("release-channel-option-canary-frontend-release")).toContainText("c0ffee000000");
|
||||
await expect(page.getByTestId("release-channel-option-canary-frontend-release")).toContainText(
|
||||
/May 19, 2026|19 May 2026/
|
||||
|
||||
Reference in New Issue
Block a user