diff --git a/index.js b/index.js index 92243f4fd4..28f017651f 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,4 @@ -var path = require("path") -var pkgsDir = path.join(__dirname, "packages") - -require("app-module-path").addPath(pkgsDir) - +require("app-module-path/register") require("coffee-script/register") -module.exports = require("./lib").start(process.argv.slice(2)) \ No newline at end of file +module.exports = require("./lib").start(process.argv.slice(2)) diff --git a/lerna.json b/lerna.json deleted file mode 100644 index e0992308d3..0000000000 --- a/lerna.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "lerna": "2.0.0-beta.26", - "version": "0.0.0" -} diff --git a/lib/index.coffee b/lib/index.coffee index 9d20172ce9..45ba65cc24 100644 --- a/lib/index.coffee +++ b/lib/index.coffee @@ -5,7 +5,9 @@ chalk = require("chalk") Promise = require("bluebird") minimist = require("minimist") runAll = require("@cypress/npm-run-all") -through = require("through") +through = require("through") + +coreApp = require("packages/core-app") globAsync = Promise.promisify(glob) @@ -23,7 +25,7 @@ setTerminalTitle = (title) -> String.fromCharCode(27) + "]0;" + title + String.fromCharCode(7) ) -colors = "black red green yellow blue magenta cyan white gray".split(" ") +colors = "green yellow blue magenta cyan white gray bgGreen bgYellow bgBlue bgMagenta bgCyan bgWhite".split(" ") module.exports = { getDirs: (dir) -> @@ -34,12 +36,17 @@ module.exports = { exec: (cmd) -> setTerminalTitle("run:all:#{cmd}") + runCommand = if cmd isnt "install" or cmd isnt "test" + "run #{cmd}" + else + cmd + @getDirs() .then (dirs) -> tasks = getPackages(cmd, dirs).map (dir, index) -> packageName = dir.replace(path.resolve("packages") + "/", "") return { - command: cmd + command: runCommand options: { cwd: dir label: { @@ -66,7 +73,7 @@ module.exports = { @exec(e) else - require("core-app").start(options) + coreApp.start() } @@ -78,11 +85,8 @@ work out script running UX * nodemon's colors are coming through, so see what it does - bring back panes * need to be able to scroll -work out build dependencies -- e.g. runner waits on reporter -- any other examples? if not, just deal with runner/reporter wire up interdependencies correctly -- @cypress/core-runner -> core-runner +- @cypress/core-runner -> packages/core-runner handle deployment core-app -> core-server more some core-app stuff into root diff --git a/package.json b/package.json index 5710ec9fa2..2cceed00a0 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,10 @@ "version": "0.0.0", "main": "index.js", "scripts": { - "postinstall": "node index.js --exec 'npm install, npm run build'", + "postinstall": "npm run all install", "start": "node index.js", - "dev": "node index.js --exec 'npm run dev'", - "test": "node index.js --exec 'npm test'", + "watch-dev": "node run all watch-dev", + "test": "node run all test", "all": "node index.js" }, "author": "", diff --git a/packages/core-app/deploy/base.coffee b/packages/core-app/deploy/base.coffee index 0afed31ca4..e4c88a8abf 100644 --- a/packages/core-app/deploy/base.coffee +++ b/packages/core-app/deploy/base.coffee @@ -13,7 +13,7 @@ Promise = require("bluebird") obfuscator = require("obfuscator") runSequence = require("run-sequence") cypressIcons = require("@cypress/core-icons") -cypressElectron = require("@cypress/core-electron") +cypressElectron = require("packages/core-electron") log = require("./log") meta = require("./meta") pkg = require("../package.json") @@ -387,4 +387,4 @@ class Base .then(@verifyAppCanOpen) .return(@) -module.exports = Base \ No newline at end of file +module.exports = Base diff --git a/packages/core-app/gulpfile.coffee b/packages/core-app/gulpfile.coffee index cf93be7d39..73eb19ac6b 100644 --- a/packages/core-app/gulpfile.coffee +++ b/packages/core-app/gulpfile.coffee @@ -10,7 +10,7 @@ child_process = require("child_process") runSequence = require("run-sequence") importOnce = require("node-sass-import-once") cyIcons = require("@cypress/core-icons") -deploy = require("./deploy") +# deploy = require("./deploy") fs = Promise.promisifyAll(fs) @@ -170,14 +170,14 @@ gulp.task "server", -> require("./server.coffee") gulp.task "test", -> require("./spec/server.coffee") -gulp.task "release", deploy.release +# gulp.task "release", deploy.release -gulp.task "deploy:fixture", -> - require("./lib/deploy")().fixture() +# gulp.task "deploy:fixture", -> +# require("./lib/deploy")().fixture() -gulp.task "build", deploy.build +# gulp.task "build", deploy.build -gulp.task "deploy", deploy.deploy +# gulp.task "deploy", deploy.deploy gulp.task "app", ["app:build", "app:watch"] diff --git a/packages/core-app/index.js b/packages/core-app/index.js index d1c4e8be4f..d81dd96aeb 100644 --- a/packages/core-app/index.js +++ b/packages/core-app/index.js @@ -1,4 +1,11 @@ require("coffee-script/register") require && require.extensions && delete require.extensions[".litcoffee"] require && require.extensions && delete require.extensions[".coffee.md"] -require("./lib/cypress").start(process.argv) \ No newline at end of file + +cypress = require("./lib/cypress") + +module.exports = { + start () { + cypress.start(process.argv) + } +} diff --git a/packages/core-app/lib/controllers/client.coffee b/packages/core-app/lib/controllers/client.coffee index 287541ec24..1eb4b60e03 100644 --- a/packages/core-app/lib/controllers/client.coffee +++ b/packages/core-app/lib/controllers/client.coffee @@ -1,4 +1,4 @@ -socketIo = require("@cypress/core-socket") +socketIo = require("packages/core-socket") ## hold onto the client source + version in memory clientSource = socketIo.getClientSource() diff --git a/packages/core-app/lib/controllers/reporter.coffee b/packages/core-app/lib/controllers/reporter.coffee new file mode 100644 index 0000000000..a2797002c6 --- /dev/null +++ b/packages/core-app/lib/controllers/reporter.coffee @@ -0,0 +1,11 @@ +_ = require("lodash") +send = require("send") +reporter = require("packages/core-reporter") + +module.exports = { + handle: (req, res) -> + pathToFile = reporter.getPathToDist(req.params[0]) + + send(req, pathToFile) + .pipe(res) +} diff --git a/packages/core-app/lib/controllers/runner.coffee b/packages/core-app/lib/controllers/runner.coffee index 52073915d2..92b2730904 100644 --- a/packages/core-app/lib/controllers/runner.coffee +++ b/packages/core-app/lib/controllers/runner.coffee @@ -1,6 +1,6 @@ _ = require("lodash") send = require("send") -runner = require("@cypress/core-runner") +runner = require("packages/core-runner") module.exports = { serve: (req, res, config, getRemoteState) -> diff --git a/packages/core-app/lib/cypress.coffee b/packages/core-app/lib/cypress.coffee index d7ca6a5662..acf3a9703a 100644 --- a/packages/core-app/lib/cypress.coffee +++ b/packages/core-app/lib/cypress.coffee @@ -57,7 +57,7 @@ module.exports = { ## open the cypress electron wrapper shell app new Promise (resolve) -> - cypressElectron = require("@cypress/core-electron") + cypressElectron = require("packages/core-electron") fn = (code) -> ## juggle up the failures since our outer ## promise is expecting this object structure diff --git a/packages/core-app/lib/electron/handlers/cookies.coffee b/packages/core-app/lib/electron/handlers/cookies.coffee index 792b144fad..dee87d3bb0 100644 --- a/packages/core-app/lib/electron/handlers/cookies.coffee +++ b/packages/core-app/lib/electron/handlers/cookies.coffee @@ -1,6 +1,6 @@ _ = require("lodash") Promise = require("bluebird") -extension = require("@cypress/core-extension") +extension = require("packages/core-extension") module.exports = { get: (cookies, filter = {}) -> @@ -35,4 +35,4 @@ module.exports = { @get(cookies, {domain: "github.com"}) .map(removeCookie) .return(null) -} \ No newline at end of file +} diff --git a/packages/core-app/lib/electron/handlers/project.coffee b/packages/core-app/lib/electron/handlers/project.coffee index 5af0964c15..fc6276fd9c 100644 --- a/packages/core-app/lib/electron/handlers/project.coffee +++ b/packages/core-app/lib/electron/handlers/project.coffee @@ -1,6 +1,6 @@ _ = require("lodash") Promise = require("bluebird") -extension = require("@cypress/core-extension") +extension = require("packages/core-extension") files = require("../../controllers/files") config = require("../../config") errors = require("../../errors") diff --git a/packages/core-app/lib/electron/handlers/renderer.coffee b/packages/core-app/lib/electron/handlers/renderer.coffee index 63e39b32f6..ae532e8f89 100644 --- a/packages/core-app/lib/electron/handlers/renderer.coffee +++ b/packages/core-app/lib/electron/handlers/renderer.coffee @@ -1,7 +1,7 @@ _ = require("lodash") path = require("path") uri = require("url") -cyDesktop = require("@cypress/core-desktop-gui") +cyDesktop = require("packages/core-desktop-gui") BrowserWindow = require("electron").BrowserWindow cwd = require("../../cwd") user = require("../../user") @@ -147,4 +147,4 @@ module.exports = { else Promise.resolve(win) -} \ No newline at end of file +} diff --git a/packages/core-app/lib/launcher.coffee b/packages/core-app/lib/launcher.coffee index c91cce1c51..4d169ee011 100644 --- a/packages/core-app/lib/launcher.coffee +++ b/packages/core-app/lib/launcher.coffee @@ -3,7 +3,7 @@ fs = require("fs-extra") path = require("path") Promise = require("bluebird") launcher = require("@cypress/core-launcher") -extension = require("@cypress/core-extension") +extension = require("packages/core-extension") appData = require("./util/app_data") fs = Promise.promisifyAll(fs) diff --git a/packages/core-app/lib/request.coffee b/packages/core-app/lib/request.coffee index e3e02d3f69..dc37922f8b 100644 --- a/packages/core-app/lib/request.coffee +++ b/packages/core-app/lib/request.coffee @@ -5,7 +5,7 @@ url = require("url") tough = require("tough-cookie") moment = require("moment") Promise = require("bluebird") -extension = require("@cypress/core-extension") +extension = require("packages/core-extension") Cookie = tough.Cookie CookieJar = tough.CookieJar diff --git a/packages/core-app/lib/routes.coffee b/packages/core-app/lib/routes.coffee index 9d967060e0..2e69f5995f 100644 --- a/packages/core-app/lib/routes.coffee +++ b/packages/core-app/lib/routes.coffee @@ -3,6 +3,7 @@ CacheBuster = require("./util/cache_buster") cwd = require("./cwd") logger = require("./logger") spec = require("./controllers/spec_processor") +reporter = require("./controllers/reporter") runner = require("./controllers/runner") xhrs = require("./controllers/xhrs") client = require("./controllers/client") @@ -22,6 +23,9 @@ module.exports = (app, config, getRemoteState) -> app.get "/__cypress/socket.io.js", (req, res) -> client.handle(req, res) + app.get "/__cypress/reporter/*", (req, res) -> + reporter.handle(req, res) + app.get "/__cypress/runner/*", (req, res) -> runner.handle(req, res) diff --git a/packages/core-app/lib/server.coffee b/packages/core-app/lib/server.coffee index 6d8c4d8ff9..247b2e9f03 100644 --- a/packages/core-app/lib/server.coffee +++ b/packages/core-app/lib/server.coffee @@ -9,7 +9,7 @@ Promise = require("bluebird") evilDns = require("evil-dns") statuses = require("http-status-codes") httpProxy = require("http-proxy") -httpsProxy = require("@cypress/core-https-proxy") +httpsProxy = require("packages/core-https-proxy") allowDestroy = require("server-destroy-vvo") cors = require("./util/cors") headersUtil = require("./util/headers") diff --git a/packages/core-app/lib/socket.coffee b/packages/core-app/lib/socket.coffee index b2c467428c..cc1cebda44 100644 --- a/packages/core-app/lib/socket.coffee +++ b/packages/core-app/lib/socket.coffee @@ -4,7 +4,7 @@ str = require("underscore.string") path = require("path") uuid = require("node-uuid") Promise = require("bluebird") -socketIo = require("@cypress/core-socket") +socketIo = require("packages/core-socket") open = require("./util/open") pathHelpers = require("./util/path_helpers") cwd = require("./cwd") diff --git a/packages/core-app/package.json b/packages/core-app/package.json index be9e25657d..08f88cecf0 100644 --- a/packages/core-app/package.json +++ b/packages/core-app/package.json @@ -8,8 +8,8 @@ "scripts": { "start": "node index.js", "server": "node index.js --mode server", - "build": "gulp app:build", - "watch": "gulp app", + "build-prod": "gulp app:build", + "watch-dev": "gulp app", "deploy": "gulp deploy", "release": "gulp release", "postinstall": "bower install", @@ -39,7 +39,6 @@ }, "homepage": "https://github.com/cypress-io/cypress", "devDependencies": { - "@cypress/core-electron": "0.2.1", "body-parser": "1.12.4", "chai": "2.1.0", "chai-as-promised": "^4.2.0", @@ -104,14 +103,9 @@ "xvfb-maybe": "^0.1.3" }, "dependencies": { - "@cypress/core-desktop-gui": "0.3.7", "@cypress/core-example": "0.6.1", - "@cypress/core-extension": "0.3.4", - "@cypress/core-https-proxy": "0.1.3", "@cypress/core-icons": "0.4.1", "@cypress/core-launcher": "0.1.0", - "@cypress/core-runner": "0.3.2", - "@cypress/core-socket": "0.2.0", "ansi_up": "^1.3.0", "bluebird": "3.3.3", "browserify": "6.1.0", diff --git a/packages/core-app/spec/server/integration/cypress_spec.coffee b/packages/core-app/spec/server/integration/cypress_spec.coffee index a213c87281..f87930af93 100644 --- a/packages/core-app/spec/server/integration/cypress_spec.coffee +++ b/packages/core-app/spec/server/integration/cypress_spec.coffee @@ -8,7 +8,7 @@ http = require("http") Promise = require("bluebird") electron = require("electron") inquirer = require("inquirer") -extension = require("@cypress/core-extension") +extension = require("packages/core-extension") Fixtures = require("../helpers/fixtures") pkg = require("#{root}package.json") settings = require("#{root}lib/util/settings") diff --git a/packages/core-app/spec/server/integration/websockets_spec.coffee b/packages/core-app/spec/server/integration/websockets_spec.coffee index fb3eef7df1..9fb97dbf9c 100644 --- a/packages/core-app/spec/server/integration/websockets_spec.coffee +++ b/packages/core-app/spec/server/integration/websockets_spec.coffee @@ -6,7 +6,7 @@ ws = require("ws") httpsAgent = require("https-proxy-agent") evilDns = require("evil-dns") Promise = require("bluebird") -socketIo = require("@cypress/core-socket") +socketIo = require("packages/core-socket") httpsServer = require("@cypress/core-https-proxy/test/helpers/https_server") config = require("#{root}lib/config") Server = require("#{root}lib/server") diff --git a/packages/core-app/spec/server/unit/electron/events_spec.coffee b/packages/core-app/spec/server/unit/electron/events_spec.coffee index b43868f0f7..f00b412223 100644 --- a/packages/core-app/spec/server/unit/electron/events_spec.coffee +++ b/packages/core-app/spec/server/unit/electron/events_spec.coffee @@ -2,7 +2,7 @@ require("../../spec_helper") _ = require("lodash") icons = require("@cypress/core-icons") -extension = require("@cypress/core-extension") +extension = require("packages/core-extension") electron = require("electron") cache = require("#{root}../lib/cache") logger = require("#{root}../lib/logger") diff --git a/packages/core-app/spec/server/unit/electron/project_spec.coffee b/packages/core-app/spec/server/unit/electron/project_spec.coffee index 59d6224857..1192b53403 100644 --- a/packages/core-app/spec/server/unit/electron/project_spec.coffee +++ b/packages/core-app/spec/server/unit/electron/project_spec.coffee @@ -1,6 +1,6 @@ require("../../spec_helper") -extension = require("@cypress/core-extension") +extension = require("packages/core-extension") Fixtures = require("../../helpers/fixtures") project = require("#{root}../lib/electron/handlers/project") Project = require("#{root}../lib/project") diff --git a/packages/core-app/spec/server/unit/socket_spec.coffee b/packages/core-app/spec/server/unit/socket_spec.coffee index 0d2c4e770e..c3b7bff321 100644 --- a/packages/core-app/spec/server/unit/socket_spec.coffee +++ b/packages/core-app/spec/server/unit/socket_spec.coffee @@ -5,8 +5,8 @@ os = require("os") path = require("path") uuid = require("node-uuid") Promise = require("bluebird") -socketIo = require("@cypress/core-socket") -extension = require("@cypress/core-extension") +socketIo = require("packages/core-socket") +extension = require("packages/core-extension") httpsAgent = require("https-proxy-agent") open = require("#{root}lib/util/open") config = require("#{root}lib/config") diff --git a/packages/core-desktop-gui/package.json b/packages/core-desktop-gui/package.json index 63053e957e..2ba79d72a8 100644 --- a/packages/core-desktop-gui/package.json +++ b/packages/core-desktop-gui/package.json @@ -8,7 +8,7 @@ "build-prod": "node ./scripts/build-prod.js", "prod": "npm run build-prod && npm run server", "server": "zunder serve-prod --port 8000", - "start": "zunder watch", + "watch-dev": "zunder watch", "prepublish": "npm run build-prod", "release": "releaser", "test": "npm run build-prod && npm run server & cypress run" diff --git a/packages/core-electron/lib/electron.coffee b/packages/core-electron/lib/electron.coffee index fd29935242..1f37cc08b0 100644 --- a/packages/core-electron/lib/electron.coffee +++ b/packages/core-electron/lib/electron.coffee @@ -47,4 +47,4 @@ module.exports = { .catch (err) -> console.log(err.stack) process.exit(1) -} \ No newline at end of file +} diff --git a/packages/core-extension/gulpfile.coffee b/packages/core-extension/gulpfile.coffee index 718545fded..137c1d2ca5 100644 --- a/packages/core-extension/gulpfile.coffee +++ b/packages/core-extension/gulpfile.coffee @@ -5,7 +5,7 @@ clean = require("gulp-clean") rename = require("gulp-rename") runSeq = require("run-sequence") source = require("vinyl-source-stream") -socket = require("@cypress/core-socket") +socket = require("packages/core-socket") icons = require("@cypress/core-icons") Promise = require("bluebird") coffeeify = require("coffeeify") diff --git a/packages/core-extension/test/integration/background_spec.coffee b/packages/core-extension/test/integration/background_spec.coffee index 3e5b5ddd33..1ae75effd1 100644 --- a/packages/core-extension/test/integration/background_spec.coffee +++ b/packages/core-extension/test/integration/background_spec.coffee @@ -2,7 +2,7 @@ require("../spec_helper") _ = require("lodash") http = require("http") -socket = require("@cypress/core-socket") +socket = require("packages/core-socket") Promise = require("bluebird") background = require("../../app/background") diff --git a/packages/core-reporter/.gitignore b/packages/core-reporter/.gitignore index d8eda5ed90..e5415dba84 100644 --- a/packages/core-reporter/.gitignore +++ b/packages/core-reporter/.gitignore @@ -1,41 +1,9 @@ .DS_Store - -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory -# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git node_modules - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history - bower_components -dist - +*.log +dist* +build +cypress.env.json +tmp *.orig diff --git a/packages/core-reporter/gulpfile.js b/packages/core-reporter/gulpfile.js deleted file mode 100644 index 80cd9e7d8c..0000000000 --- a/packages/core-reporter/gulpfile.js +++ /dev/null @@ -1,140 +0,0 @@ -'use strict' - -const autoprefixer = require('gulp-autoprefixer') -const babel = require('gulp-babel') -const del = require('del') -const fs = require('fs') -const gulp = require('gulp') -const gulpif = require('gulp-if') -const gutil = require('gulp-util') -const mocha = require('gulp-spawn-mocha') -const pathUtil = require('path') -const plumber = require('gulp-plumber') -const rename = require('gulp-rename') -const sass = require('gulp-sass') -const sassGlobbing = require('node-sass-globbing') -const through = require('through') -const watch = require('gulp-watch') - -function handleError (error) { - if (/Mocha exited/.test(error.message)) { - return // ignore mocha exit errors - } - console.error(error.stack || `${error.plugin}: ${error.message}`) -} - -function isArray (value) { - return Object.prototype.toString.call(value) === '[object Array]' -} - -const stylesheetsGlob = 'src/**/*.scss' -const scriptsGlob = 'src/**/*.+(js|jsx)' -const noSpecsGlob = '!src/**/*.spec.+(js|jsx)' - - -const buildStylesheets = (isProd) => () => { - gutil.log('build stylesheets') - let firstTime = true - const sassOpts = isProd ? { - importer: sassGlobbing, - outputStyle: 'compressed', - } : { - importer: sassGlobbing, - sourceComments: true, - outputStyle: 'expanded', - } - - return gulp.src('src/main.scss') - .pipe(plumber(handleError)) - .pipe(sass(sassOpts)) - .pipe(autoprefixer({ browsers: ['last 2 versions'], cascade: false })) - .pipe(rename('reporter.css')) - .pipe(gulp.dest('dist')) - .on('end', () => { - if (firstTime) { - firstTime = false - return - } - gutil.log('Stylesheets re-compiled') - }) -} - -gulp.task('build-stylesheets-dev', ['clean'], buildStylesheets(false)) -gulp.task('build-stylesheets-prod', ['clean'], buildStylesheets(true)) - -gulp.task('watch-stylesheets', ['build-stylesheets-dev'], () => { - return watch(stylesheetsGlob, buildStylesheets(false)) -}) - -function getSpecFile (file) { - let fileName = file.basename.replace('.jsx', '.js') - if (!/\.spec\./.test(fileName)) { - fileName = fileName.replace('.js', '.spec.js') - } - var path = file.dirname.replace('src', 'dist') - var filePath = `${path}/${fileName}` - - try { - fs.statSync(filePath) - return new gutil.File({ path: filePath }) - } catch (e) { - // no spec file - return null - } -} - -function passSpecFile (specFile) { - return through(function () { - if (specFile) this.queue(specFile) - }) -} - -function buildScripts (globOrFile) { - let file = globOrFile - let log = globOrFile - let dest = 'dist' - - if (!isArray(globOrFile)) { - file = globOrFile.path - log = pathUtil.basename(file) - dest = pathUtil.dirname(file).replace('src', 'dist').replace(`${__dirname}/`, '') - } - - gutil.log('babel', log) - return gulp.src(file) - .pipe(plumber(handleError)) - .pipe(babel({ - plugins: [ - 'babel-plugin-transform-decorators-legacy', - 'babel-plugin-add-module-exports', - ], - presets: ['es2015', 'react', 'stage-1'], - })) - .pipe(gulp.dest(dest)) -} - -gulp.task('build-scripts-dev', ['clean'], () => { - return buildScripts([scriptsGlob]) -}) - -gulp.task('build-scripts-prod', ['clean'], () => { - return buildScripts([scriptsGlob, noSpecsGlob]) -}) - -gulp.task('watch-scripts', ['build-scripts-dev'], () => { - return watch(scriptsGlob, (file) => { - const specFile = getSpecFile(file) - return buildScripts(file) - .pipe(passSpecFile(specFile)) - .pipe(gulpif(!!specFile, mocha({ - r: 'lib/test-setup.js', - }))) - }) -}) - -gulp.task('clean', () => del('dist')) - -gulp.task('watch', ['watch-scripts', 'watch-stylesheets']) -gulp.task('build-test', ['build-scripts-dev']) -gulp.task('build-dev', ['build-scripts-dev', 'build-stylesheets-dev']) -gulp.task('build-prod', ['build-scripts-prod', 'build-stylesheets-prod']) diff --git a/packages/core-reporter/lib/reporter.js b/packages/core-reporter/lib/reporter.js new file mode 100644 index 0000000000..3ed3138351 --- /dev/null +++ b/packages/core-reporter/lib/reporter.js @@ -0,0 +1,13 @@ +var path = require('path') + +function dist () { + var args = [].slice.call(arguments) + var paths = [__dirname, '..', 'dist'].concat(args) + return path.join.apply(path, paths) +} + +module.exports = { + getPathToDist: function(){ + return dist.apply(null, arguments) + }, +} diff --git a/packages/core-reporter/package.json b/packages/core-reporter/package.json index 0a8d6f194b..daf6d4c9a0 100644 --- a/packages/core-reporter/package.json +++ b/packages/core-reporter/package.json @@ -3,12 +3,12 @@ "version": "0.3.0", "main": "dist/reporter", "scripts": { - "build-dev": "gulp build-dev", - "build-prod": "gulp build-prod", + "build-dev": "node ./scripts/build-dev.js", + "build-prod": "node ./scripts/build-prod.js", "prepublish": "npm run build-prod", "release": "releaser", - "start": "gulp watch", - "test": "gulp build-test && mocha -r lib/test-setup.js dist/**/*.spec.js" + "test": "node ./scripts/test.js", + "watch-dev": "node ./scripts/watch.js" }, "repository": { "type": "git", @@ -28,54 +28,24 @@ "@cypress/react-tooltip": "^0.1.1", "classnames": "^2.2.5", "babel-eslint": "^6.0.4", - "babel-plugin-add-module-exports": "^0.2.1", - "babel-plugin-transform-decorators-legacy": "^1.3.4", - "babel-preset-es2015": "^6.9.0", - "babel-preset-react": "^6.5.0", - "babel-preset-stage-1": "^6.5.0", "chai": "^3.5.0", "chai-enzyme": "^0.5.0", - "del": "^2.2.2", + "classnames": "^2.2.5", + "css-element-queries": "^0.3.2", "enzyme": "^2.3.0", "eslint": "^2.12.0", "eslint-plugin-mocha": "^4.0.0", "eslint-plugin-react": "^5.1.1", "font-awesome": "^4.6.3", - "gulp": "^3.9.1", - "gulp-autoprefixer": "^3.1.0", - "gulp-babel": "^6.1.2", - "gulp-if": "^2.0.1", - "gulp-plumber": "^1.1.0", - "gulp-rename": "^1.2.2", - "gulp-sass": "^2.3.2", - "gulp-spawn-mocha": "^2.2.2", - "gulp-util": "^3.0.7", - "gulp-watch": "^4.3.8", "jsdom": "^9.4.1", "lodash": "^4.0.0", + "markdown-it": "^6.1.1", "mobx": "^2.3.6", "mobx-react": "^3.5.3", - "mocha": "^2.5.3", - "node-sass-globbing": "0.0.23", "react": "^15.3.0", - "react-addons-test-utils": "^15.3.0", "react-dom": "^15.3.0", "sinon": "^1.17.4", "sinon-chai": "^2.8.0", - "through": "^2.3.8" - }, - "peerDependencies": { - "@cypress/react-tooltip": "^0.1.1", - "classnames": "^2.2.5", - "font-awesome": "^4.6.3", - "lodash": "^4.0.0", - "mobx": "^2.3.6", - "mobx-react": "^3.5.3", - "react": "^15.3.0", - "react-dom": "^15.3.0" - }, - "dependencies": { - "css-element-queries": "^0.3.2", - "markdown-it": "^6.1.1" + "zunder": "^3.5.0" } } diff --git a/packages/core-reporter/scripts/build-dev.js b/packages/core-reporter/scripts/build-dev.js new file mode 100644 index 0000000000..b4e5037040 --- /dev/null +++ b/packages/core-reporter/scripts/build-dev.js @@ -0,0 +1,14 @@ +var z = require('zunder') +var u = z.undertaker +var setZunderConfig = require('./set-zunder-config') + +setZunderConfig(z) + +u.series( + z.applyDevEnv, + z.cleanDev, + u.parallel( + z.buildDevScripts, + z.buildDevStylesheets + ) +)() diff --git a/packages/core-reporter/scripts/build-prod.js b/packages/core-reporter/scripts/build-prod.js new file mode 100644 index 0000000000..9e9cc90822 --- /dev/null +++ b/packages/core-reporter/scripts/build-prod.js @@ -0,0 +1,14 @@ +var z = require('zunder') +var u = z.undertaker +var setZunderConfig = require('./set-zunder-config') + +setZunderConfig(z) + +u.series( + z.applyProdEnv, + z.cleanProd, + u.parallel( + z.buildDevScripts, + z.buildProdStylesheets + ) +)() diff --git a/packages/core-reporter/scripts/set-zunder-config.js b/packages/core-reporter/scripts/set-zunder-config.js new file mode 100644 index 0000000000..dc574a7e71 --- /dev/null +++ b/packages/core-reporter/scripts/set-zunder-config.js @@ -0,0 +1,17 @@ +module.exports = function setZunderConfig (zunder) { + var commonScripts = ['@cypress/react-tooltip', 'react', 'react-dom', 'mobx', 'mobx-react', 'lodash'] + + zunder.setConfig({ + cacheBust: false, + externalBundles: [ + { + scriptName: 'common.js', + libs: commonScripts.map((file) => ({ file })), + } + ], + prodDir: 'dist', + resolutions: commonScripts, + scriptName: 'reporter.js', + stylesheetName: 'reporter.css', + }) +} diff --git a/packages/core-reporter/scripts/test.js b/packages/core-reporter/scripts/test.js new file mode 100644 index 0000000000..0b99216ed5 --- /dev/null +++ b/packages/core-reporter/scripts/test.js @@ -0,0 +1,12 @@ +var z = require('zunder') +var u = z.undertaker +var setZunderConfig = require('./set-zunder-config') + +setZunderConfig(z) + +u.series( + z.applyTestEnv, + z.cleanTests, + z.buildTestScripts, + z.runTests +)() diff --git a/packages/core-reporter/scripts/watch.js b/packages/core-reporter/scripts/watch.js new file mode 100644 index 0000000000..bd29bfd558 --- /dev/null +++ b/packages/core-reporter/scripts/watch.js @@ -0,0 +1,16 @@ +var z = require('zunder') +var u = z.undertaker +var setZunderConfig = require('./set-zunder-config') + +setZunderConfig(z) + +u.series( + z.applyDevEnv, + z.cleanDev, + z.cleanTests, + u.parallel( + z.watchScripts, + z.watchTests, + z.watchStylesheets + ) +)() diff --git a/packages/core-reporter/src/reporter.jsx b/packages/core-reporter/src/main.jsx similarity index 98% rename from packages/core-reporter/src/reporter.jsx rename to packages/core-reporter/src/main.jsx index 3dcc52856e..faf0bc337b 100644 --- a/packages/core-reporter/src/reporter.jsx +++ b/packages/core-reporter/src/main.jsx @@ -69,4 +69,5 @@ Reporter.defaultProps = { statsStore, } +window.Reporter = Reporter export default Reporter diff --git a/packages/core-reporter/src/reporter.spec.jsx b/packages/core-reporter/src/main.spec.jsx similarity index 98% rename from packages/core-reporter/src/reporter.spec.jsx rename to packages/core-reporter/src/main.spec.jsx index cba5adbced..33e3b93c24 100644 --- a/packages/core-reporter/src/reporter.spec.jsx +++ b/packages/core-reporter/src/main.spec.jsx @@ -3,7 +3,7 @@ import { shallow } from 'enzyme' import React from 'react' import sinon from 'sinon' -import Reporter from './reporter' +import Reporter from './main' import Header from './header/header' import Runnables from './runnables/runnables' diff --git a/packages/core-runner/package.json b/packages/core-runner/package.json index 912869acd0..4e88ec2470 100644 --- a/packages/core-runner/package.json +++ b/packages/core-runner/package.json @@ -15,9 +15,9 @@ "build-dev": "node ./scripts/build-dev.js", "build-prod": "node ./scripts/build-prod.js", "prepublish": "npm run build-prod", - "release": "node ./scripts/check-reporter.js && releaser", - "start": "node ./scripts/watch.js", - "test": "node ./scripts/test.js" + "release": "releaser", + "test": "node ./scripts/test.js", + "watch-dev": "node ./scripts/watch.js" }, "files": [ "dist", @@ -25,7 +25,6 @@ ], "devDependencies": { "@cypress/core-releaser": "0.1.8", - "@cypress/core-reporter": "0.3.0", "@cypress/react-tooltip": "0.1.1", "babel-eslint": "^6.0.4", "bluebird": "^3.4.0", @@ -45,6 +44,6 @@ "react-dom": "^15.3.0", "sinon": "^1.17.5", "sinon-chai": "^2.8.0", - "zunder": "^3.4.12" + "zunder": "^3.5.0" } } diff --git a/packages/core-runner/scripts/check-reporter.js b/packages/core-runner/scripts/check-reporter.js deleted file mode 100644 index 91c9cef931..0000000000 --- a/packages/core-runner/scripts/check-reporter.js +++ /dev/null @@ -1,28 +0,0 @@ -// check if reporter is linked before releasing -// if it is, we don't want to release -// the reporter needs to be the prod version from npm - -var fs = require('fs') - -function bail (err) { - console.error("!!!!!!!!!!!!!!") - console.error("!!!!!!!!!!!!!!") - console.error() - console.error(err) - console.error() - console.error("!!!!!!!!!!!!!!") - console.error("!!!!!!!!!!!!!!") - process.exit(1) -} - -try { - var stats = fs.lstatSync('node_modules/@cypress/core-reporter') - if (stats.isSymbolicLink()) { - bail('The reporter is linked. It needs to be properly installed through npm before releasing.') - } else { - process.exit(0) - } -} catch (e) { - // reporter isn't installed at all, that's no good - bail('The reporter is not installed. Run "npm install" before releasing.') -} diff --git a/packages/core-runner/scripts/set-zunder-config.js b/packages/core-runner/scripts/set-zunder-config.js index c2b53dde78..aa95724c5e 100644 --- a/packages/core-runner/scripts/set-zunder-config.js +++ b/packages/core-runner/scripts/set-zunder-config.js @@ -1,14 +1,21 @@ module.exports = function setZunderConfig (zunder) { + var commonScripts = ['@cypress/react-tooltip', 'react', 'react-dom', 'mobx', 'mobx-react', 'lodash'] + zunder.setConfig({ cacheBust: false, + externalBundles: [ + { + scriptName: 'common.js', + libs: commonScripts.map((file) => ({ file })), + } + ], prodDir: 'dist', - resolutions: ['react', 'react-dom', 'mobx', 'mobx-react', 'lodash'], + resolutions: commonScripts, scriptName: 'runner.js', stylesheetName: 'runner.css', staticGlobs: { 'static/**': '', - 'node_modules/font-awesome/fonts/**': '/fonts', - 'node_modules/@cypress/core-reporter/dist/reporter.css': '', + 'node_modules/font-awesome/fonts/**': '/fonts' }, }) } diff --git a/packages/core-runner/src/app/app.jsx b/packages/core-runner/src/app/app.jsx index 86b217f612..df2a7ca9a9 100644 --- a/packages/core-runner/src/app/app.jsx +++ b/packages/core-runner/src/app/app.jsx @@ -1,11 +1,10 @@ -/* global $ */ +/* global $, Reporter */ import cs from 'classnames' import { action, observable } from 'mobx' import { observer } from 'mobx-react' import React, { Component, PropTypes } from 'react' import { findDOMNode } from 'react-dom' -import Reporter from '@cypress/core-reporter' import windowUtil from '../lib/window-util' import State from '../lib/state' diff --git a/packages/core-runner/static/index.html b/packages/core-runner/static/index.html index 9298dfc076..ad1979bf4f 100644 --- a/packages/core-runner/static/index.html +++ b/packages/core-runner/static/index.html @@ -7,7 +7,7 @@ - +
@@ -16,6 +16,8 @@ + +