Add e2e Core tests to PR workflow (#2536)

Co-authored-by: David Marby <david@dmarby.se>
This commit is contained in:
Opender Singh 2020-08-25 08:40:40 +12:00 committed by GitHub
parent c3678d6e37
commit deaded4674
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 1163 additions and 178 deletions

View File

@ -11,6 +11,26 @@ on:
- synchronize
jobs:
Mac:
name: Test Mac
runs-on: macos-latest
steps:
- name: Checkout branch
uses: actions/checkout@v1
- name: Read Node version from .nvmrc
run: echo "##[set-output name=NVMRC;]$(cat .nvmrc)"
id: nvm
- uses: actions/setup-node@v1
with:
node-version: ${{ steps.nvm.outputs.NVMRC }}
- name: Bootstrap packages
run: npm run bootstrap
- name: Run tests
run: npm test
- name: Build core for smoke tests
run: npm run app-build:smoke:core
- name: Run core smoke tests
run: npm run test:smoke:core
Windows:
name: Test Windows
runs-on: windows-latest
@ -27,6 +47,10 @@ jobs:
run: npm run bootstrap
- name: Run tests
run: npm test
- name: Build core for smoke tests
run: npm run app-build:smoke:core
- name: Run core smoke tests
run: npm run test:smoke:core
Linux:
name: Test Linux
runs-on: ubuntu-latest
@ -43,3 +67,7 @@ jobs:
run: npm run bootstrap
- name: Run tests
run: npm test
- name: Build core for smoke tests
run: npm run app-build:smoke:core
- name: Run core smoke tests
run: npm run test:smoke:core

43
package-lock.json generated
View File

@ -5354,6 +5354,49 @@
}
}
},
"cross-env": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz",
"integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==",
"dev": true,
"requires": {
"cross-spawn": "^7.0.1"
},
"dependencies": {
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
}
},
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
"shebang-regex": "^3.0.0"
}
},
"shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
}
}
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",

View File

@ -24,7 +24,13 @@
"app-release": "npm run release --prefix packages/insomnia-app",
"storybook-start": "npm run storybook --prefix packages/insomnia-components",
"storybook-legacy-start": "npm run storybook --prefix packages/insomnia-app",
"preinstall": "node ./scripts/check-version.js"
"preinstall": "node ./scripts/check-version.js",
"app-build:smoke:core": "cross-env SMOKE_TEST=core npm run app-build",
"app-build:smoke:designer": "cross-env SMOKE_TEST=designer npm run app-build",
"test:smoke:core": "npm run test:build:core --prefix packages/insomnia-smoke-test",
"test:smoke:designer": "npm run test:build:designer --prefix packages/insomnia-smoke-test",
"test:smoke:package": "npm run test:package --prefix packages/insomnia-smoke-test"
},
"lint-staged": {
"{packages,plugins}/**/*.{js,json}": [
@ -48,6 +54,7 @@
"babel-loader": "^8.0.5",
"babel-plugin-inline-react-svg": "^1.1.0",
"babel-plugin-styled-components": "^1.10.6",
"cross-env": "^7.0.2",
"eslint": "^7.2.0",
"eslint-config-prettier": "^6.11.0",
"eslint-config-semistandard": "^15.0.0",

File diff suppressed because it is too large Load Diff

View File

@ -198,6 +198,7 @@
"prompt-run": "^1.4.5",
"react-hot-loader": "^4.8.3",
"source-map-loader": "^1.0.0",
"spectron": "^11.1.0",
"style-loader": "^0.23.1",
"url-loader": "^1.1.2",
"webpack": "^4.44.1",

View File

@ -7,18 +7,19 @@ const ncp = require('ncp').ncp;
const path = require('path');
const mkdirp = require('mkdirp');
const fs = require('fs');
const { getBuildContext } = require('./getBuildContext');
const { APP_ID_INSOMNIA, APP_ID_DESIGNER } = require('../config');
// Start build if ran from CLI
if (require.main === module) {
process.nextTick(async () => {
await module.exports.start();
await module.exports.start(false);
});
}
module.exports.start = async function(forcedVersion = null) {
const buildContext = getBuildContext();
if (!buildContext.version) {
module.exports.start = async function(forceFromGitRef) {
const buildContext = getBuildContext(forceFromGitRef);
if (!buildContext.smokeTest && !buildContext.version) {
console.log(`[build] Skipping build for ref "${buildContext.gitRef}"`);
process.exit(0);
}
@ -31,11 +32,11 @@ module.exports.start = async function(forcedVersion = null) {
// Configure APP_ID env based on what we detected
if (buildContext.app === 'designer') {
process.env.APP_ID = APP_ID_DESIGNER;
} else {
} else if (buildContext.app === 'core') {
process.env.APP_ID = APP_ID_INSOMNIA;
}
if (appConfig().version !== buildContext.version) {
if (!buildContext.smokeTest && appConfig().version !== buildContext.version) {
console.log(
`[build] App version mismatch with Git tag ${appConfig().version} != ${buildContext.version}`,
);
@ -47,7 +48,11 @@ module.exports.start = async function(forcedVersion = null) {
const configMain = require('../webpack/webpack.config.electron.babel');
const buildFolder = path.join('../build', appConfig().appId);
if (buildContext.smokeTest) {
console.log(`[build] Starting build to smoke test ${buildContext.app}`);
} else {
console.log(`[build] Starting build for ref "${buildContext.gitRef}"`);
}
console.log(`[build] npm: ${childProcess.spawnSync('npm', ['--version']).stdout}`.trim());
console.log(`[build] node: ${childProcess.spawnSync('node', ['--version']).stdout}`.trim());
@ -75,11 +80,7 @@ module.exports.start = async function(forcedVersion = null) {
await copyFiles(`../app/icons/${appConfig().appId}`, buildFolder);
// Generate necessary files needed by `electron-builder`
await generatePackageJson(
'../package.json',
path.join(buildFolder, 'package.json'),
forcedVersion,
);
await generatePackageJson('../package.json', path.join(buildFolder, 'package.json'));
// Install Node modules
console.log('[build] Installing dependencies');
@ -210,7 +211,7 @@ async function install(relDir) {
});
}
function generatePackageJson(relBasePkg, relOutPkg, forcedVersion) {
function generatePackageJson(relBasePkg, relOutPkg) {
// Read package.json's
const basePath = path.resolve(__dirname, relBasePkg);
const outPath = path.resolve(__dirname, relOutPkg);
@ -220,7 +221,7 @@ function generatePackageJson(relBasePkg, relOutPkg, forcedVersion) {
const app = appConfig();
const appPkg = {
name: app.name,
version: forcedVersion || app.version,
version: app.version,
productName: app.productName,
longName: app.longName,
description: basePkg.description,
@ -257,31 +258,3 @@ function generatePackageJson(relBasePkg, relOutPkg, forcedVersion) {
fs.writeFileSync(outPath, JSON.stringify(appPkg, null, 2));
}
// Only release if we're building a tag that ends in a version number
function getBuildContext() {
const {
GIT_TAG,
GITHUB_REF,
GITHUB_SHA,
TRAVIS_TAG,
TRAVIS_COMMIT,
TRAVIS_CURRENT_BRANCH,
} = process.env;
const gitCommit = GITHUB_SHA || TRAVIS_COMMIT;
const gitRef = GIT_TAG || GITHUB_REF || TRAVIS_TAG || TRAVIS_CURRENT_BRANCH || '';
const tagMatch = gitRef.match(/(designer|core)@(\d{4}\.\d+\.\d+(-(alpha|beta)\.\d+)?)$/);
const app = tagMatch ? tagMatch[1] : null;
const version = tagMatch ? tagMatch[2] : null;
const channel = tagMatch ? tagMatch[4] : 'stable';
return {
app,
channel,
version,
gitRef,
gitCommit,
};
}

View File

@ -0,0 +1,48 @@
module.exports.getBuildContext = forceFromGitRef => {
if (forceFromGitRef) {
return fromGitRef();
}
return fromSmokeTest() || fromGitRef();
};
function fromSmokeTest() {
const { SMOKE_TEST } = process.env;
if (SMOKE_TEST) {
return {
smokeTest: true,
app: SMOKE_TEST,
version: '0.0.1',
};
}
return null;
}
function fromGitRef() {
const {
GIT_TAG,
GITHUB_REF,
GITHUB_SHA,
TRAVIS_TAG,
TRAVIS_COMMIT,
TRAVIS_CURRENT_BRANCH,
} = process.env;
const gitCommit = GITHUB_SHA || TRAVIS_COMMIT;
const gitRef = GIT_TAG || GITHUB_REF || TRAVIS_TAG || TRAVIS_CURRENT_BRANCH || '';
const tagMatch = gitRef.match(/(designer|core)@(\d{4}\.\d+\.\d+(-(alpha|beta)\.\d+)?)$/);
const app = tagMatch ? tagMatch[1] : null;
const version = tagMatch ? tagMatch[2] : null;
const channel = tagMatch ? tagMatch[4] : 'stable';
return {
app,
channel,
version,
gitRef,
gitCommit,
};
}

View File

@ -14,7 +14,7 @@ const PLATFORM_MAP = {
if (require.main === module) {
process.nextTick(async () => {
try {
await buildTask.start();
await buildTask.start(false);
await module.exports.start();
} catch (err) {
console.log('[package] ERROR:', err);

View File

@ -15,11 +15,11 @@ const octokit = new Octokit({
if (require.main === module) {
process.nextTick(async () => {
try {
const buildContext = await buildTask.start();
const buildContext = await buildTask.start(true);
await packageTask.start();
await start(buildContext.app, buildContext.version);
} catch (err) {
console.log('[package] ERROR:', err);
console.log('[release] ERROR:', err);
process.exit(1);
}
});

View File

@ -14,16 +14,16 @@
}
},
"@babel/core": {
"version": "7.11.1",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz",
"integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==",
"version": "7.11.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz",
"integrity": "sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/generator": "^7.11.0",
"@babel/generator": "^7.11.4",
"@babel/helper-module-transforms": "^7.11.0",
"@babel/helpers": "^7.10.4",
"@babel/parser": "^7.11.1",
"@babel/parser": "^7.11.4",
"@babel/template": "^7.10.4",
"@babel/traverse": "^7.11.0",
"@babel/types": "^7.11.0",
@ -46,9 +46,9 @@
}
},
"@babel/generator": {
"version": "7.11.0",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz",
"integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==",
"version": "7.11.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz",
"integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==",
"dev": true,
"requires": {
"@babel/types": "^7.11.0",
@ -244,9 +244,9 @@
}
},
"@babel/parser": {
"version": "7.11.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.3.tgz",
"integrity": "sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA==",
"version": "7.11.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz",
"integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==",
"dev": true
},
"@babel/plugin-syntax-async-generators": {
@ -454,13 +454,13 @@
}
},
"@jest/core": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/@jest/core/-/core-26.4.0.tgz",
"integrity": "sha512-mpXm4OjWQbz7qbzGIiSqvfNZ1FxX6ywWgLtdSD2luPORt5zKPtqcdDnX7L8RdfMaj1znDBgN2+gB094ZIr7vnA==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/@jest/core/-/core-26.4.2.tgz",
"integrity": "sha512-sDva7YkeNprxJfepOctzS8cAk9TOekldh+5FhVuXS40+94SHbiicRO1VV2tSoRtgIo+POs/Cdyf8p76vPTd6dg==",
"dev": true,
"requires": {
"@jest/console": "^26.3.0",
"@jest/reporters": "^26.4.0",
"@jest/reporters": "^26.4.1",
"@jest/test-result": "^26.3.0",
"@jest/transform": "^26.3.0",
"@jest/types": "^26.3.0",
@ -470,17 +470,17 @@
"exit": "^0.1.2",
"graceful-fs": "^4.2.4",
"jest-changed-files": "^26.3.0",
"jest-config": "^26.4.0",
"jest-config": "^26.4.2",
"jest-haste-map": "^26.3.0",
"jest-message-util": "^26.3.0",
"jest-regex-util": "^26.0.0",
"jest-resolve": "^26.4.0",
"jest-resolve-dependencies": "^26.4.0",
"jest-runner": "^26.4.0",
"jest-runtime": "^26.4.0",
"jest-snapshot": "^26.4.0",
"jest-resolve-dependencies": "^26.4.2",
"jest-runner": "^26.4.2",
"jest-runtime": "^26.4.2",
"jest-snapshot": "^26.4.2",
"jest-util": "^26.3.0",
"jest-validate": "^26.4.0",
"jest-validate": "^26.4.2",
"jest-watcher": "^26.3.0",
"micromatch": "^4.0.2",
"p-each-series": "^2.1.0",
@ -516,20 +516,20 @@
}
},
"@jest/globals": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.4.0.tgz",
"integrity": "sha512-QKwoVAeL9d0xaEM9ebPvfc+bolN04F+o3zM2jswGDBiiNjCogZ3LvOaqumRdDyz6kLmbx+UhgMBAVuLunbXZ2A==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.4.2.tgz",
"integrity": "sha512-Ot5ouAlehhHLRhc+sDz2/9bmNv9p5ZWZ9LE1pXGGTCXBasmi5jnYjlgYcYt03FBwLmZXCZ7GrL29c33/XRQiow==",
"dev": true,
"requires": {
"@jest/environment": "^26.3.0",
"@jest/types": "^26.3.0",
"expect": "^26.4.0"
"expect": "^26.4.2"
}
},
"@jest/reporters": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.4.0.tgz",
"integrity": "sha512-14OPAAuYhgRBSNxAocVluX6ksdMdK/EuP9NmtBXU9g1uKaVBrPnohn/CVm6iMot1a9iU8BCxa5715YRf8FEg/A==",
"version": "26.4.1",
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.4.1.tgz",
"integrity": "sha512-aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ==",
"dev": true,
"requires": {
"@bcoe/v8-coverage": "^0.2.3",
@ -551,7 +551,7 @@
"jest-resolve": "^26.4.0",
"jest-util": "^26.3.0",
"jest-worker": "^26.3.0",
"node-notifier": "^7.0.0",
"node-notifier": "^8.0.0",
"slash": "^3.0.0",
"source-map": "^0.6.0",
"string-length": "^4.0.1",
@ -583,16 +583,16 @@
}
},
"@jest/test-sequencer": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.4.0.tgz",
"integrity": "sha512-9Z7lCShS7vERp+DRwIVNH/6sHMWwJK1DPnGCpGeVLGJJWJ4Y08sQI3vIKdmKHu2KmwlUBpRM+BFf7NlVUkl5XA==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.4.2.tgz",
"integrity": "sha512-83DRD8N3M0tOhz9h0bn6Kl6dSp+US6DazuVF8J9m21WAp5x7CqSMaNycMP0aemC/SH/pDQQddbsfHRTBXVUgog==",
"dev": true,
"requires": {
"@jest/test-result": "^26.3.0",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^26.3.0",
"jest-runner": "^26.4.0",
"jest-runtime": "^26.4.0"
"jest-runner": "^26.4.2",
"jest-runtime": "^26.4.2"
}
},
"@jest/transform": {
@ -2103,15 +2103,15 @@
}
},
"expect": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/expect/-/expect-26.4.0.tgz",
"integrity": "sha512-dbYDJhFcqQsamlos6nEwAMe+ahdckJBk5fmw1DYGLQGabGSlUuT+Fm2jHYw5119zG3uIhP+lCQbjJhFEdZMJtg==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/expect/-/expect-26.4.2.tgz",
"integrity": "sha512-IlJ3X52Z0lDHm7gjEp+m76uX46ldH5VpqmU0006vqDju/285twh7zaWMRhs67VpQhBwjjMchk+p5aA0VkERCAA==",
"dev": true,
"requires": {
"@jest/types": "^26.3.0",
"ansi-styles": "^4.0.0",
"jest-get-type": "^26.3.0",
"jest-matcher-utils": "^26.4.0",
"jest-matcher-utils": "^26.4.2",
"jest-message-util": "^26.3.0",
"jest-regex-util": "^26.0.0"
}
@ -2941,23 +2941,23 @@
}
},
"jest": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest/-/jest-26.4.0.tgz",
"integrity": "sha512-lNCOS+ckRHE1wFyVtQClBmbsOVuH2GWUTJMDL3vunp9DXcah+V8vfvVVApngClcdoc3rgZpqOfCNKLjxjj2l4g==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest/-/jest-26.4.2.tgz",
"integrity": "sha512-LLCjPrUh98Ik8CzW8LLVnSCfLaiY+wbK53U7VxnFSX7Q+kWC4noVeDvGWIFw0Amfq1lq2VfGm7YHWSLBV62MJw==",
"dev": true,
"requires": {
"@jest/core": "^26.4.0",
"@jest/core": "^26.4.2",
"import-local": "^3.0.2",
"jest-cli": "^26.4.0"
"jest-cli": "^26.4.2"
},
"dependencies": {
"jest-cli": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.4.0.tgz",
"integrity": "sha512-kw2Pr3V2x9/WzSDGsbz/MJBNlCoPMxMudrIavft4bqRlv5tASjU51tyO+1Os1LdW2dAnLQZYsxFUZ8oWPyssGQ==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.4.2.tgz",
"integrity": "sha512-zb+lGd/SfrPvoRSC/0LWdaWCnscXc1mGYW//NP4/tmBvRPT3VntZ2jtKUONsRi59zc5JqmsSajA9ewJKFYp8Cw==",
"dev": true,
"requires": {
"@jest/core": "^26.4.0",
"@jest/core": "^26.4.2",
"@jest/test-result": "^26.3.0",
"@jest/types": "^26.3.0",
"chalk": "^4.0.0",
@ -2965,9 +2965,9 @@
"graceful-fs": "^4.2.4",
"import-local": "^3.0.2",
"is-ci": "^2.0.0",
"jest-config": "^26.4.0",
"jest-config": "^26.4.2",
"jest-util": "^26.3.0",
"jest-validate": "^26.4.0",
"jest-validate": "^26.4.2",
"prompts": "^2.0.1",
"yargs": "^15.3.1"
}
@ -3070,13 +3070,13 @@
}
},
"jest-config": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.4.0.tgz",
"integrity": "sha512-MxsvrBug8YY+C4QcUBtmgnHyFeW7w3Ouk/w9eplCDN8VJGVyBEZFe8Lxzfp2pSqh0Dqurqv8Oik2YkbekGUlxg==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.4.2.tgz",
"integrity": "sha512-QBf7YGLuToiM8PmTnJEdRxyYy3mHWLh24LJZKVdXZ2PNdizSe1B/E8bVm+HYcjbEzGuVXDv/di+EzdO/6Gq80A==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
"@jest/test-sequencer": "^26.4.0",
"@jest/test-sequencer": "^26.4.2",
"@jest/types": "^26.3.0",
"babel-jest": "^26.3.0",
"chalk": "^4.0.0",
@ -3086,25 +3086,25 @@
"jest-environment-jsdom": "^26.3.0",
"jest-environment-node": "^26.3.0",
"jest-get-type": "^26.3.0",
"jest-jasmine2": "^26.4.0",
"jest-jasmine2": "^26.4.2",
"jest-regex-util": "^26.0.0",
"jest-resolve": "^26.4.0",
"jest-util": "^26.3.0",
"jest-validate": "^26.4.0",
"jest-validate": "^26.4.2",
"micromatch": "^4.0.2",
"pretty-format": "^26.4.0"
"pretty-format": "^26.4.2"
}
},
"jest-diff": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.4.0.tgz",
"integrity": "sha512-wwC38HlOW+iTq6j5tkj/ZamHn6/nrdcEOc/fKaVILNtN2NLWGdkfRaHWwfNYr5ehaLvuoG2LfCZIcWByVj0gjg==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.4.2.tgz",
"integrity": "sha512-6T1XQY8U28WH0Z5rGpQ+VqZSZz8EN8rZcBtfvXaOkbwxIEeRre6qnuZQlbY1AJ4MKDxQF8EkrCvK+hL/VkyYLQ==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"diff-sequences": "^26.3.0",
"jest-get-type": "^26.3.0",
"pretty-format": "^26.4.0"
"pretty-format": "^26.4.2"
}
},
"jest-docblock": {
@ -3117,16 +3117,16 @@
}
},
"jest-each": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.4.0.tgz",
"integrity": "sha512-+cyBh1ehs6thVT/bsZVG+WwmRn2ix4Q4noS9yLZgM10yGWPW12/TDvwuOV2VZXn1gi09/ZwJKJWql6YW1C9zNw==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.4.2.tgz",
"integrity": "sha512-p15rt8r8cUcRY0Mvo1fpkOGYm7iI8S6ySxgIdfh3oOIv+gHwrHTy5VWCGOecWUhDsit4Nz8avJWdT07WLpbwDA==",
"dev": true,
"requires": {
"@jest/types": "^26.3.0",
"chalk": "^4.0.0",
"jest-get-type": "^26.3.0",
"jest-util": "^26.3.0",
"pretty-format": "^26.4.0"
"pretty-format": "^26.4.2"
}
},
"jest-environment-jsdom": {
@ -3187,9 +3187,9 @@
}
},
"jest-jasmine2": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.4.0.tgz",
"integrity": "sha512-cGBxwzDDKB09EPJ4pE69BMDv+2lO442IB1xQd+vL3cua2OKdeXQK6iDlQKoRX/iP0RgU5T8sn9yahLcx/+ox8Q==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz",
"integrity": "sha512-z7H4EpCldHN1J8fNgsja58QftxBSL+JcwZmaXIvV9WKIM+x49F4GLHu/+BQh2kzRKHAgaN/E82od+8rTOBPyPA==",
"dev": true,
"requires": {
"@babel/traverse": "^7.1.0",
@ -3200,38 +3200,38 @@
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"expect": "^26.4.0",
"expect": "^26.4.2",
"is-generator-fn": "^2.0.0",
"jest-each": "^26.4.0",
"jest-matcher-utils": "^26.4.0",
"jest-each": "^26.4.2",
"jest-matcher-utils": "^26.4.2",
"jest-message-util": "^26.3.0",
"jest-runtime": "^26.4.0",
"jest-snapshot": "^26.4.0",
"jest-runtime": "^26.4.2",
"jest-snapshot": "^26.4.2",
"jest-util": "^26.3.0",
"pretty-format": "^26.4.0",
"pretty-format": "^26.4.2",
"throat": "^5.0.0"
}
},
"jest-leak-detector": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.4.0.tgz",
"integrity": "sha512-7EXKKEKnAWUPyiVtGZzJflbPOtYUdlNoevNVOkAcPpdR8xWiYKPGNGA6sz25S+8YhZq3rmkQJYAh3/P0VnoRwA==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz",
"integrity": "sha512-akzGcxwxtE+9ZJZRW+M2o+nTNnmQZxrHJxX/HjgDaU5+PLmY1qnQPnMjgADPGCRPhB+Yawe1iij0REe+k/aHoA==",
"dev": true,
"requires": {
"jest-get-type": "^26.3.0",
"pretty-format": "^26.4.0"
"pretty-format": "^26.4.2"
}
},
"jest-matcher-utils": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.4.0.tgz",
"integrity": "sha512-u+xdCdq+F262DH+PutJKXLGr2H5P3DImdJCir51PGSfi3TtbLQ5tbzKaN8BkXbiTIU6ayuAYBWTlU1nyckVdzA==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.4.2.tgz",
"integrity": "sha512-KcbNqWfWUG24R7tu9WcAOKKdiXiXCbMvQYT6iodZ9k1f7065k0keUOW6XpJMMvah+hTfqkhJhRXmA3r3zMAg0Q==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"jest-diff": "^26.4.0",
"jest-diff": "^26.4.2",
"jest-get-type": "^26.3.0",
"pretty-format": "^26.4.0"
"pretty-format": "^26.4.2"
}
},
"jest-message-util": {
@ -3289,20 +3289,20 @@
}
},
"jest-resolve-dependencies": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.0.tgz",
"integrity": "sha512-hznK/hlrlhu8hwdbieRdHFKmcV83GW8t30libt/v6j1L3IEzb8iN21SaWzV8KRAAK4ijiU0kuge0wnHn+0rytQ==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.2.tgz",
"integrity": "sha512-ADHaOwqEcVc71uTfySzSowA/RdxUpCxhxa2FNLiin9vWLB1uLPad3we+JSSROq5+SrL9iYPdZZF8bdKM7XABTQ==",
"dev": true,
"requires": {
"@jest/types": "^26.3.0",
"jest-regex-util": "^26.0.0",
"jest-snapshot": "^26.4.0"
"jest-snapshot": "^26.4.2"
}
},
"jest-runner": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.4.0.tgz",
"integrity": "sha512-XF+tnUGolnPriu6Gg+HHWftspMjD5NkTV2mQppQnpZe39GcUangJ0al7aBGtA3GbVAcRd048DQiJPmsQRdugjw==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.4.2.tgz",
"integrity": "sha512-FgjDHeVknDjw1gRAYaoUoShe1K3XUuFMkIaXbdhEys+1O4bEJS8Avmn4lBwoMfL8O5oFTdWYKcf3tEJyyYyk8g==",
"dev": true,
"requires": {
"@jest/console": "^26.3.0",
@ -3314,13 +3314,13 @@
"emittery": "^0.7.1",
"exit": "^0.1.2",
"graceful-fs": "^4.2.4",
"jest-config": "^26.4.0",
"jest-config": "^26.4.2",
"jest-docblock": "^26.0.0",
"jest-haste-map": "^26.3.0",
"jest-leak-detector": "^26.4.0",
"jest-leak-detector": "^26.4.2",
"jest-message-util": "^26.3.0",
"jest-resolve": "^26.4.0",
"jest-runtime": "^26.4.0",
"jest-runtime": "^26.4.2",
"jest-util": "^26.3.0",
"jest-worker": "^26.3.0",
"source-map-support": "^0.5.6",
@ -3328,15 +3328,15 @@
}
},
"jest-runtime": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.4.0.tgz",
"integrity": "sha512-1fjZgGpkyQBUTo59Vi19I4IcsBwzY6uwVFNjUmR06iIi3XRErkY28yimi4IUDRrofQErqcDEw2n3DF9WmQ6vEg==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.4.2.tgz",
"integrity": "sha512-4Pe7Uk5a80FnbHwSOk7ojNCJvz3Ks2CNQWT5Z7MJo4tX0jb3V/LThKvD9tKPNVNyeMH98J/nzGlcwc00R2dSHQ==",
"dev": true,
"requires": {
"@jest/console": "^26.3.0",
"@jest/environment": "^26.3.0",
"@jest/fake-timers": "^26.3.0",
"@jest/globals": "^26.4.0",
"@jest/globals": "^26.4.2",
"@jest/source-map": "^26.3.0",
"@jest/test-result": "^26.3.0",
"@jest/transform": "^26.3.0",
@ -3347,15 +3347,15 @@
"exit": "^0.1.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.4",
"jest-config": "^26.4.0",
"jest-config": "^26.4.2",
"jest-haste-map": "^26.3.0",
"jest-message-util": "^26.3.0",
"jest-mock": "^26.3.0",
"jest-regex-util": "^26.0.0",
"jest-resolve": "^26.4.0",
"jest-snapshot": "^26.4.0",
"jest-snapshot": "^26.4.2",
"jest-util": "^26.3.0",
"jest-validate": "^26.4.0",
"jest-validate": "^26.4.2",
"slash": "^3.0.0",
"strip-bom": "^4.0.0",
"yargs": "^15.3.1"
@ -3372,25 +3372,25 @@
}
},
"jest-snapshot": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.4.0.tgz",
"integrity": "sha512-vFGmNGWHMBomrlOpheTMoqihymovuH3GqfmaEIWoPpsxUXyxT3IlbxI5I4m2vg0uv3HUJYg5JoGrkgMzVsAwCg==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.4.2.tgz",
"integrity": "sha512-N6Uub8FccKlf5SBFnL2Ri/xofbaA68Cc3MGjP/NuwgnsvWh+9hLIR/DhrxbSiKXMY9vUW5dI6EW1eHaDHqe9sg==",
"dev": true,
"requires": {
"@babel/types": "^7.0.0",
"@jest/types": "^26.3.0",
"@types/prettier": "^2.0.0",
"chalk": "^4.0.0",
"expect": "^26.4.0",
"expect": "^26.4.2",
"graceful-fs": "^4.2.4",
"jest-diff": "^26.4.0",
"jest-diff": "^26.4.2",
"jest-get-type": "^26.3.0",
"jest-haste-map": "^26.3.0",
"jest-matcher-utils": "^26.4.0",
"jest-matcher-utils": "^26.4.2",
"jest-message-util": "^26.3.0",
"jest-resolve": "^26.4.0",
"natural-compare": "^1.4.0",
"pretty-format": "^26.4.0",
"pretty-format": "^26.4.2",
"semver": "^7.3.2"
},
"dependencies": {
@ -3417,9 +3417,9 @@
}
},
"jest-validate": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.4.0.tgz",
"integrity": "sha512-t56Z/FRMrLP6mpmje7/YgHy0wOzcuc6i3LBXz6kjmsUWYN62OuMdC86Vg9/dX59SvyitSqqegOrx+h7BkNXeaQ==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.4.2.tgz",
"integrity": "sha512-blft+xDX7XXghfhY0mrsBCYhX365n8K5wNDC4XAcNKqqjEzsRUSXP44m6PL0QJEW2crxQFLLztVnJ4j7oPlQrQ==",
"dev": true,
"requires": {
"@jest/types": "^26.3.0",
@ -3427,7 +3427,7 @@
"chalk": "^4.0.0",
"jest-get-type": "^26.3.0",
"leven": "^3.1.0",
"pretty-format": "^26.4.0"
"pretty-format": "^26.4.2"
},
"dependencies": {
"camelcase": {
@ -3532,10 +3532,10 @@
"integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
"dev": true
},
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"json-parse-even-better-errors": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.0.tgz",
"integrity": "sha512-o3aP+RsWDJZayj1SbHNQAI8x0v3T3SKiGoZlNYfbUP1S3omJQ6i9CnqADqkSPaOAxwua4/1YWx5CM7oiChJt2Q==",
"dev": true
},
"json-schema": {
@ -3991,9 +3991,9 @@
"dev": true
},
"node-notifier": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-7.0.2.tgz",
"integrity": "sha512-ux+n4hPVETuTL8+daJXTOC6uKLgMsl1RYfFv7DKRzyvzBapqco0rZZ9g72ZN8VS6V+gvNYHYa/ofcCY8fkJWsA==",
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz",
"integrity": "sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==",
"dev": true,
"optional": true,
"requires": {
@ -4001,7 +4001,7 @@
"is-wsl": "^2.2.0",
"semver": "^7.3.2",
"shellwords": "^0.1.1",
"uuid": "^8.2.0",
"uuid": "^8.3.0",
"which": "^2.0.2"
},
"dependencies": {
@ -4211,14 +4211,14 @@
"dev": true
},
"parse-json": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
"integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz",
"integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
"json-parse-better-errors": "^1.0.1",
"json-parse-even-better-errors": "^2.3.0",
"lines-and-columns": "^1.1.6"
}
},
@ -4320,9 +4320,9 @@
"dev": true
},
"pretty-format": {
"version": "26.4.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.4.0.tgz",
"integrity": "sha512-mEEwwpCseqrUtuMbrJG4b824877pM5xald3AkilJ47Po2YLr97/siejYQHqj2oDQBeJNbu+Q0qUuekJ8F0NAPg==",
"version": "26.4.2",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.4.2.tgz",
"integrity": "sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA==",
"dev": true,
"requires": {
"@jest/types": "^26.3.0",
@ -6032,6 +6032,33 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true
},
"xvfb-maybe": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/xvfb-maybe/-/xvfb-maybe-0.2.1.tgz",
"integrity": "sha1-7YyxMpV7eEi0OZhMZvAQ6n8kNhs=",
"dev": true,
"requires": {
"debug": "^2.2.0",
"which": "^1.2.4"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
}
}
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",

View File

@ -2,13 +2,13 @@
"name": "insomnia-smoke-test",
"version": "1.0.0",
"scripts": {
"test:build:core": "jest",
"test:package:core": "cross-env PACKAGE=Insomnia jest"
"test:build:core": "xvfb-maybe jest"
},
"devDependencies": {
"cross-env": "^7.0.2",
"jest": "^26.4.0",
"jest": "^26.4.2",
"spectron": "^11.1.0",
"spectron-keys": "0.0.1"
"spectron-keys": "0.0.1",
"xvfb-maybe": "^0.2.1"
}
}

View File

@ -12,10 +12,13 @@ describe('Application launch', function() {
// Run installed app
// path: '/Applications/Insomnia.app/Contents/MacOS/Insomnia',
// Run after app-package
// Run after app-package - mac
// path: path.join(__dirname, '../insomnia-app/dist/com.insomnia.app/mac/Insomnia.app/Contents/MacOS/Insomnia'),
// Run after app-build
// Run after app-package - Windows
// path: path.join(__dirname, '../insomnia-app/dist/com.insomnia.app/win-unpacked/Insomnia.exe'),
// Run after app-build - mac, Windows, Linux
path: electronPath,
args: [path.join(__dirname, '../insomnia-app/build/com.insomnia.app')],
@ -23,7 +26,13 @@ describe('Application launch', function() {
// https://github.com/electron-userland/spectron/issues/353#issuecomment-522846725
chromeDriverArgs: ['remote-debugging-port=9222'],
});
await app.start();
await app.start().then(async () => {
// Windows spawns two terminal windows when running spectron, and the only workaround
// is to focus the window on start.
// https://github.com/electron-userland/spectron/issues/60
await app.browserWindow.focus();
await app.browserWindow.setAlwaysOnTop(true);
});
});
afterEach(async () => {