I'm trying to speed up e2e tests and not overwhelm our BE test server by caching responses.
Currently I use an LRU cache to store Playwright APIResponse instances in memory from route.fech().
This approach works until the original context that generated the response gets disposed eventually after the test completes, then I get "fetch response is disposed" error when I do route.fulfill({ response: cachedResponse }) in a different context that runs a different test
Ideally I hope I could clone the APIResponse instance, but APIResponse class doesn't seem to be exported from @playwright/test nor playwright-core/lib/client/fetch
Or if there's another recommended way to cache responses, I'm all ears! Thank you!
This thread is trying to answer question "Is there a way to cache Playwright route .fetch responses and reuse them across different contexts?"
If you need all of the responses, you can just do routeFromHar() https://playwright.dev/docs/api/class-page#page-route-from-har
with this case, you can just commit the har files and run from them (it supports .zip)
Ooh nice! I skipped that one after reading the title, since I didn't know what Har stood for lol Thanks so much for helping me out!
I think I'll dig into how routeFromHar is implemented under the hood and see if I could use it as a runtime cache, since we can't pre-record the responses due to each test environment having its own data and subdomain!
Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email luc@ray.run.