* server: handle undefined values from plugins
* server: have plugins process inherit stdio
so console.logs and such from plugins file come through
* add cy.task()
* server: fix config spec
* driver: fix task spec
* server: change ‘task’ to ‘task:requested’
* server: have ‘task’ event take object literal instead of function
* server: document how to run individual integration and e2e tests
* fix cy.task specs
* server: fix task e2e spec
* ensure stack trace comes through for task error
* don’t show stack for ‘known’ user errors
* add types for cy.task
* @sandbox -> sinon
* add e2e spec for task returning undefined
* update readme re: e2e —spec
* timedout -> timedOut
* new Promise + setTimeout -> Promise.delay
* improve cy.task() error messages
* fix specs
* remove file from preprocessing after closing browser
* guard against removing file if no spec
* use the same nomenclature in child process as in parent process
* ensure file object state is cleared when closing file in child process
* fix spec broken by upstream changes
* server: fixes#691, add event for exposing browser launch args
- enable special handling of ‘—load-extension’
- add e2e / integration / unit tests
- handle both chrome + electron cases
* server: iterate on failing tests, don't strip electron options else we lose valuable properties
- add better debugging
* server: fix failing tests, browsers needed
* server: send in a complete browser object for 'before:browser:launch'
- useful for doing conditional things with version and/or path
* server: remove unused file
* server: WIP, start implementing accepting plugin returning promise and yielding config overrides [skip ci]
* server: cleanup the env + environentVariables disaster. simplify and only use 'env'
* server, desktop-gum: rename 'env' to 'cypressEnv' to avoid conflicts, fix failing tests
* server: modify plugins error content to be clearer
* runner, driver: more environmentVariables -> env cleanup
* fixes#509 return the complete configuration object to Cypress.config()
* fixes#1042 enable plugins to return a promise and modify config
* desktop-gui: add 'plugin' override to configuration display
* server: bug fix when plugin cause a project not to open
* desktop-gui: fix for failing e2e test
* server: make errors clearer when plugins crash
* server: fix bug with PLUGINS_FUNCTION_ERROR not sending right arguments
- fix failing tests
- improve plugin error content
* server: fix failing snapshots, preprocessor is invoked for support + spec files
* server: fix tests, don't watch the support file initially
- this was causing a problem where unhandled preprocessor errors were
causing the entire process to hang.
- this was happening because we weren’t properly running support files
through a custom preprocessor initially
* fixes failing tests
* server: upgrade browserify preprocessor to 1.0.1
* server: rename preprocessor config to file object
* server: normalize path when removing preprocessor file
* server: only add one listener for file:updated in socket
previously, a listener would be added for every spec file opened, linearly increasing how many watched:file:changed events would be fired when a single file changed
* fix broken menu specs
* extract browserify code and create preprocessor abstraction
* server: remove unused code
* server: implement logic for importing preprocessor
* server: add eslintrc and ignore test fixtures
* server: implement plugins API
* server: add node_cache module to manage clearing a package and its dependencies
* server: clear plugins file from cache to re-require it
* server: set pluginsFile to absolute path
* server: add debug logging to plugins
* server: watch pluginsFile
* server: throw the right error when requiring plugins file
* server: organize config folders and keys visually
* server: scaffold plugins file
* server: require plugins file via nodeCache.require
* server: update browserify preprocessor name and point to github for now
* server: remove redundant integration tests
* server: always scaffold plugins file, except when falsey
* server: add plugins file test to scaffold spec
* server: always provide util.fileUpdated to preprocessor
* server: update browserify-preprocessor dep
* server: fix integration tests
* server: remove redundant logic
* server: catch errors thrown synchronously by plugins function
* server: reduce chances of flakyness in async test
* driver: fix broken spec
* server: don’t check for dirname of supportFile and pluginFile when we know they’re already a directory
* driver: there is no dist
* server: update default options sent to browserify preprocessor
* server: send config into browserify instead of options
* server: add test around default preprocessor
* server: update browserify preprocessor
* server: refactor events spec to better handle multiple calls to handleEvent
* server: add tests around project:open events
* server/desktop-gui: handle errors when plugins file changes
* server: fix events spec
* server: allow any file types to be spec files
* server: validate config.pluginsFile
* server: remove link to error doc
* server: improve plugins error message
* server: simplify example plugins file
* server: on:spec:file:preprocessor -> file:preprocessor
* server: wrap plugins in a child process
* server: rename specsGlob to testFiles
* server: bump browserify-preprocessor ‘version’
* server: fix references left by merge
* server: fix incorrect function names
* server: fix plugin error serialization
* server: display error if plugins process has an uncaught exception or unhandled rejection
* server: reset domain on reset
* server: exit early on plugin error headlessly
* server: add e2e tests for plugins/preprocessors
* server: remove obselete node cache file
* server: fix integration tests
* server: log plugins error before exiting
* server: use npm version of browserify preprocessor
* server: extract string-splitting function
* socket: use path.join in spec
* server: eslint ignore scaffold files
* server: fix scaffolded plugins file links, add snapshot test
* server: if app_spec runs, cause a failure [skip ci]
- tested locally