Integration tests using spectron (#410)

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen authored and GitHub committed 2020-06-09 13:18:24 +03:00
1 parent af24da976b
commit deb4bf2f7b
9 files changed
+513 -29

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
import { Application } from "spectron";
let appPath = ""
switch(process.platform) {
case "win32":
appPath = "./dist/win-unpacked/Lens.exe"
break
case "linux":
appPath = "./dist/linux-unpacked/kontena-lens"
break
case "darwin":
appPath = "./dist/mac/LensDev.app/Contents/MacOS/LensDev"
break
}
export function setup() {
return new Application({
// path to electron app
args: [],
path: appPath,
startTimeout: 30000,
waitTimeout: 30000,
})
}
export async function tearDown(app: Application) {
const pid = app.mainProcess.pid
await app.stop()
try {
process.kill(pid, 0);
} catch(e) {
return
}
}
+56
View File
@@ -0,0 +1,56 @@
import { Application } from "spectron"
import * as util from "../helpers/utils"
import { spawnSync } from "child_process"
import { stat } from "fs"
jest.setTimeout(20000)
describe("app start", () => {
let app: Application
const clickWhatsNew = async (app: Application) => {
await app.client.waitUntilTextExists("h1", "What's new")
await app.client.click("button.btn-primary")
await app.client.waitUntilTextExists("h1", "Welcome")
}
beforeEach(async () => {
app = util.setup()
await app.start()
const windowCount = await app.client.getWindowCount()
await app.client.windowByIndex(windowCount - 1)
await app.client.waitUntilWindowLoaded()
}, 20000)
it('shows "whats new"', async () => {
await clickWhatsNew(app)
})
it('allows to add a cluster', async () => {
const status = spawnSync("minikube status", {shell: true})
if (status.status !== 0) {
console.warn("minikube not running, skipping test")
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 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 app.client.waitUntilTextExists("span.link-text", "Cluster")
await app.client.click('a[href="/nodes"]')
await app.client.waitUntilTextExists("div.TableCell", "minikube")
})
afterEach(async () => {
if (app && app.isRunning()) {
return util.tearDown(app)
}
})
})