Comments (5)
This only collected 8 upvotes during the last 18 months, so I'm going to close it and defer to the third parties to resolve this. You can always open a new bug and link to this one with additional information!
from playwright.
Maybe we can directly provide some indication whether the rendering is stable? I'm very curious as to how your tool works.
from playwright.
@JoelEinbinder Thanks for reply.
I'm very curious as to how your tool works
The following figure is a screenshot of Chrome rendering pipeline.
I really want the (A) timing to get stable page.screenshot()
result, but, as far as I know, we can't get if painting/composition finished ( if you have some plans to get (A) timing, please tell me).
So we use (B) timing instead of (A). The (B) timing is closer to (A) than JS function call finished timing. The (B) timing means style recalculation and layouting finished and we wait for (B) using code such as:
let recalcStyleCountOfPreviousFrame = -1, layoutCountOfPreviousFrame = -1;
for (let i = 0; i < 100; i++) {
const { RecalcStyleCount, LayoutCount } = await page.metrics();
const isStable =
recalcStyleCountOfPreviousFrame === RecalcStyleCount &&
LayoutCount === layoutCountOfPreviousFrame;
if (isStable) {
break;
}
recalcStyleCountOfPreviousFrame = RecalcStyleCount;
layoutCountOfPreviousFrame = LayoutCount
await new Promise(res => setTImeout(res, 16));
}
await page.screenshot();
Of course, I'm sure this logic is not perfect. But it works well to some extent.
Metrics API is not our goal. We really want a method/API to get (A) timing.
from playwright.
It would be great if we would have the same metrics API that we have in Puppeteer.
JSheap tracking is really important thing and I think that a lot of people would miss it in Playwright =)
It would be great if we would be able to track CPU usage, also.
from playwright.
You can measure memory in chromium by evaluating ‘performance.memory.usedJSHeapSize’ within the page.
from playwright.
Related Issues (20)
- [Feature]: Make it possible to store pw:debug output to a file HOT 10
- [Bug]: Basic component crashes when mounting HOT 4
- [Feature]: Possibility to set up channel on .spec file level HOT 4
- [Bug]: Playwright ignores the recording configuration set in the playwright.config.js. HOT 4
- [Docs]: waitForTimeout no longer exists
- [Docs]: Inconsistent dialog examples
- [Feature]: Locators (selectors) HOT 2
- [Bug]: cannot fill contenteditable wrapped in a button
- [Bug]: filter doesn't work for new tag syntax in ui mode
- [Bug]: compilerOptions.paths does not work when using extends in tsconfig.json HOT 1
- [Feature]: intercept network and add delay for request to complete HOT 1
- [Feature]: Publish Docker ARM images as multi-architecture images HOT 11
- [Bug]: Playwright adds "link://" to anchor tag hrefs, which leads to failing keyboard navigation for WebKit and Mobile Safari HOT 3
- [Bug]: Trace, Console, Timeline disappears after tests succeed / failed HOT 2
- [Feature]: Python support HOT 2
- [Feature]: Target Filter Support HOT 3
- [Bug]: Blocked request does not contain failure reason
- [Bug]: UIMode shows locator is valid but VSCode shows error for getByText in .filter() HOT 1
- [Bug]: Documentation Says You can use tag as a parameter in the test but it throws error HOT 1
- [Feature]: Expose `testInfo.config.ignoreSnapshots` 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 playwright.