Skip to content

intercept cannot includes __cypress/assets path #29764

Open
@gweesin

Description

Current behavior

It doesn't work when intercepting path includes __cypress/assets

Desired behavior

Could be intercepted successfully:

cy.intercept('**/assets/data.json', { fixture: 'example.json' })

fetch('/__cypress/assets/data.json')

Test code to reproduce

https://github.com/gweesin/cypress-intercept-assets-bug

Cypress Version

13.12.0

Node version

22.3.0

Operating System

Windows 11.22631.3737

Debug Logs

cypress:server:automation:cookies received get:cookies [] +2ms
  cypress:server:socket-base automation:request clear:cookies [] +3ms
  cypress:server:automation:cookies clear:cookies 0 +1ms
  cypress:server:socket-base backend:request { eventName: 'reset:rendered:html:origins', args: [] } +2ms
  cypress:server:socket-base backend:request { eventName: 'net', args: [ 'route:added', { routeId: '1719496885660-4', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +5ms
  cypress:net-stubbing:server:driver-events received driver event { eventName: 'route:added', args: [ 'route:added', { routeId: '1719496885660-4', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +54ms
  cypress:server:fixture fixture exact name exists D:\person\issue-demo\cypress-intercept-assets-bug\cypress\fixtures\example.json +56ms
  cypress:server:socket-base backend:request { eventName: 'net', args: [ 'route:added', { routeId: '1719496885671-5', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +10ms
  cypress:net-stubbing:server:driver-events received driver event { eventName: 'route:added', args: [ 'route:added', { routeId: '1719496885671-5', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +11ms
  cypress:server:fixture fixture exact name exists D:\person\issue-demo\cypress-intercept-assets-bug\cypress\fixtures\example.json +9ms
GET /__cypress/assets/data.json 404 0.953 ms - 136
  cypress:proxy:http:util:prerequests Never received pre-request or url without pre-request for request GET-https://content-autofill.googleapis.com/v1/pages/ChVDaHJvbWUvMTI2LjAuNjQ3OC4xMjcSIAkyWoxKH6I8mBIFDTec3tMSBQ2RYZVOIajlTCMyfr-B?alt=proto after waiting 2000ms. Continuing without one. +6s
  cypress:network:cors Parsed URL { port: '443', protocol: 'https:', subdomain: null, domain: 'content-autofill', tld: 'googleapis.com' } +602ms
  cypress:server:remote-states getting remote state: undefined for: https://content-autofill.googleapis.com/v1/pages/ChVDaHJvbWUvMTI2LjAuNjQ3OC4xMjcSIAkyWoxKH6I8mBIFDTec3tMSBQ2RYZVOIajlTCMyfr-B?alt=proto +575ms
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +0ms
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +0ms
  cypress:server:stream_buffer stream buffer writeable final called +6s
  cypress:network:agent addRequest called { isHttps: true, href: 'https://content-autofill.googleapis.com/v1/pages/ChVDaHJvbWUvMTI2LjAuNjQ3OC4xMjcSIAkyWoxKH6I8mBIFDTec3tMSBQ2RYZVOIajlTCMyfr-B?alt=proto' } +6s
  cypress:network:agent got family { family: undefined, href: 'https://content-autofill.googleapis.com/v1/pages/ChVDaHJvbWUvMTI2LjAuNjQ3OC4xMjcSIAkyWoxKH6I8mBIFDTec3tMSBQ2RYZVOIajlTCMyfr-B?alt=proto' } +0ms
  cypress:server:server-base Got CONNECT request from optimizationguide-pa.googleapis.com:443 +5s
  cypress:https-proxy Writing browserSocket connection headers { url: 'optimizationguide-pa.googleapis.com:443', headLength: 0, headers: { host: 'optimizationguide-pa.google
apis.com:443', 'proxy-connection': 'keep-alive', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' } } +5s
  cypress:https-proxy Got first head bytes { url: 'optimizationguide-pa.googleapis.com:443', head: '\x16\x03\x01\x06�\x01\x00\x06�\x03\x03�j���ޑ��1�Dr�ZȊ[�\x15��\x19��p�-�Z�� \x07{\r�O���ּwho���䃛\x1AI:\x13�\x13' } +1ms
  cypress:https-proxy Making intercepted connection to 3974 +1ms
  cypress:network:connect successfully connected { opts: { port: 3974, host: 'localhost', getDelayMsForRetry: [Function: h] }, iteration: 0 } +5s
  cypress:https-proxy received upstreamSocket callback for request { port: 3974, hostname: 'localhost', err: undefined } +1ms
  cypress:server:util:socket_allowed allowing socket { localPort: 4198 } +2s
  cypress:launcher:browsers chrome stderr: [48532:32824:0627/220126.651:ERROR:cert_verify_proc_builtin.cc(1051)] CertVerifyProcBuiltin for optimizationguide-pa.googleapis.com failed:
----- Certificate i=0 (OU=Cypress Proxy Server Certificate,O=Cypress Proxy CA,L=Internet,ST=Internet,C=Internet,CN=optimizationguide-pa.googleapis.com) -----
ERROR: No matching issuer found +5s
  cypress:server:request received status code & headers on request { requestId: 'request11', statusCode: 200, headers: { 'content-type': 'text/plain' } } +6s
  cypress:server:request successful response received { requestId: 'request11' } +0ms
  cypress:net-stubbing:server:intercept-response InterceptResponse { req: { url: '/v1/pages/ChVDaHJvbWUvMTI2LjAuNjQ3OC4xMjcSIAkyWoxKH6I8mBIFDTec3tMSBQ2RYZVOIajlTCMyfr-B?alt=proto' }, request: undefined } +1s
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +455ms
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +455ms
  cypress:server:remote-states getting primary remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } +0ms
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +0ms
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +0ms
GET /v1/pages/ChVDaHJvbWUvMTI2LjAuNjQ3OC4xMjcSIAkyWoxKH6I8mBIFDTec3tMSBQ2RYZVOIajlTCMyfr-B?alt=proto 200 2465.178 ms - -
  cypress:server:server-base Got CONNECT request from optimizationguide-pa.googleapis.com:443 +248ms
  cypress:https-proxy Writing browserSocket connection headers { url: 'optimizationguide-pa.googleapis.com:443', headLength: 0, headers: { host: 'optimizationguide-pa.google
apis.com:443', 'proxy-connection': 'keep-alive', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' } } +246ms
  cypress:https-proxy Got first head bytes { url: 'optimizationguide-pa.googleapis.com:443', head: '\x16\x03\x01\x06�\x01\x00\x06�\x03\x03\x1DK���5��CP�^�<V���Te��~�"\r��\x02\x0F(" ���Q\x16C�\x11W���Q�YV>��\x02' } +0ms
  cypress:https-proxy Making intercepted connection to 3974 +0ms
  cypress:network:connect successfully connected { opts: { port: 3974, host: 'localhost', getDelayMsForRetry: [Function: h] }, iteration: 0 } +247ms
  cypress:https-proxy received upstreamSocket callback for request { port: 3974, hostname: 'localhost', err: undefined } +1ms
  cypress:server:util:socket_allowed allowing socket { localPort: 4200 } +248ms
  cypress:proxy:http:util:prerequests Never received pre-request or url without pre-request for request POST-https://optimizationguide-pa.googleapis.com/v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw after waiting 2000ms. Continuing without one. +2s
  cypress:network:cors Parsed URL { port: '443', protocol: 'https:', subdomain: null, domain: 'optimizationguide-pa', tld: 'googleapis.com' } +2s
  cypress:server:remote-states getting remote state: undefined for: https://optimizationguide-pa.googleapis.com/v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw +2s 
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +1ms
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +1ms
  cypress:server:stream_buffer appending chunk to buffer { bytesWritten: 0, chunkLength: 908 } +2s
  cypress:network:agent addRequest called { isHttps: true, href: 'https://optimizationguide-pa.googleapis.com/v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw' } +2s
  cypress:network:agent got family { family: undefined, href: 'https://optimizationguide-pa.googleapis.com/v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw' } +0ms  
  cypress:network:agent Creating proxied socket for https://optimizationguide-pa.googleapis.com/v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw through http://127.0.0.1:33210 +1ms
  cypress:server:stream_buffer stream buffer writeable final called +1ms
  cypress:network:connect successfully connected { opts: { port: 33210, host: '127.0.0.1', useTls: false, getDelayMsForRetry: [Function (anonymous)] }, iteration: 0 } +2s   
  cypress:network:agent Proxy socket for https://optimizationguide-pa.googleapis.com/v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw established +1ms
  cypress:server:request received status code & headers on request { requestId: 'request12', statusCode: 200, headers: { 'content-type': 'application/x-protobuf' } } +2s
  cypress:server:request successful response received { requestId: 'request12' } +1ms
  cypress:net-stubbing:server:intercept-response InterceptResponse { req: { url: '/v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw' }, request: undefined } +2s     
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +357ms
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +357ms
  cypress:server:remote-states getting primary remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } +0ms
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +0ms
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +0ms
POST /v1:GetModels?key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw 200 2363.864 ms - -
  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    │ 'Chrome'  │      6       │ '48532, 28996, 50264, 5596, 2480, 3592' │    1.43    │      0.71      │  646.38  │    457.35    │   646.38    │
  cypress:server:util:process_profiler │    1    │ 'cypress' │      1       │                 '28400'                 │    0.06    │      0.05      │  402.42  │    394.12    │   402.42    │
  cypress:server:util:process_profiler │    2    │  'other'  │      5       │   '5768, 49844, 39640, 35192, 31388'    │    0.14    │      0.74      │  370.14  │    415.43    │   486.35    │
  cypress:server:util:process_profiler │    3    │ 'plugin'  │      2       │             '30912, 22368'              │    0.18    │      0.06      │  136.67  │    86.49     │   136.67    │
  cypress:server:util:process_profiler │    4    │  'TOTAL'  │      14      │                   '-'                   │    1.8     │      1.33      │ 1555.61  │   1200.93    │   1555.61   │
  cypress:server:util:process_profiler └─────────┴───────────┴──────────────┴─────────────────────────────────────────┴────────────┴────────────────┴──────────┴──────────────┴─────────────┘ +12s
  cypress:server:util:socket_allowed allowed socket closed, removing { localPort: 4066 } +5s
  cypress:server:util:socket_allowed allowed socket closed, removing { localPort: 4198 } +2s
  cypress:server:socket-e2e watch:test:file { id: 'U3BlYzpEOi9wZXJzb24vaXNzdWUtZGVtby9jeXByZXNzLWludGVyY2VwdC1hc3NldHMtYnVnL2N5cHJlc3MvZTJlL3NwZWMuY3kuanM=', name: 'spec.cy.
js', specType: 'integration', absolute: 'D:/person/issue-demo/cypress-intercept-assets-bug/cypress/e2e/spec.cy.js', baseName: 'spec.cy.js', fileName: 'spec', specFileExtension: '.cy.js', fileExtension: '.js', relative: 'cypress\\e2e\\spec.cy.js' } +13s
  cypress:server:socket-e2e watching spec with config { id: 'U3BlYzpEOi9wZXJzb24vaXNzdWUtZGVtby9jeXByZXNzLWludGVyY2VwdC1hc3NldHMtYnVnL2N5cHJlc3MvZTJlL3NwZWMuY3kuanM=', name:
 'spec.cy.js', specType: 'integration', absolute: 'D:/person/issue-demo/cypress-intercept-assets-bug/cypress/e2e/spec.cy.js', baseName: 'spec.cy.js', fileName: 'spec', specFileExtension: '.cy.js', fileExtension: '.js', relative: 'cypress\\e2e\\spec.cy.js' } +0ms
  cypress:server:iframes handling iframe for project spec { spec: { name: '', absolute: '', relative: '', specType: 'integration' }, extraOptions: { specType: 'integration' } } +12s
  cypress:server:controllers handle iframe { test: 'cypress\\e2e\\spec.cy.js', specFilter: undefined } +12s
  cypress:server:controllers get specs { spec: 'cypress\\e2e\\spec.cy.js', extraOptions: { specType: 'integration' } } +0ms
  cypress:server:controllers normalizing spec { spec: 'cypress\\e2e\\spec.cy.js' } +0ms
  cypress:server:controllers converted cypress\e2e\spec.cy.js to D:\person\issue-demo\cypress-intercept-assets-bug\cypress\e2e\spec.cy.js +0ms
  cypress:server:controllers test url for file { file: 'cypress\\e2e\\spec.cy.js', url: '/__cypress/tests?p=cypress\\e2e\\spec.cy.js' } +0ms
  cypress:server:controllers test url for file { file: 'cypress\\support\\e2e.js', url: '/__cypress/tests?p=cypress\\support\\e2e.js' } +0ms
  cypress:server:controllers all files to send [ 'cypress\\support\\e2e.js', 'cypress\\e2e\\spec.cy.js' ] +0ms
  cypress:server:remote-states getting primary remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } +8s
  cypress:server:controllers iframe cypress\e2e\spec.cy.js options { superDomain: 'localhost', title: 'cypress\\e2e\\spec.cy.js', scripts: '[{"absolute":"D:\\\\person\\\\iss
ue-demo\\\\cypress-intercept-assets-bug\\\\cypress\\\\support\\\\e2e.js","relative":"cypress\\\\support\\\\e2e.js","relativeUrl":"/__cypress/tests?p=cypress\\\\support\\\\e2
e.js"},{"absolute":"D:\\\\person\\\\issue-demo\\\\cypress-intercept-assets-bug\\\\cypress\\\\e2e\\\\spec.cy.js","relative":"cypress\\\\e2e\\\\spec.cy.js","relativeUrl":"/__c
ypress/tests?p=cypress\\\\e2e\\\\spec.cy.js"}]', privilegedChannel: '/* global window */\r\n' + '(({ browserFamily, isSpecBridge, key, namespace, scripts, url, win = window 
}) => {\r\n' + '  /**\r\n' + '   * This file is read as a string in the server and injected into the spec\r\n' + '   * frame in order to create a privileged channel between 
the server and\r\n' + '   * the spec frame. The values above are provided by the server, with the\r\n' + '   * `key` being particularly important since it is used to validat
e\r\n' + '   * any messages sent from this channel back to the server.\r\n' + '   *\r\n' + '   * This file does not get preprocessed, so it should not contain syntax that\r\
n' + '   * our minimum supported browsers do not support.\r\n' + '   */\r\n' + '\r\n' + '  const Err = win.Error\r\n' + '  const captureStackTrace = win.Error.captureStackTr
ace\r\n' + '  const filter = win.Array.prototype.filter\r\n' + '  const arrayIncludes = win.Array.prototype.includes\r\n' + '  const map = win.Array.prototype.map\r\n' + '  
const slice = win.Array.prototype.slice\r\n' + '  const isArray = win.Array.isArray\r\n' + '  const stringIncludes = win.String.prototype.includes\r\n' + '  const replace = 
win.String.prototype.replace\r\n' + '  const split = win.String.prototype.split\r\n' + '  const functionToString = win.Function.prototype.toString\r\n' + '  const fetch = wi
n.fetch\r\n' + '  const parse = win.JSON.parse\r\n' + '  const stringify = win.JSON.stringify\r\n' + '  const charCodeAt = win.String.prototype.charCodeAt\r\n' + '  const im
ul = Math.imul\r\n' + '\r\n' + '  const queryStringRegex = /\\?.*$/\r\n' + '\r\n' + '  let hasValidCallbackContext = false\r\n' + '\r\n' + "  // since this function is eval'
d, the scripts are included as stringified JSON\r\n" + '  if (scripts) {\r\n' + '    scripts = parse(scripts)\r\n' + '  }\r\n' + '\r\n' + '  // when privileged commands are 
called within the cy.origin() callback,\r\n' + "  // since the callback is eval'd in the spec bridge instead of being run\r\n" + '  // directly in the spec frame, we need to
 use different criteria, namely\r\n' + '  // that the stack includes the function where we eval the callback\r\n' + '  const hasSpecBridgeInvocation = (err) => {\r\n' + '   
 switch (browserFamily) {\r\n' + "      case 'chromium':\r\n" + "        return stringIncludes.call(err.stack, 'at invokeOriginFn')\r\n" + "      case 'firefox':\r\n" + "   
     return stringIncludes.call(err.stack, 'invokeOriginFn@')\r\n" + "      // currently, this won't run in webkit since it doesn't\r\n" + '      // support cy.origin()\r\n'
 + '      default:\r\n' + '        return false\r\n' + '    }\r\n' + '  }\r\n' + '\r\n' + '  // in chromium, stacks only include lines from the frame where the error is\r\n'
 + '  // created, so to validate a function call was from the spec frame, we strip\r\n' + '  // message lines and any eval calls (since they could be invoked from outside\r\
n' + '  // the spec frame) and if there are lines left, they must have been from\r\n' + '  // the spec frame itself\r\n' + '  const hasSpecFrameStackLines = (err) => {\r\n' 
+ "    const stackLines = split.call(err.stack, '\\n')\r\n" + '    const filteredLines = filter.call(stackLines, (line) => {\r\n' + '      return (\r\n' + '        !stringIn
cludes.call(line, err.message)\r\n' + "        && !stringIncludes.call(line, 'eval at <anonymous>')\r\n" + '      )\r\n' + '    })\r\n' + '\r\n' + '    return filteredLines.
length > 0\r\n' + '  }\r\n' + '\r\n' + '  const isInCallback = (err) => {\r\n' + "    return stringIncludes.call(err.stack, 'thenFn@') || stringIncludes.call(err.stack, 'wit
hinFn@')\r\n" + '  }\r\n' + '\r\n' + '  const hasCallbackInsideEval = (err) => {\r\n' + "    if (browserFamily === 'webkit') {\r\n" + '      return isInCallback(err) && hasV
alidCallbackContext\r\n' + '    }\r\n' + '\r\n' + "    return isInCallback(err) && stringIncludes.call(err.stack, '> eval line')\r\n" + '  }\r\n' + '\r\n' + '  // in non-chr
omium browsers, the stack will include either the spec file url\r\n' + '  // or the support file\r\n' + '  const hasStackLinesFromSpecOrSupportFile = (err) => {\r\n' + '    
return filter.call(scripts, (script) => {\r\n' + '      // in webkit, stack line might not include the query string\r\n' + "      if (browserFamily === 'webkit') {\r\n" + " 
       script = replace.call(script, queryStringRegex, '')\r\n" + '      }\r\n' + '\r\n' + '      return stringIncludes.call(err.stack, script)\r\n' + '    }).length > 0\r\n
' + '  }\r\n' + '\r\n' + '  // privileged commands are commands that should only be called from the spec\r\n' + '  // because they escape the browser sandbox and (generally)
 have access to node\r\n' + '  const privilegedCommands = [\r\n' + "    'exec',\r\n" + "    // cy.origin() doesn't directly access node, but is a pathway for other\r\n" + ' 
   // commands to do so\r\n' + "    'origin',\r\n" + "    'readFile',\r\n" + '    // cy.selectFile() accesses node when using the path argument to read a file\r\n' + "    's
electFile',\r\n" + "    'writeFile',\r\n" + "    'task',\r\n" + '  ]\r\n' + '\r\n' + '  const callbackCommands = [\r\n' + "    'each',\r\n" + "    'then',\r\n" + "    'withi
n',\r\n" + '  ]\r\n' + '\r\n' + '  function stackIsFromSpecFrame (err) {\r\n' + '    if (isSpecBridge) {\r\n' + '      return hasSpecBridgeInvocation(err)\r\n' + '    }\r\n'
 + '\r\n' + "    if (browserFamily === 'chromium') {\r\n" + '      return hasStackLinesFromSpecOrSupportFile(err) || hasSpecFrameStackLines(err)\r\n' + '    }\r\n' + '\r\n' 
+ '    return hasCallbackInsideEval(err) || hasStackLinesFromSpecOrSupportFile(err)\r\n' + '  }\r\n' + '\r\n' + '  // source: https://github.com/bryc/code/blob/d0dac1c607a00
5679799024ff66166e13601d397/jshash/experimental/cyrb53.js\r\n' + '  function hash (str) {\r\n' + '    const seed = 0\r\n' + '    let h1 = 0xdeadbeef ^ seed\r\n' + '    let h
2 = 0x41c6ce57 ^ seed\r\n' + '\r\n' + '    for (let i = 0, ch; i < str.length; i++) {\r\n' + '      ch = charCodeAt.call(str, i)\r\n' + '      h1 = imul(h1 ^ ch, 2654435761)
\r\n' + '      h2 = imul(h2 ^ ch, 1597334677)\r\n' + '    }\r\n' + '    h1 = imul(h1 ^ (h1 >>> 16), 2246822507)\r\n' + '    h1 ^= imul(h2 ^ (h2 >>> 13), 3266489909)\r\n' + '
    h2 = imul(h2 ^ (h2 >>> 16), 2246822507)\r\n' + '    h2 ^= imul(h1 ^ (h1 >>> 13), 3266489909)\r\n' + '\r\n' + '    return `${4294967296 * (2097151 & h2) + (h1 >>> 0)}`\r\
n' + '  }\r\n' + '\r\n' + '  // removes trailing undefined args\r\n' + '  function dropRightUndefined (array) {\r\n' + '    if (!isArray(array)) return []\r\n' + '\r\n' + ' 
   let index = array.length\r\n' + '\r\n' + '    // find index of last non-undefined arg\r\n' + '    // eslint-disable-next-line no-empty\r\n' + '    while (index-- && array
[index] === undefined) {}\r\n' + '\r\n' + '    return slice.call(array, 0, index + 1)\r\n' + '  }\r\n' + '\r\n' + '  function onCommandInvocation (command) {\r\n' + "    // 
message doesn't really matter since we're only interested in the stack\r\n" + "    const err = new Err('command stack error')\r\n" + '\r\n' + '    // strips the stack for th
is function itself, so we get a more accurate\r\n' + '    // look at where the command was called from\r\n' + '    if (captureStackTrace) {\r\n' + '      captureStackTrace.c
all(Err, err, onCommandInvocation)\r\n' + '    }\r\n' + '\r\n' + '    if (arrayIncludes.call(callbackCommands, command.name)) {\r\n' + '      hasValidCallbackContext = stack
IsFromSpecFrame(err)\r\n' + '    }\r\n' + '\r\n' + '    if (!arrayIncludes.call(privilegedCommands, command.name)) return\r\n' + '\r\n' + "    // if stack is not validated a
s being from the spec frame, don't add\r\n" + '    // it as a verified command\r\n' + '    if (!stackIsFromSpecFrame(err)) return\r\n' + '\r\n' + '    // hash the args to av
oid `413 Request Entity Too Large` error from express.\r\n' + '    // see https://github.com/cypress-io/cypress/issues/27099 and\r\n' + '    // https://github.com/cypress-io
/cypress/issues/27097\r\n' + '    const args = map.call(dropRightUndefined([...(command.args || [])]), (arg) => {\r\n' + '      if (arg === undefined) {\r\n' + '        arg 
= null\r\n' + '      }\r\n' + '\r\n' + "      if (typeof arg === 'function') {\r\n" + '        arg = functionToString.call(arg)\r\n' + '      }\r\n' + '\r\n' + '      return
 hash(stringify(arg))\r\n' + '    })\r\n' + '\r\n' + '    // if we verify a privileged command was invoked from the spec frame, we\r\n' + "    // send it to the server, wher
e it's stored in state. when the command is\r\n" + '    // run and it sends its message to the server via websocket, we check\r\n' + '    // that verified status before allo
wing the command to continue running\r\n' + '    //\r\n' + '    // needs to use the fully-qualified url or else when the baseUrl includes\r\n' + '    // basic auth, the fetc
h fails with a security error\r\n' + '    // see https://github.com/cypress-io/cypress/issues/28336\r\n' + '    const promise = fetch(`${win.location.origin}/${namespace}/ad
d-verified-command`, {\r\n' + '      body: stringify({\r\n' + '        args,\r\n' + '        name: command.name,\r\n' + '        key,\r\n' + '        url,\r\n' + '      }),\
r\n' + '      headers: {\r\n' + "        'Content-Type': 'application/json',\r\n" + '      },\r\n' + "      method: 'POST',\r\n" + '    }).catch(() => {\r\n' + "      // thi
s erroring is unlikely, but it's fine to ignore. if adding the\r\n" + '      // verified command failed, the default behavior is NOT to allow\r\n' + '      // the privileged
 command to run\r\n' + '    })\r\n' + '\r\n' + '    return {\r\n' + '      args,\r\n' + '      promise,\r\n' + '    }\r\n' + '  }\r\n' + '\r\n' + "  win.Cypress.on('command:
invocation', onCommandInvocation)\r\n" + '\r\n' + '  // returned for testing purposes only\r\n' + '  return {\r\n' + '    dropRightUndefined,\r\n' + '    onCommandInvocation
,\r\n' + '  }\r\n' + '})\r\n' + '({\n' + "      browserFamily: 'chromium',\n" + '      isSpecBridge: false,\n' + "      key: '6b3d951b-2910-48d0-81c3-860ec259f134',\n" + "  
    namespace: '__cypress',\n" + `      scripts: '["/__cypress/tests?p=cypress\\\\\\\\support\\\\\\\\e2e.js","/__cypress/tests?p=cypress\\\\\\\\e2e\\\\\\\\spec.cy.js"]',\n` + "      url: 'http://localhost:3972/__cypress/iframes/cypress%5Ce2e%5Cspec.cy.js?browserFamily=chromium'\n" + '    })' } +2ms
GET /__cypress/iframes/cypress%5Ce2e%5Cspec.cy.js?browserFamily=chromium 200 3.677 ms - -
  cypress:server:controllers:spec request for { spec: 'cypress\\support\\e2e.js' } +11s
  cypress:server:preprocessor getting file cypress\support\e2e.js +12s
  cypress:server:preprocessor getFile D:\person\issue-demo\cypress-intercept-assets-bug\cypress\support\e2e.js +0ms
  cypress:lifecycle:EventRegistrar execute plugin event 'file:preprocessor' Node 'v18.17.1' with args: EventEmitter { _events: [Object: null prototype] { rerun: [Function (a
nonymous)] }, _eventsCount: 1, _maxListeners: undefined, filePath: 'D:\\person\\issue-demo\\cypress-intercept-assets-bug\\cypress\\support\\e2e.js', shouldWatch: true, outpu
tPath: 'C:\\Users\\86159\\AppData\\Roaming\\Cypress\\cy\\production\\projects\\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\\bundles\\cypress\\support\\e2e.js', [Symbol(kCapture)]: false } undefined undefined +12s
  cypress:lifecycle:ProjectConfigManager call event file:preprocessor for invocation id inv13 +11s
  cypress:lifecycle:child:RunPlugins:30912 execute plugin event: file:preprocessor ({ invocationId: 'inv13', eventId: 3 }) +12s
  cypress:webpack user options: { webpackOptions: { mode: 'development', node: { global: true, __filename: true, __dirname: true }, module: { rules: [Array] }, plugins: [ [P
rovidePlugin], [LimitChunkCountPlugin], [LimitChunkCountPlugin] ], resolve: { extensions: [Array], fallback: [Object], plugins: [] }, entry: [ 'D:\\person\\issue-demo\\cypre
ss-intercept-assets-bug\\cypress\\support\\e2e.js' ], output: { publicPath: '', path: 'C:\\Users\\86159\\AppData\\Roaming\\Cypress\\cy\\production\\projects\\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\\bundles\\cypress\\support', filename: 'e2e.js' }, devtool: 'inline-source-map' } } +11s
  cypress:webpack get D:\person\issue-demo\cypress-intercept-assets-bug\cypress\support\e2e.js +1ms
  cypress:webpack already have bundle for D:\person\issue-demo\cypress-intercept-assets-bug\cypress\support\e2e.js +0ms
  cypress:lifecycle:ProjectConfigManager promise resolved for id 'inv13' with value C:\Users\86159\AppData\Roaming\Cypress\cy\production\projects\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\bundles\cypress\support\e2e.js +2ms
  cypress:server:controllers:spec sending spec { filePath: 'C:\\Users\\86159\\AppData\\Roaming\\Cypress\\cy\\production\\projects\\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\\bundles\\cypress\\support\\e2e.js' } +2ms
GET /__cypress/tests?p=cypress\support\e2e.js 200 2.976 ms - -
  cypress:server:controllers:spec request for { spec: 'cypress\\e2e\\spec.cy.js' } +2ms
  cypress:server:preprocessor getting file cypress\e2e\spec.cy.js +4ms
  cypress:server:preprocessor getFile D:\person\issue-demo\cypress-intercept-assets-bug\cypress\e2e\spec.cy.js +0ms
  cypress:lifecycle:EventRegistrar execute plugin event 'file:preprocessor' Node 'v18.17.1' with args: EventEmitter { _events: [Object: null prototype] { rerun: [Function (a
nonymous)] }, _eventsCount: 1, _maxListeners: undefined, filePath: 'D:\\person\\issue-demo\\cypress-intercept-assets-bug\\cypress\\e2e\\spec.cy.js', shouldWatch: true, outpu
tPath: 'C:\\Users\\86159\\AppData\\Roaming\\Cypress\\cy\\production\\projects\\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\\bundles\\cypress\\e2e\\spec.cy.js', [Symbol(kCapture)]: false } undefined undefined +4ms
  cypress:lifecycle:ProjectConfigManager call event file:preprocessor for invocation id inv14 +2ms
  cypress:lifecycle:child:RunPlugins:30912 execute plugin event: file:preprocessor ({ invocationId: 'inv14', eventId: 3 }) +4ms
  cypress:webpack user options: { webpackOptions: { mode: 'development', node: { global: true, __filename: true, __dirname: true }, module: { rules: [Array] }, plugins: [ [P
rovidePlugin], [LimitChunkCountPlugin], [LimitChunkCountPlugin] ], resolve: { extensions: [Array], fallback: [Object], plugins: [] }, entry: [ 'D:\\person\\issue-demo\\cypre
ss-intercept-assets-bug\\cypress\\support\\e2e.js' ], output: { publicPath: '', path: 'C:\\Users\\86159\\AppData\\Roaming\\Cypress\\cy\\production\\projects\\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\\bundles\\cypress\\support', filename: 'e2e.js' }, devtool: 'inline-source-map' } } +3ms
  cypress:webpack get D:\person\issue-demo\cypress-intercept-assets-bug\cypress\e2e\spec.cy.js +0ms
  cypress:webpack already have bundle for D:\person\issue-demo\cypress-intercept-assets-bug\cypress\e2e\spec.cy.js +0ms
  cypress:lifecycle:ProjectConfigManager promise resolved for id 'inv14' with value C:\Users\86159\AppData\Roaming\Cypress\cy\production\projects\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\bundles\cypress\e2e\spec.cy.js +1ms
  cypress:server:controllers:spec sending spec { filePath: 'C:\\Users\\86159\\AppData\\Roaming\\Cypress\\cy\\production\\projects\\cypress-intercept-assets-bug-862071f384222cbf5e32174e0559ac77\\bundles\\cypress\\e2e\\spec.cy.js' } +1ms
GET /__cypress/tests?p=cypress\e2e\spec.cy.js 200 1.852 ms - -
  cypress:server:socket-base backend:request { eventName: 'close:extra:targets', args: [] } +11s
  cypress:server:browsers getBrowserLauncher { browser: { name: 'chrome', family: 'chromium', channel: 'stable', displayName: 'Chrome', version: '126.0.6478.127', path: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', minSupportedVersion: 64, majorVersion: '126', isHeaded: true, isHeadless: false } } +11s
  cypress:server:socket-base backend:request { eventName: 'reset:server:state', args: [] } +0ms
  cypress:proxy:http:util:buffers resetting buffers +11s
  cypress:server:remote-states resetting remote state +34ms
  cypress:server:socket-base backend:request { eventName: 'get:rendered:html:origins', args: [] } +1ms
  cypress:server:socket-base automation:request get:cookies {} +0ms
  cypress:server:automation:cookies getting:cookies {} +11s
  cypress:server:automation:cookies received get:cookies [] +1ms
  cypress:server:socket-base automation:request clear:cookies [] +5ms
  cypress:server:automation:cookies clear:cookies 0 +4ms
  cypress:server:socket-base backend:request { eventName: 'reset:rendered:html:origins', args: [] } +1ms
  cypress:server:socket-base backend:request { eventName: 'net', args: [ 'route:added', { routeId: '1719496896761-7', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +12ms
  cypress:net-stubbing:server:driver-events received driver event { eventName: 'route:added', args: [ 'route:added', { routeId: '1719496896761-7', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +11s
  cypress:server:fixture fixture exact name exists D:\person\issue-demo\cypress-intercept-assets-bug\cypress\fixtures\example.json +11s
  cypress:server:socket-base backend:request { eventName: 'net', args: [ 'route:added', { routeId: '1719496896774-8', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +11ms
  cypress:net-stubbing:server:driver-events received driver event { eventName: 'route:added', args: [ 'route:added', { routeId: '1719496896774-8', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +10ms
  cypress:server:fixture fixture exact name exists D:\person\issue-demo\cypress-intercept-assets-bug\cypress\fixtures\example.json +13ms
  cypress:net-stubbing:server:util sending event to driver { eventName: 'before:request', data: { eventId: 'event16', subscription: { eventName: 'before:request', await: fal
se, routeId: '1719496896761-7' }, browserRequestId: '3592.120', requestId: 'interceptedRequest15', data: { headers: [Object], url: 'http://localhost:3972/__cypress/asset/data.json', method: 'GET', httpVersion: '1.1', resourceType: 'fetch', query: {}, body: '' } } } +11s
  cypress:net-stubbing:server:intercept-response InterceptResponse { req: { url: 'http://localhost:3972/__cypress/asset/data.json' }, request: d { subscriptionsByRoute: [ [O
bject] ], includeBodyInAfterResponse: false, responseSent: true, onResponse: [Function (anonymous)], id: 'interceptedRequest15', req: IncomingMessage { _readableState: [Read
ableState], _events: [Object: null prototype] {}, _eventsCount: 0, _maxListeners: undefined, socket: [Socket], httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', 
complete: true, rawHeaders: [Array], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: 'http://localhost:3972/__cypress/asset/data.json'
, method: 'GET', statusCode: null, statusMessage: null, client: [Socket], _consuming: false, _dumped: false, proxiedUrl: 'http://localhost:3972/__cypress/asset/data.json', n
ext: [Function: y], baseUrl: '', originalUrl: '/__cypress/asset/data.json', _parsedUrl: [Url], params: [Object], query: {}, res: [ServerResponse], secret: undefined, cookies
: [Object], signedCookies: [Object: null prototype] {}, _startAt: [Array], _startTime: 2024-06-27T14:01:36.792Z, _remoteAddress: '127.0.0.1', route: [p], isAUTFrame: false, 
isFromExtraTarget: false, browserPreRequest: [Object], noPreRequestExpected: false, resourceType: 'fetch', matchingRoutes: [Array], requestId: 'interceptedRequest15', body: 
'', [Symbol(kCapture)]: false, [Symbol(kHeaders)]: [Object], [Symbol(kHeadersCount)]: 28, [Symbol(kTrailers)]: null, [Symbol(kTrailersCount)]: 0 }, res: ServerResponse { _ev
ents: [Object: null prototype], _eventsCount: 3, _maxListeners: undefined, outputData: [], outputSize: 0, writable: true, destroyed: false, _last: false, chunkedEncoding: fa
lse, shouldKeepAlive: true, maxRequestsOnConnectionReached: false, _defaultKeepAlive: true, useChunkedEncodingByDefault: true, sendDate: true, _removedConnection: false, _re
movedContLen: false, _removedTE: false, strictContentLength: false, _contentLength: null, _hasBody: true, _trailer: '', finished: false, _headerSent: false, _closed: false, 
socket: [Socket], _header: null, _keepAliveTimeout: 5000, _onPendingData: [Function: bound updateOutgoingData], req: [IncomingMessage], _sent100: false, _expect_continue: fa
lse, _maxRequestsPerSocket: 0, locals: [Object: null prototype] {}, flush: [Function (anonymous)], write: [Function (anonymous)], end: [Function (anonymous)], on: [Function 
(anonymous)], writeHead: [Function (anonymous)], _startAt: undefined, _startTime: undefined, __onFinished: [Function], body: '{"name":"Using fixtures to represent data","ema
il":"hello@cypress.io","body":"Fixtures are a great way to mock data for responses to routes"}', [Symbol(kCapture)]: false, [Symbol(kBytesWritten)]: 0, [Symbol(kNeedDrain)]:
 false, [Symbol(corked)]: 0, [Symbol(kOutHeaders)]: null, [Symbol(errored)]: null, [Symbol(kHighWaterMark)]: 16384, [Symbol(kRejectNonStandardBodyWrites)]: false, [Symbol(kU
niqueHeaders)]: null }, continueRequest: [Function: next], onError: [Function: _], _onResponse: [Function: onResponse], state: { requests: [Object], routes: [Array], pending
EventHandlers: {}, reset: [Function: reset] }, socket: p { ensureProp: [Function: i], inRunMode: false, supportsRunEvents: false, ended: false, localBus: [EventEmitter], onT
estFileChange: [Function: bound ], testFilePath: 'cypress\\e2e\\spec.cy.js', onStudioTestFileChange: [Function: bound onStudioTestFileChange], removeOnStudioTestFileChange: 
[Function: bound removeOnStudioTestFileChange], _socketIo: [u], _cdpIo: [m], _sendResetBrowserTabsForNextSpecMessage: [AsyncFunction (anonymous)], _sendResetBrowserStateMess
age: [AsyncFunction (anonymous)], _sendFocusBrowserMessage: [AsyncFunction (anonymous)], _isRunnerSocketConnected: [Function (anonymous)] }, lastEvent: 'before:request' } } +8s
  cypress:net-stubbing:server:util sending event to driver { eventName: 'response:callback', data: { eventId: 'event17', subscription: { eventName: 'response:callback', awai
t: false, routeId: '1719496896761-7' }, browserRequestId: '3592.120', requestId: 'interceptedRequest15', data: { headers: [Object], body: '{"name":"Using fixtures to represe
nt data","email":"hello@cypress.io","body":"Fixtures are a great way to mock data for responses to routes"}', url: 'http://localhost:3972/__cypress/asset/data.json', method:
 null, httpVersion: null, statusCode: 200, statusMessage: null } } } +2ms
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +8s
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +52ms
  cypress:server:remote-states getting primary remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } +0ms
  cypress:network:cors Parsed URL { port: '3972', protocol: 'http:', subdomain: null, domain: '', tld: 'localhost' } +1ms
  cypress:server:remote-states getting remote state: { auth: undefined, origin: 'http://localhost:3972', strategy: 'file', fileServer: 'http://localhost:3973', domainName: 'localhost', props: null } for: http://localhost:3972 +1ms
GET /__cypress/asset/data.json 200 7.554 ms - -
  cypress:net-stubbing:server:util sending event to driver { eventName: 'after:response', data: { eventId: 'event18', subscription: { eventName: 'after:response', await: false, routeId: '1719496896761-7' }, browserRequestId: '3592.120', requestId: 'interceptedRequest15', data: {} } } +4ms
  cypress:server:socket-base backend:request { eventName: 'close:extra:targets', args: [] } +57ms
  cypress:server:browsers getBrowserLauncher { browser: { name: 'chrome', family: 'chromium', channel: 'stable', displayName: 'Chrome', version: '126.0.6478.127', path: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', minSupportedVersion: 64, majorVersion: '126', isHeaded: true, isHeadless: false } } +87ms
  cypress:server:socket-base backend:request { eventName: 'reset:server:state', args: [] } +1ms
  cypress:proxy:http:util:buffers resetting buffers +88ms
  cypress:server:remote-states resetting remote state +35ms
  cypress:server:socket-base backend:request { eventName: 'get:rendered:html:origins', args: [] } +0ms
  cypress:server:socket-base automation:request get:cookies {} +0ms
  cypress:server:automation:cookies getting:cookies {} +82ms
  cypress:server:automation:cookies received get:cookies [] +7ms
  cypress:server:socket-base automation:request clear:cookies [] +11ms
  cypress:server:automation:cookies clear:cookies 0 +4ms
  cypress:server:socket-base backend:request { eventName: 'reset:rendered:html:origins', args: [] } +8ms
  cypress:server:socket-base backend:request { eventName: 'net', args: [ 'route:added', { routeId: '1719496896858-9', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +6ms
  cypress:net-stubbing:server:driver-events received driver event { eventName: 'route:added', args: [ 'route:added', { routeId: '1719496896858-9', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +83ms
  cypress:server:fixture fixture exact name exists D:\person\issue-demo\cypress-intercept-assets-bug\cypress\fixtures\example.json +81ms
  cypress:server:socket-base backend:request { eventName: 'net', args: [ 'route:added', { routeId: '1719496896870-10', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +11ms
  cypress:net-stubbing:server:driver-events received driver event { eventName: 'route:added', args: [ 'route:added', { routeId: '1719496896870-10', hasInterceptor: false, routeMatcher: [Object], staticResponse: [Object] } ] } +11ms
  cypress:server:fixture fixture exact name exists D:\person\issue-demo\cypress-intercept-assets-bug\cypress\fixtures\example.json +11ms
GET /__cypress/assets/data.json 404 4.185 ms - 136

Other

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions