Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for cypress #15

Open
phalgunv opened this issue Sep 13, 2022 · 4 comments
Open

Support for cypress #15

phalgunv opened this issue Sep 13, 2022 · 4 comments

Comments

@phalgunv
Copy link

Hello,

I would like to know if memlab can work with Cypress. We have a large test suite of Cypress based tests, it would be nice to use memlabs with those tests rather than creating new ones with pupeteer.

@JacksonGL
Copy link
Member

JacksonGL commented Sep 13, 2022

MemLab can analyze heap snapshots taken from V8. In your case, write scripts to take heap snapshots from Cypress (if Cypress supports taking heap snapshots from browser) and put them into disk in the format that can be processed by MemLab.

Here is what the MemLab output files look like (only run-meta.json, snap-seq.json and all .heapsnapshot files are necessary):
https://facebook.github.io/memlab/docs/guides/integration-and-file-structure/#collect-results

To get examples of those meta files, run a random MemLab test scenario and view those files under this directory: $(memlab get-default-work-dir)/data/cur.

When the files are ready, create a result reader:

const reader = BrowserInteractionResultReader.from(directory);

Then find memory leaks with the reader and this MemLab API:
https://facebook.github.io/memlab/docs/api/modules/api_src#findleaksrunresult

@Levix
Copy link

Levix commented Sep 22, 2022

Can't find a way for cypress to take heap snapshots, embarrassing.

@JacksonGL
Copy link
Member

JacksonGL commented Sep 29, 2022

@Levix I've never used Cypress before, but it seems Cypress supports Chrome DevTools Protocol, which could be used to get JS heap snapshots from Chromium.

Here is the code pointer of how memlab uses puppeteer to collect the heap snapshots from Chromium.

@Levix
Copy link

Levix commented Nov 10, 2022

@Levix I've never used Cypress before, but it seems Cypress supports Chrome DevTools Protocol, which could be used to get JS heap snapshots from Chromium.

Here is the code pointer of how memlab uses puppeteer to collect the heap snapshots from Chromium.

Here is an article written in Chinese on how to take heap snapshots.
https://github.com/Levix/weekly/blob/feat-docs-cypress-heap/article/2022/%E4%BD%BF%E7%94%A8%20Cypress%20%E6%8B%8D%E6%91%84%E5%A0%86%E5%BF%AB%E7%85%A7%EF%BC%88Take%20snapshot%EF%BC%89/%E4%BD%BF%E7%94%A8%20Cypress%20%E6%8B%8D%E6%91%84%E5%A0%86%E5%BF%AB%E7%85%A7%EF%BC%88Take%20snapshot%EF%BC%89.md

facebook-github-bot pushed a commit that referenced this issue Jul 6, 2023
…ing frameworks

Summary:
This diff adds a new documentation page for how to integrate E2E testing framework with MemLab. In case anyone wants to detect memory leaks by running tests in other E2E testing frameworks such as Playwright or Cypress etc.

Related to #35, #15, #14

Reviewed By: tulga1970

Differential Revision: D47247084

fbshipit-source-id: 0620defa7114bf77e3248472b424541f8cec481b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants