* refactor(server): convert reporter to TypeScript
Basic TypeScript conversion of the server reporter module and its unit tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
* refactor(server): enhance types for reporter TypeScript conversion
Adds more precise type annotations on top of the initial TS conversion,
particularly around mocha runnable object shapes where runtime checks
default to undefined — improving debuggability if bugs surface in the
reporter.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
- Convert lib/util/electron-app.js to electron-app.ts with ES module exports,
static electron import, and typed opts for isRunningAsElectronProcess.
- Replace dynamic requires in cypress.ts and run.ts with static imports.
- Update start-cypress.js to destructure isRunning from the compiled module.
- Rename electron_spec.js to electron_spec.ts and align browser unit tests with
ESM imports and Automation setup.
- Migrate electron-app_spec to TypeScript; import setRemoteDebuggingPort and
electron app directly instead of require.
- Add @ts-expect-error in electron_spec where tests still rely on untyped sinon
stubs, legacy string browser arguments, and partial launch options.
Co-authored-by: Cursor <cursoragent@cursor.com>
Upgrade esbuild to ^0.28.0 so the native binary uses a fixed Go toolchain
(TLS resumption). Set packherd transpile and bundle targets to node20 to
match the published CLI minimum, refresh related locks, and document the
follow-up checklist in the Electron upgrade guide.
Fixes https://github.com/cypress-io/cypress/issues/33599
Co-authored-by: Cursor <cursoragent@cursor.com>
* wip: graceful exit
* add types for signal-exit
* use graceful exit; properly forward signals to forked process from gulp
* rm extraneous
* wait for child processes to close before exiting parent processes
* do not teardown twice; allow for multiple will-quit messages
* wait for async child to exit, clean up
* bring back env vars rather than inlined undefines
* updated tests
* fix exit codes
* pingpong code
* system test
* rm extraneous debug entry
* fix various
* fix operator precedence w/ promise
* improper treekill usage, coerce null exitCode
* fix concurrent duplicate .close() on watchers
* changelog
* clear timeout
* refinements
* refine
* infer exit code from signal
* if graceful exit fails in before-quit handler, exit with code 1
* v8 build errors
* revert lockfile teardown to previous pattern, keep on graceful-exit
* exit code 1 no matter what the signal is
* system test snapshots
* snapshot
* integration test timing fixes, more robust teardown
* no eventmap type huh
* universal reset of graceful exit
* rm all listeners from studio lifecycle
* euid on windows
* fix posix code 112 exit criterion
* mock process.exit in interactive spec
* fix graceful exit step
* better handling of return types for exit codes
* fixes an issue where system tests were not tearing down correctly
* rm dead code
* 112
* Update record_spec.js
* better messaging, debugging
* additional debugging for child process; fix CT teardown
* changelog
* fix run child fixture failing to exit
* rm console
* add proper error listener so test does not fail prematurely
* system test snapshots; no longer emit err from async child
* add back snapshots that got removed?
* only resolve on signals, not reject
* shut down gql ws server correctly
* properly await project shutdown in unit test
* prevent repeated graphql-ws .dispose() calls
* fix spawn unit test
* debounce signals in graceful exit signal handlers to account for duplicate kills from signal-exit
* only emit sigint/term message once, in case signal-exit goes overboard
* changelog
* Apply suggestion from @cacieprins
* do not double-resolve
* rm unused types
* rm all listeners on child process even if already killed
* sigkill = exit with 137
* prevent zombie plugin child processes
* prevent morgan output during shutdown
* surround sigint messaging with newlines to improve visual experience
* correct changelog
* fix ci-only issues
* enable mockery for morgan in before each instead of outside of test closure
* changelog
* fix out of order
* ensure stdin is no longer set to raw mode when signals are received
* fix spawn unit tests for setRawMode(false)
* check tty in gulp script
* lock, cache
* wsp
* prevent orphaned steps in graceful shutdown
* dont stack sigint/term handlers in pkgs/electron open
* changelog
Removes the need to manually bump the root package.json version before
each release. The get-next-version.js script now always computes the
next version from commit history against the last npm release, using
the checked-in version only as an explicit override when it's a real
semver (not the sentinel).
* chore: remove experimentalPromptCommand config
* Update with code review
* feat: add projectId handling in CyPromptLifecycleManager and ProjectBase
- Enhanced ProjectBase to include projectId in the context.
- Updated CyPromptLifecycleManager to utilize projectId, with fallback handling when project configuration fails.
- Added tests to verify behavior when project configuration is unavailable, ensuring fallback projectId is used correctly.
* Update with code review
* Update with code review
* fix(deps): remediate package vulnerabilities
- Bump minimatch from 3.1.2 to 3.1.3 in data-context, driver, and
network packages to address ReDoS vulnerability
- Add yarn resolutions to pin minimatch across transitive dependencies
(lerna, nx, editorconfig, graphql-config, mocha, serve-handler)
- Add serialize-javascript 7.0.3 resolution to fix XSS vulnerability
- Remove obsolete socket.io-parser resolution
- Bump vite from 3.2.11 to 4.5.12 in outdated-deps test projects and
update corresponding e2e test assertions
- Bump Angular 21 test project dependencies from ^21.0.0 to ^21.2.0
* fix(deps): pin mocha minimatch resolution to 3.1.3
- Change mocha-7.2.0/minimatch resolution from 5.1.8 to 3.1.3 since
mocha 7.2.0 depends on minimatch ^3.0.4, which is incompatible with
the 5.x major version. This removes the unused minimatch@5.1.8 entry
from yarn.lock.
* docs(changelog): add entries for minimatch and serialize-javascript upgrades
- Add dependency update changelog entries for minimatch 3.1.3 and
serialize-javascript 7.0.3 vulnerability remediations in PR #33461
* chore: update CI cache version to 03-10-2026
* docs(cli): move minimatch and serialize-javascript entries to 15.13.0
Move the minimatch and serialize-javascript dependency upgrade entries
from 15.12.0 to the pending 15.13.0 release section so they are listed
under the correct version.
Closes#33461
Made-with: Cursor
* chore: bootstrap AI agent context files (AGENTS.md + CLAUDE.md)
Adds a three-tier set of AI context files across the monorepo:
- Root AGENTS.md / CLAUDE.md — project overview, workspaces, common
commands, architecture map, code conventions, and CI/CD summary
- Workspace-level pairs for cli/, packages/, npm/, tooling/,
system-tests/, and scripts/
- Package-level pairs for all 33 packages/, 15 npm/, 3 tooling/
packages, and the cli workspace (117 files total)
CLAUDE.md files are thin wrappers (@AGENTS.md import + workflow rules)
so Claude Code picks them up walking upward from cwd. AGENTS.md files
carry the substantive content and are also read natively by Codex CLI
and Cursor.
Command conventions applied throughout:
- No watch / file-watcher commands (agents run once and read results)
- No bare full-suite test runs for large packages; always target a
specific file (<path-to-spec>) or glob ("<glob-pattern>")
- No cypress:open (interactive mode); use cypress:run with --spec
- Test runner syntax varies by package: vitest (test --),
mocha (test-unit/test-integration --), jest (--testPathPattern),
Cypress CT (cypress:run:ct -- --spec)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* gitignore
* clarify AI internal docs and contribution guidelines
* update TOC
* tweak nvm wording
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* strip stderr at main bin spawn
* tests
* do not fail if there are no dependencies
* tests for spawn piping
* rm unused filtering from electron pkg
* changelog
* rm mockFilterWriter from electron open.spec
* add stderr-filtering back to electron/open for system tests
* point system tests that need cli as a dep to built cli instead of root cli
* conform spawn/open
* make error tags dynamically settable via env var
* make system test dep installer resolve file: by path instead of by module name
* raise errors again, fix test for LineDecoder
* reset stderr-filtering, remove env-directed tags
* use correct path for file: deps; rm dead code; close passthrough stream
* determine absolute path for file: deps in system test projects
* changelog
* changelog
* revert pathToPackage
* do not end primary stderr when source stream is ended; only write to source stream if writable
* move to rollup
* no longer need to move some subdirs in start-build, special bin dir handling
* preserve modules so __dirname is properly resolved in spawn.ts
* ensure lib/exec/xvfb exports default
* make build processes more intuitive
* additional
* and
* fix clean
* fix tests
* revert
* rename clean cmd
* fix cjs exports
* fix test import
* fix tertiary dep bundling
* maybe..?
* ensure cli is built before tests are run
* exports= again
* discrete exports
* maybe if tslib is bundled
* add tslib as dependency for rollup
* lockfile, no longer bundle
* bundle tslib?
* cache
* preserve entry file paths in dist dir
* relative path change
* ensure the cjs entrypoint for the esm build of cli is available in dist
* properly import json so rollup picks it up
* ensure bin entrypoint has no file extension
* add exec/run.ts ? to entry files
* Revert "add exec/run.ts ? to entry files"
This reverts commit 8bb047a623.
* simplify rollup; make bin script +x on postbuild
* cleanup
* updates build docs
* fix ./bin export path
* comment to clarify why relative path resolution changed in spawn.ts
* make script start path (for dev mode) less brittle vis a vis build artifact location
* cleanup
* since we dont need monorepo packages yet, adding it here is premature
* externalize package.json to fix install script
* add entrypoints to cli knip config
* revert expected fixtures?
* use shelljs for win support
* some @types are prod dependencies, some are dev?
* rm unused script
* root build-prod script is actually unused
* resolve package.json dynamically from root
* look for pkg.name === cypress instead of a workspaces pkg
* correct buildinfo
* fix pkg undefined in info
* match both windows and nix path separators when matching for the binary entrypoint in rollup
* better error messaging for package.json not found
* fix curried fn
* Apply suggestion from @cacieprins
* cli arg and failing system test
* stdout checks in system test, exit 0
* add integration test
* changelog
* fix snapshot
* display warning on stdout when --pass-with-no-tests is used in conjunction with record or parallel and there are no tests
* write output json
* update schema
* refactor: removes circular dependency between `server` and `errors` (#33383)
* refactor: removes circular dependency between `server` and `errors`
* rm dependency on packages/server from errors
* fix subsequent retry tests, prevent 0 seconds on delay report
* Apply suggestion from @cacieprins
* update expectation
* snapshots do not support inline `type` modifiers in destructured inputs
* run all jobs
* feat: add cy.env(), allowCypressEnv, and deprecate Cypress.env()
Split up Deprecations + features in changelog
Split up other features
* feat: experimentalRunAllSpecs for component testing
* Update CHANGELOG
* Add tests for handling run all specs in vite-dev-server
* Update cli/CHANGELOG.md
* chore: update changelog
* chore: refactor invalid configs out of run-all-specs and create two new projects, run-all-specs-ct-vite and run-all-specs-ct-webpack to test experimentalRunAllSpecs for component testing
* chore: update types, integation tests, and add comments
* chore: update protocol snapshot
* fix commit inside script tag
* chore: update changelog entry
* chore: fix contributor PRs running CT tests due to optimized deps in vite
* chore: dont optimize toycode as optimization doesnt appear to work correctly for dependency
* chore: patch markdown-it-class to have esm style exports (single file easy to patch and is already patched)
* turn on experimentalRunAllSpecs for our own ct tests
* remove fallback array value
* chore: update cache
---------
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Jennifer Shehane <shehane.jennifer@gmail.com>
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* chore(deps): update dependency dockerode to v3.3.5
* empty commit
* bump major version
* resolve types/node to our current node version.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <shehane.jennifer@gmail.com>
* fix: ensure that the test is properly ended when both before and after hooks fail
* clean up
* add test
* add changelog
* Update packages/data-context/schemas/schema.graphql
* snapshot updates
* fix snapshot
* fix: set ffprobe path in server package
* yarn lock
* move to prod deps
* index on ffprobe-path-update: 708f31b661 move to prod deps
* index on ffprobe-path-update: 708f31b661 move to prod deps
* index on ffprobe-path-update: 708f31b661 move to prod deps
* changelog entry
---------
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
BREAKING CHANGE: release version 5.0.0 of @cypress/schematic, which supports Angular 20 and 21 and adds scaffolding support for @cypress/angular-zoneless for Angular 21+ projects. Since Cypress introduced @cypress/angular-zoneless in Cypress 15.8.0, Cypress ^15.8.0 is now a peer dependency of @cypress/schematic. Additionally, support for Angular 18 and 19 have been removed and will only be supported in @cypress/schematic ^4.0.0.
* chore: remove some devDeps
* ignore used fonts in reporter
* ignore multi-reporters + webpack cli dep
* remove common-tags from runner package
* replace older version of tough-cookie with type reference with server type
* ignore webpack-cli from runner package
* ignore used babel deps in web-config
* ignore some deps from web-config
* remove browser-resolve
* remove unused sinon-chai dep from web-config
* ignore polyfills in web-config
* add test entrypoint to knip for server
* remove unused repl.history devDep
* remove unused supertest-session dep and calls
* remove unused through2 devDep
* ignore some used deps in server
* ignore babel deps
* ignore babel deps from system-tests
* remove cachedir from system-tests devDeps
* remove unused common-tags from system-tests
* ignore deps in system-tests that are used
* remove webpack from system-tests
* migrate visibility tests to static fixtures
* clean up the html a little bit, remove ref to experimentalFastVisibility
* Delete packages/driver/cypress/e2e/dom/visibility-migration.md
* Update visibility.ts
* fix assertion
* fix incomplete
* stress test for visibility
* splits up visibility into multiple files for easier grokking
* middle of refactoring to un-hide the recursion
* notes to help with visibility efficiencyn
* revert splitting - these fns are too interconnected to split without resolving circular dependencies
* impl new experimental visibility algo
* new experimental useFastVisibility config option
* check four corners of rect instead of just center
* num-tests-in-memory=0
* rm ref virtuoso
* rename file to be in line with its export
* clean up jquery unwrapping
* some more cleanup
* Delete visibility-algorithm.dot
* Delete visibility-algorithm.svg
* rm unused export
* Update fastIsHidden.ts
* edit
* enable fast visibility mode in visibility related e2e tests
* enable clip-path test for fast visibility
* memoize visibleAtPoint
* fix config option typedef
* fix select option/optgroup delegation
* add note re: shadow dom
* add migration guide, additional edge cases, behavior table
* add note that the virtual scroll stress test causes browser to crash when experimentalFastVisibility is not enabled
* fix types
* add best practices note re: shadow dom
* better performance tests
* extract assert/assertDom to separate file
* fix merge
* update tests
* update algo diff
* correct entries
* revert jquery typechanges
* more ts fix
* various fix
* note firefox inconsistency vs chromium with 0-dim els
* add cfg key to system test snapshot
* ts
* more ff discrepancy
* quick fix memo
* fix regression with chained assertions
* fix jqueried ref, fix obj key in memoization
* manual chck for primitives instead of checking for "object" typeof
* changelog
* add i18n copy for experimentalFastVisibility, documented as a step to take in cfg/options.ts
* code review
* wsp cleanup
* debug lib