diff --git a/dashboard/client/components/dock/dock.tsx b/dashboard/client/components/dock/dock.tsx index ff47c3f727..d384c36608 100644 --- a/dashboard/client/components/dock/dock.tsx +++ b/dashboard/client/components/dock/dock.tsx @@ -119,12 +119,12 @@ export class Dock extends React.Component { />
- New tab }} closeOnScroll={false}> - createTerminalTab()}> + New tab }} closeOnScroll={false}> + createTerminalTab()}> Terminal session - createResourceTab()}> + createResourceTab()}> Create resource diff --git a/dashboard/client/components/layout/sidebar.tsx b/dashboard/client/components/layout/sidebar.tsx index 5cd77c6746..db8e53836e 100644 --- a/dashboard/client/components/layout/sidebar.tsx +++ b/dashboard/client/components/layout/sidebar.tsx @@ -226,7 +226,7 @@ class SidebarNavItem extends React.Component { } render() { - const { isHidden, subMenus = [], icon, text, url, children, className } = this.props; + const { id, isHidden, subMenus = [], icon, text, url, children, className } = this.props; if (isHidden) { return null; } @@ -234,7 +234,7 @@ class SidebarNavItem extends React.Component { if (extendedView) { const isActive = this.isActive(); return ( -
+
{icon} {text} diff --git a/spec/integration/specs/app_spec.ts b/spec/integration/specs/app_spec.ts index 414c3288bd..052b3b5477 100644 --- a/spec/integration/specs/app_spec.ts +++ b/spec/integration/specs/app_spec.ts @@ -13,6 +13,22 @@ describe("app start", () => { await app.client.waitUntilTextExists("h1", "Welcome") } + const addMinikubeCluster = async (app: Application) => { + await app.client.click("a#add-cluster") + await app.client.waitUntilTextExists("legend", "Choose config:") + await app.client.selectByVisibleText("select#kubecontext-select", "minikube (new)") + await app.client.click("button.btn-primary") + } + + const waitForWebview = async (app: Application) => { + let windowCount = await app.client.getWindowCount() + // wait for webview to appear on window count + while (windowCount == 1) { + windowCount = await app.client.getWindowCount() + } + await app.client.windowByIndex(windowCount - 1) + } + beforeEach(async () => { app = util.setup() await app.start() @@ -32,22 +48,58 @@ describe("app start", () => { return } await clickWhatsNew(app) - await app.client.click("a#add-cluster") - await app.client.waitUntilTextExists("legend", "Choose config:") - await app.client.selectByVisibleText("select#kubecontext-select", "minikube (new)") - await app.client.click("button.btn-primary") + await addMinikubeCluster(app) await app.client.waitUntilTextExists("pre.auth-output", "Authentication proxy started") - let windowCount = await app.client.getWindowCount() - // wait for webview to appear on window count - while (windowCount == 1) { - windowCount = await app.client.getWindowCount() - } - await app.client.windowByIndex(windowCount - 1) + await waitForWebview(app) await app.client.waitUntilTextExists("span.link-text", "Cluster") await app.client.click('a[href="/nodes"]') await app.client.waitUntilTextExists("div.TableCell", "minikube") }) + it('allows to create a pod', async () => { + const status = spawnSync("minikube status", {shell: true}) + if (status.status !== 0) { + console.warn("minikube not running, skipping test") + return + } + await clickWhatsNew(app) + await addMinikubeCluster(app) + await app.client.waitUntilTextExists("pre.auth-output", "Authentication proxy started") + await waitForWebview(app) + + await app.client.waitUntilTextExists("span.link-text", "Cluster") + await app.client.click(".sidebar-nav #workloads span.link-text") + await app.client.waitUntilTextExists('a[href="/pods"]', "Pods") + await app.client.click('a[href="/pods"]') + await app.client.waitUntilTextExists("div.TableCell", "kube-apiserver-minikube") + await app.client.click('.Icon.new-dock-tab') + await app.client.waitUntilTextExists("li.MenuItem.create-resource-tab", "Create resource") + await app.client.click("li.MenuItem.create-resource-tab") + await app.client.waitForVisible(".CreateResource div.ace_content") + // Write deployment manifest to editor + await app.client.keys("apiVersion: apps/v1\n") + await app.client.keys("kind: Deployment\n") + await app.client.keys("metadata:\n") + await app.client.keys(" name: nginx-deployment\n") + await app.client.keys("\uE003spec:\n") + await app.client.keys(" selector:\n") + await app.client.keys(" matchLabels:\n") + await app.client.keys(" app: nginx\n") + await app.client.keys("\uE003\uE003template:\n") + await app.client.keys(" metadata:\n") + await app.client.keys(" labels:\n") + await app.client.keys(" app: nginx\n") + await app.client.keys("\uE003\uE003spec:\n") + await app.client.keys(" containers:\n") + await app.client.keys("- name: nginx\n") + await app.client.keys(" image: nginx:alpine\n") + // Create deployent + await app.client.waitForEnabled("button.Button=Create & Close") + await app.client.click("button.Button=Create & Close") + // Wait until first bits of pod appears on dashboard + await app.client.waitForExist(".name*=nginx-deployment-") + }) + afterEach(async () => { if (app && app.isRunning()) { return util.tearDown(app)