Repository navigation
Commit d263e99
Fix CI failures: missing lockfile, ESLint v9 flat config migration, lint errors (#22)
* Initial plan
* Add E2E tests for CI and GitHub Actions workflow
- Create playwright.ci.config.ts targeting reader.chigao.site
- Add E2E tests: page load, feed subscription, theme, settings
- Create .github/workflows/ci.yml for automated testing on PR/push
- Add test:e2e:ci script to package.json
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* Address code review: replace waitForTimeout with proper assertions
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* Add explicit permissions to CI workflow for security
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* Add comprehensive user stories document at docs/user-stories.md
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* Add AI user stories, new E2E tests for favorites/history/search/feed-mgmt/AI features
- Add US-17 (AI Translation) and US-18 (AI Summarization) to user stories
- Add E2E tests: favorites, history, search, feedManagement, articleReading, aiFeatures
- Add search and feed-management page load tests to pageLoad.spec.ts
- Update coverage matrix in user stories document
- Remove waitForTimeout anti-patterns from new tests
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* Fix user stories coverage markers to match actual E2E test coverage
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* Refactor: extract shared helper, fix language-agnostic selectors in E2E tests
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* fix: resolve CI failures - add package-lock.json, migrate ESLint to flat config, fix lint errors
Root causes:
1. package-lock.json was in .gitignore, causing `npm ci` to fail
2. ESLint v9 requires flat config (eslint.config.js), but only .eslintrc.cjs existed
3. eslint-plugin-react-refresh was missing from devDependencies
4. 23 ESLint errors across src and test files
Fixes:
- Remove package-lock.json from .gitignore and commit the lockfile
- Create eslint.config.js (flat config) for ESLint v9 compatibility
- Add eslint-plugin-react-refresh to devDependencies
- Fix all 23 ESLint errors:
- Remove unused imports (Heart, ComponentType, useStore, vi, renderHook, act, etc.)
- Remove unused variables (handleThemeChange, initialHasLight, initialIsDark, etc.)
- Escape quotes in JSX (react/no-unescaped-entities)
- Fix unnecessary regex escapes (no-useless-escape)
- Prefix intentionally unused params with _ (catch clauses, event handlers)
- Disable react/prop-types (TypeScript handles this)
- Configure @typescript-eslint/no-unused-vars with _-prefix patterns
- Update lint script: remove deprecated --ext flag for ESLint v9
- Update CI workflow lint command to match
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
* fix: resolve ReDoS vulnerability in URL validator regex
Change `([-.]?[a-z0-9]+)*` to `(?:[-.][a-z0-9]+)*` to prevent
exponential backtracking on malicious inputs like 'http://0' + '0'*n.
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: chiga0 <24784430+chiga0@users.noreply.github.com>1 parent f5af555 commit d263e99
34 files changed
Lines changed: 18815 additions & 27 deletions
File tree
- .github/workflows
- docs
- src
- components
- ArticleList
- CategoryList
- Common
- FeedList
- Settings
- pages
- services
- types
- utils
- workers
- tests
- e2e
- ci
- integration
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
0 commit comments