TenantAtlas/specs/322-browser-no-drift-regression-guard/test-plan.md
ahmido ec4ff1074c Spec 322: add browser no-drift regression guards (#379)
## Summary
- add the Spec 322 artifact set for the browser no-drift regression guard
- add Feature navigation guards for admin surface scope, environment CTA URLs, and legacy alias rejection
- add Browser smoke coverage for workspace hubs, environment-owned surfaces, workspace-owned analysis surfaces, and alerts/audit flows
- add the Spec 322 browser support harness used by the new smoke coverage

## Validation
- `cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Navigation/Spec322AdminSurfaceScopeContractTest.php tests/Feature/Navigation/Spec322LegacyQueryAliasGuardTest.php tests/Feature/Navigation/Spec322EnvironmentCtaUrlContractTest.php --compact`
- `cd apps/platform && ./vendor/bin/sail artisan test tests/Browser/Spec322WorkspaceHubNoDriftSmokeTest.php tests/Browser/Spec322EnvironmentOwnedSurfaceSmokeTest.php tests/Browser/Spec322WorkspaceOwnedAnalysisSmokeTest.php tests/Browser/Spec322AlertsAuditNoDriftSmokeTest.php --compact`
- `cd apps/platform && ./vendor/bin/sail pint --dirty`
- `git diff --check`

## Notes
- a broader filtered regression run still reports existing Baseline Compare feature-test failures outside this diff

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #379
2026-05-17 11:34:31 +00:00

5.2 KiB

Spec 322 Test Plan

Purpose

Prove the Workspace / Environment context contracts from Specs 314 through 321 remain durable across Feature/static guards and Pest Browser smoke tests.

Assertions are authoritative. Screenshots are diagnostic only.

Test Families

Feature / Static Guards

Suggested files:

apps/platform/tests/Feature/Navigation/Spec322AdminSurfaceScopeContractTest.php
apps/platform/tests/Feature/Navigation/Spec322LegacyQueryAliasGuardTest.php
apps/platform/tests/Feature/Navigation/Spec322EnvironmentCtaUrlContractTest.php

Required assertions:

  • Core surfaces classify as workspace_hub, environment_owned_page, workspace_owned_analysis_surface, or workspace_configuration_surface.
  • Clean workspace hub URLs never emit environment_id, tenant, tenant_id, managed_environment_id, environment, tenant_scope, or tableFilters.
  • Environment CTAs use canonical environment_id for filterable workspace hubs and Environment routes for Environment-owned pages.
  • Clear-filter behavior matches clean workspace hub entry.
  • Cross-workspace environment_id filters reject safely.
  • Legacy Environment/Tenant query aliases do not create filter or shell state.
  • /admin/t routes and TenantPanelProvider remain absent.
  • Provider Tenant terms remain allowed only in provider-boundary allowlist contexts.

Browser Contract Guards

Suggested files:

apps/platform/tests/Browser/Spec322WorkspaceHubNoDriftSmokeTest.php
apps/platform/tests/Browser/Spec322EnvironmentOwnedSurfaceSmokeTest.php
apps/platform/tests/Browser/Spec322WorkspaceOwnedAnalysisSmokeTest.php
apps/platform/tests/Browser/Spec322AlertsAuditNoDriftSmokeTest.php

Required assertions:

  • Workspace hub clean sidebar/global/direct entry from Environment origin remains clean and Workspace-only.
  • Filterable workspace hubs opened with environment_id show visible Environment chip, keep Workspace-only shell, and reject legacy params.
  • Clear filter removes query/chip/table/session state and remains clean after reload.
  • Browser back/forward keeps URL, chip, shell, and data aligned.
  • Environment-owned pages require Environment route and show Environment shell after reload/back.
  • Baseline Compare rejects old clean workspace-only access.
  • Workspace-owned analysis surfaces cut to Workspace-only shell from Environment origin.
  • Workspace configuration surfaces remain Workspace-only and chip-free.
  • Alerts/Audit Log Spec 321 decisions are protected in browser.

Focused Commands

Run targeted Feature/static gates:

cd apps/platform

./vendor/bin/sail artisan test \
  tests/Feature/Navigation/Spec322AdminSurfaceScopeContractTest.php \
  tests/Feature/Navigation/Spec322LegacyQueryAliasGuardTest.php \
  tests/Feature/Navigation/Spec322EnvironmentCtaUrlContractTest.php \
  --compact

Run targeted Browser gates:

cd apps/platform

./vendor/bin/sail artisan test \
  tests/Browser/Spec322WorkspaceHubNoDriftSmokeTest.php \
  tests/Browser/Spec322EnvironmentOwnedSurfaceSmokeTest.php \
  tests/Browser/Spec322WorkspaceOwnedAnalysisSmokeTest.php \
  tests/Browser/Spec322AlertsAuditNoDriftSmokeTest.php \
  --compact

Run existing related regression gates:

cd apps/platform

./vendor/bin/sail artisan test --filter='WorkspaceHub|EnvironmentFilter|ClearFilter|LegacyTenant|BaselineCompare|WorkspaceOwnedAnalysis|AlertsAudit' --compact

Run final formatting and diff checks:

cd apps/platform

./vendor/bin/sail pint --dirty
git diff --check

Existing Anchors To Reuse

apps/platform/tests/Browser/Spec314WorkspaceHubNavigationContextSmokeTest.php
apps/platform/tests/Browser/Spec316WorkspaceHubClearFilterSmokeTest.php
apps/platform/tests/Feature/Navigation/WorkspaceHubRegistryTest.php
apps/platform/tests/Feature/Navigation/WorkspaceHubEnvironmentFilterContractTest.php
apps/platform/tests/Feature/Navigation/WorkspaceHubClearFilterContractTest.php
apps/platform/tests/Feature/Navigation/Spec321AlertsAuditEnvironmentFilterContractTest.php
apps/platform/tests/Feature/Guards/NoLegacyTenantPanelRuntimeTest.php
apps/platform/tests/Feature/Guards/LegacyTenantPlatformContextCleanupTest.php
apps/platform/tests/Feature/Filament/BaselineCompareEnvironmentRouteContractTest.php

Spec 322 should extend these anchors where that is narrower than adding duplicate tests.

Browser Fixture Rules

  • Use explicit workspace, Managed Environment, membership, and session setup.
  • Seed only records required to prove data scope.
  • Avoid global seed assumptions.
  • Avoid sleeps.
  • Prefer stable text, route, ARIA, or existing data-testid selectors.
  • Avoid volatile counters unless fixture records make the count deterministic.
  • Keep each browser file focused by surface model.

Screenshot Policy

Screenshots may be saved under:

specs/322-browser-no-drift-regression-guard/artifacts/screenshots/

Screenshot capture is diagnostic. A failed screenshot capture must not replace browser assertions. A browser blocker must be recorded in coverage-manifest.md.

Full Suite Statement

Do not claim full-suite green unless the full suite was run.

If only targeted commands are run, the final report must say targeted gates passed and full suite was not run.