Skip to content

Claude refactoring#42

Open
tschimbr wants to merge 10 commits intomainfrom
claude-refactoring
Open

Claude refactoring#42
tschimbr wants to merge 10 commits intomainfrom
claude-refactoring

Conversation

@tschimbr
Copy link
Member

No description provided.

tschimbr and others added 10 commits February 20, 2026 13:41
Remove diagram, raw JSON script dump, and student contact. Fix broken
install command, non-mailto email links, and Javadoc → JSDoc. Add
architecture section covering state management, HOC pattern, and key
files. Tighten language throughout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Yarn Berry does not expose npm_package_config_* environment variables,
causing "Unbound variable" errors. Replace $npm_package_config_testPort
with the hardcoded value 8080 in all scripts and remove the now-unused
config block.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
default.cy.ts: fetch the latest CHOP and SwissDRG versions from the
backend API before running tests, replacing hardcoded CHOP_2025 and
V14.0 version strings that break whenever a new catalog year is
published.

customCodeAttributePages.cy.ts: fetch the DRG I06A record from the
backend API and assert the attributes table using a label→value map
instead of positional indices. Values (cost weight, stay duration,
discount rates, etc.) are derived from the API response rather than
hardcoded, so the test stays correct when catalog data is updated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test visited B02A but used ?query=A06A, which populated the mobile
search results panel (a hidden Bootstrap Collapse) with <dd#noMargin>
elements. cy.contains("29") matched "29" inside that hidden panel
instead of the attributes table, causing the visibility assertion to
fail.

Fixes:
- Remove ?query=A06A from all three visit URLs
- Scope numeric assertions to #attributesTable using .within() to
  prevent accidental matches outside the table
- Derive expected numeric values from the backend API (same approach
  as the desktop DRG test)
- Fix the describe name from "desktop" to "mobile"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@types/node v24 dropped its bundled Array.prototype.at() type
declaration (now a platform standard), requiring es2022 in the
tsconfig lib to avoid TypeScript errors that triggered the webpack
dev server error overlay during tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removed (no imports found anywhere in src/):
- Production: audit, bootstrap-icons, react-calendar, reactjs-popup, web-vitals
- Dev: react-string-replace, selenium-drivers, geckodriver, chromedriver,
  @babel/core, @babel/preset-env

babel.config.js emptied: @babel/preset-env and @babel/preset-typescript
(never in package.json) are gone; Cypress uses ts-loader directly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- react: ^18.1.0 → ^18.2.0 (resolved 18.3.1)
- react-dom: ^18.1.0 → ^18.2.0 (resolved 18.3.1)
- bootstrap: ^5.1.3 → ^5.3.7 (resolved 5.3.8)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- react-bootstrap: ^2.2.0 → ^2.9.0 (resolved 2.10.10)
- react-toastify: ^9.1.1 → ^11.0.5; replace removed toast.POSITION.TOP_RIGHT
  with string literal "top-right" in App.tsx
- @types/react-dom: ^18.0.5 → ^18.2.13 (resolved 18.3.7)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Eliminates the addProps/withProps HOC wrappers in every file and
replaces class lifecycle methods with hooks (useState, useEffect,
useRef, useNavigate, useParams, useTranslation, useLocation).

Also fixes three regressions introduced by the conversion:

1. PopUp.tsx: useEffect for findAvailableLanguages fired on mount with
   catalog="" causing a failed fetch to /undefined/versions, which
   triggered the React dev error overlay and blocked all UI clicks.
   Fix: guard with `if (!catalog) return`.

2. App.tsx language effect: guarding with `if (isFetching) return`
   silently dropped language changes made while the initial version
   fetch was in progress. The Header language buttons are always
   visible so users can click them before isFetching=false.
   Fix: remove the isFetching guard; skip navigation inside
   handleLanguageChange when selectedVersion is the placeholder
   'ICD10-GM-XXXX' (the mount effect's navigation effect handles
   that case).

3. App.tsx Navigate: the root redirect was hardcoded to "de/ICD/..."
   Fix: use the `language` state variable so that a language change
   before the initial fetch completes redirects to the correct URL.

All 60 Cypress E2E tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant