mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-05-07 05:42:50 +08:00
* feat(i18n): enhance locale handling and routing - Implemented dynamic locale aliases in router configuration. - Added support for preferred locale storage in global state. - Improved locale resolution logic in router beforeEach guard. - Created utility functions for locale management and path manipulation. - Added tests for locale matching and message extraction. - Updated Header component to allow language selection. - Refactored getRouterPathWithLang to utilize new locale utilities. - Updated Vite configuration to support aliasing for vue-i18n. - Bumped version numbers across various packages to 1.9.0. * feat(i18n): update version to 1.8.0 and enhance locale handling - Updated version numbers across all package.json files to 1.8.0. - Enhanced locale handling in App.vue by centralizing locale configurations. - Improved Turnstile component to support dynamic language rendering. - Refactored i18n utilities to include initial locale setup and empty locale messages. - Updated i18n.ts to utilize the new locale management structure. - Added naive-locale.ts for better integration with Naive UI's locale handling. - Adjusted Header.vue to streamline language selection and locale changes. - Fixed translations in multiple locale files for consistency and accuracy. * fix(i18n): address review feedback * feat(i18n): update default locale to English and enhance language handling in components * fix(i18n): switch locale selector to dropdown * docs: add topbar language and github order design spec * fix(i18n): 修复 Header 语言切换器相关问题,恢复为独立控件并调整样式 * Refactor locale handling in router and add locale-guard utility functions - Improved locale resolution logic in router by introducing utility functions for better readability and maintainability. - Added `locale-guard.js` to encapsulate locale-related functions such as getting route locale, resolving locale for navigation, and applying locale navigation state. - Updated JWT synchronization logic to streamline the handling of JWT from query parameters. - Modified i18n messages test to check for coverage of registered locale message keys instead of extracting English source messages. * 删除顶部栏语言和GitHub顺序设计文档 * fix: 修复前端设置初始化时未返回 domains 数组导致的 undefined 错误 * refactor(i18n): consolidate locale infrastructure * fix(i18n): stabilize locale route switching * fix(i18n): persist default locale selection * fix(i18n): 修复前端设置初始化时未返回 domains 数组导致的 undefined 错误,统一按空数组兜底处理 feat(i18n): 添加 locale 别名处理,支持默认语言的重定向 test(i18n): 增加对默认语言别名重定向的测试用例 * refactor: replace useAppI18n with useScopedI18n in multiple components for improved localization management * fix(tests): 移除不必要的 URL 断言以简化 Passkey 测试 * fix(i18n): 更新语言切换逻辑,确保使用当前语言设置进行路由导航 * fix(i18n): 强制路由切换以确保语言切换后正确导航 * refactor(i18n): 优化消息注册和路由本地化逻辑,移除冗余代码 * refactor(i18n): 拆分 API 文件以优化路由管理,更新语言处理逻辑 * fix: align i18n release notes and frontend test script
E2E Tests
End-to-end tests for Cloudflare Temp Email using Playwright and Mailpit, fully containerized with Docker Compose.
Prerequisites
- Docker and Docker Compose
Quick Start
cd e2e
# Build, start all services, run tests, and exit
npm test
# Clean up containers and volumes
npm run test:down
npm test runs docker compose up --build, which:
- Starts Mailpit (SMTP on :1025, HTTP API on :8025)
- Builds and starts the Worker (wrangler dev on :8787)
- Builds and starts the Frontend (vite dev on :5173)
- Builds and runs the E2E runner (Playwright), which waits for services, initializes the DB, and runs all tests
The exit code reflects the test result.
Test Structure
| Project | Directory | What it tests |
|---|---|---|
api |
tests/api/ |
Worker API endpoints — health check, address CRUD, send mail via SMTP |
browser |
tests/browser/ |
Frontend UI — login, inbox view, reply with HTML, XSS sanitization |
Services
| Service | Container | Port | Purpose |
|---|---|---|---|
| Mailpit SMTP | mailpit |
1025 | Captures outgoing emails |
| Mailpit HTTP | mailpit |
8025 | API to verify captured emails |
| Worker | worker |
8787 | Backend API with E2E config |
| Frontend | frontend |
5173 | Vue frontend dev server |
Test Results
Test results and HTML reports are exported via volumes:
e2e/test-results/— test artifactse2e/playwright-report/— HTML report
Configuration
The E2E worker uses fixtures/wrangler.toml.e2e with:
E2E_TEST_MODE = true— enables test seed endpointDISABLE_ADMIN_PASSWORD_CHECK = true— allows unauthenticated admin callsDEFAULT_SEND_BALANCE = 10— allows sending without admin approval- SMTP pointed at Mailpit container (
mailpit:1025)