diff --git a/web/src/lib/core/Navbar/navGroups.spec.ts b/web/src/lib/core/Navbar/navGroups.spec.ts index d92d0c2a4e..47ae946be3 100644 --- a/web/src/lib/core/Navbar/navGroups.spec.ts +++ b/web/src/lib/core/Navbar/navGroups.spec.ts @@ -868,10 +868,17 @@ describe("GATE_PREDICATES", () => { expect(GATE_PREDICATES.downtimes(ctx({ isEnterprise: true }))).toBe(false); }); - it("marks Downtimes and Alert Calibration as Beta in the Reliability flyout, and nothing else there", () => { + it("marks Downtimes, Alert Calibration and every On-Call entry as Beta in the Reliability flyout, and nothing else there", () => { const reliability = NAV_GROUPS.find((g) => g.children.some((c) => c.name === "downtimes"))!; const beta = reliability.children.filter((c) => c.beta).map((c) => c.name); - expect(beta).toEqual(["downtimes", "alertCalibration"]); + expect(beta).toEqual([ + "downtimes", + "alertCalibration", + "onCallResponses", + "onCallTeams", + "onCallRouting", + "onCallMine", + ]); }); it("puts Downtimes after Incidents when the rail carries a downtimes item", () => { diff --git a/web/src/lib/core/Navbar/navGroups.ts b/web/src/lib/core/Navbar/navGroups.ts index 6da6dc0611..8ca4300055 100644 --- a/web/src/lib/core/Navbar/navGroups.ts +++ b/web/src/lib/core/Navbar/navGroups.ts @@ -237,6 +237,7 @@ export const NAV_GROUPS: NavGroupDef[] = [ name: "onCallResponses", categoryKey: "menu.onCall", gate: "oncall", + beta: true, }, { titleKey: "oncall.teams", @@ -244,6 +245,7 @@ export const NAV_GROUPS: NavGroupDef[] = [ name: "onCallTeams", categoryKey: "menu.onCall", gate: "oncall", + beta: true, }, { titleKey: "oncall.routingNav", @@ -251,6 +253,7 @@ export const NAV_GROUPS: NavGroupDef[] = [ name: "onCallRouting", categoryKey: "menu.onCall", gate: "oncall", + beta: true, }, // Same icon as the page's own header, so the menu and the page read as one place. { @@ -259,6 +262,7 @@ export const NAV_GROUPS: NavGroupDef[] = [ name: "onCallMine", categoryKey: "menu.onCall", gate: "oncall", + beta: true, }, // Where external alerts (Grafana, Alertmanager, etc.) feed Incidents. // Gated on incidentList, not alertList: this only makes sense where diff --git a/web/src/views/OnCall/OnCallMine.spec.ts b/web/src/views/OnCall/OnCallMine.spec.ts index 993e60c189..544562d5fd 100644 --- a/web/src/views/OnCall/OnCallMine.spec.ts +++ b/web/src/views/OnCall/OnCallMine.spec.ts @@ -158,6 +158,17 @@ describe("OnCallMine", () => { service.resolvedSchedule.mockResolvedValue({ data: [] } as any); }); + /// Mounts the real page layout so the tag is proven to reach the rendered header. + it("tags the page title as Beta", async () => { + const wrapper = mount(OnCallMine, { + global: { plugins: [i18n, store], stubs: { ...stubs, OPageLayout: false } }, + }); + await flushPromises(); + const badge = wrapper.find('[data-test="beta-badge"]'); + expect(badge.exists()).toBe(true); + expect(badge.text()).toBe(String(i18n.global.t("common.beta"))); + }); + it("serves a revisit from cache", async () => { const first = render(); await flushPromises(); diff --git a/web/src/views/OnCall/OnCallMine.vue b/web/src/views/OnCall/OnCallMine.vue index a5a2fdcd63..33ddb5e7e7 100644 --- a/web/src/views/OnCall/OnCallMine.vue +++ b/web/src/views/OnCall/OnCallMine.vue @@ -23,6 +23,9 @@ along with this program. If not, see . icon="person" scroll > +