));
diff --git a/web/src/components/product/ProductRegistrationAlert.test.tsx b/web/src/components/product/ProductRegistrationAlert.test.tsx
deleted file mode 100644
index ed09292b7e..0000000000
--- a/web/src/components/product/ProductRegistrationAlert.test.tsx
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) [2024-2026] SUSE LLC
- *
- * All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, contact SUSE LLC.
- *
- * To contact SUSE LLC about this file by physical or electronic mail, you may
- * find current contact information at www.suse.com.
- */
-
-import React from "react";
-import { screen } from "@testing-library/react";
-import { installerRender, mockRoutes } from "~/test-utils";
-import { useSystem } from "~/hooks/model/system";
-import { useIssues } from "~/hooks/model/issue";
-import { useProductInfo } from "~/hooks/model/config/product";
-import { Issue } from "~/model/issue";
-import { System } from "~/model/system/network";
-import { Product } from "~/types/software";
-import { PRODUCT, REGISTRATION, ROOT } from "~/routes/paths";
-import ProductRegistrationAlert from "./ProductRegistrationAlert";
-
-const tw: Product = {
- id: "Tumbleweed",
- name: "openSUSE Tumbleweed",
- registration: false,
-};
-
-const sle: Product = {
- id: "sle",
- name: "SLE",
- registration: true,
-};
-
-const network: System = {
- connections: [],
- devices: [],
- state: {
- connectivity: true,
- copyNetwork: true,
- networkingEnabled: true,
- wirelessEnabled: true,
- },
- accessPoints: [],
-};
-
-const mockSelectedProduct: jest.Mock = jest.fn();
-const mockIssues: jest.Mock = jest.fn();
-
-jest.mock("~/hooks/model/system", () => ({
- ...jest.requireActual("~/hooks/model/system"),
- useSystem: (): ReturnType => ({ products: [tw, sle], network }),
-}));
-
-jest.mock("~/hooks/model/config/product", () => ({
- ...jest.requireActual("~/hooks/model/config/product"),
- useProductInfo: (): ReturnType => mockSelectedProduct(),
-}));
-
-jest.mock("~/hooks/model/issue", () => ({
- ...jest.requireActual("~/hooks/model/issue"),
- useIssues: (): ReturnType => mockIssues(),
-}));
-
-const registrationIssue: Issue = {
- description: "Product must be registered",
- details: "",
- class: "missing_registration",
- scope: "storage",
-};
-
-const rendersNothingInSomePaths = () => {
- describe.each([
- ["login", ROOT.login],
- ["product selection", PRODUCT.changeProduct],
- ["product selection progress", PRODUCT.progress],
- ["installation progress", ROOT.installationProgress],
- ["installation finished", ROOT.installationFinished],
- ])(`but at %s path`, (_, path) => {
- beforeEach(() => {
- mockRoutes(path);
- });
-
- it("renders nothing", () => {
- const { container } = installerRender();
- expect(container).toBeEmptyDOMElement();
- });
- });
-};
-
-describe("ProductRegistrationAlert", () => {
- describe("when the registration is missing", () => {
- beforeEach(() => {
- mockSelectedProduct.mockReturnValue(sle);
- mockIssues.mockReturnValue([registrationIssue]);
- });
-
- rendersNothingInSomePaths();
-
- it("renders an alert warning about registration required", () => {
- installerRender();
- screen.getByRole("heading", {
- name: /Warning alert:.*must be registered/,
- });
- const link = screen.getByRole("link");
- expect(link).toHaveAttribute("href", REGISTRATION.root);
- });
-
- describe("but at registration path already", () => {
- beforeEach(() => {
- mockRoutes(REGISTRATION.root);
- });
-
- it("does not render the link to registration", () => {
- installerRender();
- screen.getByRole("heading", {
- name: /Warning alert:.*must be registered/,
- });
- expect(screen.queryAllByRole("link")).toEqual([]);
- });
- });
- });
-
- describe("when the registration is not needed", () => {
- beforeEach(() => {
- mockSelectedProduct.mockReturnValue(tw);
- mockIssues.mockReturnValue([]);
- });
-
- it("renders nothing", () => {
- const { container } = installerRender();
- expect(container).toBeEmptyDOMElement();
- });
- });
-});
diff --git a/web/src/components/product/ProductRegistrationAlert.tsx b/web/src/components/product/ProductRegistrationAlert.tsx
deleted file mode 100644
index d3aa5bfc81..0000000000
--- a/web/src/components/product/ProductRegistrationAlert.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) [2023-2025] SUSE LLC
- *
- * All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, contact SUSE LLC.
- *
- * To contact SUSE LLC about this file by physical or electronic mail, you may
- * find current contact information at www.suse.com.
- */
-
-import React from "react";
-import { Alert } from "@patternfly/react-core";
-import { useLocation } from "react-router";
-import { Link } from "~/components/core";
-import { REGISTRATION, SIDE_PATHS } from "~/routes/paths";
-import { _ } from "~/i18n";
-import { sprintf } from "sprintf-js";
-import { useIssues } from "~/hooks/model/issue";
-import { useProductInfo } from "~/hooks/model/config/product";
-
-const LinkToRegistration = ({ text }: { text: string }) => {
- const location = useLocation();
-
- if (location.pathname === REGISTRATION.root) return text;
-
- return (
-
- {text}
-
- );
-};
-
-export default function ProductRegistrationAlert() {
- const location = useLocation();
- const product = useProductInfo();
- // FIXME: what scope reports these issues with the new API?
- const issues = useIssues("product");
- const registrationRequired = issues?.find((i) => i.class === "missing_registration");
-
- // NOTE: it shouldn't be mounted in these paths, but let's prevent rendering
- // if so just in case.
- if (SIDE_PATHS.includes(location.pathname)) return;
- if (!registrationRequired) return;
-
- const [textStart, text, textEnd] = sprintf(_("%s [must be registered]."), product.name).split(
- /[[\]]/,
- );
-
- return (
-
- {textStart}
-
- {textEnd}
- >
- }
- />
- );
-}
diff --git a/web/src/components/product/ProductRegistrationPage.test.tsx b/web/src/components/product/ProductRegistrationPage.test.tsx
index 43fae52ada..f9b0163ef6 100644
--- a/web/src/components/product/ProductRegistrationPage.test.tsx
+++ b/web/src/components/product/ProductRegistrationPage.test.tsx
@@ -46,10 +46,6 @@ let addonInfoMock: AddonInfo[] = [];
let registeredAddonInfoMock: RegisteredAddonInfo[] = [];
const registerMutationMock = jest.fn();
-jest.mock("~/components/product/ProductRegistrationAlert", () => () => (
-