CodeVetter · Repo Unpack · System map
cypress-io/cypress
The system spans a user-Node CLI, an Electron main process, a configuration/plugin child process, and browser bundles. The application exposes GraphQL and browser communication services while coordinating projects and network interception. Distribution includes an npm module and platform-specific desktop binaries, with separate build and release machinery.
- Yarn workspaces cover cli, packages, npm, tooling, system-tests, and scripts; Lerna uses the same package layout and selects Yarn as its npm client.
- The executable entry calls CLI.init(); the module entry exports open, run, cli, defineConfig, and defineComponentFramework.
- Server startup installs the require hook before loading start-cypress; runElectron dispatches directly to modes when already inside Electron and otherwise opens an Electron child.
- ProjectConfigIpc forks configuration code with cwd at the config file's directory and execPath set to the resolved user Node; cli/package.json supports Node ^22, ^24, or >=26.
- The Vue application uses generated hash-history routes; its state backend builds a Nexus GraphQL schema with DataContext as context and a wrapped remote schema.
- createProxyRuntime and createCdpFetchRuntime compose interception transports; both receive the server-owned NetStubbingState rather than creating independent route state.
- Inspected local storage includes versioned binary caches, project/global state.json files, and PID-named interactive-session records; these serve different lifecycle owners.
- Root build runs the Lerna build, Electron binary build, and CLI build; release documentation distinguishes independently published @cypress packages from desktop binaries promoted in S3 and the cypress npm artifact.