* cli, server: introduce --config-file argument * server: remove unused import * server: wip * server: consider --config-file in settings * server: pass options to settings.read from config * server: store options in Project class, pass to all settings calls * server: _initPlugins needs to accept options, for being called from server * server: accept optional external options in open * cli: update help snapshots * server: realizing now that these were written like this so they could be stubbed - removing some unnecessary usages of @options * cli: pass configFile when it's false * server: --config-file false and --config-file blah.json work * server: add unit tests for --config-file * server: pass configFile to desktop-gui * desktop-gui: display 'cypress.json' according to --config-file arg * desktop-gui: add integration tests for --config-file * cli: add tests for --config-file * PR changes * PR changes * cli: update snapshots * server: updating error messages * runner: update cypress.json mention * fixing name overlap * server: integration tests for --config-file * runner: update Header component tests * cli: fix snapshot * desktop-gui: fix test * driver: fixing error messages - not really any visibility to cli args from here so just static strings * server: update snapshots * server: update snapshots * cli: updating snapshot * driver: how did i miss this? * add skipped blank line to the snapshot * fix missing proxy require statement (was lost in merge of develop)...weird * add module API defs to types * module API tests * send better error when config file can't be found * fix dtslint test * update cli help to use 'configuration file' * update snapshot using 7.7.1 in place * fix failing config_spec * be.visible * show custom config file name in driver errors * add tests for non-default config file in driver error messages * single-quote config file name * 🙅 IIFEs 🙅 * 🤦 * fix failing test * fix failing test, cleanup * lint * delete duplicate coffee spec * Update run.js * Delete app_spec.js.mp4 * in open mode, only store projects to recents list if 'cypress.json' is the configFile discussion: https://git.io/JeGyF * feedback
CLI
The CLI is used to build Cypress npm module to be run within a terminal.
The CLI has the following responsibilities:
- Allow users to print CLI commands
- Allow users to install the Cypress executable
- Allow users to print their current Cypress version
- Allow users to run Cypress tests from the terminal
- Allow users to open Cypress in the interactive GUI.
- Allow users to verifies that Cypress is installed correctly and executable
- Allow users to manages the Cypress binary cache
Installing
The CLI's dependencies can be installed with:
cd cli
npm install
Building
See scripts/build.js. Note that the built NPM package will include NPM_README.md as its public README file.
Testing
Automated
You can run unit tests with:
npm test
This will take and compare snapshots of the CLI output. To update snapshots, see snap-shot-it instructions: https://github.com/bahmutov/snap-shot-it#advanced-use
Manual
To build and test an NPM package:
npm installnpm run build
This creates build folder.
cd build; npm pack
This creates an archive, usually named cypress-<version>.tgz. You can install this archive from other projects, but because there is no corresponding binary yet (probably), skip binary download. For example from inside cypress-example-kitchensink folder
npm i ~/{your-dirs}/cypress/cli/build/cypress-3.3.1.tgz --ignore-scripts
Which installs the tgz file we have just built from folder Users/jane-lane/{your-dirs}/cypress/cli/build.