-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add storage state to rest in e2e tests #38060
Conversation
Size Change: +6.45 kB (+1%) Total Size: 1.14 MB
ℹ️ View Unchanged
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks promising, though as mentioned in a comment it didn't seem to work for me.
I tried running the tests locally on this branch, but it's not working for me (at least, the file wasn't generated) |
This is now implemented and made obsolete by #38570. |
Description
Inspired by the
storageState
API in Playwright, This PR refactors the usage of therest
API in e2e tests.rest
andbatch
are experimental APIs ine2e-test-utils
to do server-side fetching to speed up the performance of cleaning and setting test states in e2e testing. They have already been used in navigation and widgets tests. Simply said,rest
calls the WordPress REST API viaapiFetch
on the server-side. To do this, it has to first authenticate using the admin user permission to perform most of the operations. However, every test suite in Jest is a separated context, so before this PR, we have to authenticate again in every test suite.This PR authenticates once during
globalSetup
and saves the login state (cookie, nonce, etc) to disk. Then, each test suite can just grab the state from disk without sending the network request. This process is heavily inspired by the similar approach in Playwright.This PR also refactors the implementation to better handle some edge cases (auto re-authentication, getting max batch size, etc).
I can't decide where to put the state file though. Currently, it's placed at
test/integration/storage-state/admin.json
, I doubt that it's the best place to store that though.How has this been tested?
Running
npm run test-e2e
should generate a file attest/integration/storage-path/admin.json
to store the test state (cookie
,nonce
,rootURL
).Types of changes
New feature
Checklist:
*.native.js
files for terms that need renaming or removal).