diff --git a/packages/core/src/renderer/components/+namespaces/__snapshots__/namespace-tree-view.test.tsx.snap b/packages/core/src/renderer/components/+namespaces/__snapshots__/namespace-tree-view.test.tsx.snap
new file mode 100644
index 0000000000..79c7b4691d
--- /dev/null
+++ b/packages/core/src/renderer/components/+namespaces/__snapshots__/namespace-tree-view.test.tsx.snap
@@ -0,0 +1,61 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` once the subscribe resolves renders null with regular namespace 1`] = `
+
+
+
+`;
+
+exports[` once the subscribe resolves renders one namespace without children 1`] = `
+
+
+
+`;
diff --git a/packages/core/src/renderer/components/+namespaces/namespace-tree-view.test.tsx b/packages/core/src/renderer/components/+namespaces/namespace-tree-view.test.tsx
new file mode 100644
index 0000000000..c1ddba6360
--- /dev/null
+++ b/packages/core/src/renderer/components/+namespaces/namespace-tree-view.test.tsx
@@ -0,0 +1,127 @@
+import type { AsyncFnMock } from "@async-fn/jest";
+import asyncFn from "@async-fn/jest";
+import type { DiContainer } from "@ogre-tools/injectable";
+import React from "react";
+import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
+import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
+import type { Fetch } from "../../../common/fetch/fetch.injectable";
+import fetchInjectable from "../../../common/fetch/fetch.injectable";
+import { Namespace } from "../../../common/k8s-api/endpoints";
+import { createMockResponseFromString } from "../../../test-utils/mock-responses";
+import hostedClusterInjectable from "../../cluster-frame-context/hosted-cluster.injectable";
+import createClusterInjectable from "../../cluster/create-cluster.injectable";
+import { getDiForUnitTesting } from "../../getDiForUnitTesting";
+import subscribeStoresInjectable from "../../kube-watch-api/subscribe-stores.injectable";
+import storesAndApisCanBeCreatedInjectable from "../../stores-apis-can-be-created.injectable";
+import { type Disposer, disposer } from "../../utils";
+import type { DiRender } from "../test-utils/renderFor";
+import { renderFor } from "../test-utils/renderFor";
+import { NamespaceTreeView } from "./namespace-tree-view";
+import type { NamespaceStore } from "./store";
+import namespaceStoreInjectable from "./store.injectable";
+
+function createNamespace(name: string): Namespace {
+ return new Namespace({
+ apiVersion: "v1",
+ kind: "Namespace",
+ metadata: {
+ name,
+ resourceVersion: "1",
+ selfLink: `/api/v1/namespaces/${name}`,
+ uid: `${name}-1`,
+ },
+ });
+}
+
+describe("", () => {
+ let di: DiContainer;
+ let render: DiRender;
+ let namespaceStore: NamespaceStore;
+ let fetchMock: AsyncFnMock;
+ let cleanup: Disposer;
+
+ beforeEach(async () => {
+ di = getDiForUnitTesting({ doGeneralOverrides: true });
+ di.unoverride(subscribeStoresInjectable);
+
+ di.override(directoryForUserDataInjectable, () => "/some-user-store-path");
+ di.override(directoryForKubeConfigsInjectable, () => "/some-kube-configs");
+ di.override(storesAndApisCanBeCreatedInjectable, () => true);
+
+ fetchMock = asyncFn();
+ di.override(fetchInjectable, () => fetchMock);
+
+ const createCluster = di.inject(createClusterInjectable);
+
+ di.override(hostedClusterInjectable, () => createCluster({
+ contextName: "some-context-name",
+ id: "some-cluster-id",
+ kubeConfigPath: "/some-path-to-a-kubeconfig",
+ }, {
+ clusterServerUrl: "https://localhost:8080",
+ }));
+
+ namespaceStore = di.inject(namespaceStoreInjectable);
+
+ const subscribeStores = di.inject(subscribeStoresInjectable);
+
+ cleanup = disposer(subscribeStores([namespaceStore]));
+ render = renderFor(di);
+ });
+
+ afterEach(() => {
+ cleanup();
+ });
+
+ describe("once the subscribe resolves", () => {
+ beforeEach(async () => {
+ await fetchMock.resolveSpecific([
+ "https://127.0.0.1:12345/api-kube/api/v1/namespaces",
+ ], createMockResponseFromString("https://127.0.0.1:12345/api-kube/api/v1/namespaces", JSON.stringify({
+ apiVersion: "v1",
+ kind: "NamespaceList",
+ metadata: {},
+ items: [
+ createNamespace("test-1"),
+ createNamespace("test-2"),
+ createNamespace("test-3"),
+ createNamespace("test-4"),
+ createNamespace("test-5"),
+ createNamespace("test-6"),
+ createNamespace("test-7"),
+ createNamespace("test-8"),
+ createNamespace("test-9"),
+ createNamespace("test-10"),
+ createNamespace("test-11"),
+ createNamespace("test-12"),
+ createNamespace("test-13"),
+ ],
+ })));
+ });
+
+ it("renders null with regular namespace", () => {
+ const result = render();
+
+ expect(result.baseElement).toMatchSnapshot();
+ });
+
+ it("renders one namespace without children", () => {
+ const ns = new Namespace({
+ apiVersion: "v1",
+ kind: "Namespace",
+ metadata: {
+ name: "acme-group",
+ resourceVersion: "1",
+ selfLink: `/api/v1/namespaces/acme-group`,
+ uid: `acme-group-1`,
+ labels: {
+ "hnc.x-k8s.io/included-namespace": "true",
+ }
+ },
+ });
+ const result = render();
+
+ expect(result.baseElement).toMatchSnapshot();
+ });
+ });
+});
\ No newline at end of file