feat: replace ts-node with tsx for parsing user configuration (#31520)

* feat: replace tsnode with tsx for parsing user configuration in all cases

* bump ubuntu images from node 18 to 20 as node 18 is not supported in cypress 15 and allows us to not include the 18.19.0 workaround to use --import with tsx inside the ProjectConfigIpc

* fix: issues finding tsx on windows as it needs the file:// protocol as absolute drive paths are not recognized as a file protocol in the node context

* make sure to filter out stack code correctly for windows

* fix: fix flake from windows on reporter menu not expanding (unrelated to this PR and should be merged into develop)

* chore: update changelog with all issues tsx cutover closes

* fix merge conflicts

* chore: add regression tests for cypress projects that previously did not work but now do with tsx

* build all binaries

* chore: address issues from code review

* update changelog

* remove todo comment on testing legacy migration with tsx

* refactor codeFrame calculation into a util function and add a unit test

* updated node versions in project config ipc tests to remove 18 and test threshold / latest values. Removed redundant comments on ts-node.
This commit is contained in:
Bill Glesias
2025-04-29 13:31:28 -04:00
committed by GitHub
parent 1d2a26a02b
commit 9b3b023aa0
43 changed files with 1535 additions and 434 deletions

View File

@@ -39,11 +39,15 @@ const getDependencyPathsToKeep = async (buildAppDir) => {
const unixBuildAppDir = buildAppDir.split(path.sep).join(path.posix.sep)
const startingEntryPoints = [
'packages/server/lib/plugins/child/require_async_child.js',
'packages/server/lib/plugins/child/register_ts_node.js',
'packages/server/node_modules/@cypress/webpack-batteries-included-preprocessor/index.js',
'packages/server/node_modules/ts-loader/index.js',
'packages/rewriter/lib/threads/worker.js',
'npm/webpack-batteries-included-preprocessor/index.js',
// needed in the server entry point
'node_modules/tsx/dist/cjs/index.cjs',
'node_modules/tsx/dist/loader.mjs',
// esbuild is also a runtime dependency with tsx
'node_modules/esbuild/lib/main.js',
'node_modules/find-up/index.js',
'node_modules/webpack/lib/webpack.js',
'node_modules/webpack-dev-server/lib/Server.js',