Add TodoMVC with indexedDB storage#523
Conversation
✅ Deploy Preview for webkit-speedometer-preview ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Hi, could you rebase on the latest main branch? I'd be up for a round of reviews today. |
On it, if you have to choose, please prioritize reviewing this workload's design doc instead of the code. |
24e93ee to
9dd77ac
Compare
|
@camillobruni can you take a look at this. Is this how the async runner is meant to be used? |
experimental/javascript-wc-indexeddb/src/storage/indexedDB-manager.js
Outdated
Show resolved
Hide resolved
|
Updated results showed a big improvement when calling |
experimental/javascript-wc-indexeddb/dist/src/components/todo-item/todo-item.component.js
Show resolved
Hide resolved
resources/default-tests.mjs
Outdated
| new BenchmarkTestStep( | ||
| "FinishAddingItemsToDB", | ||
| async (page) => { | ||
| await page.getGlobalVariable("addPromise"); |
There was a problem hiding this comment.
I know time is a bit tight – but I think this would be a very good use-case to create a fake "remote" workload where we drive the actions from the workload itself instead of trying to make everything go through the Page wrapper object.
Currently we don't have too many examples of this approach though.
There was a problem hiding this comment.
Could you just use page.call(awaitAdd) instead then we don't need the whole global variables helper.
WDYT?
There was a problem hiding this comment.
I think it's worth giving a shot to make it a "remote" workload. I'll look into how to use it with the async steps.
There was a problem hiding this comment.
@camillobruni @flashdesignory I modified this to use the remote runner, could you take a look. I had to manually copy some files from resources/todomvc/vanilla-examples/javascript-web-components/dist/src/speedometer-utils since I don't see those updates anywhere else than in that dist folder.
resources/default-tests.mjs
Outdated
| await page.getGlobalVariable("completePromise"); | ||
| }, | ||
| /* ignoreResult =*/ true | ||
| ), |
There was a problem hiding this comment.
given this is experimental I'm kinda ok with it. But how high are the chances that we can hide work in the unmeasured commit-phases?
There was a problem hiding this comment.
You mean doing nothing hoping that the work happens between the measure step on one step and the measured time of the next? Since these are I/O operations I think properly waiting until they are done is the best approach.
experimental/javascript-wc-indexeddb/dist/components/todo-app/todo-app.component.js
Outdated
Show resolved
Hide resolved
experimental/javascript-wc-indexeddb/src/components/todo-app/todo-app.component.js
Outdated
Show resolved
Hide resolved
…he indexedDB version
d079142 to
9e2b659
Compare
| }, | ||
| { | ||
| name: "TodoMVC-WebComponents-IndexedDB", | ||
| url: "experimental/javascript-wc-indexeddb/dist/index.html?useAsyncSteps=true&storageType=vanilla", |
There was a problem hiding this comment.
I'm unsure if using the query parameters here is the best way to flow down this information to the workload. I had to make some small modifications in suite-runner for this to work.
abhishek-shanthkumar
left a comment
There was a problem hiding this comment.
I mainly looked at the files under experimental/javascript-wc-indexeddb/src/storage and these LGTM % a few minor comments.
experimental/javascript-wc-indexeddb/src/storage/base-storage-manager.js
Show resolved
Hide resolved
|
Thank you for the review comments, I'm taking a look. |
|
I’m taking over in a new PR: #531 . Please follow discussion there. |
Results for the hosted prototype as of 12/12/2025