cypress: Specifying `supportFile` in config doesn't work with `node_modules` in path

Current behavior

If supportFile is placed somewhere inside node_modules folder and then you define the path to it inside cypress.config.js file, cypress won’t be able to find it, no matter what. As soon as you move your supportFile away from node_modules folder and update the path in cypress.config.js file, everything works flawlessly.

This issue is a blocker for updating synpress to Cypress@10.

Desired behavior

You should be able to define supportFile with node_modules in path.

Test code to reproduce

Simply place your default support folder inside node_modules folder and update the path to it inside cypress.config.js file. Then run your tests.

Cypress Version

10.6.0

Node version

16.17.0

Operating System

macOS 12.3.1

Debug Logs

cypress:cli exporting Cypress module interface +0ms
  cypress:cli:cli creating program parser +0ms
  cypress:cli:cli parsing args: [ null, null, 'run', '--headed', '--config-file=/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', '--browser=chrome', '--config=supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' ] +1ms
  cypress:cli:cli parsed Cypress run [ Command { _events: [Object: null prototype] { 'option:browser': [Function (anonymous)], 'option:ci-build-id': [Function (anonymous)], 'option:component': [Function (anonymous)], 'option:config': [Function (anonymous)], 'option:config-file': [Function (anonymous)], 'option:e2e': [Function (anonymous)], 'option:env': [Function (anonymous)], 'option:group': [Function (anonymous)], 'option:key': [Function (anonymous)], 'option:headed': [Function (anonymous)], 'option:headless': [Function (anonymous)], 'option:no-exit': [Function (anonymous)], 'option:parallel': [Function (anonymous)], 'option:port': [Function (anonymous)], 'option:project': [Function (anonymous)], 'option:quiet': [Function (anonymous)], 'option:record': [Function (anonymous)], 'option:reporter': [Function (anonymous)], 'option:reporter-options': [Function (anonymous)], 'option:spec': [Function (anonymous)], 'option:tag': [Function (anonymous)], 'option:dev': [Function (anonymous)] }, _eventsCount: 22, _maxListeners: undefined, commands: [], options: [ [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option] ], parent: Command { _events: [Object: null prototype] {}, _eventsCount: 0, _maxListeners: undefined, commands: [Array], options: [], parent: null, _allowUnknownOption: false, _args: [], rawArgs: [Array], _scriptPath: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.js', _name: 'cypress', _optionValues: {}, _storeOptionsAsProperties: true, _passCommandToAction: true, _actionResults: [], _actionHandler: null, _executableHandler: false, _executableFile: null, _defaultCommandName: null, _exitCallback: null, _aliases: [], _hidden: false, _helpFlags: '-h, --help', _helpDescription: 'display help for command', _helpShortFlag: '-h', _helpLongFlag: '--help', _hasImplicitHelpCommand: undefined, _helpCommandName: 'help', _helpCommandnameAndArgs: 'help [command]', _helpCommandDescription: 'display help for command', _usage: '<command> [options]', args: [Array], [Symbol(kCapture)]: false }, _allowUnknownOption: false, _args: [], rawArgs: null, _scriptPath: null, _name: 'run', _optionValues: {}, _storeOptionsAsProperties: true, _passCommandToAction: true, _actionResults: [], _actionHandler: [Function: listener], _executableHandler: false, _executableFile: null, _defaultCommandName: null, _exitCallback: null, _aliases: [], _hidden: false, _helpFlags: '-h, --help', _helpDescription: 'display help for command', _helpShortFlag: '-h', _helpLongFlag: '--help', _hasImplicitHelpCommand: 0, _helpCommandName: 'help', _helpCommandnameAndArgs: 'help [command]', _helpCommandDescription: 'display help for command', _usage: '[options]', _description: 'Runs Cypress tests from the CLI without the GUI', _argsDescription: undefined, exit: true, headed: true, configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', args: [], [Symbol(kCapture)]: false } ] +3ms
  cypress:cli:cli variable-length opts parsed { args: [ null, null, 'run', '--headed', '--config-file=/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', '--browser=chrome', '--config=supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' ], opts: Command { _events: [Object: null prototype] { 'option:browser': [Function (anonymous)], 'option:ci-build-id': [Function (anonymous)], 'option:component': [Function (anonymous)], 'option:config': [Function (anonymous)], 'option:config-file': [Function (anonymous)], 'option:e2e': [Function (anonymous)], 'option:env': [Function (anonymous)], 'option:group': [Function (anonymous)], 'option:key': [Function (anonymous)], 'option:headed': [Function (anonymous)], 'option:headless': [Function (anonymous)], 'option:no-exit': [Function (anonymous)], 'option:parallel': [Function (anonymous)], 'option:port': [Function (anonymous)], 'option:project': [Function (anonymous)], 'option:quiet': [Function (anonymous)], 'option:record': [Function (anonymous)], 'option:reporter': [Function (anonymous)], 'option:reporter-options': [Function (anonymous)], 'option:spec': [Function (anonymous)], 'option:tag': [Function (anonymous)], 'option:dev': [Function (anonymous)] }, _eventsCount: 22, _maxListeners: undefined, commands: [], options: [ [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option], [Option] ], parent: Command { _events: [Object: null prototype] {}, _eventsCount: 0, _maxListeners: undefined, commands: [Array], options: [], parent: null, _allowUnknownOption: false, _args: [], rawArgs: [Array], _scriptPath: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.js', _name: 'cypress', _optionValues: {}, _storeOptionsAsProperties: true, _passCommandToAction: true, _actionResults: [], _actionHandler: null, _executableHandler: false, _executableFile: null, _defaultCommandName: null, _exitCallback: null, _aliases: [], _hidden: false, _helpFlags: '-h, --help', _helpDescription: 'display help for command', _helpShortFlag: '-h', _helpLongFlag: '--help', _hasImplicitHelpCommand: undefined, _helpCommandName: 'help', _helpCommandnameAndArgs: 'help [command]', _helpCommandDescription: 'display help for command', _usage: '<command> [options]', args: [Array], [Symbol(kCapture)]: false }, _allowUnknownOption: false, _args: [], rawArgs: null, _scriptPath: null, _name: 'run', _optionValues: {}, _storeOptionsAsProperties: true, _passCommandToAction: true, _actionResults: [], _actionHandler: [Function: listener], _executableHandler: false, _executableFile: null, _defaultCommandName: null, _exitCallback: null, _aliases: [], _hidden: false, _helpFlags: '-h, --help', _helpDescription: 'display help for command', _helpShortFlag: '-h', _helpLongFlag: '--help', _hasImplicitHelpCommand: 0, _helpCommandName: 'help', _helpCommandnameAndArgs: 'help [command]', _helpCommandDescription: 'display help for command', _usage: '[options]', _description: 'Runs Cypress tests from the CLI without the GUI', _argsDescription: undefined, exit: true, headed: true, configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', args: [], [Symbol(kCapture)]: false } } +2ms
  cypress:cli parsed cli options { browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true } +0ms
  cypress:cli:cli parsed options { browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true } +3ms
  cypress:cli:cli casted options { browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true } +0ms
  cypress:cli verifying Cypress app +0ms
  cypress:cli checking environment variables +0ms
  cypress:cli checking if executable exists /Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress +2ms
  cypress:cli Binary is executable? : true +1ms
  cypress:cli binaryDir is  /Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app +0ms
  cypress:cli Reading binary package.json from: /Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/package.json +0ms
  cypress:cli Found binary version 10.6.0 installed in: /Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app +5ms
  cypress:cli { verified: true } +6ms
  cypress:cli is Verified ? true +1ms
  cypress:cli:run processing run options { browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true, outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', key: null, spec: null, reporter: null, reporterOptions: null, project: '/Users/drptbl/staking' } +0ms
  cypress:cli:run --key is not set, looking up environment variable CYPRESS_RECORD_KEY +0ms
  cypress:cli:run run to spawn.start args ["--run-project","/Users/drptbl/staking","--browser","chrome","--config","supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js","--config-file","/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js","--headed",true,"--output-path","/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX"] +0ms
  cypress:cli needs to start own Xvfb? false +0ms
  cypress:cli spawning, should retry on display problem? false +0ms
  cypress:cli spawn args [ '--no-sandbox', '--', '--run-project', '/Users/drptbl/staking', '--browser', 'chrome', '--config', 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', '--config-file', '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', '--headed', true, '--output-path', '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', '--cwd', '/Users/drptbl/staking', '--userNodePath', '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', '--userNodeVersion', '16.17.0' ] { detached: false, stdio: [ 'inherit', 'inherit', 'pipe' ] } +4ms
  cypress:cli spawning Cypress with executable: /Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress +1ms
  cypress:cli piping child STDERR to process STDERR +5ms
  cypress:ts registering ts-node on directory undefined +0ms
  cypress:ts Running without ts-node hook in environment "production" +47ms
  cypress:server:appdata path: /Users/drptbl/Library/Application Support/Cypress/cy/production/cache +0ms
  cypress:server:appdata path: /Users/drptbl/Library/Application Support/Cypress/cy/production/browsers +43ms
  cypress:server:cypress starting cypress with argv [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress', '--no-sandbox', '--', '--run-project', '/Users/drptbl/staking', '--browser', 'chrome', '--config', 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', '--config-file', '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', '--headed', 'true', '--output-path', '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', '--cwd', '/Users/drptbl/staking', '--userNodePath', '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', '--userNodeVersion', '16.17.0' ] +0ms
  cypress:server:args argv array: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress', '--no-sandbox', '--run-project', '/Users/drptbl/staking', '--browser', 'chrome', '--config', 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', '--config-file', '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', '--headed', 'true', '--output-path', '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', '--cwd', '/Users/drptbl/staking', '--userNodePath', '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', '--userNodeVersion', '16.17.0' ] +0ms
  cypress:server:args parsed argv options { options: { _: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress' ], sandbox: false, 'run-project': '/Users/drptbl/staking', runProject: '/Users/drptbl/staking', browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', 'config-file': '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: 'true', 'output-path': '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', cwd: '/Users/drptbl/staking', userNodePath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', userNodeVersion: '16.17.0' } } +1ms
  cypress:server:args argv parsed: { _: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress' ], sandbox: false, runProject: '/Users/drptbl/staking', browser: 'chrome', config: 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true, outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', cwd: '/Users/drptbl/staking', userNodePath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', userNodeVersion: '16.17.0', invokedFromCli: true } +3ms
  cypress:server:util:proxy found proxy environment variables {} +0ms
  cypress:server:args options { _: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress' ], sandbox: false, runProject: '/Users/drptbl/staking', browser: 'chrome', config: { component: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' }, e2e: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' } }, configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true, outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', cwd: '/Users/drptbl/staking', userNodePath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', userNodeVersion: '16.17.0', invokedFromCli: true } +1ms
  cypress:server:args argv options: { _: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress' ], sandbox: false, runProject: '/Users/drptbl/staking', browser: 'chrome', config: { component: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' }, e2e: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' } }, configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true, outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', cwd: '/Users/drptbl/staking', userNodePath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', userNodeVersion: '16.17.0', invokedFromCli: true, projectRoot: '/Users/drptbl/staking' } +1ms
  cypress:server:cypress from argv [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress', '--no-sandbox', '--run-project', '/Users/drptbl/staking', '--browser', 'chrome', '--config', 'supportFile=/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', '--config-file', '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', '--headed', 'true', '--output-path', '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', '--cwd', '/Users/drptbl/staking', '--userNodePath', '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', '--userNodeVersion', '16.17.0' ] got options { _: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress' ], sandbox: false, runProject: '/Users/drptbl/staking', browser: 'chrome', config: { component: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' }, e2e: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' } }, configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true, outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', cwd: '/Users/drptbl/staking', userNodePath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', userNodeVersion: '16.17.0', invokedFromCli: true, projectRoot: '/Users/drptbl/staking' } +7ms
  cypress:server:appdata path: /Users/drptbl/Library/Application Support/Cypress/cy/production +33ms
  cypress:server:cypress starting in mode run with options { _: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress' ], sandbox: false, runProject: '/Users/drptbl/staking', browser: 'chrome', config: { component: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' }, e2e: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' } }, configFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js', headed: true, outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', cwd: '/Users/drptbl/staking', userNodePath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', userNodeVersion: '16.17.0', invokedFromCli: true, projectRoot: '/Users/drptbl/staking' } +60ms
  cypress:server:cypress running Electron currently +0ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for Query.cloudLatestRunUpdateSpecData +0ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for Query.cloudProjectBySlug +0ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for Query.cloudProjectsBySlugs +0ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for Query.cloudSpecByPath +0ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for Query.cloudViewer +0ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for Query.versions +0ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for CurrentProject.cloudProject +2ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for RemoteFetchableCloudProjectResult.data +4ms
  cypress:graphql:nexusDeferIfNotLoadedPlugin Adding nexusDeferIfNotLoadedPlugin for RemoteFetchableCloudProjectSpecResult.data +0ms
  cypress:server:browsers:utils getBrowsers +0ms
  cypress:launcher:detect detecting if the following browsers are present [ { name: 'chrome', family: 'chromium', channel: 'stable', displayName: 'Chrome', versionRegex: /Google Chrome (\S+)/m, binary: [ 'google-chrome', 'chrome', 'google-chrome-stable' ], minSupportedVersion: 64 }, { name: 'chromium', family: 'chromium', channel: 'stable', displayName: 'Chromium', versionRegex: /Chromium (\S+)/m, binary: [ 'chromium-browser', 'chromium' ], minSupportedVersion: 64 }, { name: 'chrome', family: 'chromium', channel: 'beta', displayName: 'Chrome Beta', versionRegex: /Google Chrome (\S+) beta/m, binary: 'google-chrome-beta', minSupportedVersion: 64 }, { name: 'chrome', family: 'chromium', channel: 'canary', displayName: 'Canary', versionRegex: /Google Chrome Canary (\S+)/m, binary: 'google-chrome-canary', minSupportedVersion: 64 }, { name: 'firefox', family: 'firefox', channel: 'stable', displayName: 'Firefox', versionRegex: /^Mozilla Firefox ([^\sab]+)$/m, binary: 'firefox', minSupportedVersion: 86, validator: [Function: validator] }, { name: 'firefox', family: 'firefox', channel: 'dev', displayName: 'Firefox Developer Edition', versionRegex: /^Mozilla Firefox (\S+b\S*)$/m, binary: [ 'firefox-developer-edition', 'firefox' ], minSupportedVersion: 86 }, { name: 'firefox', family: 'firefox', channel: 'nightly', displayName: 'Firefox Nightly', versionRegex: /^Mozilla Firefox (\S+a\S*)$/m, binary: [ 'firefox-nightly', 'firefox-trunk' ], minSupportedVersion: 86 }, { name: 'edge', family: 'chromium', channel: 'stable', displayName: 'Edge', versionRegex: /Microsoft Edge (\S+)/m, binary: [ 'edge', 'microsoft-edge' ], minSupportedVersion: 79 }, { name: 'edge', family: 'chromium', channel: 'canary', displayName: 'Edge Canary', versionRegex: /Microsoft Edge Canary (\S+)/m, binary: 'edge-canary', minSupportedVersion: 79 }, { name: 'edge', family: 'chromium', channel: 'beta', displayName: 'Edge Beta', versionRegex: /Microsoft Edge Beta (\S+)/m, binary: 'edge-beta', minSupportedVersion: 79 }, { name: 'edge', family: 'chromium', channel: 'dev', displayName: 'Edge Dev', versionRegex: /Microsoft Edge Dev (\S+)/m, binary: [ 'edge-dev', 'microsoft-edge-dev' ], minSupportedVersion: 79 } ] +0ms
  cypress:scaffold-config:detect Resolved typescript from /Users/drptbl/staking/node_modules/typescript/lib/typescript.js +0ms
  cypress:scaffold-config:detect Detected typescript in package.json - using TS +0ms
  cypress:server:video using ffmpeg from /Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg +0ms
  cypress:lifecycle:ProjectConfigIpc fork child process { CHILD_PROCESS_FILE_PATH: '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/require_async_child.js', configProcessArgs: [ '--projectRoot', '/Users/drptbl/staking', '--file', '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js' ], childOptions: { stdio: 'pipe', cwd: '/Users/drptbl/staking/node_modules/@synthetixio/synpress', execPath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node' } } +0ms
  cypress:lifecycle:ProjectConfigIpc trigger the load of the file +2ms
  cypress:server:browsers:utils found browsers { browsers: [ { name: 'chrome', family: 'chromium', channel: 'stable', displayName: 'Chrome', version: '104.0.5112.101', path: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', minSupportedVersion: 64, majorVersion: '104' }, { name: 'chrome', family: 'chromium', channel: 'canary', displayName: 'Canary', version: '107.0.5270.0', path: '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary', minSupportedVersion: 64, majorVersion: '107' }, { name: 'firefox', family: 'firefox', channel: 'stable', displayName: 'Firefox', version: '103.0.1', path: '/Applications/Firefox.app/Contents/MacOS/firefox', minSupportedVersion: 86, majorVersion: '103' } ] } +213ms
  cypress:server:register-ts-node executing register_ts_node with args { _: [ '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/require_async_child.js' ], projectRoot: '/Users/drptbl/staking', file: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js' } +0ms
  cypress:server:register-ts-node registering ts-node for projectRoot: /Users/drptbl/staking and file: /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js +2ms
  cypress:server:ts-node projectRoot path: /Users/drptbl/staking +0ms
  cypress:server:ts-node registeredFile: /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js +0ms
  cypress:server:plugins resolving typescript with projectRoot '/Users/drptbl/staking' +0ms
  cypress:server:plugins resolved typescript /Users/drptbl/staking/node_modules/typescript/lib/typescript.js +0ms
  cypress:server:ts-node typescript path: /Users/drptbl/staking/node_modules/typescript/lib/typescript.js +0ms
  cypress:server:util:process_profiler current & mean memory and CPU usage by process group:
  cypress:server:util:process_profiler ┌─────────┬───────────┬──────────────┬────────────────┬────────────┬────────────────┬──────────┬──────────────┬─────────────┐
  cypress:server:util:process_profiler │ (index) │   group   │ processCount │      pids      │ cpuPercent │ meanCpuPercent │ memRssMb │ meanMemRssMb │ maxMemRssMb │
  cypress:server:util:process_profiler ├─────────┼───────────┼──────────────┼────────────────┼────────────┼────────────────┼──────────┼──────────────┼─────────────┤
  cypress:server:util:process_profiler │    0    │ 'cypress' │      1       │    '84188'     │   112.4    │     112.4      │  120.54  │    120.54    │   120.54    │
  cypress:server:util:process_profiler │    1    │  'other'  │      2       │ '84192, 84193' │     0      │       0        │   3.08   │     3.08     │    3.08     │
  cypress:server:util:process_profiler │    2    │  'TOTAL'  │      3       │      '-'       │   112.4    │     112.4      │  123.62  │    123.62    │   123.62    │
  cypress:server:util:process_profiler └─────────┴───────────┴──────────────┴────────────────┴────────────┴────────────────┴──────────┴──────────────┴─────────────┘ +0ms
  cypress:server:ts-node registering project TS with options { compiler: '/Users/drptbl/staking/node_modules/typescript/lib/typescript.js', compilerOptions: { module: 'commonjs', preserveValueImports: false }, dir: '/Users/drptbl/staking/node_modules/@synthetixio/synpress', transpileOnly: true } +156ms
  cypress:lifecycle:child:run_require_async_child:84196 configFile: /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js +0ms
  cypress:lifecycle:child:run_require_async_child:84196 projectRoot: /Users/drptbl/staking +0ms
  cypress:lifecycle:child:run_require_async_child:84196 try loading /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js +2ms
  cypress:lifecycle:child:run_require_async_child:84196 Loading file /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js +0ms
  cypress:cli exporting Cypress module interface +0ms
  cypress:lifecycle:child:run_require_async_child:84196 loaded config file /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js +1s
  cypress:lifecycle:ProjectConfigIpc loadConfig:reply +2s
  cypress:lifecycle:ProjectConfigManager config is loaded for file /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js null +0ms
  cypress:config:browser validating configuration +0ms
  cypress:config:browser validating configuration +1ms
  cypress:server:config setting config object { cliConfig: { component: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' }, e2e: { supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' } }, projectName: 'staking', projectRoot: '/Users/drptbl/staking', config: { userAgent: 'synpress', retries: { runMode: 0, openMode: 0 }, fixturesFolder: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/fixtures', screenshotsFolder: 'tests/e2e/screenshots', videosFolder: 'tests/e2e/videos', chromeWebSecurity: true, viewportWidth: 1366, viewportHeight: 768, env: { coverage: false }, defaultCommandTimeout: 30000, pageLoadTimeout: 30000, requestTimeout: 30000, e2e: { setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}' }, component: { setupNodeEvents: '[Function ]', specPattern: './**/*spec.{js,jsx,ts,tsx}' }, setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}', supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' }, envFile: {}, options: { _: [ '/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/MacOS/Cypress' ], sandbox: false, runProject: '/Users/drptbl/staking', browser: 'chrome', config: { component: [Object], e2e: [Object] }, configFile: 'synpress.config.js', headed: true, outputPath: '/var/folders/8l/bkmjhnfn2n9_lsdmx15rm3th0000gn/T/tmp-84185-V6MZxxVvHdDX', cwd: '/Users/drptbl/staking', userNodePath: '/Users/drptbl/.nvm/versions/node/v16.17.0/bin/node', userNodeVersion: '16.17.0', invokedFromCli: true, projectRoot: '/Users/drptbl/staking', socketId: 'web0d01p85', isTextTerminal: true, quiet: false, morgan: false, report: true, testingType: 'e2e' } } +0ms
  cypress:server:config config is { userAgent: 'synpress', retries: { runMode: 0, openMode: 0 }, fixturesFolder: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/fixtures', screenshotsFolder: 'tests/e2e/screenshots', videosFolder: 'tests/e2e/videos', chromeWebSecurity: true, viewportWidth: 1366, viewportHeight: 768, env: { coverage: false }, defaultCommandTimeout: 30000, pageLoadTimeout: 30000, requestTimeout: 30000, e2e: { setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}' }, component: { setupNodeEvents: '[Function ]', specPattern: './**/*spec.{js,jsx,ts,tsx}' }, setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}', supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js' } +0ms
  cypress:server:config merged config with options, got { userAgent: 'synpress', retries: { runMode: 0, openMode: 0 }, fixturesFolder: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/fixtures', screenshotsFolder: 'tests/e2e/screenshots', videosFolder: 'tests/e2e/videos', chromeWebSecurity: true, viewportWidth: 1366, viewportHeight: 768, env: { coverage: false }, defaultCommandTimeout: 30000, pageLoadTimeout: 30000, requestTimeout: 30000, e2e: { setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}' }, component: { setupNodeEvents: '[Function ]', specPattern: './**/*spec.{js,jsx,ts,tsx}' }, setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}', supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', envFile: {}, projectRoot: '/Users/drptbl/staking', projectName: 'staking', rawJson: { userAgent: 'synpress', retries: { runMode: 0, openMode: 0 }, fixturesFolder: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/fixtures', screenshotsFolder: 'tests/e2e/screenshots', videosFolder: 'tests/e2e/videos', chromeWebSecurity: true, viewportWidth: 1366, viewportHeight: 768, env: { coverage: false }, defaultCommandTimeout: 30000, pageLoadTimeout: 30000, requestTimeout: 30000, e2e: { setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}' }, component: { setupNodeEvents: '[Function ]', specPattern: './**/*spec.{js,jsx,ts,tsx}' }, setupNodeEvents: '[Function ]', baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}', supportFile: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/support/e2e.js', envFile: {}, projectRoot: '/Users/drptbl/staking', projectName: 'staking' }, configFile: 'synpress.config.js', morgan: false, isTextTerminal: true, socketId: 'web0d01p85', report: true } +1ms
  cypress:server:config using CYPRESS_INTERNAL_ENV production +2ms
  cypress:server:config resolved config is { value: [], from: 'default' } +1ms
  cypress:config:browser validating configuration +5ms
  cypress:server:validation clientCerts: [] +0ms
  cypress:server:config validate that there is no breaking config options before setupNodeEvents +1ms
  cypress:data-context:sources:FileDataSource globbing pattern(s): [ './node_modules/@synthetixio/synpress/support/e2e.js' ] +0ms
  cypress:data-context:sources:FileDataSource within directory: /Users/drptbl/staking +0ms
  cypress:lifecycle:child:run_require_async_child:84196 loaded config from /Users/drptbl/staking/node_modules/@synthetixio/synpress/synpress.config.js { userAgent: 'synpress', retries: { runMode: 0, openMode: 0 }, fixturesFolder: '/Users/drptbl/staking/node_modules/@synthetixio/synpress/fixtures', screenshotsFolder: 'tests/e2e/screenshots', videosFolder: 'tests/e2e/videos', chromeWebSecurity: true, viewportWidth: 1366, viewportHeight: 768, env: { coverage: false }, defaultCommandTimeout: 30000, pageLoadTimeout: 30000, requestTimeout: 30000, e2e: { setupNodeEvents: [Function (anonymous)], baseUrl: 'http://localhost:3000', specPattern: 'tests/e2e/specs/**/*.{js,jsx,ts,tsx}' }, component: { setupNodeEvents: [Function (anonymous)], specPattern: './**/*spec.{js,jsx,ts,tsx}' } } +0ms
  cypress:lifecycle:ProjectConfigManager catch setupNodeEvents Error: Your supportFile is missing or invalid: node_modules/@synthetixio/synpress/support/e2e.js  The supportFile must be a .js, .ts, .coffee file or be supported by your preprocessor plugin (if configured).  Fix your support file, or set supportFile to false if a support file is not necessary for your project.  If you have just renamed the extension of your supportFile, restart Cypress.  https://on.cypress.io/support-file-missing-or-invalid at setSupportFileAndFolder (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:355:23)     at processTicksAndRejections (node:internal/process/task_queues:96:5) at ProjectConfigManager.buildBaseFullConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:345:26) at ProjectConfigManager.getFullInitialConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:388:34) at ProjectConfigManager.setupNodeEvents (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:185:28) { isCypressErr: true, type: 'SUPPORT_FILE_NOT_FOUND', details: undefined, messageMarkdown: 'Your `supportFile` is missing or invalid: `node_modules/@synthetixio/synpress/support/e2e.js`\n' + '\n' + 'The supportFile must be a .js, .ts, .coffee file or be supported by your preprocessor plugin (if configured).\n' + '\n' + 'Fix your support file, or set supportFile to `false` if a support file is not necessary for your project.\n' + '\n' + 'If you have just renamed the extension of your supportFile, restart Cypress.\n' + '\n' + 'https://on.cypress.io/support-file-missing-or-invalid', originalError: undefined, stackWithoutMessage: '    at setSupportFileAndFolder (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:355:23)\n' + '    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n' + '    at ProjectConfigManager.buildBaseFullConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:345:26)\n' + '    at ProjectConfigManager.getFullInitialConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:388:34)\n' + '    at ProjectConfigManager.setupNodeEvents (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:185:28)\n' } +16ms
  cypress:server:cypress exiting with err Error: Your supportFile is missing or invalid: node_modules/@synthetixio/synpress/support/e2e.js

The supportFile must be a .js, .ts, .coffee file or be supported by your preprocessor plugin (if configured).

Fix your support file, or set supportFile to false if a support file is not necessary for your project.

If you have just renamed the extension of your supportFile, restart Cypress.

https://on.cypress.io/support-file-missing-or-invalid
    at setSupportFileAndFolder (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:355:23)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at ProjectConfigManager.buildBaseFullConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:345:26)
    at ProjectConfigManager.getFullInitialConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:388:34)
    at ProjectConfigManager.setupNodeEvents (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:185:28)
 {
  isCypressErr: true,
  type: 'SUPPORT_FILE_NOT_FOUND',
  details: undefined,
  messageMarkdown: 'Your `supportFile` is missing or invalid: `node_modules/@synthetixio/synpress/support/e2e.js`\n' +
    '\n' +
    'The supportFile must be a .js, .ts, .coffee file or be supported by your preprocessor plugin (if configured).\n' +
    '\n' +
    'Fix your support file, or set supportFile to `false` if a support file is not necessary for your project.\n' +
    '\n' +
    'If you have just renamed the extension of your supportFile, restart Cypress.\n' +
    '\n' +
    'https://on.cypress.io/support-file-missing-or-invalid',
  originalError: undefined,
  stackWithoutMessage: '    at setSuYour supportFile is missing or invalid: node_modules/@synthetixio/synpress/support/e2e.js

The supportFile must be a .js, .ts, .coffee file or be supported by your preprocessor plugin (if configured).

Fix your support file, or set supportFile to false if a support file is not necessary for your project.

If you have just renamed the extension of your supportFile, restart Cypress.

https://on.cypress.io/support-file-missing-or-invalid
pportFileAndFolder (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:355:23)\n' +
    '    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n' +
    '    at ProjectConfigManager.buildBaseFullConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:345:26)\n' +
    '    at ProjectConfigManager.getFullInitialConfig (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:388:34)\n' +
    '    at ProjectConfigManager.setupNodeEvents (/Users/drptbl/Library/Caches/Cypress/10.6.0/Cypress.app/Contents/Resources/app/packages/data-context/src/data/ProjectConfigManager.js:185:28)\n'
} +2s
  cypress:server:cypress calling exit 1 +1ms
  cypress:server:cypress about to exit with code 1 +0ms
  cypress:server:browsers browsers.kill called with no active instance +0ms
  cypress:proxy:http:util:prerequests metrics: { browserPreRequestsReceived: 0, proxyRequestsReceived: 0, immediatelyMatchedRequests: 0, unmatchedRequests: 0, unmatchedPreRequests: 0 } +0ms
  cypress:cli child event fired { event: 'exit', code: 1, signal: null } +3s
  cypress:cli child event fired { event: 'close', code: 1, signal: null } +1ms
Failed to run Cypress
Could not find Cypress test run results

Other

cypress.config.js

 e2e: {
    supportFile: 'node_modules/e2e.js', <<< DOESN'T WORK
    supportFile: 'tests/e2e/e2e.js', <<< WORKS
  },

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 2
  • Comments: 16 (6 by maintainers)

Commits related to this issue

Most upvoted comments

@drptbl The logic we have in place explicitly ignores content in node_modules. This check is important to ensure we aren’t setting up watchers on node_module content to pick up file changes, but I do agree there is value in being able to reference shared configurations and test setups from node_modules. I am going to route this to my team, but not sure how quickly we can pick this up.

In the mean time, can you create a project-specific support file that imports your shared support file? This should unblock you from upgrading to Cypress 10.

I encountered the same problem when setting up a custom Cypress project as an npm package. When I try to run it with npx, the same error appears; I don’t see any workaround. Has anyone here had a similar issue and managed to work around it?

@zoltanbedi and @yduartep, the recommended approach to import a third party support file is to just directly import the file in your local support file:

cypress/support/e2e.js

// import your local commands
import './commands'

// import a third party support file
import 'package/path/to/support/file'