feat: integrate Playwright for E2E testing and enhance testing framework

- Added Playwright for end-to-end testing in the `apps/web` module, including a new `login.spec.ts` for testing login functionality.
- Updated package.json to include Playwright dependencies and new test commands for E2E testing.
- Enhanced .gitignore to exclude Playwright test results and reports.
- Modified existing documentation to reflect the integration of Playwright and updated testing guidelines.
- Refactored test commands to streamline the testing process, including a dedicated command for E2E tests.

These changes improve the testing framework by providing robust E2E testing capabilities, enhancing the reliability and quality of the application.
This commit is contained in:
shancheas
2026-08-31 11:52:27 +07:00
parent 166e0d40ac
commit 67e1e0a74f
23 changed files with 318 additions and 108 deletions
+28 -28
View File
@@ -10,10 +10,10 @@ You need permission to view each menu. Status buttons (Process, Complete, Submit
Set up the records that every sales document needs:
| You need | Where to create it |
| --- | --- |
| Division, branch, customer, product | **Settings → Data** |
| Salesperson | **Sales → Data → Employees** |
| You need | Where to create it |
| ----------------------------------- | ---------------------------- |
| Division, branch, customer, product | **Settings → Data** |
| Salesperson | **Sales → Data → Employees** |
If a menu is missing, ask an administrator to give your privilege **View** (and **Update** for status buttons) on that area.
@@ -70,7 +70,7 @@ A request is optional. You can go straight to a sales order.
1. Click **Create**. Fill in the same kind of details as a request. On a new order you can pick a sales request under **Source**; that copies the request into the form. Save. A new order starts as **Draft**.
2. On a **Draft** order, click **Process**.
- You will see: *Processing creates a sales invoice and, unless skipped, a packing slip.*
- You will see: _Processing creates a sales invoice and, unless skipped, a packing slip._
- **Generate packing slip** is checked by default. Uncheck it if you do not want a packing slip.
3. On **Draft** or **Processed**, you can **Cancel**. There is no **Complete** button on orders. If the order later shows **Completed**, that was not something you clicked on this screen.
4. On the order detail page you can see linked packing slips and invoices, and click **Create Sales Invoice**.
@@ -134,32 +134,32 @@ Approving a payment does not change the invoice status from this screen. Refresh
Both use Draft → Pending → Approved or Rejected.
| Current status | Buttons | Change status |
| --- | --- | --- |
| Draft | Submit | Rejected |
| Pending | Approve, Reject. Payments also have Rollback (back to Draft) | Draft, Approved, Rejected |
| Approved | — | — |
| Rejected | — | Draft |
| Current status | Buttons | Change status |
| -------------- | ------------------------------------------------------------ | ------------------------- |
| Draft | Submit | Rejected |
| Pending | Approve, Reject. Payments also have Rollback (back to Draft) | Draft, Approved, Rejected |
| Approved | — | — |
| Rejected | — | Draft |
### Sales order
| Current status | Buttons | Change status |
| --- | --- | --- |
| Draft | Process, Cancel | Processed, Cancelled |
| Processed | Cancel | Cancelled |
| Completed | — | — |
| Cancelled | — | — |
| Current status | Buttons | Change status |
| -------------- | --------------- | -------------------- |
| Draft | Process, Cancel | Processed, Cancelled |
| Processed | Cancel | Cancelled |
| Completed | — | — |
| Cancelled | — | — |
**Process** always opens the packing-slip checkbox dialog (not Change status).
### Packing slip
| Current status | Buttons | Change status |
| --- | --- | --- |
| Draft | Cancel | Processed, Cancelled |
| Processed | Complete, Cancel | Completed, Cancelled |
| Completed | — | — |
| Cancelled | — | — |
| Current status | Buttons | Change status |
| -------------- | ---------------- | -------------------- |
| Draft | Cancel | Processed, Cancelled |
| Processed | Complete, Cancel | Completed, Cancelled |
| Completed | — | — |
| Cancelled | — | — |
**Complete** always asks for delivered quantities.
@@ -167,11 +167,11 @@ Both use Draft → Pending → Approved or Rejected.
You may see Draft, Processed, Partial, Completed, or Cancelled.
| Current status | What you can do |
| --- | --- |
| Draft, Processed, or Partial | Cancel |
| Completed | No status buttons |
| Cancelled | No status buttons |
| Current status | What you can do |
| ---------------------------- | ----------------- |
| Draft, Processed, or Partial | Cancel |
| Completed | No status buttons |
| Cancelled | No status buttons |
---
+6 -6
View File
@@ -8,12 +8,12 @@ Use the sidebar to open **Sales** for day-to-day selling, **Logistics** for pack
## Where to find things
| Area | Menu | What you do there |
| --- | --- | --- |
| Sales | Sales → Activities | Requests, orders, invoices, payments, visit plans |
| Logistics | Logistics → Activities | Packing slips, delivery plans |
| Company data | Settings → Data | Divisions, branches, customers, products |
| Access | Settings → User | Users and privileges |
| Area | Menu | What you do there |
| ------------ | ---------------------- | ------------------------------------------------- |
| Sales | Sales → Activities | Requests, orders, invoices, payments, visit plans |
| Logistics | Logistics → Activities | Packing slips, delivery plans |
| Company data | Settings → Data | Divisions, branches, customers, products |
| Access | Settings → User | Users and privileges |
If a menu item is missing, your privilege does not include **View** for that area.
+1
View File
@@ -48,6 +48,7 @@ This repository uses **[Turborepo](https://turbo.build/repo)** to orchestrate ta
| `pnpm build:docs-dev` | Build only the docs-dev application |
| `pnpm build:desktop` | Build the web app, then compile the Electron app |
| `pnpm test` | Run unit tests ([Vitest](https://vitest.dev/)) across all packages |
| `pnpm test:e2e:web` | Run Playwright E2E for `apps/web` (starts Vite on port 4173) |
| `pnpm lint` | Run [ESLint](https://eslint.org/) across the workspace |
| `pnpm format` | Format code using [Prettier](https://prettier.io/) |