diff --git a/integration/__tests__/app.tests.ts b/integration/__tests__/app.tests.ts index 8845ae91a8..965ea928d7 100644 --- a/integration/__tests__/app.tests.ts +++ b/integration/__tests__/app.tests.ts @@ -55,7 +55,7 @@ describe("Lens integration tests", () => { describe("preferences page", () => { it('shows "preferences"', async () => { - let appName: string = process.platform === "darwin" ? "Lens" : "File" + const appName: string = process.platform === "darwin" ? "Lens" : "File" await app.electron.ipcRenderer.send('test-menu-item-click', appName, "Preferences") await app.client.waitUntilTextExists("h2", "Preferences") }) @@ -73,6 +73,41 @@ describe("Lens integration tests", () => { }) }) + describe("workspaces", () => { + beforeAll(appStart, 20000) + + afterAll(async () => { + if (app && app.isRunning()) { + return util.tearDown(app) + } + }) + + it('switches between workspaces', async () => { + await clickWhatsNew(app) + await app.client.click('#current-workspace .Icon') + await app.client.click('a[href="/workspaces"]') + await app.client.click('.Workspaces button.Button') + await app.client.keys("test-workspace") + await app.client.click('.Workspaces .Input.description input') + await app.client.keys("test description") + await app.client.click('.Workspaces .workspace.editing .Icon') + await app.client.waitUntilTextExists(".workspace .name a", "test-workspace") + await addMinikubeCluster(app) + await app.client.waitForExist(`iframe[name="minikube"]`) + await app.client.waitForVisible(".ClustersMenu .ClusterIcon.active") + + // Go to test-workspace + await app.client.click('#current-workspace .Icon') + await app.client.click('.WorkspaceMenu li[title="test description"]') + await addMinikubeCluster(app) + + // Back to default one + await app.client.click('#current-workspace .Icon') + await app.client.click('.WorkspaceMenu > li:first-of-type') + await app.client.waitForVisible(".ClustersMenu .ClusterIcon.active") + }) + }) + const minikubeReady = (): boolean => { // determine if minikube is running let status = spawnSync("minikube status", { shell: true }) diff --git a/src/common/__tests__/cluster-store.test.ts b/src/common/__tests__/cluster-store.test.ts index 8c911298cc..49918761b6 100644 --- a/src/common/__tests__/cluster-store.test.ts +++ b/src/common/__tests__/cluster-store.test.ts @@ -65,6 +65,7 @@ describe("empty config", () => { it("sets active cluster", () => { clusterStore.setActive("foo"); expect(clusterStore.active.id).toBe("foo"); + expect(workspaceStore.currentWorkspace.lastActiveClusterId).toBe("foo"); }) }) diff --git a/src/common/cluster-store.ts b/src/common/cluster-store.ts index a2dcccd338..7517259a99 100644 --- a/src/common/cluster-store.ts +++ b/src/common/cluster-store.ts @@ -1,4 +1,4 @@ -import { WorkspaceId, workspaceStore } from "./workspace-store"; +import { workspaceStore } from "./workspace-store"; import path from "path"; import { app, ipcRenderer, remote, webFrame } from "electron"; import { unlink } from "fs-extra"; @@ -13,6 +13,7 @@ import { saveToAppFiles } from "./utils/saveToAppFiles"; import { KubeConfig } from "@kubernetes/client-node"; import _ from "lodash"; import move from "array-move"; +import type { WorkspaceId } from "./workspace-store"; export interface ClusterIconUpload { clusterId: string;