Skip to content

test(vite-plugin-nitro): cover http2 pseudo-headers#2233

Merged
brandonroberts merged 7 commits intoanalogjs:alphafrom
benpsnyder:chore/2177-verify-http2-pseudo-headers
Apr 13, 2026
Merged

test(vite-plugin-nitro): cover http2 pseudo-headers#2233
brandonroberts merged 7 commits intoanalogjs:alphafrom
benpsnyder:chore/2177-verify-http2-pseudo-headers

Conversation

@benpsnyder
Copy link
Copy Markdown
Contributor

PR Checklist

Closes #2177

Affected scope

  • Primary scope: vite-plugin-nitro
  • Secondary scopes:

Recommended merge strategy for maintainer [optional]

  • Squash merge
  • Rebase merge
  • Other

Commit preservation note [optional]

What is the new behavior?

Adds a focused regression test around toWebRequest() to verify that HTTP/2 pseudo-headers are ignored when Analog bridges a Node request into Web Headers.

The implementation already filters pseudo-header keys that start with :, and this PR turns that existing behavior into an explicit regression guard so the issue can be closed with test coverage.

Test plan

  • nx format:check
  • pnpm build
  • pnpm test
  • Manual verification

Manual verification:

  • pnpm nx test vite-plugin-nitro --runTestsByPath packages/vite-plugin-nitro/src/lib/utils/node-web-bridge.spec.ts

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

This is a verify-close PR for an issue that already appears fixed in the current implementation. The change is test-only.

[optional] What gif best describes this PR or how it makes you feel?

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 5, 2026

Deploy Preview for analog-blog ready!

Name Link
🔨 Latest commit 8c48e16
🔍 Latest deploy log https://app.netlify.com/projects/analog-blog/deploys/69db191f4bc35d0008b649af
😎 Deploy Preview https://deploy-preview-2233--analog-blog.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 5, 2026

Deploy Preview for analog-app ready!

Name Link
🔨 Latest commit 8c48e16
🔍 Latest deploy log https://app.netlify.com/projects/analog-app/deploys/69db191f3d45de00081dbf55
😎 Deploy Preview https://deploy-preview-2233--analog-app.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 5, 2026

Important

Review skipped

Too many files!

This PR contains 221 files, which is 71 over the limit of 150.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 22818be7-b77b-4785-b8d2-4dfb51cc85c4

📥 Commits

Reviewing files that changed from the base of the PR and between 3110040 and d5c2e36.

⛔ Files ignored due to path filters (11)
  • .agents/skills/pr-description.md is excluded by none and included by none
  • .agents/skills/review-pr.md is excluded by none and included by none
  • .dagger/src/index.ts is excluded by none and included by none
  • .gitignore is excluded by none and included by none
  • CHANGELOG.md is excluded by none and included by none
  • libs/card/src/lib/autocomplete/__snapshots__/autocomplete.component.spec.ts.snap is excluded by !**/*.snap and included by libs/**
  • libs/card/src/lib/card/__snapshots__/card.component.spec.ts.snap is excluded by !**/*.snap and included by libs/**
  • libs/card/src/lib/card2/__snapshots__/card.component.spec.ts.snap is excluded by !**/*.snap and included by libs/**
  • packages/nx-plugin/src/generators/preset/__snapshots__/generator.spec.ts.snap is excluded by !**/*.snap and included by packages/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml and included by none
  • tsconfig.json is excluded by none and included by none
📒 Files selected for processing (221)
  • .github/workflows/ci.yml
  • apps/analog-app-e2e/project.json
  • apps/analog-app/.storybook/main.ts
  • apps/analog-app/package.json
  • apps/analog-app/project.json
  • apps/analog-app/src/app/pages/package.page.ts
  • apps/analog-app/src/stories/button.component.ts
  • apps/analog-app/src/stories/button.css
  • apps/analog-app/src/stories/header.component.ts
  • apps/analog-app/src/stories/header.css
  • apps/analog-app/src/stories/page.component.ts
  • apps/analog-app/src/stories/page.css
  • apps/analog-app/tsconfig.app.json
  • apps/analog-app/tsconfig.json
  • apps/analog-app/tsconfig.spec.json
  • apps/analog-app/vite.config.ts
  • apps/astro-app-e2e-playwright/project.json
  • apps/astro-app/project.json
  • apps/astro-app/tsconfig.app.json
  • apps/astro-app/tsconfig.json
  • apps/blog-app-e2e/project.json
  • apps/blog-app/project.json
  • apps/blog-app/src/app/pages/archived/resolvers.spec.ts
  • apps/blog-app/src/app/pages/archived/resolvers.ts
  • apps/blog-app/src/app/pages/blog/resolvers.spec.ts
  • apps/blog-app/src/app/pages/blog/resolvers.ts
  • apps/blog-app/tsconfig.app.json
  • apps/blog-app/tsconfig.json
  • apps/blog-app/vite.config.ts
  • apps/docs-app/docs/guides/debugging.md
  • apps/docs-app/docs/guides/style-pipeline.md
  • apps/docs-app/docusaurus.config.js
  • apps/docs-app/package.json
  • apps/docs-app/project.json
  • apps/docs-app/tsconfig.json
  • apps/ng-app/tsconfig.spec.json
  • apps/opt-catchall-app/package.json
  • apps/opt-catchall-app/project.json
  • apps/opt-catchall-app/tsconfig.app.json
  • apps/opt-catchall-app/tsconfig.json
  • apps/opt-catchall-app/vite.config.ts
  • apps/tailwind-debug-app/project.json
  • apps/tailwind-debug-app/tsconfig.app.json
  • apps/tailwind-debug-app/tsconfig.json
  • apps/tailwind-debug-app/tsconfig.spec.json
  • apps/tailwind-debug-app/vite.config.ts
  • apps/tanstack-query-app-e2e/project.json
  • apps/tanstack-query-app/project.json
  • apps/tanstack-query-app/tsconfig.app.json
  • apps/tanstack-query-app/tsconfig.json
  • apps/tanstack-query-app/tsconfig.spec.json
  • apps/tanstack-query-app/vite.config.ts
  • libs/card/package.json
  • libs/card/src/lib/autocomplete/autocomplete.component.spec.ts
  • libs/card/src/lib/card2/card.component.ts
  • libs/card/src/test-setup.ts
  • libs/card/tsconfig.json
  • libs/card/tsconfig.lib.json
  • libs/card/tsconfig.spec.json
  • libs/card/vite.config.ts
  • libs/my-package/package.json
  • libs/my-package/tsconfig.json
  • libs/my-package/tsconfig.lib.json
  • libs/my-package/tsconfig.spec.json
  • libs/my-package/vite.config.ts
  • libs/shared/feature/package.json
  • libs/shared/feature/src/test-setup.ts
  • libs/shared/feature/tsconfig.json
  • libs/shared/feature/tsconfig.lib.json
  • libs/shared/feature/tsconfig.spec.json
  • libs/top-bar/package.json
  • libs/top-bar/project.json
  • libs/top-bar/src/lib/top-bar/template.html
  • libs/top-bar/src/lib/top-bar/top-bar.component.ts
  • libs/top-bar/tsconfig.json
  • libs/top-bar/tsconfig.lib.json
  • libs/top-bar/tsconfig.spec.json
  • libs/top-bar/vite.config.ts
  • nx.json
  • package.json
  • packages/astro-angular/package.json
  • packages/astro-angular/project.json
  • packages/astro-angular/tsconfig.json
  • packages/astro-angular/tsconfig.lib.json
  • packages/astro-angular/tsconfig.spec.json
  • packages/content-plugin/project.json
  • packages/content-plugin/tsconfig.lib.json
  • packages/content-plugin/tsconfig.spec.json
  • packages/content/md4x/src/lib/provide-md4x.spec.ts
  • packages/content/package.json
  • packages/content/prism-highlighter/src/index.ts
  • packages/content/prism-highlighter/src/lib/prism-highlighter.ts
  • packages/content/project.json
  • packages/content/resources/src/content-file-resource.spec.ts
  • packages/content/resources/src/content-file-resource.ts
  • packages/content/resources/src/content-files-resource.ts
  • packages/content/shiki-highlighter/src/index.ts
  • packages/content/tsconfig.json
  • packages/content/tsconfig.lib.json
  • packages/content/tsconfig.spec.json
  • packages/create-analog/package.json
  • packages/create-analog/project.json
  • packages/create-analog/template-angular-v17/package.json
  • packages/create-analog/template-angular-v17/tsconfig.spec.json
  • packages/create-analog/template-angular-v18/package.json
  • packages/create-analog/template-angular-v18/tsconfig.spec.json
  • packages/create-analog/template-angular-v19/package.json
  • packages/create-analog/template-angular-v19/tsconfig.spec.json
  • packages/create-analog/template-angular-v20/package.json
  • packages/create-analog/template-angular-v20/tsconfig.spec.json
  • packages/create-analog/template-blog/package.json
  • packages/create-analog/template-blog/tsconfig.spec.json
  • packages/create-analog/template-latest/package.json
  • packages/create-analog/template-latest/tsconfig.spec.json
  • packages/create-analog/template-minimal/package.json
  • packages/create-analog/tsconfig.json
  • packages/create-analog/tsconfig.lib.json
  • packages/create-analog/tsconfig.spec.json
  • packages/nx-plugin/project.json
  • packages/nx-plugin/src/generators/app/files/template-angular-v17/vite.config.ts__template__
  • packages/nx-plugin/src/generators/app/files/template-angular-v18/vite.config.ts__template__
  • packages/nx-plugin/src/generators/app/files/template-angular-v19/vite.config.ts__template__
  • packages/nx-plugin/src/generators/app/files/template-angular/vite.config.ts__template__
  • packages/nx-plugin/src/generators/app/versions/nx_18_X/versions.ts
  • packages/nx-plugin/src/generators/init/files/vite.config.ts__template__
  • packages/nx-plugin/src/generators/setup-vitest/files/vite.config.mts__template__
  • packages/nx-plugin/src/generators/setup-vitest/generator.spec.ts
  • packages/nx-plugin/src/generators/setup-vitest/generator.ts
  • packages/nx-plugin/src/utils/versions/ng_19_X/versions.ts
  • packages/nx-plugin/tsconfig.lib.json
  • packages/nx-plugin/tsconfig.spec.json
  • packages/platform/package.json
  • packages/platform/project.json
  • packages/platform/src/index.ts
  • packages/platform/src/lib/discover-library-routes.spec.ts
  • packages/platform/src/lib/discover-library-routes.ts
  • packages/platform/src/lib/options.ts
  • packages/platform/src/lib/platform-plugin.spec.ts
  • packages/platform/src/lib/platform-plugin.ts
  • packages/platform/src/lib/style-pipeline.spec.ts
  • packages/platform/src/lib/style-pipeline.ts
  • packages/platform/src/lib/style-preprocessor.ts
  • packages/platform/src/lib/tailwind-preprocessor.ts
  • packages/platform/src/lib/utils/debug.ts
  • packages/platform/src/style-pipeline.spec.ts
  • packages/platform/src/style-pipeline.ts
  • packages/platform/src/style-preprocessor.spec.ts
  • packages/platform/src/style-preprocessor.ts
  • packages/platform/tsconfig.json
  • packages/platform/tsconfig.lib.json
  • packages/platform/tsconfig.spec.json
  • packages/platform/vite.config.lib.ts
  • packages/platform/vite.config.ts
  • packages/router/package.json
  • packages/router/project.json
  • packages/router/server/src/provide-server-context.spec.ts
  • packages/router/server/src/provide-server-context.ts
  • packages/router/server/src/render.ts
  • packages/router/server/src/server-component-render.ts
  • packages/router/src/lib/cookie-interceptor.ts
  • packages/router/src/lib/form-action.directive.spec.ts
  • packages/router/src/lib/inject-route-endpoint-url.ts
  • packages/router/src/lib/provide-file-router-base.ts
  • packages/router/src/lib/request-context.ts
  • packages/router/src/lib/route-config.ts
  • packages/router/src/lib/server.component.ts
  • packages/router/tanstack-query/src/server-query.ts
  • packages/router/tsconfig.json
  • packages/router/tsconfig.lib.json
  • packages/router/tsconfig.spec.json
  • packages/storybook-angular/package.json
  • packages/storybook-angular/project.json
  • packages/storybook-angular/tsconfig.lib.json
  • packages/storybook-angular/tsconfig.spec.json
  • packages/vite-plugin-angular-tools/project.json
  • packages/vite-plugin-angular-tools/tsconfig.lib.json
  • packages/vite-plugin-angular-tools/tsconfig.spec.json
  • packages/vite-plugin-angular/package.json
  • packages/vite-plugin-angular/project.json
  • packages/vite-plugin-angular/src/index.spec.ts
  • packages/vite-plugin-angular/src/index.ts
  • packages/vite-plugin-angular/src/lib/angular-vite-plugin-live-reload.spec.ts
  • packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts
  • packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts
  • packages/vite-plugin-angular/src/lib/angular-vitest-plugin.ts
  • packages/vite-plugin-angular/src/lib/host.spec.ts
  • packages/vite-plugin-angular/src/lib/host.ts
  • packages/vite-plugin-angular/src/lib/style-pipeline.spec.ts
  • packages/vite-plugin-angular/src/lib/style-pipeline.ts
  • packages/vite-plugin-angular/src/lib/style-preprocessor.ts
  • packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts
  • packages/vite-plugin-angular/src/lib/stylesheet-registry.ts
  • packages/vite-plugin-angular/src/lib/utils/debug.ts
  • packages/vite-plugin-angular/tsconfig.lib.json
  • packages/vite-plugin-angular/tsconfig.spec.json
  • packages/vite-plugin-angular/vite.config.ts
  • packages/vite-plugin-nitro/package.json
  • packages/vite-plugin-nitro/project.json
  • packages/vite-plugin-nitro/src/index.spec.ts
  • packages/vite-plugin-nitro/src/index.ts
  • packages/vite-plugin-nitro/tsconfig.lib.json
  • packages/vite-plugin-nitro/tsconfig.spec.json
  • packages/vitest-angular-tools/project.json
  • packages/vitest-angular-tools/src/schematics/setup/files/vite.config.mts.template
  • packages/vitest-angular-tools/src/schematics/setup/index.spec.ts
  • packages/vitest-angular-tools/src/schematics/utils/versions.ts
  • packages/vitest-angular-tools/tsconfig.lib.json
  • packages/vitest-angular-tools/tsconfig.spec.json
  • packages/vitest-angular/package.json
  • packages/vitest-angular/project.json
  • packages/vitest-angular/setup-zone.ts
  • packages/vitest-angular/tsconfig.lib.json
  • packages/vitest-angular/tsconfig.spec.json
  • pnpm-workspace.yaml
  • tests/vitest-angular/tsconfig.json
  • tests/vitest-angular/tsconfig.lib.json
  • tests/vitest-angular/tsconfig.spec.json
  • tests/vitest-angular/vitest.config.ts
  • tools/scripts/build-lib.mts
  • tools/scripts/with-heartbeat.mts
  • tsconfig.base.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

A new Vitest specification has been added for the toWebRequest function in the node-web-bridge utility. The test validates that HTTP/2 pseudo-headers (:authority, :method, :path) present in an IncomingMessage are properly excluded from the resulting Web API request headers, while standard headers like accept and host are preserved. The test also confirms that the constructed URL is correctly formed as http://example.com/blog.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title follows Conventional Commit style with the supported scope 'vite-plugin-nitro' and clearly describes the test addition for HTTP/2 pseudo-header filtering.
Description check ✅ Passed The description is directly related to the changeset, explaining the regression test for HTTP/2 pseudo-headers and the issue it addresses.
Linked Issues check ✅ Passed The PR directly addresses issue #2177 by adding test coverage that verifies toWebRequest() filters HTTP/2 pseudo-headers (keys starting with ':'), matching the fix strategy outlined in the issue.
Out of Scope Changes check ✅ Passed The change is narrowly scoped to adding a regression test for the toWebRequest() function; no unrelated changes are present.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added the scope:vite-plugin-nitro Changes in @analogjs/vite-plugin-nitro label Apr 5, 2026
@benpsnyder benpsnyder marked this pull request as ready for review April 6, 2026 13:00
@github-actions github-actions Bot added scope:astro-angular Changes in @analogjs/astro-angular scope:ci GitHub workflow changes scope:content Changes in @analogjs/content scope:content-plugin Changes in @analogjs/content-plugin scope:create-analog Changes in create-analog scope:docs Documentation changes scope:nx-plugin Changes in @analogjs/nx-plugin scope:platform Changes in @analogjs/platform scope:repo Repository metadata and tooling scope:router Changes in @analogjs/router scope:storybook-angular Changes in @analogjs/storybook-angular scope:vite-plugin-angular Changes in @analogjs/vite-plugin-angular scope:vitest-angular Changes in @analogjs/vitest-angular labels Apr 12, 2026
@github-actions github-actions Bot removed scope:astro-angular Changes in @analogjs/astro-angular scope:content Changes in @analogjs/content scope:content-plugin Changes in @analogjs/content-plugin scope:create-analog Changes in create-analog labels Apr 12, 2026
@github-actions github-actions Bot removed scope:nx-plugin Changes in @analogjs/nx-plugin scope:platform Changes in @analogjs/platform scope:router Changes in @analogjs/router scope:storybook-angular Changes in @analogjs/storybook-angular scope:vite-plugin-angular Changes in @analogjs/vite-plugin-angular scope:vitest-angular Changes in @analogjs/vitest-angular scope:docs Documentation changes scope:ci GitHub workflow changes scope:repo Repository metadata and tooling labels Apr 12, 2026
@benpsnyder
Copy link
Copy Markdown
Contributor Author

@brandonroberts ready to merge

@brandonroberts brandonroberts merged commit 7f3d67c into analogjs:alpha Apr 13, 2026
21 checks passed
@brandonroberts brandonroberts deleted the chore/2177-verify-http2-pseudo-headers branch April 13, 2026 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope:vite-plugin-nitro Changes in @analogjs/vite-plugin-nitro

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants