88 lines
4.4 KiB
Markdown
88 lines
4.4 KiB
Markdown
# Quickstart: Onboarding Lifecycle, Operation Checkpoints & Concurrency MVP
|
|
|
|
## Goal
|
|
|
|
Validate the lifecycle, checkpoint-monitoring, and optimistic-locking design on the existing managed tenant onboarding wizard without adding routes or replacing the current flow.
|
|
|
|
## Prerequisites
|
|
|
|
1. Start the local stack with `vendor/bin/sail up -d`.
|
|
2. Ensure the database is migrated after implementation with `vendor/bin/sail artisan migrate --no-interaction`.
|
|
3. Use a workspace member with onboarding permissions and, for activation scenarios, an owner-capable actor.
|
|
|
|
## Manual Validation Flow
|
|
|
|
### Scenario 1: New draft lifecycle foundation
|
|
|
|
1. Open `/admin/onboarding`.
|
|
2. Create or resume a draft.
|
|
3. Confirm the persisted draft starts in `draft` and `current_checkpoint` reflects the current wizard step.
|
|
|
|
### Scenario 2: Verify Access as a live checkpoint
|
|
|
|
1. Select a provider connection.
|
|
2. Start Verify Access from Step 3.
|
|
3. Confirm the draft moves to `verifying` and the step shows live checkpoint messaging.
|
|
4. Keep the page open until the run becomes terminal.
|
|
5. Confirm the step updates within the active `5s` polling cadence without manual refresh and the lifecycle transitions to either `ready_for_activation` or `action_required`.
|
|
6. Confirm the Spec 139 required-permissions assist still works when verification is blocked or needs attention.
|
|
|
|
### Scenario 3: Bootstrap as an optional live checkpoint
|
|
|
|
1. Select one or more bootstrap actions in Step 4.
|
|
2. Start bootstrap.
|
|
3. Confirm the draft moves to `bootstrapping`.
|
|
4. Keep the page open until selected runs become terminal.
|
|
5. Confirm the step renders per-run status within the active `5s` polling cadence and stops polling when no relevant runs remain active.
|
|
|
|
### Scenario 4: Activation gating
|
|
|
|
1. Reach a state that appears ready for activation.
|
|
2. Invalidate readiness by changing the provider connection or by forcing a relevant blocking condition in another session.
|
|
3. Attempt activation.
|
|
4. Confirm activation rechecks backend truth and refuses to complete until readiness is restored.
|
|
|
|
### Scenario 5: Optimistic locking conflict
|
|
|
|
1. Open the same onboarding draft in two tabs.
|
|
2. Save a draft mutation in Tab A.
|
|
3. Submit a stale mutation in Tab B.
|
|
4. Confirm Tab B sees a clear conflict notification, remains on the wizard, and does not show a false success state.
|
|
|
|
## Focused Test Targets
|
|
|
|
- `tests/Feature/Onboarding/OnboardingDraftLifecycleTest.php`
|
|
- `tests/Feature/Onboarding/OnboardingDraftMultiTabTest.php`
|
|
- `tests/Feature/Onboarding/OnboardingActivationTest.php`
|
|
- `tests/Feature/Onboarding/OnboardingVerificationAssistTest.php`
|
|
- `tests/Feature/Onboarding/OnboardingDraftAuthorizationTest.php`
|
|
- `tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php`
|
|
- `tests/Feature/OpsUx/QueuedToastCopyTest.php`
|
|
- `tests/Feature/OperationRunServiceTest.php`
|
|
- `tests/Browser/OnboardingDraftRefreshTest.php`
|
|
- `tests/Browser/OnboardingDraftVerificationResumeTest.php`
|
|
- `tests/Unit/Onboarding/OnboardingLifecycleServiceTest.php`
|
|
- `tests/Unit/Onboarding/OnboardingDraftStageResolverTest.php`
|
|
|
|
## Suggested Verification Commands
|
|
|
|
1. `vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingDraftLifecycleTest.php`
|
|
2. `vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingDraftMultiTabTest.php`
|
|
3. `vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingActivationTest.php`
|
|
4. `vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingVerificationAssistTest.php`
|
|
5. `vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingDraftAuthorizationTest.php`
|
|
6. `vendor/bin/sail artisan test --compact tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php`
|
|
7. `vendor/bin/sail artisan test --compact tests/Feature/OpsUx/QueuedToastCopyTest.php`
|
|
8. `vendor/bin/sail artisan test --compact tests/Feature/OperationRunServiceTest.php`
|
|
9. `vendor/bin/sail artisan test --compact tests/Browser/OnboardingDraftRefreshTest.php`
|
|
10. `vendor/bin/sail artisan test --compact tests/Browser/OnboardingDraftVerificationResumeTest.php`
|
|
11. `vendor/bin/sail artisan test --compact tests/Unit/Onboarding/OnboardingLifecycleServiceTest.php`
|
|
|
|
## Expected Outcome
|
|
|
|
- No new onboarding routes are needed.
|
|
- Verify Access and Bootstrap behave as operation-backed checkpoints.
|
|
- Lifecycle truth is queryable from top-level draft fields.
|
|
- Terminal drafts remain immutable.
|
|
- Stale mutations fail safely with visible conflict guidance.
|