This commit is contained in:
Philippe Torrel
2026-11-02 09:20:35 +01:00
parent 451e19b3a1
commit da7fd3f7eb
4 changed files with 156 additions and 87 deletions
@@ -23,7 +23,7 @@
"@vitest/ui": "^5.0.5",
"jsdom": "^30.1.3",
"oxlint": "^1.90.0",
"sass-embedded": "^1.107.0",
"sass-embedded": "^1.107.1",
"vite": "^8.3.5",
"vitest": "^5.0.5"
}
@@ -2582,9 +2582,9 @@
}
},
"node_modules/sass": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.107.0.tgz",
"integrity": "sha512-+whPilvVNoAD57xvdIPLQT0gXo4RD1lHYw+Uw8zYHlojaeaMDxK14tc0JmEsz/XMns48h3lpypisMP+3E8eHQA==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.107.1.tgz",
"integrity": "sha512-aJ1/LvxOOb04YhmiBjzZn3jVwdHKol+OVhoMV6fFl02fF9T3i+5Mg9l/CnzqtM+NX5Jn5o3lAbs/ZJivTCLHfQ==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -2604,9 +2604,9 @@
}
},
"node_modules/sass-embedded": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.107.0.tgz",
"integrity": "sha512-0SWHSg0yNgjZ1Yxw5QYd7fHla1ilqaXEtDyc0VgW+xMjuxsjRmLR7s9+OOCXYqjjNhjT20Oxl6I1+9ylqnw5XQ==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.107.1.tgz",
"integrity": "sha512-DpU0lgDxNE2H7iycTfvvmig1NZ92SqO63D1PPRI8sBniHdpEOzxQno71YRXvEDQgPkaJ7mnljwX16s80AqydaQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2625,30 +2625,30 @@
"node": ">=20.19.0"
},
"optionalDependencies": {
"sass-embedded-all-unknown": "1.107.0",
"sass-embedded-android-arm": "1.107.0",
"sass-embedded-android-arm64": "1.107.0",
"sass-embedded-android-riscv64": "1.107.0",
"sass-embedded-android-x64": "1.107.0",
"sass-embedded-darwin-arm64": "1.107.0",
"sass-embedded-darwin-x64": "1.107.0",
"sass-embedded-linux-arm": "1.107.0",
"sass-embedded-linux-arm64": "1.107.0",
"sass-embedded-linux-musl-arm": "1.107.0",
"sass-embedded-linux-musl-arm64": "1.107.0",
"sass-embedded-linux-musl-riscv64": "1.107.0",
"sass-embedded-linux-musl-x64": "1.107.0",
"sass-embedded-linux-riscv64": "1.107.0",
"sass-embedded-linux-x64": "1.107.0",
"sass-embedded-unknown-all": "1.107.0",
"sass-embedded-win32-arm64": "1.107.0",
"sass-embedded-win32-x64": "1.107.0"
"sass-embedded-all-unknown": "1.107.1",
"sass-embedded-android-arm": "1.107.1",
"sass-embedded-android-arm64": "1.107.1",
"sass-embedded-android-riscv64": "1.107.1",
"sass-embedded-android-x64": "1.107.1",
"sass-embedded-darwin-arm64": "1.107.1",
"sass-embedded-darwin-x64": "1.107.1",
"sass-embedded-linux-arm": "1.107.1",
"sass-embedded-linux-arm64": "1.107.1",
"sass-embedded-linux-musl-arm": "1.107.1",
"sass-embedded-linux-musl-arm64": "1.107.1",
"sass-embedded-linux-musl-riscv64": "1.107.1",
"sass-embedded-linux-musl-x64": "1.107.1",
"sass-embedded-linux-riscv64": "1.107.1",
"sass-embedded-linux-x64": "1.107.1",
"sass-embedded-unknown-all": "1.107.1",
"sass-embedded-win32-arm64": "1.107.1",
"sass-embedded-win32-x64": "1.107.1"
}
},
"node_modules/sass-embedded-all-unknown": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.107.0.tgz",
"integrity": "sha512-Vll3OTXluDCFj1p/QZSFZrRR9sUQ+PkZXn8d9MJEz4Zatozkdxy0AhUVvCjODbonl2/r5iSt4gpoZm3OW9e1tA==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.107.1.tgz",
"integrity": "sha512-8JVe87KQHSu/uMmcbcRa33AVDdwf0FSCR1tqA9fTaLrsqpgApD2YgqFr7KKCYTNRVSwzqAKdDaD2YJgx/siuVQ==",
"cpu": [
"!arm",
"!arm64",
@@ -2659,13 +2659,13 @@
"license": "MIT",
"optional": true,
"dependencies": {
"sass": "1.107.0"
"sass": "1.107.1"
}
},
"node_modules/sass-embedded-android-arm": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.107.0.tgz",
"integrity": "sha512-BIy4QhqOC9ltqdQLKbyJXS4QRpoEQFrQxAizYKkDmgAlb4CsUkcPeW2g7T8lEdRD5CC4TNEF1GWisdc2wCN5Vw==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.107.1.tgz",
"integrity": "sha512-qst7MmgqFwAHjbDN9Z+zjwMqmPM6RGu5ynXJFZmEmkkjCoQQX8DHUZhNCc2bASeLk/wyz1/9RCziUcJ6kn+E5w==",
"cpu": [
"arm"
],
@@ -2680,9 +2680,9 @@
}
},
"node_modules/sass-embedded-android-arm64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.107.0.tgz",
"integrity": "sha512-khlf9rBiUvWILhOutf5EdApHCf9NtZN0xrPopbrW1vSSlCf84aUJ2L+d/EdgqrBMDpjETc1brjOyOl9j2qP0Rg==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.107.1.tgz",
"integrity": "sha512-tk1uq03Jqba2OuktUuIVQ0eSERB4oCcYiZ88wdzX1edWT/Yc7c4x6ECl2+7zqXec6SGIUDZlI86nurN5fTJLHA==",
"cpu": [
"arm64"
],
@@ -2697,9 +2697,9 @@
}
},
"node_modules/sass-embedded-android-riscv64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.107.0.tgz",
"integrity": "sha512-jaoqQKgEOTQghqApzNZRqMIYhRnGVFndPK7QZFLkS4PBBBNj2EMrpY/jCh4k2ATpk30S1k7EjMbvHW7lJqCl+Q==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.107.1.tgz",
"integrity": "sha512-WzBSIg44+XP15kc+G2qtpfYBm0BtxjuC/X11eEg2L5Ihw45DoBtSLkpkSpLd9tvxDJOiTK3AHd1/iv5oGNvibg==",
"cpu": [
"riscv64"
],
@@ -2714,9 +2714,9 @@
}
},
"node_modules/sass-embedded-android-x64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.107.0.tgz",
"integrity": "sha512-0ETPwPcwtX1/eEsBkTat4jSBtintmQmc+N/An8HHfqymRQsdPfxwnk7WpTHMdVXSFkv6DfzkjFlRmZtXTfSsFA==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.107.1.tgz",
"integrity": "sha512-K6YN7kqj9aBLmraVDiPIHF7U8qoD9E/6AJIVwj1Y5H0EgPjGOsv1sYu9Uy6SBLvWGg4dsydhbPU7VC+hTGWk9A==",
"cpu": [
"x64"
],
@@ -2731,9 +2731,9 @@
}
},
"node_modules/sass-embedded-darwin-arm64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.107.0.tgz",
"integrity": "sha512-apPK51fNRBOdGxpHNp+6X+YTTt6km3bZO3IB/Z987ASaDtdxjQ2U1LP9smbea6GzJpujuxWUuvw/l4vzLN9Y6g==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.107.1.tgz",
"integrity": "sha512-okhyzPI4cLNwa/xRIWbpkRGKmebaNp1+15V5PxVsQbzd8c+dn7eZje2Vf5CWxv9jRZ0nJgM1K/F61Wwb0w8Tyg==",
"cpu": [
"arm64"
],
@@ -2748,9 +2748,9 @@
}
},
"node_modules/sass-embedded-darwin-x64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.107.0.tgz",
"integrity": "sha512-d1U7XHQuQb2iuSf+5NxjMMSt7I9yCYGQw3K4NZd32yf5tuhFMTeyiu3nf0+HvLavD2jAkOiykJtbm+zYnwd5HQ==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.107.1.tgz",
"integrity": "sha512-hMMcxMxTiWoMaCfEvZqofN2l/yW++S0ANdVA3uHbVYO1LeRf9MrOWlOkJCjsbJO5FvfZdKGUxq/hc/5FKX9PXQ==",
"cpu": [
"x64"
],
@@ -2765,9 +2765,9 @@
}
},
"node_modules/sass-embedded-linux-arm": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.107.0.tgz",
"integrity": "sha512-JOk4lk1iYKujZOKXLG1EFWvBxtqN/2mDe6vYw2WJAK1KG1B5Z1l9zRPBXRv+H+YXbObGb8OH6S0AgIvZbBrI0w==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.107.1.tgz",
"integrity": "sha512-k/UIsseDf63xo5qwV1kZgTmJtFlBAKLQf3xb++NmQPv7zvdOZxJ/MVUd1cuDx7vuanVKhM+U6R1mW2GuQxEGHA==",
"cpu": [
"arm"
],
@@ -2783,9 +2783,9 @@
}
},
"node_modules/sass-embedded-linux-arm64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.107.0.tgz",
"integrity": "sha512-HcA2wCqXtcRuGIzS0Qfgk0QQCP9B+57fPWstKozMl/Penl1pXVBA98Ilo64A8wPd2WHYSsY0u5WOAQa3h06IcA==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.107.1.tgz",
"integrity": "sha512-cDeuJi63cL2cfr9OZoB2z1jd7Omhdgbj7zBxawZ62NFLe/gYVgeUsHbkB0rh1xbsuMJ9nOu9Mu6bkw8N0XnigQ==",
"cpu": [
"arm64"
],
@@ -2801,9 +2801,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.107.0.tgz",
"integrity": "sha512-n1ujZwaQzjQ8etH9dm0uOxNkdnIu/bpY0j0TkrWmdCpsqNCob/noyWbuTofZ3whfz2IijHb9d1YAb/CEqDKoig==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.107.1.tgz",
"integrity": "sha512-jshFSmPp7/tq3zV5l7KEDWuZKN6aewTnKMkWzgXN4oiBvRKFWAeQqG2Acn+gjMwtrvY0aRGZxrgreJGwRmFZlg==",
"cpu": [
"arm"
],
@@ -2819,9 +2819,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.107.0.tgz",
"integrity": "sha512-waH4HH7o0/7uM3M6vp/SisW63JnR2VLU3B7N2sB/+P9C9GLd4ei6X8AzOzemMXDbRSpkM78vFtF9hOOT4HIHjQ==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.107.1.tgz",
"integrity": "sha512-Pr7kApBThIJjKG7FkGIsFvYrhj8aCu7kEuov7WiK3ExUiv5m+Vz8eYzjqIEGGCAyVIGMuuvHCvPmuMUynPZ1CA==",
"cpu": [
"arm64"
],
@@ -2837,9 +2837,9 @@
}
},
"node_modules/sass-embedded-linux-musl-riscv64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.107.0.tgz",
"integrity": "sha512-ONS/JfxvUn9KyLIsWH+Q6R0axjhRgtk80jfpOwFltqZBF20lXCEdf9PyoDaE0z+4RebK9D5jHzn8FhciIG9PSA==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.107.1.tgz",
"integrity": "sha512-5oJVR7xt0yQnIlW/1Xz+H5Bl2Tix5Gl4qrlrVvUCzfdFUWBwLSZi6KlabjC41UjRisandO3nxHXPZeI1T99krQ==",
"cpu": [
"riscv64"
],
@@ -2855,9 +2855,9 @@
}
},
"node_modules/sass-embedded-linux-musl-x64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.107.0.tgz",
"integrity": "sha512-iTqvfT21RdnSSF/Fqnlln1gMDF97BfJhabxmz7f3Th0X1YSPX3+XwPLUH1r8RiSIIXcckYGY5adKs/P8iJVgWA==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.107.1.tgz",
"integrity": "sha512-ntHvwls0ImF6p9qgZBuIF+BKIZ+6FqrRKZn0JhiFzb48y5o/V0mre6YEmdq8YcYVxPrGaU+Ajk96lpTE7gUC8w==",
"cpu": [
"x64"
],
@@ -2873,9 +2873,9 @@
}
},
"node_modules/sass-embedded-linux-riscv64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.107.0.tgz",
"integrity": "sha512-aP3z4aXO7kUR7vwcERe7j6EHVEKJPkC1t8JAJJo9wIintYmUnXKP67Tm5Llfp6r5XhJpUFMjCwrBixtfA43+/Q==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.107.1.tgz",
"integrity": "sha512-m8zLEdUPafxCAXtqx5FgBylIlPaUcb4eBx1lE8ENp/kaqqTMmaapofl+YWFI8xII3id+4rePZBipR142vHnNpQ==",
"cpu": [
"riscv64"
],
@@ -2891,9 +2891,9 @@
}
},
"node_modules/sass-embedded-linux-x64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.107.0.tgz",
"integrity": "sha512-fhJs/cx2cV8e7wn8ybnjJrWxsLb9YVALksGE1shOJ5fCE1c4H2K6LkcieDK8gKNdqzcihFW8amIoGuMh1fY2yQ==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.107.1.tgz",
"integrity": "sha512-ix29w9TrUrvpzjOir+Ndx3RH5VLJncjq6CMystVUVbx5rpYyyaSzciOm5NKF227ifivhuhWYOFPCkq1NedmXfQ==",
"cpu": [
"x64"
],
@@ -2909,9 +2909,9 @@
}
},
"node_modules/sass-embedded-unknown-all": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.107.0.tgz",
"integrity": "sha512-vjRXQZn8Dek8GqwTZ52vh+YTZLtoH9X8zGcBRKyt5a9yNStoE5N3KXIaeD/2z5jK/Vo9XrsqKJalujugDQnShA==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.107.1.tgz",
"integrity": "sha512-7JKs9q+V/kyVBesAjMa8hXx/qk6/cGKq/7cPSZoAWGu6oHx41wiJVfkZVAYt+fOFRHFXQunIKxIR9ZV7nA63PA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -2922,13 +2922,13 @@
"!win32"
],
"dependencies": {
"sass": "1.107.0"
"sass": "1.107.1"
}
},
"node_modules/sass-embedded-win32-arm64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.107.0.tgz",
"integrity": "sha512-4c8GS5WJcgfDl8ELCqLBw+sNzCMEHhLQ3S8mGp7rxnCcddLmOJwrgPQBPdoOhkWomURzPn8S1BWvUbfgiyAM9A==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.107.1.tgz",
"integrity": "sha512-/DmYPuToDvhsT4Oz1RQuOvQuYFzhcjzAfxjwhRPdWXxGO1OR8+BhbxyXqOUMpMLwgFT9Du3GPjD1yvy8BXnTZQ==",
"cpu": [
"arm64"
],
@@ -2943,9 +2943,9 @@
}
},
"node_modules/sass-embedded-win32-x64": {
"version": "1.107.0",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.107.0.tgz",
"integrity": "sha512-RJGBevID/0o1bVboKlzvCZkliIJ8I4ETE4jVKiAF673MrAS3ywl69hKeaWE6Ssl1yPlkrepCTqLSJ8tFngY5Zg==",
"version": "1.107.1",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.107.1.tgz",
"integrity": "sha512-B25UYFtuhnYiqvfLNlJZyDp2xV7T0aT9nueE2w+QhDPM/wCZyeQfj1dgMgq0HYBwEybgx0oLuxomgTqplmQ+eg==",
"cpu": [
"x64"
],
@@ -4,7 +4,7 @@
"version": "0.0.0",
"type": "module",
"scripts": {
"test": "jest",
"test": "vitest",
"test:watch": "vitest --watch",
"test:ui": "npx vitest --ui",
"dev": "vite",
@@ -28,7 +28,7 @@
"@vitest/ui": "^5.0.5",
"jsdom": "^30.1.3",
"oxlint": "^1.90.0",
"sass-embedded": "^1.107.0",
"sass-embedded": "^1.107.1",
"vite": "^8.3.5",
"vitest": "^5.0.5"
}
@@ -13,6 +13,7 @@ describe('Button', () => {
const button = screen.getByRole('button');
const user = userEvent.setup();
// expect(button).toHaveTextContent(/click me/i);
// fireEvent.click(button);
await user.click(button); // simulate click
+72 -4
View File
@@ -660,14 +660,82 @@ Projektarbeit
Übung 20
---
### TBA
## JavaScript/TypeScript Debugging & Testing
--
### Tag 46
**Inhalt:**
- inversion, extraction, DRY-Prinzip
- Typische Fehlermeldungen: Syntaxfehler, Referenzfehler, TypeError
- Einrichtung von TS, Testing
- Einrichtung von TS
- Logische Fehler
- Mocking mit async Data
- Weitere Techniken: Snapshot & Cypress
**Übungen:**
Projektarbeit
---
### Tag 47
**Inhalt:**
- Debugging-Techniken – Chrome Debugger
- Webentwickler Developer Tools
- Debugging-Techniken – VSCode Debugger
**Übungen:**
Projektarbeit
Übungen 05 - 14
---
### Tag 48
**Inhalt:**
- Einführung in Vitest und Unit Testing
- Installieren von Vitest und Schreiben unseres ersten Tests
- Einführung in die React Testing Library
- Unit-Tests in der React-Entwicklung verstehen
**Übungen:**
Projektarbeit
Übungen 15 - 19
---
### Tag 49
**Inhalt:**
- Unseren ersten Unit-Test schreiben
- Unit-Tests mit einer Komponentenliste und dem Router schreiben
- Testen von Benutzerverhalten in Unit-Tests
- Performance-Optimierung mit React
- useMemo, React.Memo, useCallback, useRef
**Übungen:**
Abschluss React Class
Projektarbeit
---
### Tag 50
**Inhalt:**
- useCallback Hook
- React.lazy, Suspense
- Zusammenfassen der React Komponenten
- Wiederholung der Inhalte
**Übungen:**
Projektarbeit
Übungen 22 - 23