Add 5 pi extensions: pi-subagents, pi-crew, rpiv-pi, pi-interactive-shell, pi-intercom
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
---
|
||||
id: TC-AUTH-001
|
||||
title: "Customer magic-link login"
|
||||
feature: "Customer Authentication"
|
||||
priority: high
|
||||
type: functional
|
||||
status: draft
|
||||
tags: ["auth", "login", "magic-link", "customer-portal", "happy-path"]
|
||||
commit: abc1234
|
||||
---
|
||||
|
||||
# Customer magic-link login
|
||||
|
||||
## Objective
|
||||
Verify that a customer can request a magic-link login email, click the link, and be authenticated into the Customer Portal with the correct session and permissions.
|
||||
|
||||
## Preconditions
|
||||
- Customer account exists with email "test@example.com"
|
||||
- Email delivery service is configured in test mode
|
||||
- Customer is NOT currently logged in
|
||||
- No active sessions exist for this customer
|
||||
|
||||
## Steps
|
||||
| # | Action | Expected Result |
|
||||
|---|--------|-----------------|
|
||||
| 1 | Navigate to Customer Portal login page | Login form displays with email field and "Send Magic Link" button |
|
||||
| 2 | Enter "test@example.com" in email field | Email field validates format, no error shown |
|
||||
| 3 | Click "Send Magic Link" | Success message: "Check your email for a login link". Button disabled for 60s |
|
||||
| 4 | Open email inbox and find magic-link email | Email received within 2 minutes with one-time login URL |
|
||||
| 5 | Click the magic-link URL in the email | Browser opens, brief loading state, redirects to Customer Portal dashboard |
|
||||
| 6 | Verify dashboard displays correctly | Customer name in header, recent orders listed, subscription status visible |
|
||||
| 7 | Refresh the page | Session persists — dashboard still shows, not redirected to login |
|
||||
|
||||
## Postconditions
|
||||
- Session token created and stored (verify via browser cookies/localStorage)
|
||||
- Login event recorded in audit log with timestamp, IP address, and auth method "magic-link"
|
||||
- Magic link marked as used — clicking same link again shows "Link expired" page
|
||||
- Last login timestamp updated on customer record
|
||||
|
||||
## Edge Cases
|
||||
- Expired magic link (>15 minutes old) — verify "Link expired, request a new one" message
|
||||
- Already-used magic link — verify "Link already used" message
|
||||
- Non-existent email address — verify same success message shown (no email enumeration)
|
||||
- Multiple magic links requested — verify only the most recent link works
|
||||
- Magic link opened in different browser/device — verify it still works
|
||||
|
||||
## Notes
|
||||
- Related TCs: TC-AUTH-002 (logout), TC-AUTH-003 (session expiry)
|
||||
- Dependencies: Email delivery service in test mode, ability to inspect test emails
|
||||
- Known issues: Magic link emails may be delayed up to 2 minutes in test environments
|
||||
@@ -0,0 +1,57 @@
|
||||
# Order Management — Regression Suite
|
||||
|
||||
## Overview
|
||||
- Feature: Order Management
|
||||
- Module: ORD
|
||||
- Total test cases: 6
|
||||
- Estimated execution: ~35 minutes
|
||||
- Last generated: 2026-03-31
|
||||
- Commit: abc1234
|
||||
|
||||
## Smoke Test Subset
|
||||
| Priority | TC ID | Title | Est. Time |
|
||||
|----------|-------|-------|-----------|
|
||||
| high | TC-ORD-001 | Place order with physical products | ~5m |
|
||||
| high | TC-ORD-004 | Process full refund | ~5m |
|
||||
|
||||
**Smoke total: ~10 minutes**
|
||||
|
||||
## Full Regression
|
||||
|
||||
### High Priority
|
||||
| TC ID | Title | Type | Est. Time |
|
||||
|-------|-------|------|-----------|
|
||||
| TC-ORD-001 | Place order with physical products | functional | ~5m |
|
||||
| TC-ORD-003 | Fulfill order and trigger shipping | functional | ~8m |
|
||||
| TC-ORD-004 | Process full refund | functional | ~5m |
|
||||
|
||||
### Medium Priority
|
||||
| TC ID | Title | Type | Est. Time |
|
||||
|-------|-------|------|-----------|
|
||||
| TC-ORD-002 | Cancel order before fulfillment | functional | ~5m |
|
||||
| TC-ORD-005 | Admin edits order line items | functional | ~5m |
|
||||
|
||||
### Low Priority
|
||||
| TC ID | Title | Type | Est. Time |
|
||||
|-------|-------|------|-----------|
|
||||
| TC-ORD-006 | Filter and search order list | regression | ~3m |
|
||||
|
||||
**Full regression total: ~31 minutes**
|
||||
|
||||
## Coverage Map
|
||||
| Area | TCs Covering |
|
||||
|------|-------------|
|
||||
| Order Creation | TC-ORD-001 |
|
||||
| Order Cancellation | TC-ORD-002 |
|
||||
| Fulfillment | TC-ORD-003 |
|
||||
| Refunds | TC-ORD-004 |
|
||||
| Order Editing | TC-ORD-005 |
|
||||
| Order Listing/Search | TC-ORD-006 |
|
||||
| Payment Processing | TC-ORD-001, TC-ORD-004 |
|
||||
| Email Notifications | TC-ORD-001, TC-ORD-003, TC-ORD-004 |
|
||||
| Inventory Updates | TC-ORD-001, TC-ORD-003, TC-ORD-004 |
|
||||
|
||||
## Gaps
|
||||
- Bulk order import — no TC generated, feature not yet implemented
|
||||
- Partial refund flow — deferred, pending UX design for line-item selection
|
||||
- Order export to CSV — low priority, cosmetic feature
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
id: TC-ORD-001
|
||||
title: "Place order with physical products"
|
||||
feature: "Order Management"
|
||||
priority: high
|
||||
type: functional
|
||||
status: draft
|
||||
tags: ["orders", "checkout", "payment", "happy-path"]
|
||||
commit: abc1234
|
||||
---
|
||||
|
||||
# Place order with physical products
|
||||
|
||||
## Objective
|
||||
Verify that a customer can browse products, add them to cart, complete checkout with a valid credit card, and receive an order confirmation. This is the primary revenue-generating flow.
|
||||
|
||||
## Preconditions
|
||||
- Customer account exists with verified email
|
||||
- At least 2 physical products are published with available inventory
|
||||
- Stripe test mode is configured with valid API keys
|
||||
- Customer is logged into the Customer Portal
|
||||
|
||||
## Steps
|
||||
| # | Action | Expected Result |
|
||||
|---|--------|-----------------|
|
||||
| 1 | Navigate to product catalog page | Product listing displays with prices and availability |
|
||||
| 2 | Click "Add to Cart" on first product | Cart badge updates to show 1 item, toast confirms addition |
|
||||
| 3 | Click "Add to Cart" on second product | Cart badge updates to 2 items |
|
||||
| 4 | Click cart icon in navigation header | Cart drawer slides open showing both products with quantities and subtotal |
|
||||
| 5 | Click "Proceed to Checkout" | Checkout page loads with shipping address form |
|
||||
| 6 | Enter valid shipping address and select shipping method | Shipping cost calculates and order total updates |
|
||||
| 7 | Enter valid test credit card (4242 4242 4242 4242) | Card field shows validated state with card brand icon |
|
||||
| 8 | Click "Place Order" | Loading spinner appears, then redirects to order confirmation page |
|
||||
| 9 | Verify order confirmation page | Order number displayed, line items match cart, total matches checkout |
|
||||
|
||||
## Postconditions
|
||||
- Order record created in database with status "pending_fulfillment"
|
||||
- Order confirmation email sent to customer's email address
|
||||
- Inventory quantity decremented for both purchased products
|
||||
- Payment charge captured in Stripe (verify in Stripe dashboard)
|
||||
- Webhook dispatched to fulfillment service with order details
|
||||
- Audit log entry created with action "order.created" and customer ID
|
||||
|
||||
## Edge Cases
|
||||
- Order with quantity > 1 of same product — verify inventory deducts correct amount
|
||||
- Order with product at maximum inventory — verify "last item" handling
|
||||
- Payment gateway timeout — verify order is not created, customer sees retry option
|
||||
- Browser back button during payment processing — verify no duplicate charges
|
||||
- Coupon code applied at checkout — verify discount reflected in total and payment
|
||||
|
||||
## Notes
|
||||
- Related TCs: TC-ORD-002 (cancel order), TC-ORD-003 (refund order)
|
||||
- Dependencies: Stripe test environment, fulfillment webhook endpoint
|
||||
- Known issues: Intermittent Stripe webhook delay (up to 30s) may affect postcondition verification
|
||||
@@ -0,0 +1,56 @@
|
||||
---
|
||||
id: TC-TEAM-001
|
||||
title: "Invite and onboard new team member"
|
||||
feature: "Team Management"
|
||||
priority: high
|
||||
type: functional
|
||||
status: draft
|
||||
tags: ["team", "invitation", "onboarding", "roles", "happy-path"]
|
||||
commit: abc1234
|
||||
---
|
||||
|
||||
# Invite and onboard new team member
|
||||
|
||||
## Objective
|
||||
Verify that a workspace admin can invite a new team member by email, the invitee receives an invitation, and upon accepting they gain access to the workspace with the assigned role and permissions.
|
||||
|
||||
## Preconditions
|
||||
- Workspace exists with at least 1 admin user
|
||||
- Admin user is logged into the workspace Settings area
|
||||
- Invitation email service is configured in test mode
|
||||
- Target email address ("newmember@example.com") is not already a workspace member
|
||||
- Workspace is not at member limit
|
||||
|
||||
## Steps
|
||||
| # | Action | Expected Result |
|
||||
|---|--------|-----------------|
|
||||
| 1 | Navigate to Settings > Team Members page | Team members list displays with current members and their roles |
|
||||
| 2 | Click "Invite Member" button | Invitation form appears with email field and role dropdown |
|
||||
| 3 | Enter "newmember@example.com" in email field | Email field validates format, no error shown |
|
||||
| 4 | Select "Editor" from role dropdown | Role selection highlights "Editor" with permission summary tooltip |
|
||||
| 5 | Click "Send Invitation" | Success toast: "Invitation sent to newmember@example.com". Member appears in list with status "Invited" |
|
||||
| 6 | Open invitee's email inbox | Invitation email received with workspace name and "Accept Invitation" button |
|
||||
| 7 | Click "Accept Invitation" link in email | Browser opens account creation page (or login page if account exists) |
|
||||
| 8 | Complete account creation with name and password | Account created, redirects to workspace dashboard |
|
||||
| 9 | Verify workspace dashboard access | Dashboard loads with workspace content visible, "Editor" badge in profile menu |
|
||||
| 10 | Return to admin's Team Members page | New member shows status "Active" with role "Editor" |
|
||||
|
||||
## Postconditions
|
||||
- Invitation record created with status "accepted" and acceptance timestamp
|
||||
- New user account linked to workspace with "Editor" role
|
||||
- Invitation email marked as used — re-clicking link shows "Already accepted" message
|
||||
- Audit log entry created with action "team.member_invited" (admin) and "team.invitation_accepted" (invitee)
|
||||
- Workspace member count incremented by 1
|
||||
- Welcome notification sent to new member (in-app)
|
||||
|
||||
## Edge Cases
|
||||
- Invite email already associated with an existing account — verify login flow instead of signup
|
||||
- Invite with "Admin" role — verify admin permissions granted after acceptance
|
||||
- Re-invite after previous invitation expired — verify new invitation supersedes old
|
||||
- Invite when workspace is at member limit — verify error message shown before sending
|
||||
- Invited user closes browser mid-signup and returns via link later — verify flow resumes
|
||||
|
||||
## Notes
|
||||
- Related TCs: TC-TEAM-002 (change member role), TC-TEAM-003 (deactivate member)
|
||||
- Dependencies: Email delivery service in test mode, invitation token service
|
||||
- Known issues: Invitation emails may take up to 1 minute in test environments
|
||||
@@ -0,0 +1,54 @@
|
||||
# Team Management — Regression Suite
|
||||
|
||||
## Overview
|
||||
- Feature: Team Management
|
||||
- Module: TEAM
|
||||
- Total test cases: 5
|
||||
- Estimated execution: ~28 minutes
|
||||
- Last generated: 2026-04-01
|
||||
- Commit: abc1234
|
||||
|
||||
## Smoke Test Subset
|
||||
| Priority | TC ID | Title | Est. Time |
|
||||
|----------|-------|-------|-----------|
|
||||
| high | TC-TEAM-001 | Invite and onboard new team member | ~5m |
|
||||
| high | TC-TEAM-003 | Deactivate team member | ~5m |
|
||||
|
||||
**Smoke total: ~10 minutes**
|
||||
|
||||
## Full Regression
|
||||
|
||||
### High Priority
|
||||
| TC ID | Title | Type | Est. Time |
|
||||
|-------|-------|------|-----------|
|
||||
| TC-TEAM-001 | Invite and onboard new team member | functional | ~5m |
|
||||
| TC-TEAM-003 | Deactivate team member | functional | ~5m |
|
||||
|
||||
### Medium Priority
|
||||
| TC ID | Title | Type | Est. Time |
|
||||
|-------|-------|------|-----------|
|
||||
| TC-TEAM-002 | Change member role | functional | ~5m |
|
||||
| TC-TEAM-004 | Manage team member permissions | functional | ~5m |
|
||||
|
||||
### Low Priority
|
||||
| TC ID | Title | Type | Est. Time |
|
||||
|-------|-------|------|-----------|
|
||||
| TC-TEAM-005 | Filter and search team member list | regression | ~3m |
|
||||
|
||||
**Full regression total: ~23 minutes**
|
||||
|
||||
## Coverage Map
|
||||
| Area | TCs Covering |
|
||||
|------|-------------|
|
||||
| Invitation Flow | TC-TEAM-001 |
|
||||
| Role Management | TC-TEAM-002 |
|
||||
| Member Deactivation | TC-TEAM-003 |
|
||||
| Permission Configuration | TC-TEAM-002, TC-TEAM-004 |
|
||||
| Member Listing/Search | TC-TEAM-005 |
|
||||
| Audit Logging | TC-TEAM-001, TC-TEAM-003 |
|
||||
| Email Notifications | TC-TEAM-001, TC-TEAM-003 |
|
||||
|
||||
## Gaps
|
||||
- Bulk member import via CSV — feature exists but UI is in beta, deferred
|
||||
- SSO/SAML integration — separate authentication feature, not team management
|
||||
- Member activity reporting — read-only dashboard, low testing value
|
||||
Reference in New Issue
Block a user