create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); $run = $this->makeArtifactTruthRun($tenant, 'tenant.evidence.snapshot.generate'); $this->makeArtifactTruthEvidenceSnapshot( tenant: $tenant, snapshotOverrides: [ 'operation_run_id' => (int) $run->getKey(), 'status' => EvidenceSnapshotStatus::Active->value, 'completeness_state' => EvidenceCompletenessState::Partial->value, ], summaryOverrides: [ 'missing_dimensions' => 2, ], ); Filament::setTenant(null, true); $this->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]); session([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]); Livewire::actingAs($user) ->test(TenantlessOperationRunViewer::class, ['run' => $run]) ->assertSee('Artifact truth') ->assertSee('Partial') ->assertSee('Refresh evidence before using this snapshot'); }); it('shows missing-artifact guidance when a blocked artifact run never produced a record', function (): void { $tenant = Tenant::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); $run = $this->makeArtifactTruthRun( tenant: $tenant, type: 'tenant.review.compose', context: [ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, ], attributes: [ 'outcome' => 'blocked', 'failure_summary' => [ ['reason_code' => 'review_missing_sections', 'message' => 'The review basis is incomplete.'], ], ], ); Filament::setTenant(null, true); $this->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]); session([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]); Livewire::actingAs($user) ->test(TenantlessOperationRunViewer::class, ['run' => $run]) ->assertSee('Artifact truth') ->assertSee('Artifact not usable') ->assertSee('Inspect the blocked run details before retrying'); });