mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 14:30:41 +00:00
perf: eliminate double page navigation in Playwright test setup (#10313)
## Summary Eliminate the double `goto()` in `ComfyPage.setup()` by using `addInitScript` to seed localStorage before the first navigation. ## Changes - **What**: Move route mocking and localStorage seeding before `goto()`, replacing `page.evaluate` with `page.addInitScript` so values are set before app JS executes on first load. Removes the second `goto()` call entirely. ## Review Focus - Verify all Playwright E2E shards pass — the `clearStorage: false` and `mockReleases: false` paths should be unaffected. - Note: `addInitScript` persists for the page lifetime (like `FeatureFlagHelper.seedFlags` already does), so any subsequent `page.reload()` or `goto()` in tests will also clear storage. This should be fine since tests that use `clearStorage: false` skip this block. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-10313-perf-eliminate-double-page-navigation-in-Playwright-test-setup-3286d73d36508158a8edeefb27fcae20) by [Unito](https://www.unito.io) --------- Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
@@ -290,9 +290,7 @@ export class ComfyPage {
|
||||
clearStorage?: boolean
|
||||
mockReleases?: boolean
|
||||
} = {}) {
|
||||
await this.goto()
|
||||
|
||||
// Mock release endpoint to prevent changelog popups
|
||||
// Mock release endpoint to prevent changelog popups (before navigation)
|
||||
if (mockReleases) {
|
||||
await this.page.route('**/releases**', async (route) => {
|
||||
const url = route.request().url()
|
||||
@@ -312,12 +310,16 @@ export class ComfyPage {
|
||||
}
|
||||
|
||||
if (clearStorage) {
|
||||
// Navigate to a lightweight same-origin endpoint to obtain a page
|
||||
// context for clearing storage without loading the full frontend app.
|
||||
await this.page.goto(`${this.url}/api/users`)
|
||||
await this.page.evaluate((id) => {
|
||||
localStorage.clear()
|
||||
sessionStorage.clear()
|
||||
localStorage.setItem('Comfy.userId', id)
|
||||
}, this.id)
|
||||
}
|
||||
|
||||
await this.goto()
|
||||
|
||||
await this.page.waitForFunction(() => document.fonts.ready)
|
||||
|
||||
Reference in New Issue
Block a user