Yay, it's green! Clean things up a bit.

This commit is contained in:
Winston Liu
2019-05-25 20:50:27 -04:00
parent 50e8c97db4
commit e9ba8fdc05
2 changed files with 42 additions and 69 deletions

View File

@@ -1,10 +1,8 @@
const path = require('path')
const http = require('http')
const temp = require('temp').track()
// const os = require('os')
const remote = require('remote')
// const async = require('async')
const {map, once} = require('underscore-plus')
const {once} = require('underscore-plus')
const {spawn} = require('child_process')
const webdriverio = require('../../../script/node_modules/webdriverio')
@@ -15,11 +13,9 @@ const ChromedriverPort = 9515
const ChromedriverURLBase = '/wd/hub'
const ChromedriverStatusURL = `http://localhost:${ChromedriverPort}${ChromedriverURLBase}/status`
let userDataDir = null
const chromeDriverUp = done => {
const checkStatus = () =>
http.get(ChromedriverStatusURL, function(response) {
http.get(ChromedriverStatusURL, response => {
if (response.statusCode === 200) {
done()
} else {
@@ -38,30 +34,25 @@ const chromeDriverDown = done => {
}
const buildAtomClient = async (args, env) => {
userDataDir = temp.mkdirSync('atom-user-data-dir')
let client
try {
client = await webdriverio.remote({
host: 'localhost',
port: ChromedriverPort,
capabilities: {
browserName: 'atom',
chromeOptions: {
binary: AtomLauncherPath,
args: [
`atom-path=${AtomPath}`,
`atom-args=${args.join(' ')}`,
`atom-env=${map(env, (value, key) => `${key}=${value}`).join(' ')}`,
'dev',
'safe',
`user-data-dir=${userDataDir}`
]
}
const userDataDir = temp.mkdirSync('atom-user-data-dir')
const client = await webdriverio.remote({
host: 'localhost',
port: ChromedriverPort,
capabilities: {
browserName: 'atom',
chromeOptions: {
binary: AtomLauncherPath,
args: [
`atom-path=${AtomPath}`,
`atom-args=${args.join(' ')}`,
`atom-env=${Object.entries(env).map(([key, value]) => `${key}=${value}`).join(' ')}`,
'dev',
'safe',
`user-data-dir=${userDataDir}`
]
}
})
} catch (error) {
console.log(error)
}
}
})
client.addCommand('waitForPaneItemCount', async function (count, timeout) {
await this.waitUntil(() => this.execute(() => atom.workspace.getActivePane().getItems().length), timeout)
@@ -82,7 +73,7 @@ const buildAtomClient = async (args, env) => {
}
module.exports = function(args, env, fn) {
let [chromedriver, chromedriverLogs, chromedriverExit] = []
let chromedriver, chromedriverLogs, chromedriverExit
runs(() => {
chromedriver = spawn(ChromedriverPath, [
@@ -99,9 +90,7 @@ module.exports = function(args, env, fn) {
errorCode = code
}
})
chromedriver.stdout.on('data', log => console.log(log.toString()))
chromedriver.stderr.on('data', log => console.log(log.toString()))
// chromedriver.stderr.on('data', log => chromedriverLogs.push(log.toString()))
chromedriver.stderr.on('data', log => chromedriverLogs.push(log.toString()))
chromedriver.stderr.on('close', () => resolve(errorCode))
})
})
@@ -109,61 +98,56 @@ module.exports = function(args, env, fn) {
waitsFor('webdriver to start', chromeDriverUp, 15000)
waitsFor('tests to run', async done => {
const client = await buildAtomClient(args, env)
let client
try {
await buildAtomClient(args, env)
} catch (error) {
jasmine.getEnv().currentSpec.fail(`Unable to build Atom client.\n${error}`)
finish()
return
}
const finish = once(async () => {
await client.deleteSession()
chromedriver.kill()
console.log('>>> Waiting for exit code')
const errorCode = await chromedriverExit
if (errorCode != null) {
jasmine.getEnv().currentSpec.fail(`\
Chromedriver exited with code ${errorCode}.
Logs:\n${chromedriverLogs.join('\n')}\
`
)
jasmine.getEnv().currentSpec.fail(`Chromedriver exited with code ${errorCode}.
Logs:\n${chromedriverLogs.join('\n')}`)
}
done()
})
// client.on('error', err => {
// jasmine.getEnv().currentSpec.fail(new Error(__guard__(__guard__(err.response != null ? err.response.body : undefined, x1 => x1.value), x => x.message)))
// finish()
// })
console.log('>>> Waiting for window to exist')
try {
await client.waitUntil(async function () {
const handles = await this.getWindowHandles()
return handles.length > 0
}, 10000)
} catch (error) {
console.log(error)
jasmine.getEnv().currentSpec.fail(`Unable to locate windows.\n\n${error}`)
finish()
return
}
console.log('>>> Waiting for workspace to exist')
try {
const workspaceElement = await client.$('atom-workspace')
await workspaceElement.waitForExist(10000)
} catch (error) {
console.log(error)
jasmine.getEnv().currentSpec.fail(`Unable to find workspace element.\n\n${error}`)
finish()
return
}
console.log('>>> Waiting for test to run')
try {
await fn(client)
} catch (error) {
console.log('!!!!!!!!!')
console.log(error)
jasmine.getEnv().currentSpec.fail(error)
finish()
return
}
finish()
}
, 30000)
}, 30000)
waitsFor('webdriver to stop', chromeDriverDown, 15000)
}
// function __guard__(value, transform) {
// return (typeof value !== 'undefined' && value !== null) ? transform(value) : undefined
// }

View File

@@ -32,38 +32,27 @@ fdescribe('Smoke Test', () => {
fs.writeFileSync(filePath, '', {encoding: 'utf8'})
runAtom([tempDirPath], {ATOM_HOME: atomHome}, async client => {
console.log('>>> Waiting for root directories')
const roots = await client.treeViewRootDirectories()
expect(roots).toEqual([tempDirPath])
console.log('>>> Waiting for editor to open')
await client.execute(async filePath => await atom.workspace.open(filePath), filePath)
console.log('>>> Waiting for editor to exist')
const textEditorElement = await client.$('atom-text-editor')
await textEditorElement.waitForExist(5000)
console.log('>>> Waiting for there to be one pane item')
await client.waitForPaneItemCount(1, 1000)
console.log('>>> Waiting to click text editor')
await textEditorElement.click()
console.log('>>> Waiting for closest element')
const closestElement = await client.execute(() => document.activeElement.closest('atom-text-editor'))
expect(closestElement).not.toBeNull()
console.log('>>> Waiting for text to be inserted')
await client.keys('Hello!')
console.log('>>> Waiting for text')
const text = await client.execute(() => atom.workspace.getActiveTextEditor().getText())
expect(text).toBe('Hello!')
console.log('>>> Waiting to delete line')
await client.dispatchCommand('editor:delete-line')
console.log('>>> Done!')
})
})
})