mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-31 03:29:43 -06:00
* electron@7.x * node12.8.1-chrome78-ff70 * Revert "node12.8.1-chrome78-ff70" for now This reverts commitdb2d521994. * update sendCommand to log on all sendcommands * promisification in 6.x * Revert "Revert "node12.8.1-chrome78-ff70" for now" This reverts commit57fe764098. * fix sendcommand * fix cdp in electron * fix desktop-gui test * skip tests that will be fixed by #4973 * bump MAX_ALLOWED_FILE_SIZE :/ * update electron browser spec * make new dialog code null-proof * add failing e2e test for issue 5475 * bump electron packager * add e2e snapshot * update deprecated electron getters/setters https://github.com/electron/electron/blob/7-1-x/docs/api/modernization/property-updates.md * build and test on Mac * use electron-builder 20.41.0 that adds an option to use hardened Mac OS, which is necessary for code notarization later. See https://github.com/electron-userland/electron-builder/releases/tag/v20.41.0 and https://github.com/electron-userland/electron-builder/pull/3858 * electron-builder and pass hardenedRuntime: true * uncomment build * upload built binary on mac * back to 20.41.0, trying after sign hook without success * use current electron-builder alias instead of build * retry smoke test on first failure * testing * trying to notarize signed app (that does not have node_modules yet) * env variable names * copy node_modules ourselves * build and bundle binary on mac on circle, inject new context * enable build steps before electron build * increase mac build timeout * update build folder on mac * uncomment actual electron build command * set linux target to zip * set zip as target for all platforms * updated steps * put notarization hook back * tweaks for icons * remove dist electron before code sign * icons per platform * make node_modules copy path platform-specific * fix linux build unpacked folder * build mac * fix lint * test new mac binary against kitchensink * working on Linux build * try building entire thing on Linux * removing correct electron dist folder * increase zip size limit for now * add folder rename on Linux from linux-unpacked to Cypress * print file sizes before zipping * move linux-unpacked to build dir function * try deleting second electron file, but code signing probably would not work * test windows build [build binary] * ignore tsc errors * windows build path * windows [build binary] * update windows build folder * increase binary build timeout on Mac * no need to pass our dist folder * adding explicit list of additional binaries to code sign on mac * yarn lock * uncomment necessary build steps * electron dir for Linux * yarn lock again * back to execa v3 * use execa v4 in packages launcher * yarn lock again and again * updated tests that use execa * print build folder * add executable name on Linux * get rid of execa.shell in build scripts * remove old and commented out code * need to test building binary on Windows * throw error from after sign hook if fails * use execa to zip * yarn lock * fix after merge variable * update test * add nohoist ffmpeg installer * patch * yarn types pass * yarn lock has binary Co-authored-by: Zach Bloomquist <github@chary.us> Co-authored-by: Brian Mann <brian.mann86@gmail.com>
132 lines
3.1 KiB
JavaScript
132 lines
3.1 KiB
JavaScript
/* eslint-disable no-console */
|
|
const _ = require('lodash')
|
|
const os = require('os')
|
|
const path = require('path')
|
|
const Promise = require('bluebird')
|
|
const pkg = require('../package.json')
|
|
const paths = require('./paths')
|
|
const log = require('debug')('cypress:electron')
|
|
let fs = require('fs-extra')
|
|
|
|
fs = Promise.promisifyAll(fs)
|
|
|
|
let electronVersion
|
|
|
|
// ensure we have an electronVersion set in package.json
|
|
if (!(electronVersion = pkg.devDependencies.electron)) {
|
|
throw new Error('Missing \'electron\' devDependency in ./package.json')
|
|
}
|
|
|
|
module.exports = {
|
|
getElectronVersion () {
|
|
return electronVersion
|
|
},
|
|
|
|
// returns icons package so that the caller code can find
|
|
// paths to the icons without hard-coding them
|
|
icons () {
|
|
return require('@cypress/icons')
|
|
},
|
|
|
|
checkCurrentVersion () {
|
|
const pathToVersion = paths.getPathToVersion()
|
|
|
|
// read in the version file
|
|
return fs.readFileAsync(pathToVersion, 'utf8')
|
|
.then((str) => {
|
|
const version = str.replace('v', '')
|
|
|
|
// and if it doesn't match the electron version
|
|
// throw an error
|
|
if (version !== electronVersion) {
|
|
throw new Error(`Currently installed version: '${version}' does not match electronVersion: '${electronVersion}`)
|
|
} else {
|
|
return process.exit()
|
|
}
|
|
})
|
|
},
|
|
|
|
checkExecExistence () {
|
|
return fs.statAsync(paths.getPathToExec())
|
|
},
|
|
|
|
move (src, dest) {
|
|
// src is ./tmp/Cypress-darwin-x64
|
|
// dest is ./dist/Cypress
|
|
return fs.moveAsync(src, dest, { overwrite: true })
|
|
.then(() => {
|
|
// remove the tmp folder now
|
|
return fs.removeAsync(path.dirname(src))
|
|
})
|
|
},
|
|
|
|
removeEmptyApp () {
|
|
// nuke the temporary blank /app
|
|
return fs.removeAsync(paths.getPathToResources('app'))
|
|
},
|
|
|
|
packageAndExit () {
|
|
return this.package()
|
|
.then(() => {
|
|
return this.removeEmptyApp()
|
|
}).then(() => {
|
|
return process.exit()
|
|
})
|
|
},
|
|
|
|
package (options = {}) {
|
|
const pkgr = require('electron-packager')
|
|
const icons = require('@cypress/icons')
|
|
|
|
const iconPath = icons.getPathToIcon('cypress')
|
|
|
|
log('package icon', iconPath)
|
|
|
|
_.defaults(options, {
|
|
dist: paths.getPathToDist(),
|
|
dir: 'app',
|
|
out: 'tmp',
|
|
name: 'Cypress',
|
|
platform: os.platform(),
|
|
arch: os.arch(),
|
|
asar: false,
|
|
prune: true,
|
|
overwrite: true,
|
|
electronVersion,
|
|
icon: iconPath,
|
|
})
|
|
|
|
log('packager options %j', options)
|
|
|
|
return pkgr(options)
|
|
.then((appPaths) => {
|
|
return appPaths[0]
|
|
})
|
|
// Promise.resolve("tmp\\Cypress-win32-x64")
|
|
.then((appPath) => {
|
|
// and now move the tmp into dist
|
|
console.log('moving created file from', appPath)
|
|
console.log('to', options.dist)
|
|
|
|
return this.move(appPath, options.dist)
|
|
}).catch((err) => {
|
|
console.log(err.stack)
|
|
|
|
return process.exit(1)
|
|
})
|
|
},
|
|
|
|
ensure () {
|
|
return Promise.join(
|
|
this.checkCurrentVersion(),
|
|
this.checkExecExistence(),
|
|
)
|
|
},
|
|
|
|
check () {
|
|
return this.ensure()
|
|
.bind(this)
|
|
.catch(this.packageAndExit)
|
|
},
|
|
}
|