5a29938130
- Port modern clean theme (DM Sans, orange accent, app-* CSS classes) and screen redesigns from festipod-mockups; replace sketchy Ubuntu theme. New shared components: BottomNav, EventCover, EventMeetingPoints, Toast, AvatarStack, Tag, RelevanceIcon. - Restructure from prototyping shell to real mobile web app: path-based routing (History API), Gallery/DemoMode/PhoneFrame removed, Storybook setup for screen/component browsing. - ConnectScreen ported from mockup (QR-based user connection); routed at /profile/connect, wired from FriendsListScreen. - Dev-only auto-seed of NG wallet when empty (gated on NODE_ENV !== 'production'); bootstrapWallet already self-checks for non-empty ngSet so safe even in race conditions. - Render-based @ui test infrastructure: happy-dom + LocalDataProvider + RouterProvider via src/shared/test-harness/renderHelper.tsx, exposed on the world as renderedDoc. world.hasText/hasField/hasElement prefer the rendered DOM and fall back to source for backward compatibility. - Migrate 25 brittle @ui assertions from regex-on-source to DOM queries; delete implementation-detail tests (showDuplicateWarning, importableEvents, importedFrom — anti-patterns per the new contract). Update feature files where the UI changed: "Mes amis" → "Mon réseau", "Mes événements à venir" → "À venir" on home, Thématique removed from create-event wizard, etc. - Path-based @e2e steps (pushState + popstate dispatch) replacing the legacy "#/demo/…" hash routing tied to the deleted Gallery. - Add .project/knowledge/test-layer-contracts.md defining the role of each test layer (@ui = display with seed data + DOM, @data = mutations through NG broker, @e2e = critical user journeys) with anti-patterns and migration consequences. Test status: 75 passed / 71 skipped (explicit "non implémenté") / 2 failed (pre-existing @wip on ngSet.delete() NG ORM limitation). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
61 lines
2.3 KiB
JSON
61 lines
2.3 KiB
JSON
{
|
|
"name": "festipod",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "portless festipod bun --hot src/index.ts",
|
|
"start": "NODE_ENV=production bun src/index.ts",
|
|
"build": "bun run build.ts",
|
|
"test:cucumber": "bun run cucumber:run && bun run cucumber:report && bun run features:parse && bun run steps:extract",
|
|
"cucumber:run": "node --import tsx/esm node_modules/.bin/cucumber-js --config cucumber.json",
|
|
"test:data": "node --import tsx/esm node_modules/.bin/cucumber-js --config cucumber.json --tags @data",
|
|
"test:auth-setup": "bun scripts/setup-test-auth.ts",
|
|
"cucumber:report": "bun scripts/parse-test-results.ts",
|
|
"features:parse": "bun scripts/parse-features.ts",
|
|
"steps:extract": "bun scripts/extract-step-definitions.ts",
|
|
"build:orm": "rdf-orm build --input ./src/shapes/shex --output ./src/shapes/orm",
|
|
"build:ng": "bash scripts/build-ng-packages.sh",
|
|
"storybook": "storybook dev -p 6006",
|
|
"build-storybook": "storybook build"
|
|
},
|
|
"dependencies": {
|
|
"@ng-org/alien-deepsignals": ".ng-tarballs/ng-org-alien-deepsignals-0.1.2-alpha.11.tgz",
|
|
"@ng-org/orm": ".ng-tarballs/ng-org-orm-0.1.2-alpha.15.tgz",
|
|
"@ng-org/shex-orm": ".ng-tarballs/ng-org-shex-orm-0.1.2-alpha.7.tgz",
|
|
"@ng-org/web": ".ng-tarballs/ng-org-web-0.1.2-alpha.11.tgz",
|
|
"@radix-ui/react-label": "^2.1.7",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-slot": "^1.2.3",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"bun-plugin-tailwind": "^0.1.2",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"lucide-react": "^0.545.0",
|
|
"react": "^19",
|
|
"react-dom": "^19",
|
|
"tailwind-merge": "^3.3.1"
|
|
},
|
|
"devDependencies": {
|
|
"@cucumber/cucumber": "^12.5.0",
|
|
"@cucumber/gherkin": "^29.0.0",
|
|
"@cucumber/messages": "^26.0.1",
|
|
"@types/bun": "latest",
|
|
"@types/chai": "^5.2.3",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"chai": "^6.2.2",
|
|
"happy-dom": "^16.6.0",
|
|
"playwright": "^1.58.2",
|
|
"tailwindcss": "^4.1.11",
|
|
"tsx": "^4.21.0",
|
|
"tw-animate-css": "^1.4.0",
|
|
"storybook": "^10.3.5",
|
|
"@storybook/react-webpack5": "^10.3.5",
|
|
"@storybook/addon-webpack5-compiler-swc": "^4.0.3",
|
|
"@storybook/addon-a11y": "^10.3.5",
|
|
"@storybook/addon-docs": "^10.3.5",
|
|
"@storybook/addon-onboarding": "^10.3.5"
|
|
}
|
|
}
|