# cypress-io/cypress — codebase unpack

> Canonical page: https://codevetter.com/unpack/cypress

This is a deterministic Repo Unpack scan of cypress-io/cypress — a structural map, not a review, security audit, or maintainer-endorsed description.

- Scanned commit: 7d987f04740f8f5388ac3116e8ef7957373ead14 (2026-10-02)
- Last upstream commit: test: park the real pointer before mounting InlineRunAllSpecs (#34972)
- Generated by codevetter 1.15.0 on 2026-10-02
- 3999 files scanned · 15.6 MB

Source inspection; upstream code and tests were not executed.

## Languages

- TypeScript: 2862 files
- JavaScript: 1645 files
- JSON: 581 files
- Vue: 348 files
- HTML: 333 files
- Markdown: 302 files
- CSS: 62 files
- Sass: 35 files

## Repository structure

- packages/ — 1375 files
- system-tests/ — 1374 files
- npm/ — 673 files
- cli/ — 191 files
- tooling/ — 146 files
- scripts/ — 117 files
- guides/ — 25 files
- .github/ — 20 files

Probable source entrypoint: `packages/` (inferred from the tree, not upstream docs)

## Package

- package.json: cypress v0.0.0-development — 80 declared dependencies

## Structural health signals

Average score 5.9/10 across 96 files; 69 hotspots. These are deterministic review leads, not proof of a bug.

## Recent history

- 7d987f04740f (2026-10-02) test: park the real pointer before mounting InlineRunAllSpecs (#34972)
- 002101299443 (2026-10-02) chore: Update v8 snapshot cache (#34963)
- e64db629133b (2026-10-02) chore: migrate 3 @packages/server unit specs to vitest (#34971)
- 50c87b0fde62 (2026-10-01) docs: tag the released commit instead of a nonexistent version-bump commit (#34967)
- a91e5188431f (2026-09-30) fix: keep the cookie jar in sync when cookies are set outside the proxy (#34894)

## Overview

Cypress is a browser testing platform for developers running end-to-end and component tests locally or in CI. This monorepo combines the installable CLI and Node API, an Electron application, a browser-side command driver, Vue interfaces, and framework/bundler integrations. At commit 7d987f04740f8f5388ac3116e8ef7957373ead14, distinctive implementation details include shared interception logic across HTTP-proxy and Chromium CDP transports, GraphQL application state, and CLI attachment to existing interactive sessions.

## System map

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. — [package.json#L235-253](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/package.json#L235-L253) [lerna.json#L1-12](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/lerna.json#L1-L12)
- The executable entry calls CLI.init(); the module entry exports open, run, cli, defineConfig, and defineComponentFramework. — [cli/lib/bin/cypress.ts#L1-5](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/bin/cypress.ts#L1-L5) [cli/lib/index.ts#L43-56](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/index.ts#L43-L56)
- 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. — [packages/server/index.js#L8-30](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/index.js#L8-L30) [packages/server/lib/cypress.ts#L93-125](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress.ts#L93-L125)
- 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. — [packages/data-context/src/data/ProjectConfigIpc.ts#L308-324](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L308-L324) [packages/data-context/src/data/ProjectConfigIpc.ts#L410-416](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L410-L416) [cli/package.json#L125-127](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/package.json#L125-L127)
- 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. — [packages/app/src/router/router.ts#L1-22](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/router/router.ts#L1-L22) [packages/app/src/router/router.ts#L70-78](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/router/router.ts#L70-L78) [packages/data-context/graphql/schema.ts#L14-37](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/schema.ts#L14-L37)
- createProxyRuntime and createCdpFetchRuntime compose interception transports; both receive the server-owned NetStubbingState rather than creating independent route state. — [packages/server/lib/network-runtime.ts#L31-43](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/network-runtime.ts#L31-L43) [packages/server/lib/network-runtime.ts#L104-124](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/network-runtime.ts#L104-L124) [packages/server/lib/network-runtime.ts#L174-200](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/network-runtime.ts#L174-L200)
- Inspected local storage includes versioned binary caches, project/global state.json files, and PID-named interactive-session records; these serve different lifecycle owners. — [cli/lib/tasks/state.ts#L51-60](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/tasks/state.ts#L51-L60) [packages/server/lib/saved_state.ts#L17-50](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/saved_state.ts#L17-L50) [packages/cypress-sessions/lib/index.ts#L65-85](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/cypress-sessions/lib/index.ts#L65-L85)
- 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. — [package.json#L8-20](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/package.json#L8-L20) [guides/release-process.md#L3-7](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/guides/release-process.md#L3-L7) [guides/release-process.md#L95-109](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/guides/release-process.md#L95-L109)

## Feature catalog

The inspected user surfaces include terminal execution, the Node API, interactive spec management, component mounting, network interception, and Cypress Cloud integration. The tap command adds discovery and control of an existing open-mode session. This catalogue groups evidenced capabilities; the bounded inspection does not enumerate every cy command, UI component, or published integration.
- cypress run exposes E2E/component selection, browser and spec filtering, config overrides, reporters, headed/headless operation, recording, parallel groups, cancellation thresholds, and POSIX exit codes. — [cli/lib/cli.ts#L258-289](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cli.ts#L258-L289)
- cypress open supports project/global mode, testing-type selection, browser/config overrides, and detached launch; install, verify, cache, version, and info provide installation and diagnostic operations. — [cli/lib/cli.ts#L292-307](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cli.ts#L292-L307) [cli/lib/cli.ts#L479-545](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cli.ts#L479-L545) [cli/lib/cli.ts#L551-592](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cli.ts#L551-L592) [cli/lib/cli.ts#L615-625](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cli.ts#L615-L625)
- The Node API provides open() and run(); run() returns parsed run output or a structured failed result when the binary produces no readable results. defineConfig() and defineComponentFramework() return their input objects. — [cli/lib/cypress.ts#L13-46](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress.ts#L13-L46) [cli/lib/cypress.ts#L78-98](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress.ts#L78-L98)
- The Specs page presents a spec list or no-specs state, opens CreateSpecModal, and subscribes to spec changes; Settings queries configuration and subscribes to configChange. — [packages/app/src/pages/Specs/Index.vue#L1-32](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/pages/Specs/Index.vue#L1-L32) [packages/app/src/pages/Specs/Index.vue#L73-97](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/pages/Specs/Index.vue#L73-L97) [packages/app/src/pages/Settings.vue#L14-30](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/pages/Settings.vue#L14-L30)
- cy.intercept accepts URL, method/URL, or matcher-object overloads and function, string-body, or static-response handlers; middleware requires a function handler. — [packages/driver/src/cy/net-stubbing/add-command.ts#L175-214](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/add-command.ts#L175-L214) [packages/driver/src/cy/net-stubbing/add-command.ts#L242-315](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/add-command.ts#L242-L315)
- React mount() clears the previous root, creates a ReactDOM root, and delegates to makeMountFn; the CLI exports React, Vue, Angular, and Svelte adapters, while the Vite dev-server integration resolves project Vite and warms support/spec modules conditionally. — [npm/react/src/mount.ts#L47-65](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/npm/react/src/mount.ts#L47-L65) [cli/package.json#L138-165](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/package.json#L138-L165) [npm/vite-dev-server/src/devServer.ts#L23-75](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/npm/vite-dev-server/src/devServer.ts#L23-L75)
- Cloud-facing features include login/signup and viewer validation, recorded/parallel run orchestration, and a Runs page that selects Git-tree or project runs and refetches after connectivity returns. — [packages/data-context/src/actions/AuthActions.ts#L36-78](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/actions/AuthActions.ts#L36-L78) [packages/server/lib/modes/run.ts#L1265-1295](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/run.ts#L1265-L1295) [packages/app/src/pages/Runs.vue#L37-59](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/pages/Runs.vue#L37-L59)
- cypress tap accepts session PID, JSON output, and timeout options; CLI-owned subcommands include sessions, status, specs, run, dom, aria, and inspect, with browser driving limited to Chromium-family sessions. — [cli/lib/cli.ts#L595-609](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cli.ts#L595-L609) [cli/lib/tap/commands/index.ts#L1-15](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/tap/commands/index.ts#L1-L15) [packages/cypress-sessions/lib/index.ts#L57-62](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/cypress-sessions/lib/index.ts#L57-L62)

## Data flow

Inputs cross explicit boundaries through CLI argument translation, configuration IPC, GraphQL operations, and network-event frames. State is split between DataContext, browser route/command state, server interception state, and local persistence. Outputs include browser responses, UI subscriptions, JSON run results, process exit codes, and session discovery records.
- processRunOptions translates user options into binary flags, including --run-project, config/env, recording key, reporter, and specs; spawn.start adds cwd, userNodePath, and userNodeVersion. — [cli/lib/exec/run.ts#L38-71](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/exec/run.ts#L38-L71) [cli/lib/exec/run.ts#L98-155](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/exec/run.ts#L98-L155) [cli/lib/exec/spawn.ts#L368-381](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/exec/spawn.ts#L368-L381)
- Configuration crosses into a child as project/config arguments and inherited environment; RunPlugins sends modified setupConfig and event registrations back through setupTestingType:reply. — [packages/data-context/src/data/ProjectConfigIpc.ts#L308-324](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L308-L324) [packages/server/lib/plugins/child/run_plugins.ts#L113-145](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L113-L145)
- GraphQL socket requests parse JSON and query text, execute graphqlSchema with a request context, return results through a callback, and balance DataContext active-request accounting in finally. — [packages/data-context/graphql/makeGraphQLServer.ts#L162-186](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/makeGraphQLServer.ts#L162-L186)
- The driver annotates regex/glob matchers for transport, lowercases header matcher names, stores handlers locally by routeId, and emits route:added; the server restores matcher types and appends BackendRoute to state.routes. — [packages/driver/src/cy/net-stubbing/add-command.ts#L71-87](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/add-command.ts#L71-L87) [packages/driver/src/cy/net-stubbing/add-command.ts#L204-239](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/add-command.ts#L204-L239) [packages/net-stubbing/lib/server/driver-events.ts#L22-39](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/driver-events.ts#L22-L39) [packages/net-stubbing/lib/server/driver-events.ts#L70-97](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/driver-events.ts#L70-L97)
- Matching excludes component dev-server paths and can synthesize preflight responses; matchRoutes orders middleware first, ordinary handlers in reverse registration order, and excludes disabled routes. — [packages/net-stubbing/lib/server/middleware/request.ts#L15-44](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/middleware/request.ts#L15-L44) [packages/network-interception/lib/core/route-matching.ts#L140-153](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/core/route-matching.ts#L140-L153)
- Interception buffers request/response bodies, preserves binary content, exchanges subscription events with browser handlers, merges changes, and either ends a stubbed request or continues transport with a modified body stream. — [packages/net-stubbing/lib/server/handle-intercept-request.ts#L93-139](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/handle-intercept-request.ts#L93-L139) [packages/driver/src/cy/net-stubbing/events/index.ts#L77-136](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/events/index.ts#L77-L136) [packages/net-stubbing/lib/server/handle-intercept-response.ts#L45-83](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/handle-intercept-response.ts#L45-L83)
- Interactive-session JSON holds schema, PID, resolved project root, port, session ID, and testing type; CDP/browser attachment remains in memory, while the probe reads machine/user identity at request time. — [packages/server/lib/cypress-sessions.ts#L45-61](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress-sessions.ts#L45-L61) [packages/server/lib/cypress-sessions.ts#L71-90](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress-sessions.ts#L71-L90) [packages/server/lib/routes.ts#L224-241](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/routes.ts#L224-L241)
- runSpecs aggregates per-spec statistics, transforms results with createPublicRunResults, invokes after:run, and writes output; programmatic run() supplies a temporary output path and reads that JSON after the child finishes. — [packages/server/lib/modes/run.ts#L964-998](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/run.ts#L964-L998) [cli/lib/cypress.ts#L28-46](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress.ts#L28-L46)

## Behavior traces

Three concrete flows were followed across their relevant files: test-run startup/results, interception registration through response completion, and interactive-session persistence through CLI attachment. The traces below retain important branches such as dev verification bypass, recording delegation, static-response termination, and browser-readiness filtering. A supplementary startup trace explains how the interactive window becomes available.
- Run entry: bin/cypress.ts → CLI.init() → run command action → runModule.start() → processRunOptions() → spawnStart(); non-dev execution awaits binary verify.start(), while dev execution bypasses it. — [cli/lib/bin/cypress.ts#L1-5](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/bin/cypress.ts#L1-L5) [cli/lib/cli.ts#L506-515](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cli.ts#L506-L515) [cli/lib/exec/run.ts#L179-212](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/exec/run.ts#L179-L212)
- Run initialization: cypress.start() parses argv and selects run for runProject → startInMode() → runElectron() → modes factory → setCtx(makeDataContext()) and initializeMode() → modes/run.run() awaits loading and calls ready(). — [packages/server/lib/cypress.ts#L141-158](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress.ts#L141-L158) [packages/server/lib/cypress.ts#L193-209](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress.ts#L193-L209) [packages/server/lib/modes/index.ts#L26-40](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/index.ts#L26-L40) [packages/server/lib/modes/run.ts#L1298-1325](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/run.ts#L1298-L1325)
- Run completion: ready() discovers browsers and opens the project, validates recording parameters, and handles empty specs; runAllSpecs() calls runSpecs(), which invokes before:run → iterateThroughSpecs/runEachSpec → runSpec() → after:run → writeOutput(). Recording delegates through createRunAndRecordSpecs; POSIX mode collapses failure counts except reserved code 112. — [packages/server/lib/modes/run.ts#L1146-1163](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/run.ts#L1146-L1163) [packages/server/lib/modes/run.ts#L1186-1203](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/run.ts#L1186-L1203) [packages/server/lib/modes/run.ts#L951-998](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/run.ts#L951-L998) [packages/server/lib/cypress.ts#L261-286](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress.ts#L261-L286)
- Intercept registration: addCommand() installs intercept → getMatcherOptions() → validateRouteMatcherOptions() → addRoute() → emitNetEvent('route:added') via Cypress.backend('net', ...) → onNetStubbingEvent() → onRouteAdded(). — [packages/driver/src/cy/net-stubbing/add-command.ts#L304-315](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/add-command.ts#L304-L315) [packages/driver/src/cy/net-stubbing/add-command.ts#L216-239](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/add-command.ts#L216-L239) [packages/driver/src/cy/net-stubbing/events/index.ts#L49-55](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cy/net-stubbing/events/index.ts#L49-L55) [packages/net-stubbing/lib/server/driver-events.ts#L111-124](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/driver-events.ts#L111-L124)
- Intercept request: SetMatchingRoutes() applies dev-server/preflight conditions and core.matchRoutes() → InterceptRequest() → core.handleRequest() → handleInterceptRequest() creates and registers InterceptedRequest → ensureBody() → addDefaultSubscriptions() → before:request handlers → merge changes → end() if responseSent, otherwise continueRequest(). — [packages/net-stubbing/lib/server/middleware/request.ts#L15-58](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/middleware/request.ts#L15-L58) [packages/network-interception/lib/core/network-interception-core.ts#L59-60](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/core/network-interception-core.ts#L59-L60) [packages/net-stubbing/lib/server/handle-intercept-request.ts#L31-48](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/handle-intercept-request.ts#L31-L48) [packages/net-stubbing/lib/server/handle-intercept-request.ts#L93-139](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/handle-intercept-request.ts#L93-L139)
- Intercept response: handleInterceptResponse() bypasses unmatched requests, obtains a plain-text/binary body, invokes before:response → response:callback → response subscriptions, merges response/header changes, and continues with getBodyStream(); response finish emits after:response and removes the request from server state. — [packages/net-stubbing/lib/server/handle-intercept-response.ts#L22-55](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/handle-intercept-response.ts#L22-L55) [packages/net-stubbing/lib/server/handle-intercept-response.ts#L67-83](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/handle-intercept-response.ts#L67-L83) [packages/net-stubbing/lib/server/handle-intercept-request.ts#L54-65](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/lib/server/handle-intercept-request.ts#L54-L65)
- Session lifecycle: ProjectBase registers an open-mode session → addSession() creates UUID identity → persist() serializes writes and renames a temporary JSON file → CLI readLiveSessions() validates records/reaps dead PIDs → verifySessionRecord() checks the session echo and CDP /json/version → resolveSession() filters ready supported sessions → CDP attachment probes page targets for the tap binding. — [packages/server/lib/project-base.ts#L268-274](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/project-base.ts#L268-L274) [packages/server/lib/cypress-sessions.ts#L25-61](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress-sessions.ts#L25-L61) [cli/lib/cypress-sessions/index.ts#L109-168](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress-sessions/index.ts#L109-L168) [cli/lib/tap/tap-connection.ts#L92-148](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/tap/tap-connection.ts#L92-L148) [cli/lib/cypress-sessions/store.ts#L47-82](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress-sessions/store.ts#L47-L82) [cli/lib/cypress-sessions/store.ts#L100-118](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress-sessions/store.ts#L100-L118) [cli/lib/cypress-sessions/liveness.ts#L26-77](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress-sessions/liveness.ts#L26-L77)
- Interactive startup: modes factory starts initializeMode() → interactive.run() concurrently awaits app.whenReady() and makeGraphQLServer() → ready() loads saved state and opens the desktop window → optional 'Cypress is ready' sentinel lets detached CLI spawning destroy streams, unref the child, and resolve. — [packages/server/lib/modes/index.ts#L26-45](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/index.ts#L26-L45) [packages/server/lib/modes/interactive.ts#L138-159](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/interactive.ts#L138-L159) [packages/server/lib/modes/interactive.ts#L162-204](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/interactive.ts#L162-L204) [cli/lib/exec/spawn.ts#L208-224](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/exec/spawn.ts#L208-L224)

## Testing signals

Tests and CI were inspected, not executed; their existence is not a passing result. The repository combines Vitest, Mocha, Jest, Cypress browser suites, and a system-test harness. Inspected coverage includes option translation, session persistence/probing, subscription behavior, configuration child failures, and browser interception. The inventory and test inspection are bounded, so local TODOs and mocks describe specific limits rather than whole-repository coverage gaps.
- Root Vitest discovers package/tooling/script project configurations and the CLI project, excludes system-tests, and configures V8 coverage plus default/JUnit reporting; server test-unit runs Mocha then Vitest, while data-context uses Jest with experimental VM modules. — [vitest.config.ts#L3-15](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/vitest.config.ts#L3-L15) [packages/server/package.json#L18-23](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/package.json#L18-L23) [packages/data-context/package.json#L17-19](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/package.json#L17-L19)
- CLI run tests assert project-path rejection, conflicting headed/headless flags, testing-type choices, and POSIX argument forwarding; verify/spawn are mocked, so these tests do not establish real binary launch behavior. — [cli/test/lib/exec/run.spec.ts#L32-41](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/test/lib/exec/run.spec.ts#L32-L41) [cli/test/lib/exec/run.spec.ts#L61-99](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/test/lib/exec/run.spec.ts#L61-L99) [cli/test/lib/exec/run.spec.ts#L112-164](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/test/lib/exec/run.spec.ts#L112-L164)
- Server session tests use temporary cache directories and inspect actual JSON files, covering immutable identity, temporary-file cleanup, swallowed write failure, pending-write removal, and project-switch preservation. — [packages/server/test/unit/cypress-sessions_spec.ts#L13-32](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/test/unit/cypress-sessions_spec.ts#L13-L32) [packages/server/test/unit/cypress-sessions_spec.ts#L62-109](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/test/unit/cypress-sessions_spec.ts#L62-L109) [packages/server/test/unit/cypress-sessions_spec.ts#L221-249](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/test/unit/cypress-sessions_spec.ts#L221-L249)
- CLI session tests exercise fake HTTP sessions and closed ports, asserting rejection of recycled-port/session mismatches, malformed JSON, timeout, and stale CDP endpoints while retaining browser identity. — [cli/test/lib/cypress-sessions.spec.ts#L193-227](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/test/lib/cypress-sessions.spec.ts#L193-L227) [cli/test/lib/cypress-sessions.spec.ts#L230-262](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/test/lib/cypress-sessions.spec.ts#L230-L262)
- InterceptedRequest Vitest tests resolve pending handlers through a mocked socket and assert enabled/disabled subscription dispatch counts; they do not exercise a real proxy or CDP transport. — [packages/net-stubbing/test/unit/intercepted-request.spec.ts#L8-64](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/test/unit/intercepted-request.spec.ts#L8-L64) [packages/net-stubbing/test/unit/intercepted-request.spec.ts#L67-118](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/net-stubbing/test/unit/intercepted-request.spec.ts#L67-L118)
- The driver interception suite asserts route state and backend event frames in browser tests, but declares 15 retries and unique route names for documented flakiness/request leakage. runEachSpec also carries an explicit TODO for a cancelled just-in-time component-run system test. — [packages/driver/cypress/e2e/commands/net_stubbing.cy.ts#L14-29](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/cypress/e2e/commands/net_stubbing.cy.ts#L14-L29) [packages/driver/cypress/e2e/commands/net_stubbing.cy.ts#L45-84](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/cypress/e2e/commands/net_stubbing.cy.ts#L45-L84) [packages/server/lib/modes/run.ts#L889-904](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/modes/run.ts#L889-L904)
- A Jest ProjectConfigIpc test loads a real configuration child and injects EPIPE; system config tests cover invalid settings and JS/TS config filenames, and the harness offers withBinary mode. A config-spec TODO requests environment-variable coverage locally. — [packages/data-context/test/unit/data/ProjectConfigIpc-real-child-process.spec.ts#L33-84](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/test/unit/data/ProjectConfigIpc-real-child-process.spec.ts#L33-L84) [system-tests/test/config_spec.js#L21-79](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/system-tests/test/config_spec.js#L21-L79) [system-tests/lib/system-tests.ts#L81-101](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/system-tests/lib/system-tests.ts#L81-L101)
- Inspected CircleCI definitions gate contributor builds behind approval, select suites through pipeline parameters, add Chrome forceHttp1 smoke coverage, and aggregate browser/system/type/lint checks at ready-to-release; GitHub Actions separately checks semantic PR titles/changelog and generates release SBOMs. — [.circleci/src/pipeline/workflows/pull-request.yml#L39-105](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/.circleci/src/pipeline/workflows/pull-request.yml#L39-L105) [.circleci/src/pipeline/workflows/pull-request.yml#L327-345](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/.circleci/src/pipeline/workflows/pull-request.yml#L327-L345) [.circleci/src/pipeline/workflows/@main.yml#L279-331](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/.circleci/src/pipeline/workflows/%40main.yml#L279-L331) [.github/workflows/semantic-pull-request.yml#L35-49](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/.github/workflows/semantic-pull-request.yml#L35-L49)

## Risk map

These are source observations and explicitly marked hypotheses, not confirmed vulnerabilities. Sensitive boundaries include configuration execution, privileged browser-to-server commands, filesystem access, GraphQL listeners, and CDP session control. Transport switching and V8 snapshot composition create substantial coupling. Runtime validation and broader test results remain unknown because this investigation executed no repository code.
- Configuration/plugin execution is a host-code boundary: ProjectConfigIpc inherits most process environment and forks with the user Node, while RunPlugins calls setupNodeEvents and later invokes registered handlers. — [packages/data-context/src/data/ProjectConfigIpc.ts#L308-324](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L308-L324) [packages/data-context/src/data/ProjectConfigIpc.ts#L410-416](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L410-L416) [packages/server/lib/plugins/child/run_plugins.ts#L113-117](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L113-L117) [packages/server/lib/plugins/child/run_plugins.ts#L181-184](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L181-L184)
- PrivilegedCommandsManager validates channel keys and command name/args for E2E requests before dispatching env, file, origin, and task operations; hasVerifiedCommand uses find() without removing the entry despite its removal comment. — [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L65-96](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L65-L96) [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-117](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-L117)
- readFile/writeFile resolve caller paths against projectRoot without a containment check in those helpers; absolute paths or parent traversal can therefore address locations outside the project. Whether a caller is authorized depends on upstream command controls. — [packages/server/lib/files.ts#L4-20](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/files.ts#L4-L20) [packages/server/lib/files.ts#L51-59](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/files.ts#L51-L59) [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L83-117](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L83-L117)
- Hypothesis for focused review: the Launchpad GraphQL listener supplies no explicit bind host and accepts requests without Origin; its CORS denial controls browser response visibility rather than being an authentication check. Actual reachability and exploitability were not tested. (inferred) — [packages/data-context/graphql/makeGraphQLServer.ts#L39-43](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/makeGraphQLServer.ts#L39-L43) [packages/data-context/graphql/makeGraphQLServer.ts#L119-128](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/makeGraphQLServer.ts#L119-L128) [packages/data-context/graphql/corsOriginDelegate.ts#L23-48](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/corsOriginDelegate.ts#L23-L48)
- Session probes expose live CDP URL and machine/user identity when the URL session ID matches; session identity is persisted under the cache. The project server binds loopback, and CLI probes additionally require matching identity and reachable CDP, making local record/endpoint access a sensitive boundary. — [packages/server/lib/routes.ts#L224-241](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/routes.ts#L224-L241) [packages/server/lib/cypress-sessions.ts#L45-61](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/cypress-sessions.ts#L45-L61) [packages/server/lib/server-base.ts#L930-944](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/server-base.ts#L930-L944) [cli/lib/cypress-sessions/liveness.ts#L50-77](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress-sessions/liveness.ts#L50-L77)
- Transport switching must preserve the same stubbing-state object and publish mode/runtime consistently; server comments identify broken intercept matching and disagreement with the still-running browser as failure modes. — [packages/server/lib/server-base.ts#L434-437](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/server-base.ts#L434-L437) [packages/server/lib/server-base.ts#L481-506](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/server-base.ts#L481-L506) [packages/server/lib/routes.ts#L35-42](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/routes.ts#L35-L42)
- cy.exec's server module remains imported solely for V8 snapshot composition and throws a Cypress 16 removal error; deleting this apparently obsolete stub has a documented mksnapshot failure risk. — [packages/server/lib/exec.ts#L1-6](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/exec.ts#L1-L6) [packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-105](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/privileged-commands/privileged-commands-manager.ts#L98-L105)
- A successful production-build command alone does not prove type correctness: server build-prod and data-context build-prod explicitly tolerate tsc failure, while separate check-ts scripts enforce no-emit checks. — [packages/server/package.json#L7-8](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/package.json#L7-L8) [packages/data-context/package.json#L8-12](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/package.json#L8-L12)

## Extension points

Public customization is concentrated in Cypress command registration, setupNodeEvents, component adapters, and CLI APIs. Internal extension seams include injected network ports, ordered policies, generated frontend routes, and Nexus schema plugins. New code should enter through the owning seam because transport, generated-artifact, and process boundaries constrain implementation placement.
- Cypress.Commands supports add/addAll, overwrite, and addQuery; registration protects built-in/reserved names and derives parent/child/dual command behavior from prevSubject. — [packages/driver/src/cypress/commands.ts#L70-120](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cypress/commands.ts#L70-L120) [packages/driver/src/cypress/commands.ts#L123-165](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cypress/commands.ts#L123-L165)
- setupNodeEvents receives registerChildEvent and initialConfig; event registrations are validated, repeated task registrations merge, and a default file preprocessor is installed only when the user supplies none. — [packages/server/lib/plugins/child/run_plugins.ts#L65-105](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L65-L105) [packages/server/lib/plugins/child/run_plugins.ts#L113-136](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L113-L136)
- Plugin execution dispatch has specific wrappers for dev-server:start, file:preprocessor, browser launch, tasks, and run/spec/screenshot lifecycle events. — [packages/server/lib/plugins/child/run_plugins.ts#L149-173](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L149-L173)
- NetworkInterceptionCore accepts injected policy, request/response, document preparation, capture, cookie, command-log, and browser-automation ports; effects are delegated rather than embedded in matching logic. — [packages/network-interception/lib/core/network-interception-core.ts#L20-38](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/core/network-interception-core.ts#L20-L38) [packages/network-interception/lib/core/network-interception-core.ts#L118-167](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/core/network-interception-core.ts#L118-L167)
- NetworkPolicyRegistry.add appends policies; runPolicies filters by phase and when(exchange), applies policies sequentially with shared state, and stops after end(). — [packages/network-interception/lib/registry/network-policy-registry.ts#L21-30](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/registry/network-policy-registry.ts#L21-L30) [packages/network-interception/lib/registry/network-policy-registry.ts#L36-85](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/registry/network-policy-registry.ts#L36-L85)
- Frontend pages plug into virtual:generated-pages and generated layouts; createRouter adds default-page redirection and installs the Studio unsaved-changes navigation guard. — [packages/app/src/router/router.ts#L1-22](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/router/router.ts#L1-L22) [packages/app/src/router/router.ts#L70-78](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/router/router.ts#L70-L78)
- GraphQL extension uses schemaTypes, remote-schema merging, and structural/runtime Nexus plugins; mutations and filesystem writes are intended to run through DataContext.actions. — [packages/data-context/graphql/schema.ts#L4-7](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/schema.ts#L4-L7) [packages/data-context/graphql/schema.ts#L29-54](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/schema.ts#L29-L54) [packages/data-context/src/DataContext.ts#L182-187](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/DataContext.ts#L182-L187)
- Component integration offers defineComponentFramework and a devServer contract returning port/close; tap has an ordered CLI command registry that precedes commands advertised by the running session's schema. — [cli/lib/cypress.ts#L82-98](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress.ts#L82-L98) [npm/vite-dev-server/src/devServer.ts#L13-23](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/npm/vite-dev-server/src/devServer.ts#L13-L23) [npm/vite-dev-server/src/devServer.ts#L78-89](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/npm/vite-dev-server/src/devServer.ts#L78-L89) [cli/lib/tap/commands/index.ts#L10-15](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/tap/commands/index.ts#L10-L15)

## Contributor handoff

Tests and CI were inspected, not executed, and no repository files were changed. Future implementation work should start from package-local guidance and identify the runtime, generated artifacts, and test runner before editing. The highest-value boundaries to preserve are shared interception state, session identity/persistence, user-Node configuration execution, and public CLI/module compatibility. This is a bounded investigation rather than exhaustive inventory or verification.
- Read root/package AGENTS.md and the appropriate guides before implementation; package documentation supplies architecture and runner details, and canonical multi-step workflows belong in guides. — [AGENTS.md#L16-27](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/AGENTS.md#L16-L27) [packages/server/AGENTS.md#L38-62](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/AGENTS.md#L38-L62) [packages/data-context/AGENTS.md#L26-51](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/AGENTS.md#L26-L51)
- Use Yarn 1 and existing workspace scripts; avoid root yarn test --scope for narrowing because its hardcoded Lerna scopes broaden the run. — [AGENTS.md#L29-34](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/AGENTS.md#L29-L34) [AGENTS.md#L54-73](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/AGENTS.md#L54-L73) [package.json#L60-70](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/package.json#L60-L70)
- Identify the runtime before using APIs: CLI/config-child support follows cli engines, the main process follows Electron, and browser bundles have a separate browser floor. — [AGENTS.md#L260-269](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/AGENTS.md#L260-L269) [cli/package.json#L125-127](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/package.json#L125-L127) [packages/data-context/src/data/ProjectConfigIpc.ts#L319-324](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/data/ProjectConfigIpc.ts#L319-L324)
- New code and fixtures use TypeScript and ESLint conventions; preserve single quotes, no semicolons, two-space indentation, type-only imports, and documented skip reasons. — [AGENTS.md#L215-233](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/AGENTS.md#L215-L233)
- Edit CT adapter sources under npm rather than copied cli artifacts; regenerate Nexus/schema outputs through data-context build, and rebuild the shared session contract before CLI consumers pick up changes. — [cli/AGENTS.md#L63-70](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/AGENTS.md#L63-L70) [packages/data-context/AGENTS.md#L44-50](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/AGENTS.md#L44-L50) [packages/cypress-sessions/AGENTS.md#L36-42](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/cypress-sessions/AGENTS.md#L36-L42)
- For execution-authorized validation, target CLI Vitest files with yarn workspace cypress test-unit -- <spec>, server Mocha with test-unit-mocha, server Vitest with test-unit-vitest, and data-context Jest with test-unit -- <spec>; then run relevant check-ts/lint scripts. These commands were inspected, not run in this audit. — [cli/package.json#L12-23](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/package.json#L12-L23) [packages/server/AGENTS.md#L11-25](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/AGENTS.md#L11-L25) [packages/data-context/package.json#L12-19](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/package.json#L12-L19) [package.json#L26-26](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/package.json#L26-L26)
- Keep platform-dependent CLI tests host-independent: mock both os.arch and the arch package, avoid regenerating canonical snapshots to hide host drift, and account for util._cachedArch singleton state. — [cli/AGENTS.md#L50-61](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/AGENTS.md#L50-L61)
- Interception edits require both browser-CDP and forceHttp1 validation plans; preserve the server-owned state across browser switches, and treat contributor CI approval/parameter filters as execution conditions rather than proof that all suites ran. — [packages/server/lib/server-base.ts#L434-437](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/server-base.ts#L434-L437) [.circleci/src/pipeline/workflows/pull-request.yml#L39-105](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/.circleci/src/pipeline/workflows/pull-request.yml#L39-L105) [.circleci/src/pipeline/workflows/pull-request.yml#L327-345](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/.circleci/src/pipeline/workflows/pull-request.yml#L327-L345)

Source repository: https://github.com/cypress-io/cypress
Full evidence corpus: https://github.com/Codevetter/codevetter/tree/main/benchmarks/repo-unpacks/cypress.json

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
