-
Notifications
You must be signed in to change notification settings - Fork 27k
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
Improve experimental test proxy #63567
Improve experimental test proxy #63567
Conversation
Allow CI Workflow Run
Note: this should only be enabled once the PR is ready to go and can only be enabled by a maintainer |
Allow CI Workflow Run
Note: this should only be enabled once the PR is ready to go and can only be enabled by a maintainer |
Hey @agadzik! happy to see such an integration, we at Playwright are currently in the process of doing something on the Playwright level and comparing different approaches, like e.g. ssr (which is similar to the Next.js experimental feature except it has a webServer per worker and WS as a transport in between instead of http-proxy). I saw also @dvoytenko's initial work in #52520 which introduced it which looks awesome. Would be curious about your experience with this integration, especially having a global webserver vs. webServer per worker. Do you plan to move it out of experimental soon? We might add something similar to Playwright, so I would be more than happy to talk! |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
buildDuration | 13.8s | 14s | |
buildDurationCached | 7.4s | 6.6s | N/A |
nodeModulesSize | 198 MB | 198 MB | N/A |
nextStartRea..uration (ms) | 436ms | 442ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
2453-HASH.js gzip | 30.8 kB | 30.8 kB | N/A |
3304.HASH.js gzip | 181 B | 181 B | ✓ |
3f784ff6-HASH.js gzip | 53.7 kB | 53.7 kB | ✓ |
8299-HASH.js gzip | 5.04 kB | 5.04 kB | N/A |
framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
main-app-HASH.js gzip | 242 B | 242 B | ✓ |
main-HASH.js gzip | 32.2 kB | 32.2 kB | N/A |
webpack-HASH.js gzip | 1.68 kB | 1.68 kB | N/A |
Overall change | 99.3 kB | 99.3 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
_app-HASH.js gzip | 196 B | 197 B | N/A |
_error-HASH.js gzip | 184 B | 184 B | ✓ |
amp-HASH.js gzip | 505 B | 505 B | ✓ |
css-HASH.js gzip | 324 B | 325 B | N/A |
dynamic-HASH.js gzip | 2.5 kB | 2.5 kB | N/A |
edge-ssr-HASH.js gzip | 258 B | 258 B | ✓ |
head-HASH.js gzip | 352 B | 352 B | ✓ |
hooks-HASH.js gzip | 370 B | 371 B | N/A |
image-HASH.js gzip | 4.21 kB | 4.21 kB | ✓ |
index-HASH.js gzip | 259 B | 259 B | ✓ |
link-HASH.js gzip | 2.67 kB | 2.67 kB | N/A |
routerDirect..HASH.js gzip | 314 B | 312 B | N/A |
script-HASH.js gzip | 386 B | 386 B | ✓ |
withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 6.57 kB | 6.57 kB | ✓ |
Client Build Manifests
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
_buildManifest.js gzip | 481 B | 484 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
index.html gzip | 529 B | 529 B | ✓ |
link.html gzip | 542 B | 541 B | N/A |
withRouter.html gzip | 525 B | 523 B | N/A |
Overall change | 529 B | 529 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
edge-ssr.js gzip | 95.3 kB | 95.3 kB | N/A |
page.js gzip | 3.04 kB | 3.04 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 625 B | 624 B | N/A |
middleware-r..fest.js gzip | 151 B | 151 B | ✓ |
middleware.js gzip | 25.5 kB | 25.5 kB | N/A |
edge-runtime..pack.js gzip | 839 B | 839 B | ✓ |
Overall change | 990 B | 990 B | ✓ |
Next Runtimes
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
app-page-exp...dev.js gzip | 170 kB | 170 kB | ✓ |
app-page-exp..prod.js gzip | 96.9 kB | 96.9 kB | ✓ |
app-page-tur..prod.js gzip | 98.6 kB | 98.6 kB | ✓ |
app-page-tur..prod.js gzip | 93.1 kB | 93.1 kB | ✓ |
app-page.run...dev.js gzip | 144 kB | 144 kB | ✓ |
app-page.run..prod.js gzip | 91.5 kB | 91.5 kB | ✓ |
app-route-ex...dev.js gzip | 21.4 kB | 21.4 kB | ✓ |
app-route-ex..prod.js gzip | 15.1 kB | 15.1 kB | ✓ |
app-route-tu..prod.js gzip | 15.1 kB | 15.1 kB | ✓ |
app-route-tu..prod.js gzip | 14.8 kB | 14.8 kB | ✓ |
app-route.ru...dev.js gzip | 21 kB | 21 kB | ✓ |
app-route.ru..prod.js gzip | 14.8 kB | 14.8 kB | ✓ |
pages-api-tu..prod.js gzip | 9.54 kB | 9.54 kB | ✓ |
pages-api.ru...dev.js gzip | 9.81 kB | 9.81 kB | ✓ |
pages-api.ru..prod.js gzip | 9.54 kB | 9.54 kB | ✓ |
pages-turbo...prod.js gzip | 22.4 kB | 22.4 kB | ✓ |
pages.runtim...dev.js gzip | 23.1 kB | 23.1 kB | ✓ |
pages.runtim..prod.js gzip | 22.4 kB | 22.4 kB | ✓ |
server.runti..prod.js gzip | 50.9 kB | 50.9 kB | ✓ |
Overall change | 945 kB | 945 kB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | agadzik/next.js gadzik/improve-experimental-test-proxy | Change | |
---|---|---|---|
0.pack gzip | 1.57 MB | 1.57 MB | |
index.pack gzip | 105 kB | 106 kB | |
Overall change | 1.67 MB | 1.67 MB |
Diff details
Diff for middleware.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
Tests Passed |
Followup on #52520 and #54014
Enhancements
--experimental-test-proxy
CLI argument fromnext dev
andnext start
testProxy?: boolean
originalFetch
response if the current request context does not contain theNext-Test-*
HTTP headersWhy?
These changes allow us to write mixed Integration + E2E tests within the same Playwright process.
Now I can run
next dev
and locally develop my App Router pages AND run my Playwright tests against instead of having to,next dev
to locally develop my changenext dev --experimental-test-proxy
to locally run my integration tests