| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor(e2e): modular core/ + features/ layout; fix CI (ruff, e2e workflow) E2E suite restructured so multiple feature areas can sit side by side: - core/ holds feature-agnostic infra (instance, client, auth, fixtures, sharedAuth) - features/<area>/ is a self-contained module (api, verify, scenario, pages/, tests/, fixtures/) - playwright.config testDir './features' auto-discovers every module - README documents the architecture + how to add a feature module CI fixes: - ruff: moved shared assignment fixtures into src/tests/services/conftest.py (removing the cross-module fixture import that tripped F811) and cleared unused-import F401s. 'ruff check ./apps/api' is clean. - e2e workflow: renamed to e2e.yaml and switched to workflow_dispatch + nightly (not a per-PR gate) — it validates the published image, which a PR's own code isn't in yet. Hardened the submissions-dashboard spec (poll stats, scoped row locator) to remove an intermittent flake. | 2 个月前 | |
test(i18n): guard RTL against regression Three layers, because each catches what the others cannot see. An ESLint rule rejects physical-direction utilities in class strings. It is an error rather than a warning: the codebase was converted in one pass, so there is no backlog to stage around and anything it catches is new. It knows the two exceptions the codemod knows — 50% centering insets, and Radix data-[side=*] pairs, which report the resolved physical side and are already correct. Surfaces that are deliberately LTR are listed once, next to the reason. A bun test covers raw CSS and the constants ESLint cannot reach: every physical declaration in globals.css must carry an rtl-ok comment explaining itself, the language registry must declare a direction for every locale and agree with the lazy loaders, ar.json must cover every en.json key, and the RTL list duplicated into public/dir-init.js must match lib/direction.ts. The test also compiles globals.css and asserts the RTL rules survive. That is not paranoia: the icon-mirroring block was silently dropped once because a comment above it contained `*/`, which closed the comment early and took the rule with it. No build error, no lint error — the app just stopped mirroring icons, and the source looked correct the whole time. The Playwright specs cover the three failures that are invisible in review: direction wrong on first paint, direction not following a live language switch, and horizontal overflow — the last being the cheapest way to catch a physical margin that escaped the sweep, on any route, with no screenshots to maintain. Two ESLint changes were needed for the changed-files gate to pass. Four real errors are fixed — a redundant regex escape, a React import missing where it is used in a type position, an interface shadowing its component, an unscoped const in a case block. And no-unused-vars drops to warn, joining the React Compiler rules already there for the same #800 backlog: the gate lints whole changed files, so a repo-wide change fails on debt it merely walked past. Base ESLint also cannot read TypeScript and reports parameter names inside type annotations as unused variables — those are documentation, not dead code. The real fix is adopting @typescript-eslint/no-unused-vars, which is its own change. | 1 个月前 | |
test(scorm): backend tests, e2e suite, frontend reliability + instructor UI - 70+ backend pytest: parsing, extraction security (traversal/symlink/zip-bomb/ XXE), runtime conformance (SCORM 1.2 & 2004), completion->progress, cross-org authz, multi-SCO dedup, instructor results, real authoring-tool packages (Rise './', nested <file>, backslash). Tests skip cleanly when enterprise modules are absent so OSS CI stays green. - Synthetic SCORM package corpus generator - apps/e2e/features/scorm: live e2e (import/track, resume, player, real-tool) - Frontend (apps/web/ee): tab-close keepalive WITH auth (was a silent 401 via sendBeacon), accurate LMSCommit/Finish return values, no-token sign-in notice, save-failure banner, resume indicator, a11y roles - Instructor results table wired into EditScormActivityModal | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 |