Adds unit and e2e test coverage for the invite link email encoding fix in #2806. Split out from that PR per review request so the fix can be merged independently while these tests are evaluated.
Unit tests (vitest): invite link URL construction preserves @ in email; token parsing; redirect URL construction for login/signup; source-code guards against reintroducing encodeURIComponent in inviteUser.ts / InviteStatusCard.tsx; RFC 3986 reference tests
E2E tests (cypress): invite page handling with raw @ and backward-compat with %40; signup/login redirect flows; email pre-fill from invite redirect
Build config: vitest devDependency + scripts; cypress config and support files; cypress excluded from tsconfig to avoid build failures
Test plan
npm run test (vitest) passes
Cypress e2e suite runs against a local instance
CI build is unaffected by tsconfig exclusion
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/fosrl/pangolin/pull/2819
**Author:** [@jbelke](https://github.com/jbelke)
**Created:** 4/10/2026
**Status:** 🔄 Open
**Base:** `dev` ← **Head:** `test-invite-email-encoding`
---
### 📝 Commits (1)
- [`4b37d41`](https://github.com/fosrl/pangolin/commit/4b37d4116594d3ca2b3ffbc90e734c66921a8401) test: add unit and e2e tests for invite link encoding fix
### 📊 Changes
**11 files changed** (+1544 additions, -19 deletions)
<details>
<summary>View changed files</summary>
➕ `cypress.config.ts` (+15 -0)
➕ `cypress/e2e/invite-link-encoding.cy.ts` (+121 -0)
➕ `cypress/support/e2e.ts` (+19 -0)
📝 `package-lock.json` (+761 -14)
📝 `package.json` (+8 -2)
➕ `test/invite-link-encoding.test.ts` (+429 -0)
➕ `test/invite-link-integration.test.ts` (+164 -0)
📝 `tsconfig.enterprise.json` (+1 -1)
📝 `tsconfig.oss.json` (+1 -1)
📝 `tsconfig.saas.json` (+1 -1)
➕ `vitest.config.ts` (+24 -0)
</details>
### 📄 Description
## Summary
Adds unit and e2e test coverage for the invite link email encoding fix in #2806. Split out from that PR per review request so the fix can be merged independently while these tests are evaluated.
- Unit tests (vitest): invite link URL construction preserves `@` in email; token parsing; redirect URL construction for login/signup; source-code guards against reintroducing `encodeURIComponent` in `inviteUser.ts` / `InviteStatusCard.tsx`; RFC 3986 reference tests
- E2E tests (cypress): invite page handling with raw `@` and backward-compat with `%40`; signup/login redirect flows; email pre-fill from invite redirect
- Build config: vitest devDependency + scripts; cypress config and support files; cypress excluded from tsconfig to avoid build failures
## Test plan
- [ ] `npm run test` (vitest) passes
- [ ] Cypress e2e suite runs against a local instance
- [ ] CI build is unaffected by tsconfig exclusion
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/fosrl/pangolin/pull/2819
Author: @jbelke
Created: 4/10/2026
Status: 🔄 Open
Base:
dev← Head:test-invite-email-encoding📝 Commits (1)
4b37d41test: add unit and e2e tests for invite link encoding fix📊 Changes
11 files changed (+1544 additions, -19 deletions)
View changed files
➕
cypress.config.ts(+15 -0)➕
cypress/e2e/invite-link-encoding.cy.ts(+121 -0)➕
cypress/support/e2e.ts(+19 -0)📝
package-lock.json(+761 -14)📝
package.json(+8 -2)➕
test/invite-link-encoding.test.ts(+429 -0)➕
test/invite-link-integration.test.ts(+164 -0)📝
tsconfig.enterprise.json(+1 -1)📝
tsconfig.oss.json(+1 -1)📝
tsconfig.saas.json(+1 -1)➕
vitest.config.ts(+24 -0)📄 Description
Summary
Adds unit and e2e test coverage for the invite link email encoding fix in #2806. Split out from that PR per review request so the fix can be merged independently while these tests are evaluated.
@in email; token parsing; redirect URL construction for login/signup; source-code guards against reintroducingencodeURIComponentininviteUser.ts/InviteStatusCard.tsx; RFC 3986 reference tests@and backward-compat with%40; signup/login redirect flows; email pre-fill from invite redirectTest plan
npm run test(vitest) passes🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.