Coder Social home page Coder Social logo

currents-dev / cypress-debugger Goto Github PK

View Code? Open in Web Editor NEW
49.0 3.0 8.0 1.25 MB

Debug failed CI cypress tests with cloud-based replayable traces

Home Page: https://cypress-debugger.dev

License: Other

JavaScript 19.36% TypeScript 78.11% HTML 0.61% CSS 1.86% Shell 0.06%
cypress cypress-tests debugger e2e traces

cypress-debugger's People

Contributors

agoldis avatar dependabot[bot] avatar qb-rivkyb avatar vcaisim avatar vitaliimelnychuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cypress-debugger's Issues

Cypress is blocking cypress-debugger

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

Cypress 13.2.0
Cypress-debugger 1.0.9

Describe the bug

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.

https://on.cypress.io/unsupported-third-party-library?p=w53Ds8Oqw6zDn8Otw63Cp8Oew5%2FDnMOvw6HDocOfw6zCusKrwqjCqsKowrM%3D

Expected behavior

Run Cypress with cypress-debugger

Command and Setup

npx cypress run --browser chrome --env grepTags=@smoke

Full log and debug output

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.

https://on.cypress.io/unsupported-third-party-library?p=w53Ds8Oqw6zDn8Otw63Cp8Oew5%2FDnMOvw6HDocOfw6zCusKrwqjCqsKowrM%3D

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.

Connection with Chrome DevTools Protocol is interrupted after a spec file is processed

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.

Image

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?

[CSR-780] cy.task('dumpEvents') failing because of "/" in name of tests

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

# Put output below this line

Describe the bug

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
image

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

Expected behavior

Dump file should be save without problemsbe saved

Command and Setup

Command (share the exact cypress or cypress-cloud command you're running)

# Put output below this line

Setup files cypress.config.j|ts|json

# Put output below this line

Full log and debug output

# 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)

[Feature] ability to configure when not to store response content

Description

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.

Example usage

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.

[Player] payload without "message" property crashes the Player when trying to show Step Details

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

  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

Describe the bug

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.

Expected behavior

Not crashing the entire Player from a missing "message" property.

Command and Setup

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
  });
});

Command (share the exact 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.

Setup files cypress.config.ts

# 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,
    },
  },
});

Full log and debug output

I have no debug log because this issue is with the Player, not the module running during testing.

Build and release process

  • Establish release and build process (you can copy from cypress-cloud or find a better solution)
    • Generate Changelog
    • Update version
    • Create tag and github release
    • Prepare dist directory for publishing on npm (you can use verdaccio to publish locally)
    • The published package should contain:
      • TS definitions
      • Node 14 compatible packages
      • Have a CJS format
  • Update the documentation with the release and publishing process

Use https://ui.shadcn.com/ as components library

This looks like a well-maintained and popular library that will be easy to use

  • Create layout
  • Implement theming (use the default theme for now)
  • List the main components / views here and start implementing one by one or create a separate issue for each

[CSR-810] Dynamic require of "@neuralegion/cypress-har-generator/commands" is not supported

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information


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

[Player] console output generated by Tests gets properly written into dumps, but won't be shown by Player

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

all the same as #75

Describe the bug

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.

Expected behavior

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.

Command and Setup

all the same as #75

Full log and debug output

N/A because this is an issue with the Player.

Cannot install cypress-debuger

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

 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

Describe the bug

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.

Expected behavior

Cypress-debugger will be installed

Command and Setup

Command (share the exact 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.


Setup files cypress.config.j|ts|json

# Put output below this line

Full log and debug output

# Put your logs below this line


Technical debt and improvements

Issues

  • rrweb-player, used to recreate the DOM from events, should be implemented correctly with ReactJs. The package is designed in plain javascript and it requires a 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.
  • sometimes, after the 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 preserved

Improvements

  • use a more convenient way to display the step details and network data, in order to make the analysis easier (example)
  • find a more reliable way to match the cypress, replayer, and har-generator data
  • improve the functions used for date and URL parsing

Cannot enable Cypress-debugger in tests with Chrome or Electron

Hello! 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.
image

An error from Cypress saying the ensureBrowserFlags function is needed.
image

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,
image
then i get the following error:
image

If i set debuggin port using cypress.config file:
image
then Cypress just can't connect to Chrome:
image

The Electron browser without the environment variable set just won't start at all:
image
but even with specified environment variable, using bash export command(screenshot from CI):
image
Electorn trows this error:
image

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

Handle Electron

  • Ensure that this package can work with electron, including all the steps.
  • Add a README guide - what steps are necessary to work with electron

Uploading in the UI

  • The contents should be loadable from in-memory
  • The file can be obtained by:
    • a URL as a query param
    • upload
    • drag'n'drop

The web app should read the contents without accessing servers (except from the original download of the remote resource)

[CSR-834] Add possibility to explore cy.task args

Description

Add the possibility to explore cy.task args as it is in Cypress debug window
image

Now it's displaying as Object{5}

File with an example:
Visit.feature.zip

Example usage

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
image

[CSR-595] Have the possibility to change the path for saving the reports.

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!

add darkmode support for https://cypress-debugger.dev/

Description

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

light mode
cypress_debugger_player_light_mode

dark mode
cypress_debugger_player_dark_mode

Example usage

  • set the Mac OSX appearance to dark
  • run a cypress test with cypress-debugger enabled
  • open https://cypress-debugger.dev/ and upload a json file from the dump folder
  • notice the play button in not visible in the dark mode
  • repeat the same steps with the Mac OSX appearance set to light mode and you will be able to see the play button

expected:
Be able to the play button whether to use the light or dark mode from OSX appearance

Fix the lint script

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.

rr-web player optimizations

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.

ENOENT: no such file or directory, open 'dump_har/file'

Error:



  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)

Reason:

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

[CSR-832] Traces for long test descriptions fail to save (file name too long)

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

 $ 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

Describe the bug

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:

  • Set up cypress-debugger according to the instructions in the README in the currents-dev/cypress-debugger repo root
  • Create a test with a long name. In this case it('ensures that discard the untouched elements is displayed when not all elements are filled excluding Macula and/or Optic Disc', function () {
  • Get the test to fail

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.

Expected behavior

The dump of the test should save successfully.

Perhaps the name could be truncated?

Command and Setup

Command (share the exact 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

Setup files cypress.config.j|ts|json

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
    }
  },
});


Full log and debug output

$ 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  

Multiline response view

Description

The response content is currently rendered in single line, which is not practical to preview. It should be added to a text box

image

Example usage

N/A

Improve the documentation

Please improve the documentation:

  • Use https://github.com/currents-dev/cypress-cloud for reference and the structure
  • Write documentation for an end user that - a person that follows the setup steps from scratch should be able to get started and face no problems
  • Provide examples for using with both chrome and electron, including all the required setup steps in "copy-paste" style i.e. the copying and pasting command in user terminal should work out-of-the box.
  • Attach screenshots or placeholders where appropriate

Please provide separate documentation in CONTRIBUTE.md file with:

  • architecture and implementation details
  • deployment instructions - i.e. how to build the package and the app moved to #30

[CSR-833] cy.task('dumpEvents') task is timing out for 15 min+ spec runs

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

# 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

Describe the bug

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.

image

Expected behavior

The cy.task('dumpEvents') should not timeout for the failed test even if the complete spec file execution exceed 15 mins+ of runtime.

Command and Setup

Command (share the exact 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

Setup files cypress.config.j|ts|json

# 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'],
  },
});

Full log and debug output

# 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)

Cannot find module '@neuralegion/cypress-har-generator/commands'

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

Cypress version

  • Cypress 13.3.2 and 13.3.3
    Node.js version
  • node v18.3.0 (npm v8.11.0)
    Operating system
  • MacOs
    Browser version
  • Problems are happening for all browser and versions
    Dependencies versions
    "cypress-debugger": "^1.0.7",

Describe the bug

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'

Expected behavior

Run e2e tests in Cypress Open Mode with success

Command and Setup

Command (share the exact cypress or cypress-cloud command you're running)

npx cypress open

# Put output below this line
> Cannot find module '@neuralegion/cypress-har-generator/commands'

Setup files cypress.config.j|ts|json

# 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;
		},
	},
});

Full log and debug output

# 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

Pack all the information and prepare for upload

  • Add run context (spec, test, attempt?) in meta field
  • Check how multiple attempts are working
  • Pack everything together on a test (or event attempt level)
  • Think of it as if the file would be uploaded to cloud / stored as a CI artifact
  • Provide a way to fetch the file

Think of how would you integrate it with cypress-cloud and upload to a dashboard

Have a field for metadata in the events file

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.

Types for plugin and support packages are exported incorrectly from respective package.json

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

# 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

Describe the bug

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.

Expected behavior

The types should be available from these packages after installing.

Command and Setup

Command (share the exact cypress or cypress-cloud command you're running)

# Put output below this line

N/A just for types

Setup files cypress.config.j|ts|json

# Put output below this line

N/A just for types

Full log and debug output

# Put your logs below this line

N/A just for types

Incorrect order of `cy` events

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

Unperformant test execution after plugin implementation

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

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

Describe the bug

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.

Expected behavior

The tests should execute in a reasonable timeframe of about 6-7 minutes, which they usually do.

Screenshot 2023-11-30 at 14 57 51

With the plugin enabled, this is the execution time:

Screenshot 2023-11-30 at 15 26 24

Command and Setup

Command (share the exact cypress or cypress-cloud command you're running)

npx cypress run --headless --browser chrome --reporter cypress-multi-reporters

Setup files cypress.config.j|ts|json

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;
    }
  }
});

Full log and debug output

There are no particular errors.

console log 'cache' doesn't get cleared unless a dump is created

Before opening, please confirm:

  • I have searched for duplicate or closed issues and discussions.
  • I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
  • I acknowledge that I will attach a full debug log, otherwise the issue will be closed with no response.

Environment information

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

Describe the bug

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.

Expected behavior

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.

Command and Setup

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:

cypress.config.js

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;
    },
  },
});

cypress/support/e2e.js

import './commands'
require('cypress-debugger').debuggerSupport();

cypress/e2e/poke1.cy.js

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)
    });
  }
});

cypress/e2e/poke2.cy.js

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)
    });
  }
});

debug_runner.bat

set ELECTRON_EXTRA_LAUNCH_ARGS=--remote-debugging-port=9222
cmd /c npx cypress run -s %*

actual test command ran:

.\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.

Full log and debug output

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

Implement basic UI for debugger artifact browser

@vCaisim let's try to mimic the layout of the Playwright trace viewer - the steps, DOM content, and extra details on the right.

  1. A list of cypress steps (as appears in the sandbox POC)
  2. Step Details Tab with all the data we've captured about step
  3. Network Tab
  4. ...shows all the relevant network calls for the current step
  5. Show all the details for the selected network call

currents-2023-03-13-01 15 33@2x

Failed to connect to Chrome DevTools Protocol after 500 in Electron - Cypress 12.12.0+

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:

Run mode:
image

Open mode:
image
image

 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:

  • Cypress version: 12.13.0
  • Electron version: v106
  • Cypress-debugger version: ^1.0.3
  • OS: MacOS Ventura 13.3.1 (a) and Ubuntu 22. (same problem)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.