![]() This commit introduces a suite of unit and E2E tests for the Vue.js frontend, significantly improving code coverage and reliability. Unit Test Summary: - Setup: Configured Vitest and @vue/test-utils. - Core UI Components: Added tests for EssentialLink, SocialLoginButtons, and NotificationDisplay. - Pinia Stores: Implemented tests for auth, notifications, and offline stores, including detailed testing of actions, getters, and state management. Offline store tests were adapted to its event-driven design. - Services: - api.ts: Tested Axios client config, interceptors (auth token refresh), and wrapper methods. - choreService.ts & groupService.ts: Tested all existing service functions for CRUD operations, mocking API interactions. - Pages: - AccountPage.vue: Tested rendering, data fetching, form submissions (profile, password, preferences), and error handling. - ChoresPage.vue: Tested rendering, chore display (personal & grouped), CRUD modals, and state handling (loading, error, empty). - LoginPage.vue: Verified existing comprehensive tests. E2E Test (Playwright) Summary: - Auth (`auth.spec.ts`): - User signup, login, and logout flows. - Logout test updated with correct UI selectors. - Group Management (`groups.spec.ts`): - User login handled via `beforeAll` and `storageState`. - Create group and view group details. - Update and Delete group tests are skipped as corresponding UI functionality is not present in GroupDetailPage.vue. - Selectors updated based on component code. - List Management (`lists.spec.ts`): - User login handled similarly. - Create list (within a group), view list, add item to list, and mark item as complete. - Delete list test is skipped as corresponding UI functionality is not present. - Selectors based on component code. This work establishes a strong testing foundation for the frontend. Skipped E2E tests highlight areas where UI functionality for certain CRUD operations (group update/delete, list delete) may need to be added if desired. |
||
---|---|---|
.. | ||
.vscode | ||
dev-dist | ||
e2e | ||
public | ||
src | ||
.editorconfig | ||
.env | ||
.gitattributes | ||
.gitignore | ||
.prettierrc.json | ||
Dockerfile | ||
env.d.ts | ||
eslint.config.ts | ||
index.html | ||
package-lock.json | ||
package.json | ||
playwright.config.ts | ||
README.md | ||
tsconfig.app.json | ||
tsconfig.json | ||
tsconfig.node.json | ||
tsconfig.vitest.json | ||
vite.config.ts | ||
vitest.config.ts |
fe
This template should help get you started developing with Vue 3 in Vite.
Recommended IDE Setup
VSCode + Volar (and disable Vetur).
Type Support for .vue
Imports in TS
TypeScript cannot handle type information for .vue
imports by default, so we replace the tsc
CLI with vue-tsc
for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue
types.
Customize configuration
See Vite Configuration Reference.
Project Setup
npm install
Compile and Hot-Reload for Development
npm run dev
Type-Check, Compile and Minify for Production
npm run build
Run Unit Tests with Vitest
npm run test:unit
Run End-to-End Tests with Playwright
# Install browsers for the first run
npx playwright install
# When testing on CI, must build the project first
npm run build
# Runs the end-to-end tests
npm run test:e2e
# Runs the tests only on Chromium
npm run test:e2e -- --project=chromium
# Runs the tests of a specific file
npm run test:e2e -- tests/example.spec.ts
# Runs the tests in debug mode
npm run test:e2e -- --debug
Lint with ESLint
npm run lint