Comments (4)
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
from memlab.
Can't find a way for cypress to take heap snapshots, embarrassing.
from memlab.
@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.
from memlab.
@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
from memlab.
Related Issues (20)
- Can't switch chrome version HOT 2
- Idea - Question - Discussion - Using memlab to refactor code targeting different framework philosphy HOT 1
- Question - How does it pull memory information ? HOT 1
- 老哥有点问题,本地默认安装你的仓库里面有个依赖包引入 colors 的包默认是1.4.2的 被污染的那个包 导致 启动不起来,windows 开发环境, HOT 2
- Question: Any idea about ignoring weak reference and circular reference in heap snapshot? HOT 7
- takeHeapSnapshot timed out HOT 10
- core_1.browserInfo.setPuppeteerConfig is not a function HOT 2
- Is there a way to run in scripting mode using silent? HOT 4
- Could not find Chrome (ver. 121.0.6167.85). This can occur if either 1. you did not perform an installation before running the script (e.g. `npx puppeteer browsers install chrome`) or 2. your cache path is incorrectly configured HOT 3
- Could not find Chrome (ver. 121.0.6167.85). This can occur if either 1. you did not perform an installation before running the script (e.g. `npx puppeteer browsers install chrome`) or 2. your cache path is incorrectly configured
- Keep `@memlab/*` versions in lockstep in package.json HOT 1
- how to handle Page crashed error ,when execute the run method。 HOT 1
- Documentation on where to take the "final" heap snapshot HOT 1
- How to set PuppeteerConfig correctly? HOT 6
- Invalid scenario file HOT 8
- Add ESM support for @memlab/api (and remaining) HOT 4
- Puppeteer browser.close() hangs on AWS Lambda HOT 2
- TypeError: core_1.utils.tryToMutePuppeteerWarning is not a function HOT 2
- Error occurs when executing scenarios involving dialog display HOT 1
- Need guidance on accessing elements in code using heap object ID HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from memlab.