currents-dev / cypress-debugger Goto Github PK
View Code? Open in Web Editor NEWDebug failed CI cypress tests with cloud-based replayable traces
Home Page: https://cypress-debugger.dev
License: Other
Debug failed CI cypress tests with cloud-based replayable traces
Home Page: https://cypress-debugger.dev
License: Other
Cypress 13.2.0
Cypress-debugger 1.0.9
We've detected that you're using a 3rd party library that is not supported by Cypress: cypress-debugger
To continue running Cypress, please remove this library or reach out for help migrating.
Run Cypress with cypress-debugger
npx cypress run --browser chrome --env grepTags=@smoke
e2e:tests:smoke
npx cypress run --browser chrome --env grepTags=@smoke
It looks like this is your first time using Cypress: 13.2.0
[STARTED] Task without title.
[SUCCESS] Task without title.
Opening Cypress...
DevTools listening on ws://127.0.0.1:35713/devtools/browser/449c2cb7-50f5-44a9-9857-9894fb947eab
We've detected that you're using a 3rd party library that is not supported by Cypress: cypress-debugger
To continue running Cypress, please remove this library or reach out for help migrating.
Error: Command failed with exit code 1: npm run e2e:tests:smoke
at makeError (/home/runner/work/marketplace-frontend/marketplace-frontend/node_modules/start-server-and-test/node_modules/execa/lib/error.js:60:11)
at handlePromise (/home/runner/work/marketplace-frontend/marketplace-frontend/node_modules/start-server-and-test/node_modules/execa/index.js:118:26)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
shortMessage: 'Command failed with exit code 1: npm run e2e:tests:smoke',
command: 'npm run e2e:tests:smoke',
escapedCommand: '"npm run e2e:tests:smoke"',
exitCode: 1,
signal: undefined,
signalDescription: undefined,
stdout: undefined,
stderr: undefined,
failed: ***,
timedOut: false,
isCanceled: false,
killed: false
}
Error: Process completed with exit code 1.
The CDP is used to inspect the browser launched by Cypress in order to collect the browser console logs. The project uses chrome-remote-interface, the recommended node module.
Cypress gives the opportunity to connect to the browser from the setupNodeEvents
function by listening to before:browser:launch
(https://docs.cypress.io/api/plugins/browser-launch-api).
Here is the implementation.
The issue:
After running npx cypress run --browser chrome
, the CDP is connected, but after processing the first spec - it disconnects.
Currently, the CPD is reconnecting before each spec - https://github.com/currents-dev/cypress-debugger/blob/feat/console-messages/packages/plugin/src/install.ts#L93.
Why the CDP is disconnecting after each spec file?
Please add a separate, detailed issue for each tech debt / follow up you didn't implement yet
# Put output below this line
In case of usage Cucumber I found next issue: if we have "/" in our Scenario: Check of removing Event/OC/Collection from bookmarks
cy.task('dumpEvents')
will fail because it couldn't parse it
So dump file wasn't produced at the end of run and all next tests are failed.
Repo with reproducible code is here: https://github.com/mi4i0/cypress-debugger-dummy
Dump file should be save without problemsbe saved
cypress
or cypress-cloud
command you're running)# Put output below this line
# Put output below this line
# Put your logs below this line
1) "after each" hook: P for "Check of removing Event/OC/Collection from bookmarks"
0 passing (4s)
1 failing
1) Visit google.com
"after each" hook: P for "Check of removing Event/OC/Collection from bookmarks":
CypressError: `cy.task('dumpEvents')` failed with the following error:
> ENOENT: no such file or directory, open 'cypress-traces/Visit.feature/Visit google.com -- Check of removing Event/OC/Collection from bookmarks (passed) (attempt 2).json'
https://on.cypress.io/api/task
Because this error occurred during a `after each` hook we are skipping all of the remaining tests.
at <unknown> (https://www.google.com/__cypress/runner/cypress_runner.js:151171:78)
at tryCatcher (https://www.google.com/__cypress/runner/cypress_runner.js:18744:23)
at Promise._settlePromiseFromHandler (https://www.google.com/__cypress/runner/cypress_runner.js:16679:31)
at Promise._settlePromise (https://www.google.com/__cypress/runner/cypress_runner.js:16736:18)
at Promise._settlePromise0 (https://www.google.com/__cypress/runner/cypress_runner.js:16781:10)
at Promise._settlePromises (https://www.google.com/__cypress/runner/cypress_runner.js:16857:18)
at _drainQueueStep (https://www.google.com/__cypress/runner/cypress_runner.js:13451:12)
at _drainQueue (https://www.google.com/__cypress/runner/cypress_runner.js:13444:9)
at ../../node_modules/bluebird/js/release/async.js.Async._drainQueues (https://www.google.com/__cypress/runner/cypress_runner.js:13460:5)
at Async.drainQueues (https://www.google.com/__cypress/runner/cypress_runner.js:13330:14)
From Your Spec Code:
at Context.P (node_modules/@currents/cypress-debugger-support/index.js:1:0)
From Node.js Internals:
Error: ENOENT: no such file or directory, open 'cypress-traces/Visit.feature/Visit google.com -- Check of removing Event/OC/Collection from bookmarks (passed) (attempt 2).json'
at Object.openSync (node:fs:601:3)
at Object.writeFileSync (node:fs:2249:35)
at writeFile (/Users/mi4i0/GitRepos/cypress-debugger-dummy/node_modules/@currents/src/fs.ts:10:6)
at createDumpFile (/Users/mi4i0/GitRepos/cypress-debugger-dummy/node_modules/@currents/src/install.ts:29:3)
at dumpEvents (/Users/mi4i0/GitRepos/cypress-debugger-dummy/node_modules/@currents/src/install.ts:85:31)
at invoke (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/run_plugins.js:246:16)
at <unknown> (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/util.js:59:14)
at tryCatcher (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/node_modules/bluebird/js/release/util.js:16:23)
at Function.Promise.attempt.Promise.try (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/node_modules/bluebird/js/release/method.js:39:29)
at Object.wrapChildPromise (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/util.js:58:23)
at RunPlugins.taskExecute (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/run_plugins.js:252:10)
at RunPlugins.execute (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/run_plugins.js:166:21)
at EventEmitter.<anonymous> (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/child/run_plugins.js:56:12)
at EventEmitter.emit (node:events:513:28)
at EventEmitter.emit (node:domain:489:12)
at process.<anonymous> (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/packages/server/lib/plugins/util.js:33:22)
at process.emit (node:events:513:28)
at process.emit (node:domain:489:12)
at process.emit.sharedData.processEmitHook.installedValue [as emit] (/Users/mi4i0/Library/Caches/Cypress/12.17.2/Cypress.app/Contents/Resources/app/node_modules/@cspotcode/source-map-support/source-map-support.js:745:40)
at emit (node:internal/child_process:937:14)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
I only recently started using the debugger, because I'm using Cypress for a SharePoint App project and the sheer amount of libraries that SharePoint throws at Cypress makes it literally impossible to debug more than one test at a time.
And when using the runner I'm getting zero insight from Cypress why something failed. It's rarely something obvious and often something that failed silently a couple seconds before...
For now, this seems like my best chance at getting an idea afterwards, but I've noticed a different issue with this, also related to SharePoint's library bloat: it's storing every response too...
So it would be great if there could be an option added that allows to define a "mask" for requests where the content will not be stored in the dump.
For example this request snipped from one of the logs:
"request": {
"method": "GET",
"url": "https://res-1.cdn.office.net/files/sp-client/sp-topic-sdk_none_18a84eb3923baa7170dd.js",
...
}
If I could define a filter like:
{
"method": "GET",
"url": /cdn\.office\.net/i,
}
then it could know that it doesn't need to write the response content of that request in the dump.
And the url should use regex simply because this might be a simple example, but other junk might have a more complex pattern.
All other data like headers and status should be kept, as it might be valuable in the end to determine why something failed.
System:
OS: Windows 10 10.0.19045
CPU: (16) x64 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
Memory: 13.54 GB / 31.73 GB
Binaries:
Node: 14.21.1 - C:\Program Files\NodeJS\node.EXE
npmPackages:
@cypress/angular: 0.0.0-development
@cypress/mount-utils: 0.0.0-development
@cypress/react: 0.0.0-development
@cypress/react18: 0.0.0-development
@cypress/svelte: 0.0.0-development
@cypress/vue: 0.0.0-development
@cypress/vue2: 0.0.0-development
@fluentui/react: ^8.20.1 => 8.48.0
@fortawesome/fontawesome-svg-core: ^1.2.35 => 1.2.36
@fortawesome/free-solid-svg-icons: ^5.15.3 => 5.15.4
@fortawesome/react-fontawesome: ^0.1.14 => 0.1.16
@microsoft/microsoft-graph-types: 1.1.0 => 1.1.0 (2.14.0, 2.25.0)
@microsoft/rush-stack-compiler-3.9: 0.4.47 => 0.4.47
@microsoft/sp-build-web: 1.13.1 => 1.13.1
@microsoft/sp-core-library: 1.13.1 => 1.13.1 (1.12.1)
@microsoft/sp-lodash-subset: 1.13.1 => 1.13.1 (1.12.1)
@microsoft/sp-module-interfaces: 1.13.1 => 1.13.1 (1.12.1)
@microsoft/sp-office-ui-fabric-core: 1.13.1 => 1.13.1
@microsoft/sp-property-pane: 1.13.1 => 1.13.1
@microsoft/sp-tslint-rules: 1.13.1 => 1.13.1
@microsoft/sp-webpart-base: 1.13.1 => 1.13.1
@pnp/common: ^2.8.0 => 2.11.0 (2.14.0, 2.5.0)
@pnp/core: 3.4.1 => 3.4.1
@pnp/graph: 2.14.0 => 2.14.0
@pnp/logging: ^2.8.0 => 2.11.0 (2.14.0, 2.5.0)
@pnp/odata: ^2.8.0 => 2.11.0 (2.14.0, 2.5.0)
@pnp/queryable: 3.4.1 => 3.4.1
@pnp/sp: ^2.8.0 => 2.11.0 (2.5.0)
@pnp/spfx-controls-react: ^3.6.0 => 3.6.0
@types/react: 16.9.51 => 16.9.51 (17.0.37)
@types/react-dom: 16.9.8 => 16.9.8
@types/webpack-env: 1.13.1 => 1.13.1
@wojtekmaj/react-daterange-picker: ^3.3.2 => 3.3.2
ajv: ~5.2.2 => 5.2.5 (6.12.6)
cypress: ^12.17.4 => 12.17.4
cypress-debugger: ^1.0.9 => 1.0.9
cypress-on-fix: ^1.0.2 => 1.0.2
gulp: ~4.0.2 => 4.0.2
moment: ^2.29.1 => 2.29.1
office-ui-fabric-react: 7.174.1 => 7.174.1 (7.176.2)
react: 16.13.1 => 16.13.1
react-dom: 16.13.1 => 16.13.1
react-grid-layout: ^1.3.0 => 1.3.0
react-lock-screen: ^0.1.1 => 0.1.1
react-promise-tracker: ^2.1.0 => 2.1.0
react-spinners: ^0.11.0 => 0.11.0
sp-pnp-js: ^3.0.10 => 3.0.10
spfx-fast-serve-helpers: ~1.13.0 => 1.13.7
stream-json: ^1.8.0 => 1.8.0
typescript: ^3.7.7 => 3.9.10 (4.2.4)
uuid: ^8.3.2 => 8.3.2 (3.4.0, 3.1.0)
npmGlobalPackages:
@microsoft/generator-sharepoint: 1.17.4
gulp: 4.0.2
spfx-fast-serve: 3.0.6
yo: 4.3.1
I'm working on a SharePoint app for which Cypress is used for testing. Due to SharePoint and Cypress' nature, debugging tests with Open Mode is limited and Cypress by default gives unfortunately next to zero insight why a test failed outside of that.
Which is how I ended up here, and I'm glad that I finally get some insight as to what happened before a failure.
However, there's a small issue with the Player where it expects every payload
to have a .message
property.
But "name": "route" payloads never have that property. I have at least never found any in a dump that had a "message" property.
If one of these is clicked the Player throws an exception and breaks itself, requiring a reload of the page to use it again.
I also verified that manually adding said property prevents the exception and with that the entire issue.
I've included a basic Cypress Test script that causes a dump which allows manual causing of the issue.
It should create a dump that when loaded has a [pending] route
as 4th step.
Before clicking that step, the browser should be set to break on caught exceptions.
Otherwise the exception will be thrown after the end of the error handler that just handed it down until no one handled it anymore.
After setting that, clicking on [pending] route
will stop right at the point where it fails to handle the missing .message
property.
Edit: I've found out that this only happens when the "Step Details" tab is active, which makes sense because it's the one trying to read the missing property. Clicking the item while the "Console" tab is active for example works fine.
Not crashing the entire Player from a missing "message" property.
Cypress test script:
"player_issue.cy.ts"
try {
// preventing "only one instance of polyfill"
require('cypress-debugger').debuggerSupport();
}
catch {}
describe('Player crash demo', () => {
beforeEach(() => {
cy.intercept("GET", "google.com")
.as("intercepted");
});
it('visiting with route', () => {
cy.visit("https://www.google.com")
.should("not.exist"); // only to fail the test to ensure that a dump is created
});
});
cypress
or cypress-cloud
command you're running)Batchfile because PowerShell is annoying about ENV variables => "debug_runner.bat":
set ELECTRON_EXTRA_LAUNCH_ARGS=--remote-debugging-port=9222
cmd /c npx cypress run -s %*
Actual command entered in PowerShell:
.\debug_runner.bat .\player_issue.cy.ts
# Put output below this line
Nothing special, just the normal output that results from running a test.
# Put output below this line
import { defineConfig } from "cypress";
import { debuggerPlugin } from "cypress-debugger";
export default defineConfig({
viewportWidth: 1280,
viewportHeight: 800,
trashAssetsBeforeRuns: false,
e2e: {
experimentalMemoryManagement: true,
chromeWebSecurity: false,
modifyObstructiveCode: true,
experimentalModifyObstructiveThirdPartyCode: true,
setupNodeEvents(on, config) {
debuggerPlugin(on, config, {
failedTestsOnly: true,
},
},
});
I have no debug log because this issue is with the Player, not the module running during testing.
This looks like a well-maintained and popular library that will be easy to use
Related with this issue: https://github.com/currents-dev/cypress-cloud/issues/179
"cypress": "13.1.0",
"cypress-cloud": "1.9.4",
"cypress-debugger": "^1.0.9",
</details>
### Describe the bug
When running the tests in Jenkins with the new Cypress version, we got the following error:
11:47:24 Copyright (C) 2023 Currents Software Inc https://currents.dev/
11:47:24 This is free software, and you are welcome to redistribute it under certain
11:47:24 conditions. This program comes with no warranty. Parts of this program are MIT
11:47:24 licensed. Refer to the license for details
11:47:24 https://github.com/currents-dev/cypress-cloud/blob/main/LICENSE.md
11:47:24
11:47:26
11:47:26
11:47:26 (Attempt 1 of 2) An uncaught error was detected outside of a test
11:47:26 1) An uncaught error was detected outside of a test
11:47:26
11:47:26 0 passing (910ms)
11:47:26 1 failing
11:47:26
11:47:26 1) An uncaught error was detected outside of a test:
11:47:26 Error: The following error originated from your test code, not from Cypress.
11:47:26
11:47:26 > Dynamic require of "@neuralegion/cypress-har-generator/commands" is not supported
11:47:26
11:47:26 When Cypress detects uncaught errors originating from your test code it will automatically fail the current test.
11:47:26
11:47:26 Cypress could not associate this error to any specific test.
11:47:26
### Expected behavior
You can execute the tests properly.
### Command and Setup
<details>
### Command (share the exact `cypress` or `cypress-cloud` command you're running)
I downloaded this repo code, and I saw this problem:
![image](https://github.com/currents-dev/cypress-debugger/assets/6990209/570603c1-cb1e-4061-9a83-21dd9a016097)
Same problem as our error:
`> Dynamic require of "@neuralegion/cypress-har-generator/commands" is not supported`
File: cypress-debugger/packages/support/src/cy/cy.ts
```
</details>
### Full log and debug output
11:47:24 Copyright (C) 2023 Currents Software Inc https://currents.dev/
11:47:24 This is free software, and you are welcome to redistribute it under certain
11:47:24 conditions. This program comes with no warranty. Parts of this program are MIT
11:47:24 licensed. Refer to the license for details
11:47:24 https://github.com/currents-dev/cypress-cloud/blob/main/LICENSE.md
11:47:24
11:47:26
11:47:26
11:47:26 (Attempt 1 of 2) An uncaught error was detected outside of a test
11:47:26 1) An uncaught error was detected outside of a test
11:47:26
11:47:26 0 passing (910ms)
11:47:26 1 failing
11:47:26
11:47:26 1) An uncaught error was detected outside of a test:
11:47:26 Error: The following error originated from your test code, not from Cypress.
11:47:26
11:47:26 > Dynamic require of "@neuralegion/cypress-har-generator/commands" is not supported
11:47:26
11:47:26 When Cypress detects uncaught errors originating from your test code it will automatically fail the current test.
11:47:26
11:47:26 Cypress could not associate this error to any specific test.
11:47:26
all the same as #75
As noted at the end of #75, console output generated by Tests rather than the app/site being tested will be properly written to the dump, but the Player won't render it at all. Even though it is including these logs in the number of the "Console" tab.
I've tried to figure out where it's going wrong, but I've not found the repo for the Player yet, if it even has a public one, and digging through React fibers on the browser end is insanely tedious so I didn't get anywhere yet.
I am unsure which behavior is "normal", excluding logs generated by Tests or including every log that's "known" and it's just not properly showing them.
But I would expect that the number of entries shown for the "Console" tab would be the actual number of entries it will show me.
So I'd expect that to include the output of Tests too. Maybe it could be marked as such to differentiate.
Maybe even add a selector that allows hiding of Test output or up to which level.
For example: "App: Info, Log, Warn, Error - Test: Warn, Error", but I'm unsure how many other people actually use console logging within tests for troubleshooting.
I mainly did it because I initially only used Open Mode and it was helpful to verify that the Test was actually using the right objects and such.
all the same as #75
N/A because this is an issue with the Player.
System:
OS: Windows 10 10.0.19045
CPU: (8) x64 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
Memory: 12.08 GB / 23.72 GB
Binaries:
Node: 18.16.0 - C:\Program Files\nodejs\node.EXE
npm: 9.5.1 - C:\Program Files\nodejs\npm.CMD
Browsers:
Edge: Spartan (44.19041.3570.0), Chromium (118.0.2088.76)
Internet Explorer: 11.0.19041.3570
npmPackages:
@babel/core: ^7.16.5 => 7.23.0
@badeball/cypress-cucumber-preprocessor: ^18.0.6 => 18.0.6
@bahmutov/cypress-esbuild-preprocessor: ^2.2.0 => 2.2.0
@cypress/angular: 0.0.0-development
@cypress/grep: ^3.1.0 => 3.1.5
@cypress/mount-utils: 0.0.0-development
@cypress/react: 0.0.0-development
@cypress/react18: 0.0.0-development
@cypress/svelte: 0.0.0-development
@cypress/vue: 0.0.0-development
@cypress/vue2: 0.0.0-development
axios: ^0.24.0 => 0.24.0
commander: ^11.1.0 => 11.1.0 (10.0.1, 9.1.0, 9.4.1, 6.2.1, 7.2.0, 8.3.0)
cypress: ^13.3.0 => 13.3.0
cypress-commands: ^2.0.1 => 2.0.1
cypress-downloadfile: ^1.2.3 => 1.2.3
cypress-multi-reporters: 1.5.0 => 1.5.0
cypress-network-idle: ^1.10.0 => 1.14.2
cypress-promise: ^1.1.0 => 1.1.0
cypress-wait-until: ^1.7.2 => 1.7.2
cypress-xpath: ^1.6.2 => 1.8.0
eslint: ^8.28.0 => 8.50.0
eslint-config-google: ^0.14.0 => 0.14.0
eslint-plugin-cucumber: ^2.0.0 => 2.0.0
eslint-plugin-cypress: ^2.12.1 => 2.15.1
iot-utilities: ^1.2.1 => 1.4.2
mocha: ^9.1.3 => 9.2.2 (10.2.0)
mocha-junit-reporter: 2.0.2 => 2.0.2
multiple-cucumber-html-reporter: ^1.18.3 => 1.21.6
newman: ^5.3.2 => 5.3.2
newman-reporter-htmlextra: ^1.22.11 => 1.22.11
randexp: ^0.5.3 => 0.5.3
standard-version: ^9.5.0 => 9.5.0
sync-request: 6.1.0 => 6.1.0
xlsx: ^0.18.5 => 0.18.5
xmldom: ^0.6.0 => 0.6.0
Cannot install cypress-debugger. The error is trying to install commander:
npm ERR! code ETARGET
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
Cypress-debugger will be installed
cypress
or cypress-cloud
command you're running)npm install cypress-debugger
# Put output below this line
npm ERR! code ETARGET
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
# Put output below this line
# Put your logs below this line
It would be helpful to have a setting that does not create trace for passing specs and only for failing specs. Will save on artifact storage space!
Screenshots currently utilize the spec name as a file name. Would be good to have this for trace filename too!
target
property to render the player. The events, that are recreated, are passed as a param to the player constructor, therefore, changing the events will create a new player every time. The problem: changing the events, or causing a component to rerender will make the player constructor get called and a new player will be created.npx cypress run
is called the entities generated in the cy
field of the apps/web/dump
folder files do have an unexpected order; the steps are ordered ascending by timestamp, but the order of the operations is not preservedcypress
, replayer
, and har-generator
dataHello! My colleague found your project, and after some discussion, we decided to try your solution to simplify test fail investigation. But I ran into some problems and I hope there is a way to solve them.
Currently, we're using Cypress v.12.8.1, and for tests using Electron browser. I have tried to enable cypress-debugger for both browsers, but it seems that I have done something wrong, but I can't figure out what the problem is.
I added debugger plugin to config file, and also added ensureBrowserFlags
function from @neuralegion/cypress-har-generator
, because without this function all tests runs were failing.
An error from Cypress saying the ensureBrowserFlags
function is needed.
Also, I can run tests using Chrome in headed mode, and debugger's collected data and created dump directory with traces, but if i try to run tests in headless mode,
then i get the following error:
If i set debuggin port using cypress.config file:
then Cypress just can't connect to Chrome:
The Electron browser without the environment variable set just won't start at all:
but even with specified environment variable, using bash export
command(screenshot from CI):
Electorn trows this error:
Do you think this is a problem on our side, and, did I do something wrong, or maybe the problem is something else?
I would appreciate any help on this issue
We need to have the events as close as possible: option we can use Performance API
I, as a developer, want to follow the setup guide and see the results as appears in the example
The web app should read the contents without accessing servers (except from the original download of the remote resource)
Add the possibility to explore cy.task args as it is in Cypress debug window
Now it's displaying as Object{5}
File with an example:
Visit.feature.zip
What is profit?
In cy.task case for example we could provide some data which are important for debugging. As example on my project we are using them for requests instead of typical cy.request. And it's contain request options and response. So it will be useful.
P.S. If it will be possible to add such an opportunity for Yielded
object as well, not only Args
Hello @agoldis! first of all, thank you very much for this incredible tool, it's amazing!
We would love to have the possibility to change the path where the reports are saved. Bu default, they are saved on e2e/dump
but we already have an e2e/report
folder where we saved: videos, screenshots, XML... would it be possible to have a way to send a custom path?
Thanks!
Currently after you upload a json file to https://cypress-debugger.dev/ in darkmode, the play button(triangle) is invisible.
See the screenshot comparison between the light mode and the dark mode
expected:
Be able to the play button whether to use the light or dark mode from OSX appearance
Issue:
The eslint-config-custom
package uses the Eslint config for Nextjs, which is not suitable for the workspace and causes the failure of the ci action.
Solution:
Set a suitable configuration for the workspace.
rrweb-player, used to recreate a player from events, should be implemented correctly with ReactJs.
The package is built in plain javascript and it requires a target DOM to render the player.
The player gets the events as a parameter to the constructor, therefore, changing the events will create a new player every time.
The problem: changing the events, or causing a component to rerender will make the player constructor get called and a new player will be created.
Mark all as completed
1) "before each" hook for "should allow me to mark all items as completed"
2) "after each" hook: _ for "should allow me to mark all items as completed"
0 passing (5s)
2 failing
1) Mark all as completed
"before each" hook for "should allow me to mark all items as completed":
AssertionError: Timed out retrying after 4000ms: Expected to find element: `.new-todo`, but never found it.
Because this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Mark all as completed`
at Context.eval (webpack:///./cypress/support/commands.ts:73:0)
2) Mark all as completed
"after each" hook: _ for "should allow me to mark all items as completed":
CypressError: `cy.task('dumpEvents')` failed with the following error:
> ENOENT: no such file or directory, open 'dump_har/eede7d9d-4215-4a58-912e-200850796f6b.raw.json'
https://on.cypress.io/api/task
Because this error occurred during a `after each` hook we are skipping all of the remaining tests.
at <unknown> (https://todomvc.com/__cypress/runner/cypress_runner.js:141557:78)
at tryCatcher (https://todomvc.com/__cypress/runner/cypress_runner.js:8914:23)
at Promise._settlePromiseFromHandler (https://todomvc.com/__cypress/runner/cypress_runner.js:6849:31)
at Promise._settlePromise (https://todomvc.com/__cypress/runner/cypress_runner.js:6906:18)
at Promise._settlePromise0 (https://todomvc.com/__cypress/runner/cypress_runner.js:6951:10)
at Promise._settlePromises (https://todomvc.com/__cypress/runner/cypress_runner.js:7027:18)
at _drainQueueStep (https://todomvc.com/__cypress/runner/cypress_runner.js:3621:12)
at _drainQueue (https://todomvc.com/__cypress/runner/cypress_runner.js:3614:9)
at ../../node_modules/bluebird/js/release/async.js.Async._drainQueues (https://todomvc.com/__cypress/runner/cypress_runner.js:3630:5)
at Async.drainQueues (https://todomvc.com/__cypress/runner/cypress_runner.js:3500:14)
From Your Spec Code:
at Context._ (webpack:///./node_modules/@currents/cypress-debugger-support/dist/index.js:1:66941)
From Node.js Internals:
Error: ENOENT: no such file or directory, open 'dump_har/eede7d9d-4215-4a58-912e-200850796f6b.raw.json'
at Object.openSync (node:fs:585:3)
at Object.readFileSync (node:fs:453:35)
at readFile (/home/slavic/Projects/test-release/node_modules/@currents/cypress-debugger-plugin/src/fs.ts:13:46)
at getHar (/home/slavic/Projects/test-release/node_modules/@currents/cypress-debugger-plugin/src/install.ts:28:16)
at dumpEvents (/home/slavic/Projects/test-release/node_modules/@currents/cypress-debugger-plugin/src/install.ts:44:19)
at invoke (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:246:16)
at <unknown> (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@packages/server/lib/plugins/util.js:59:14)
at tryCatcher (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/bluebird/js/release/util.js:16:23)
at Function.Promise.attempt.Promise.try (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/bluebird/js/release/method.js:39:29)
at Object.wrapChildPromise (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@packages/server/lib/plugins/util.js:58:23)
at RunPlugins.taskExecute (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:252:10)
at RunPlugins.execute (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:166:21)
at EventEmitter.<anonymous> (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:56:12)
at EventEmitter.emit (node:events:520:28)
at EventEmitter.emit (node:domain:475:12)
at process.<anonymous> (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@packages/server/lib/plugins/util.js:33:22)
at process.emit (node:events:520:28)
at process.emit (node:domain:475:12)
at process.emit.sharedData.processEmitHook.installedValue [as emit] (/home/slavic/.cache/Cypress/12.9.0/Cypress/resources/app/node_modules/@cspotcode/source-map-support/source-map-support.js:745:40)
at emit (node:internal/child_process:938:14)
at processTicksAndRejections (node:internal/process/task_queues:84:21)
Every test execution is expected to have an associated HAR file. When a CypressError
is raised har file is not created. Details: NeuraLegion/cypress-har-generator#105, NeuraLegion/cypress-har-generator#59
$ npx envinfo --system --binaries --browsers --npmPackages --duplicates --npmGlobalPackages
npx: installed 1 in 0.806s
System:
OS: Linux 5.15 Ubuntu 22.04.3 LTS 22.04.3 LTS (Jammy Jellyfish)
CPU: (8) x64 Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
Memory: 3.68 GB / 9.72 GB
Container: Yes
Shell: 5.1.16 - /bin/bash
Binaries:
Node: 14.21.3 - /usr/bin/node
npm: 6.14.18 - /usr/bin/npm
npmPackages:
@cypress/angular: 0.0.0-development
@cypress/mount-utils: 0.0.0-development
@cypress/react: 0.0.0-development
@cypress/react18: 0.0.0-development
@cypress/svelte: 0.0.0-development
@cypress/vue: 0.0.0-development
@cypress/vue2: 0.0.0-development
@nesk/puphpeteer: ^2.0.0 => 2.0.0
chai-string: ^1.5.0 => 1.5.0
cropper: ^2.3.4 => 2.3.4
cypress: 12.17.4 => 12.17.4
cypress-cloud: ^1.7.2 => 1.9.6
cypress-debugger: * => 1.0.9
cypress-terminal-report: * => 5.3.6
decomment: ^0.8.6 => 0.8.8
del: ^6.0.0 => 6.1.1
fabric: ^3.6.6 => 3.6.6
glob: ~7.0.3 => 7.0.6 (7.2.3)
gzip-js: 0.3.2 => 0.3.2
jspdf: 2.5.1 => 2.5.1
lodash: ^4.17.4 => 4.17.21
mustache: ^4.2.0 => 4.2.0
object-hash: 2.2.0 => 2.2.0
pdfjs-dist: ^2.3.200 => 2.16.105
pickmeup: ~3.2.0 => 3.2.1
plotly.js-dist: ^1.53.0 => 1.58.5
puppeteer: ^2.1.0 => 2.1.1 (5.5.0)
shellcheck: * => 2.2.0
signature_pad: ^3.0.0-beta.4 => 3.0.0-beta.4
sortablejs: ~1.10.2 => 1.10.2
tinymce: ^4.8.2 => 4.9.11
video.js: ^7.7.5 => 7.21.5
webpack: ^5.0.0 => 5.88.2
worker-loader: ^3.0.7 => 3.0.8
npmGlobalPackages:
corepack: 0.15.1
cypress: 12.17.4
grunt-cli: 1.4.3
npm: 6.14.18
When the description of a test is long, the dump file fails to save with an error of ENAMETOOLONG: name too long
. See the full log for details.
To Reproduce:
currents-dev/cypress-debugger
repo rootit('ensures that discard the untouched elements is displayed when not all elements are filled excluding Macula and/or Optic Disc', function () {
Note:: It may or may not have made a difference in this case that I have retries set to 3 -as this then also adds an additional string ( (attempt x)
) to the end of the file-name, which makes it even longer.
Now granted, this test name is very long, and I could ask our developers to be more concise, but unfortunately a large number of our existing tests have long descriptions like this, and it would be problematic to go through them all and shorten them.
The dump of the test should save successfully.
Perhaps the name could be truncated?
cypress
or cypress-cloud
command you're running)ELECTRON_EXTRA_LAUNCH_ARGS=--remote-debugging-port=9222 npx cypress run --browser electron --spec cypress/e2e/modules/examination/save_and_discard.cy.js
const { defineConfig } = require("cypress");
const { cloudPlugin } = require("cypress-cloud/plugin");
const { debuggerPlugin } = require('cypress-debugger');
module.exports = defineConfig({
e2e: {
baseUrl: 'http://localhost',
viewportWidth: 1280,
viewportHeight: 737,
setupNodeEvents(on, config) {
debuggerPlugin(on, config, {
meta: {
key: 'value',
},
callback: (path, data) => {
console.log({ path, data });
},
targetDirectory: 'cypress/e2e/reports',
});
cloudPlugin(on, config);
return config;
},
video: true,
videoUploadOnPasses: false,
defaultCommandTimeout: 7000,
retries: {
// Configure retry attempts for `cypress run`
// Default is 0
runMode: 2,
// Configure retry attempts for `cypress open`
// Default is 0
openMode: 0
}
},
});
$ ELECTRON_EXTRA_LAUNCH_ARGS=--remote-debugging-port=9222 npx cypress run --browser electron --spec cypress/e2e/modules/examination/save_and_discard.cy.js
====================================================================================================
(Run Starting)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Cypress: 12.17.4 โ
โ Browser: Electron 106 (headless) โ
โ Node Version: v14.21.3 (/usr/bin/node) โ
โ Specs: 1 found (save_and_discard.cy.js) โ
โ Searched: cypress/e2e/modules/examination/save_and_discard.cy.js โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Running: save_and_discard.cy.js (1 of 1)
the save and discard functionality is controlled by a setting and allows the user to automatically discard elements from an examination that they have not interacted with
check the behaviour works when the setting is enabled
(Attempt 1 of 3) will offer to discard the untouched elements
(Attempt 2 of 3) will offer to discard the untouched elements
1) "after each" hook: P for "will offer to discard the untouched elements"
0 passing (32s)
1 failing
1) the save and discard functionality is controlled by a setting and allows the user to automatically discard elements from an examination that they have not interacted with
check the behaviour works when the setting is enabled
"after each" hook: P for "will offer to discard the untouched elements":
CypressError: `cy.task('dumpEvents')` failed with the following error:
> ENAMETOOLONG: name too long, open 'cypress/e2e/reports/save_and_discard.cy.js/the save and discard functionality is controlled by a setting and allows the user to automatically discard elements from an examination that they have not interacted with -- check the behaviour works when the setting is enabled -- will offer to discard the untouched elements (passed) (attempt 3).json'
https://on.cypress.io/api/task
Because this error occurred during a `after each` hook we are skipping all of the remaining tests.
at <unknown> (http://localhost/__cypress/runner/cypress_runner.js:134597:70)
at tryCatcher (http://localhost/__cypress/runner/cypress_runner.js:1807:23)
at Promise._settlePromiseFromHandler (http://localhost/__cypress/runner/cypress_runner.js:1519:31)
at Promise._settlePromise (http://localhost/__cypress/runner/cypress_runner.js:1576:18)
at Promise._settlePromise0 (http://localhost/__cypress/runner/cypress_runner.js:1621:10)
at Promise._settlePromises (http://localhost/__cypress/runner/cypress_runner.js:1697:18)
at _drainQueueStep (http://localhost/__cypress/runner/cypress_runner.js:2407:12)
at _drainQueue (http://localhost/__cypress/runner/cypress_runner.js:2400:9)
at Async._drainQueues (http://localhost/__cypress/runner/cypress_runner.js:2416:5)
at Async.drainQueues (http://localhost/__cypress/runner/cypress_runner.js:2286:14)
From Your Spec Code:
at Context.P (webpack:///./node_modules/@currents/cypress-debugger-support/index.js:1:67245)
From Node.js Internals:
Error: ENAMETOOLONG: name too long, open 'cypress/e2e/reports/save_and_discard.cy.js/the save and discard functionality is controlled by a setting and allows the user to automatically discard elements from an examination that they have not interacted with -- check the behaviour works when the setting is enabled -- will offer to discard the untouched elements (passed) (attempt 3).json'
at Object.openSync (fs.js:498:3)
at Object.writeFileSync (fs.js:1529:35)
at S (/var/www/openeyes/node_modules/@currents/cypress-debugger-plugin/index.js:1:2682)
at K (/var/www/openeyes/node_modules/@currents/cypress-debugger-plugin/index.js:1:3118)
at dumpEvents (/var/www/openeyes/node_modules/@currents/cypress-debugger-plugin/index.js:1:3635)
at invoke (/root/.cache/Cypress/12.17.4/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:246:16)
at <unknown> (/root/.cache/Cypress/12.17.4/Cypress/resources/app/node_modules/@packages/server/lib/plugins/util.js:59:14)
at Object.wrapChildPromise (/root/.cache/Cypress/12.17.4/Cypress/resources/app/node_modules/@packages/server/lib/plugins/util.js:58:23)
at RunPlugins.taskExecute (/root/.cache/Cypress/12.17.4/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:252:10)
at RunPlugins.execute (/root/.cache/Cypress/12.17.4/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:166:21)
at EventEmitter.<anonymous> (/root/.cache/Cypress/12.17.4/Cypress/resources/app/node_modules/@packages/server/lib/plugins/child/run_plugins.js:56:12)
at EventEmitter.emit (events.js:400:28)
at process.<anonymous> (/root/.cache/Cypress/12.17.4/Cypress/resources/app/node_modules/@packages/server/lib/plugins/util.js:33:22)
at process.emit (events.js:400:28)
at emit (internal/child_process.js:935:14)
at processTicksAndRejections (internal/process/task_queues.js:83:21)
From previous event:
at Object.run (<embedded>:4495:92707)
at Object.runPrivilegedCommand (<embedded>:4495:96357)
at <unknown> (<embedded>:4561:32924)
From previous event:
at p.<anonymous> (<embedded>:4561:31523)
at p.emit (node:events:527:28)
at p.emitUntyped (<embedded>:4458:84346)
at <unknown> (<embedded>:4458:91863)
at process.processTicksAndRejections (node:internal/process/task_queues:78:11)
(Results)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Tests: 4 โ
โ Passing: 0 โ
โ Failing: 1 โ
โ Pending: 0 โ
โ Skipped: 3 โ
โ Screenshots: 3 โ
โ Video: true โ
โ Duration: 31 seconds โ
โ Spec Ran: save_and_discard.cy.js โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
(Screenshots)
- /var/www/openeyes/cypress/screenshots/save_and_discard.cy.js/will offer to disca (1280x720)
rd the untouched elements -- after each hook P (failed).png
- /var/www/openeyes/cypress/screenshots/save_and_discard.cy.js/will offer to disca (1280x720)
rd the untouched elements -- after each hook P (failed) (attempt 2).png
- /var/www/openeyes/cypress/screenshots/save_and_discard.cy.js/will offer to disca (1280x720)
rd the untouched elements -- after each hook P (failed) (attempt 3).png
(Video)
- Started compressing: Compressing to 32 CRF
- Finished compressing: 3 seconds
- Video output: /var/www/openeyes/cypress/videos/save_and_discard.cy.js.mp4
====================================================================================================
(Run Finished)
Spec Tests Passing Failing Pending Skipped
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ save_and_discard.cy.js 00:31 4 - 1 - 3 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 1 of 1 failed (100%) 00:31 4 - 1 - 3
We tried to explore cypress debugger., all videos and network information are quite good
but the response of the network request we cant able to track.
it is always printing [content]
in all requests
please test with any network call tests
Please improve the documentation:
Please provide separate documentation in CONTRIBUTE.md
file with:
# Put output below this line
System:
OS: Linux 5.15 Ubuntu 20.04.5 LTS (Focal Fossa)
CPU: (8) x64 Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
Memory: 2.79 GB / 15.49 GB
Container: Yes
Shell: 5.0.17 - /bin/bash
Binaries:
Node: 16.19.0 - /usr/bin/node
npm: 8.19.3 - /usr/bin/npm
Browsers:
Chrome: 108.0.5359.124
npmPackages:
eslint: ^8.46.0 => 8.48.0
prettier: ^3.0.0 => 3.0.3
npmGlobalPackages:
corepack: 0.15.1
npm: 8.19.3
When executing a spec which exceeds past 10-15 mins of runtime, the cy.task('dumpEvents')
task is timing out on the default 60000ms task timeout. We increased the timeout to 300000ms (5 mins) and set failedTestsOnly: true
parameter so only the failed test (which is only a couple mins long) will be stored but we are still getting the same issue.
The cy.task('dumpEvents')
should not timeout for the failed test even if the complete spec file execution exceed 15 mins+ of runtime.
cypress
or cypress-cloud
command you're running)# Put output below this line
cypress-cloud run --spec cypress/e2e/test.spec.js --parallel --record --key xxxxxxxxxxxx --ci-build-id test-1
# Put output below this line
// eslint-disable-next-line no-undef
const { defineConfig } = require('cypress');
// eslint-disable-next-line no-undef
const { cloudPlugin } = require('cypress-cloud/plugin');
// eslint-disable-next-line no-undef
module.exports = defineConfig({
viewportWidth: 1500,
viewportHeight: 1200,
chromeWebSecurity: false,
watchForFileChanges: false,
redirectionLimit: 100,
defaultCommandTimeout: 60000,
pageLoadTimeout: 100000,
reporter: 'mochawesome',
reporterOptions: {
reportDir: 'cypress/reporters',
overwrite: true,
html: false,
js: true,
},
video: false,
e2e: {
setupNodeEvents(on, config) {
// eslint-disable-next-line no-undef
require('./cypress/plugins/index.js')(on, config);
return cloudPlugin(on, config);
},
specPattern: ['cypress/e2e/**/*.spec.js'],
},
});
# Put your logs below this line
"after each" hook: P for "test":
CypressError: `cy.task('dumpEvents')` timed out after waiting `300000ms`.
https://on.cypress.io/api/task
Because this error occurred during a `after each` hook we are skipping all of the remaining tests.
at <unknown> (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:151131:78)
at tryCatcher (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:18744:23)
at <unknown> (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:13866:41)
at tryCatcher (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:18744:23)
at Promise._settlePromiseFromHandler (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:16679:31)
at Promise._settlePromise (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:16736:18)
at Promise._settlePromise0 (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:16781:10)
at Promise._settlePromises (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:16857:18)
at _drainQueueStep (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:13451:12)
at _drainQueue (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:13444:9)
at ../../node_modules/bluebird/js/release/async.js.Async._drainQueues (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:13460:5)
at Async.drainQueues (https://app3.syscloud.com/__cypress/runner/cypress_runner.js:13330:14)
From Your Spec Code:
at Context.P (webpack:///./node_modules/@currents/cypress-debugger-support/index.js:1:67245)
Cypress version
When trying to run Cypres on open Mode, after clicking on the spec to execute the test, Cypress starts and breaks with:
Cannot find module '@neuralegion/cypress-har-generator/commands'
Run e2e tests in Cypress Open Mode with success
cypress
or cypress-cloud
command you're running)npx cypress open
# Put output below this line
> Cannot find module '@neuralegion/cypress-har-generator/commands'
# Put output below this line
import { defineConfig } from "cypress";
const { debuggerPlugin } = require("cypress-debugger");
module.exports = defineConfig({
viewportWidth: 1440,
viewportHeight: 900,
screenshotOnRunFailure: true,
videoCompression: false,
defaultCommandTimeout: 15000,
pageLoadTimeout: 15000,
requestTimeout: 15000,
chromeWebSecurity: false,
retries: 2,
numTestsKeptInMemory: 2,
scrollBehavior: false,
screenshotsFolder: "cypress/TestReport/screenshots",
videosFolder: "cypress/TestReport/videos",
video: true,
env: {
grepFilterSpecs: true,
grepOmitFiltered: true,
NODE_TLS_REJECT_UNAUTHORIZED: 0,
},
e2e: {
baseUrl: "http://my-site.con.br",
chromeWebSecurity: false,
retries: 1,
experimentalMemoryManagement: true,
excludeSpecPattern: ["*.page.js", "utils.js", "*.d.ts"],
specPattern: "cypress/e2e/**/*cy.{js,ts,tsx}",
setupNodeEvents(on, config) {
require("@cypress/grep/src/plugin")(config);
debuggerPlugin(on, config, {
meta: {
key: "value",
},
callback: (path, data) => {
console.log({ path, data });
},
failedTestsOnly: true,
});
return config;
},
},
});
# Put your logs below this line
moduleIdentifier: '/Users/caiquecoelho/Documents/node_modules/@currents/cypress-debugger-support/index.mjs', moduleName: './node_modules/@currents/cypress-debugger-support/index.mjs', loc: '1:66-73', message: 'Critical dependency: require function is used in a way in which dependencies cannot be statically extracted', moduleId: './node_modules/@currents/cypress-debugger-support/index.mjs', moduleTrace: [ [Object], [Object] ], details: ' at CommonJsRequireContextDependency.getWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/dependencies/ContextDependency.js:109:18)\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3140:24)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)', stack: 'ModuleDependencyWarning: Critical dependency: require function is used in a way in which dependencies cannot be statically extracted\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3145:23)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)' }, { moduleIdentifier: '/Users/caiquecoelho/Documents/node_modules/@currents/cypress-debugger-support/index.mjs', moduleName: './node_modules/@currents/cypress-debugger-support/index.mjs', loc: '1:222-229', message: 'Critical dependency: require function is used in a way in which dependencies cannot be statically extracted', moduleId: './node_modules/@currents/cypress-debugger-support/index.mjs', moduleTrace: [ [Object], [Object] ], details: ' at CommonJsRequireContextDependency.getWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/dependencies/ContextDependency.js:109:18)\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3140:24)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)', stack: 'ModuleDependencyWarning: Critical dependency: require function is used in a way in which dependencies cannot be statically extracted\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3145:23)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)' }, { moduleIdentifier: '/Users/caiquecoelho/Documents/node_modules/@neuralegion/cypress-har-generator/dist/index.js', moduleName: './node_modules/@neuralegion/cypress-har-generator/dist/index.js', loc: '1:45980-45990', message: 'Critical dependency: the request of a dependency is an expression', moduleId: './node_modules/@neuralegion/cypress-har-generator/dist/index.js', moduleTrace: [ [Object], [Object], [Object] ], details: ' at CommonJsRequireContextDependency.getWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/dependencies/ContextDependency.js:109:18)\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3140:24)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)', stack: 'ModuleDependencyWarning: Critical dependency: the request of a dependency is an expression\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3145:23)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modu cypress:lifecycle:ProjectConfigManager promise resolved for id 'inv3' with value /Users/caiquecoelho/Library/Application Support/Cypress/cy/production/projects/project-52a94f1f2abf79f7e33ddd2d36e45135/bundles/cypress/support/e2e.ts.js +1s
cypress:server:controllers:spec sending spec { filePath: '/Users/caiquecoelho/Library/Application Support/Cypress/cy/production/projects/project-52a94f1f2abf79f7e33ddd2d36e45135/bundles/cypress/support/e2e.ts.js' } +1s
les/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)' }, { moduleIdentifier: '/Users/caiquecoelho/Documents/node_modules/@neuralegion/cypress-har-generator/dist/index.js', moduleName: './node_modules/@neuralegion/cypress-har-generator/dist/index.js', loc: '1:46052-46061', message: 'Critical dependency: the request of a dependency is an expression', moduleId: './node_modules/@neuralegion/cypress-har-generator/dist/index.js', moduleTrace: [ [Object], [Object], [Object] ], details: ' at ImportContextDependency.getWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/dependencies/ContextDependency.js:109:18)\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3140:24)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)', stack: 'ModuleDependencyWarning: Critical dependency: the request of a dependency is an expression\n' + ' at Compilation.reportDependencyErrorsAndWarnings (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:3145:23)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2737:28\n' + ' at eval (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:29:1)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:380:10\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:356:17\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2830:7\n' + ' at Object.each (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2850:39)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/FlagDependencyExportsPlugin.js:50:15\n' + ' at Hook.eval [as callAsync] (eval at create (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)\n' + ' at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n' + ' at Compilation.finish (/Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compilation.js:2722:28)\n' + ' at /Users/caiquecoelho/Library/Caches/Cypress/13.3.2/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:1186:19\n' + ' at processTicksAndRejections (node:internal/process/task_queues:77:11)' } ] +1s
cypress:webpack finished bundling /Users/caiquecoelho/Library/Application Support/Cypress/cy/production/projects/project-52a94f1f2abf79f7e33ddd2d36e45135/bundles/cypress/support/e2e.ts.js +1ms
asset e2e.ts.js 24.9 MiB [compared for emit] (name: main)
1937 modules
WARNING in ./node_modules/@currents/cypress-debugger-support/index.mjs 1:66-73
Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
@ ./node_modules/cypress-debugger/index.mjs 3:0-68 4:22-36
@ ./cypress/support/e2e.ts 8:0-51 13:0-15
WARNING in ./node_modules/@currents/cypress-debugger-support/index.mjs 1:222-229
Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
@ ./node_modules/cypress-debugger/index.mjs 3:0-68 4:22-36
@ ./cypress/support/e2e.ts 8:0-51 13:0-15
WARNING in ./node_modules/@neuralegion/cypress-har-generator/dist/index.js 1:45980-45990
Critical dependency: the request of a dependency is an expression
@ ./node_modules/@currents/cypress-debugger-plugin/index.mjs 1:0-85 1:2995-2996 1:3034-3035
@ ./node_modules/cypress-debugger/index.mjs 2:0-66 5:21-34
@ ./cypress/support/e2e.ts 8:0-51 13:0-15
WARNING in ./node_modules/@neuralegion/cypress-har-generator/dist/index.js 1:46052-46061
Critical dependency: the request of a dependency is an expression
@ ./node_modules/@currents/cypress-debugger-plugin/index.mjs 1:0-85 1:2995-2996 1:3034-3035
@ ./node_modules/cypress-debugger/index.mjs 2:0-66 5:21-34
@ ./cypress/support/e2e.ts 8:0-51 13:0-15
Think of how would you integrate it with cypress-cloud and upload to a dashboard
Find a more reliable way to match the cy, rr, and har-generator data
@vCaisim Please elaborate
Please add meta
fields in the events file - we will need to store information about the execution associated with the file - e.g. a link to the dashboard, git information, etc.
Improve the functions used for date and URL parsing
@vCaisim Please elaborate
Before / After was working in the sandbox POC, what happened?
# Put output below this line
System:
OS: macOS 13.5
CPU: (12) arm64 Apple M2 Max
Memory: 242.45 MB / 64.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 16.18.0 - ~/.nvm/versions/node/v16.18.0/bin/node
Yarn: 3.5.0 - ~/universe3/universe/node_modules/.bin/yarn
npm: 8.19.2 - ~/.nvm/versions/node/v16.18.0/bin/npm
Browsers:
Safari: 16.6
npmPackages:
yup: 0.29.1 => 0.29.1
npmGlobalPackages:
corepack: 0.14.1
npm: 8.19.2
yarn: 1.22.18
When importing types from @currents/cypress-debugger-support and/or @currents/cypress-debugger-plugin, the types do not appear available.
This is happening because in each package's package.json. the "types": "./src/index.ts"
should be instead "types": "./dist/index.d.ts"
.
I will make a PR to address, but wanted to have the issue for tracking purposes.
The types should be available from these packages after installing.
cypress
or cypress-cloud
command you're running)# Put output below this line
N/A just for types
# Put output below this line
N/A just for types
# Put your logs below this line
N/A just for types
Sometimes, after calling npx cypress run
, the entities generated in the cy field of the apps/web/dump folder files have an unexpected order: the steps are ordered ascending by timestamp, but the order of the operations is not preserved
@vCaisim please submit an example
System:
OS: macOS 12.6.1
CPU: (8) arm64 Apple M1
Memory: 91.06 MB / 16.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 16.15.1 - ~/.nvm/versions/node/v16.15.1/bin/node
npm: 8.3.0 - ~/.nvm/versions/node/v16.15.1/bin/npm
pnpm: 8.7.6 - ~/.nvm/versions/node/v16.15.1/bin/pnpm
Browsers:
Chrome: 119.0.6045.159
Edge: 111.0.1661.62
Safari: 15.6.1
npmPackages:
@cypress/angular: 0.0.0-development
@cypress/grep: ^4.0.0 => 4.0.0
@cypress/mount-utils: 0.0.0-development
@cypress/react: 0.0.0-development
@cypress/react18: 0.0.0-development
@cypress/svelte: 0.0.0-development
@cypress/vue: 0.0.0-development
@cypress/vue2: 0.0.0-development
@faker-js/faker: ^8.1.0 => 8.1.0
@types/node: ^20.7.0 => 20.7.0 (18.18.6)
@typescript-eslint/eslint-plugin: ^6.7.3 => 6.7.3
@typescript-eslint/parser: ^6.7.3 => 6.7.3
cypress: ^13.6.0 => 13.6.0
cypress-debugger: ^1.0.9 => 1.0.9
cypress-mochawesome-reporter: ^3.6.0 => 3.6.0
cypress-multi-reporters: ^1.6.3 => 1.6.3
cypress-terminal-report: ^5.3.6 => 5.3.6
dayjs: ^1.11.10 => 1.11.10
eslint: ^8.50.0 => 8.50.0
faker: ^6.6.6 => 6.6.6
mocha-junit-reporter: ^2.2.1 => 2.2.1
rimraf: ^5.0.5 => 5.0.5 (3.0.2)
npmGlobalPackages:
corepack: 0.10.0
json: 11.0.0
npm: 8.3.0
pnpm: 8.7.6
I encounter almost crippling performance issues while using this plugin. We are using Nuxt
version 3.7.3
for the frontend and Vite as the build system.
There is nothing special from plugins which I use, in fact, I have tried disabling all of them except cypress-debugger
, yet still I have seen the tests execute at least 3x longer than they usually would.
I have tried, apart from the above, to upgrade Cypress to latest version (13.6.0), and to run the tests in headless Edge browser too.
The tests should execute in a reasonable timeframe of about 6-7 minutes, which they usually do.
cypress
or cypress-cloud
command you're running)npx cypress run --headless --browser chrome --reporter cypress-multi-reporters
cypress.config.js
const { defineConfig } = require('cypress');
const { debuggerPlugin } = require('cypress-debugger');
module.exports = defineConfig({
reporter: 'cypress-multi-reporters',
reporterOptions: {
configFile: 'reporter-config.json'
},
e2e: {
responseTimeout: 30000,
requestTimeout: 30000,
viewportWidth: 1920,
viewportHeight: 1080,
baseUrl: "***",
supportFile: "cypress/support/e2e.js",
video: false,
trashAssetsBeforeRuns: true,
retries: {
runMode: 1
},
env: {
username: "***",
password: "***",
apiBaseUrl: "***"
},
specPattern: "cypress/e2e/**/*.spec.ts",
setupNodeEvents(on, config) {
debuggerPlugin(on, config, {
meta: {
key: 'value',
},
failedTestsOnly: true,
callback: (path, data) => {
console.log({
path,
data,
});
},
})
const loggerOptions = {
outputRoot: `${config.projectRoot}/cypress/reports/logs`,
outputTarget: {
'verbose.log': 'txt',
'verbose.json': 'json'
}
}
require('cypress-mochawesome-reporter/plugin')(on);
require('cypress-terminal-report/src/installLogsPrinter')(on, loggerOptions);
on('task', {
getDownload: () => {
const downloadsFolder = config['downloadsFolder'];
if (!fs.existsSync(downloadsFolder)) {
fs.mkdirSync(downloadsFolder);
}
return new Promise((resolve, reject) => {
const watcher = fs.watch(downloadsFolder, (eventType, filename) => {
if (eventType === 'rename' && !filename.endsWith('.crdownload') && !filename.endsWith('.part')) {
resolve(filename);
watcher.close();
}
});
setTimeout(reject, config.taskTimeout);
});
}
});
return config;
}
}
});
There are no particular errors.
System:
OS: Windows 10 10.0.19045
CPU: (16) x64 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
Memory: 13.24 GB / 31.73 GB
Binaries:
Node: 14.21.1 - C:\Program Files\NodeJS\node.EXE
npm: 6.14.17 - C:\Program Files\NodeJS\npm.CMD
Browsers:
Edge: Spartan (44.19041.3636.0), Chromium (119.0.2151.93)
Internet Explorer: 11.0.19041.3636
npmPackages:
@cypress/angular: 0.0.0-development
@cypress/mount-utils: 0.0.0-development
@cypress/react: 0.0.0-development
@cypress/react18: 0.0.0-development
@cypress/svelte: 0.0.0-development
@cypress/vue: 0.0.0-development
@cypress/vue2: 0.0.0-development
cypress: ^13.6.1 => 13.6.1
cypress-debugger: ^1.0.9 => 1.0.9
npmGlobalPackages:
@microsoft/generator-sharepoint: 1.17.4
gulp: 4.0.2
spfx-fast-serve: 3.0.6
yo: 4.3.1
I'm using the debugger for a SharePoint app the dumps can get very big very easily, because Cypress and in turn the Debugger snapshot all of the libraries and other stuff.
So I've enabled the option to only dump on failed tests. But then I started noticing some odd things about the Player.
For starters, sometimes the "Console" tab showed 5 digit numbers on the first step of the test.
I do have a bunch of debug output littered all over the tests and the app itself, but that amount felt off even considering that.
It got weirder when I clicked the tab in that state, and gave the Player a minute to filter out whatever it is doing in that case, only to see "No logs" as a result.
I then proceeded to find a software that can handle parsing an 800 MB JSON file to check if there actually were logs, and yes, all of those 5 digit logs were recorded and dumped.
Which brings me to what I think the actual issue is: looking at
https://github.com/currents-dev/cypress-debugger/blob/5d55028563559cd80c93ed0fb1b52cd6a70f15dd/packages/plugin/src/install.ts#L71C19-L71C19
it seems that the logs are never cleared unless a dump is made.
So in my case I had run the entire test set for the app and only in the last 80% it encountered it's first failure.
Which then made it dump the entire console output from the beginning of the run up to this point.
Luckily, it's only the console output that is affected from this, so unless the test or app itself dump a lot of complex objects into the console (like mine does...) it has hardly a noticeable effect on the dump's size.
The sheer amount of logged entries though that the Player then in turn has to filter out do have a noticeable effect on it's responsiveness.
Console output 'cache' should be cleared in on("before:spec")
like below.
Modified section of https://github.com/currents-dev/cypress-debugger/blob/5d55028563559cd80c93ed0fb1b52cd6a70f15dd/packages/plugin/src/install.ts#L118-L120C6
on('before:spec', async () => {
clearLogs();
await recordLogs();
});
This prevents a dump of old console output and I'm running everything with this change so far without issues.
Setup: new folder in which I only ran npm install cypress cypress-debugger
, then added/configured the following files after during npx cypress open
once to initialize Cypress:
const { defineConfig } = require("cypress");
const debuggerPlugin = require("cypress-debugger").debuggerPlugin;
module.exports = defineConfig({
e2e: {
experimentalMemoryManagement: true,
chromeWebSecurity: false,
modifyObstructiveCode: true,
experimentalModifyObstructiveThirdPartyCode: true,
setupNodeEvents(on, config) {
debuggerPlugin(on, config, {
failedTestsOnly: true,
callback(path, result) {
console.info("dump:", path);
}
});
return config;
},
},
});
import './commands'
require('cypress-debugger').debuggerSupport();
describe("Player test 1", () => {
const max = 5;
for (let i = 0; i < max; i++) {
it(`Poke ${i + 1}`, { env: { idx: i } }, function() {
const idx = Cypress.env("idx");
console.debug("poking in test 1", { idx, meep: "meep?" });
cy.wait(500)
cy.wrap(idx, { timeout: 500 })
.should("lt", max)
});
}
});
describe("Player test 2", () => {
const max = 5;
for (let i = 0; i < max; i++) {
it(`Poke ${i + 1}`, { env: { idx: i } }, function() {
const idx = Cypress.env("idx");
console.info("poking in test 2", { idx, meep: "meep?" });
cy.wait(500)
cy.wrap(idx, { timeout: 500 })
.should("lt", max - 1)
});
}
});
set ELECTRON_EXTRA_LAUNCH_ARGS=--remote-debugging-port=9222
cmd /c npx cypress run -s %*
.\debug_runner.bat .\cypress\e2e\p*
(no -s
for specs because that's in the .bat already)
The test then runs normally and creates a dump for the 5th test in the 2nd spec.
But here's how the "browserLogs" section of the dump looks like (I've trimmed it to the essential parts here):
"browserLogs": {
"logEntry": [],
"runtimeConsoleApiCalled": [
{
"type": "debug",
"args": [
{
"type": "string",
"value": "poking in test 1"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "debug",
"args": [
{
"type": "string",
"value": "poking in test 1"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "debug",
"args": [
{
"type": "string",
"value": "poking in test 1"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "debug",
"args": [
{
"type": "string",
"value": "poking in test 1"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "debug",
"args": [
{
"type": "string",
"value": "poking in test 1"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "info",
"args": [
{
"type": "string",
"value": "poking in test 2"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "info",
"args": [
{
"type": "string",
"value": "poking in test 2"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "info",
"args": [
{
"type": "string",
"value": "poking in test 2"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "info",
"args": [
{
"type": "string",
"value": "poking in test 2"
},
{
...
}
],
"executionContextId": 8,
},
{
"type": "info",
"args": [
{
"type": "string",
"value": "poking in test 2"
},
{
...
}
],
"executionContextId": 8,
}
]
}
The two specs are almost identical, except for the text and that the 1st uses console.debug
and the 2nd console.info
.
It makes it easier to check the actual dump without having to unfold the deeper nestings as it's directly shown in the "type":
.
Although only the 2nd of the two specs failed it's last test, all logs of the 1st spec is also present.
The change I've made to the Debugger locally on my end prevents this.
PS: These logs made from Tests rather than the app/site being tested don't show up in the Player at all, but I'm making a separate issue for that after this.
Will be added later if needed as it will take a while to verify that all sensitive information is actually removed, and considering how easy this was to reproduce from scratch, I'm not making this my top priority now.
# Put your logs below this line
@vCaisim let's try to mimic the layout of the Playwright trace viewer - the steps, DOM content, and extra details on the right.
support
package@vCaisim please collaborate with @vitaliimelnychuk on the devops part
Should be hosted on a CDN, would not have any servers
Use a more convenient way to display the step details and network data, in order to make the analysis easier (example)
Hello again,
we follow every step on the readme and it's working properly in Chrome but not in Electron. When we run the tests in open/run mode, we got the following errors:
at <unknown> (https://auth-xx-xx-xx.xx.ly/__cypress/runner/cypress_runner.js:150983:78)
From previous event:
at Context.task (https://auth-xx-xx-xx.xx.ly/__cypress/runner/cypress_runner.js:150968:15)
at wrapped (https://auth-xx-xx-xx.xx.ly/__cypress/runner/cypress_runner.js:160605:43)
From Your Spec Code:
at Context.eval (https://auth-xx-xx-xx.xx.ly/__cypress/tests?p=cypress/support/e2e.ts:348940:21)
From Node.js Internals:
Error: Failed to connect to Chrome Debugging Protocol
Possible reasons for failure:
- Chrome not running in headless mode
- Using Chrome version 58 or earlier
- Inconsistent RDP configuration settings.
The stack trace for this error is:
at V.<anonymous> (webpack://@neuralegion/cypress-har-generator/./src/cdp/CDPConnection.ts:55:15)
at Generator.next (<anonymous>)
at fulfilled (/xx/xx/xx/xx/qa/e2e/node_modules/tslib/tslib.js:115:62)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
We usually used yarn
to manage the project, but we tried with npx
as well and we got the same error.
More details:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.