Some checks failed
Main Confidence / confidence (push) Failing after 3m36s
## Summary - add explicit Gitea workflow files for PR Fast Feedback, `dev` Confidence, Heavy Governance, and Browser lanes - extend the repo-truth lane support seams with workflow profiles, trigger-aware budget enforcement, artifact publication contracts, CI summaries, and failure classification - add deterministic artifact staging, new CI governance guard coverage, and Spec 210 planning/contracts/docs updates ## Validation - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Guards/CiFastFeedbackWorkflowContractTest.php tests/Feature/Guards/CiConfidenceWorkflowContractTest.php tests/Feature/Guards/CiHeavyBrowserWorkflowContractTest.php tests/Feature/Guards/CiLaneFailureClassificationContractTest.php tests/Feature/Guards/FastFeedbackLaneContractTest.php tests/Feature/Guards/ConfidenceLaneContractTest.php tests/Feature/Guards/HeavyGovernanceLaneContractTest.php tests/Feature/Guards/BrowserLaneIsolationTest.php tests/Feature/Guards/FixtureLaneImpactBudgetTest.php tests/Feature/Guards/TestLaneManifestTest.php tests/Feature/Guards/TestLaneArtifactsContractTest.php tests/Feature/Guards/TestLaneCommandContractTest.php` - `./scripts/platform-test-lane fast-feedback` - `./scripts/platform-test-lane confidence` - `./scripts/platform-test-lane heavy-governance` - `./scripts/platform-test-lane browser` - `./scripts/platform-test-report fast-feedback` - `./scripts/platform-test-report confidence` ## Notes - scheduled Heavy Governance and Browser workflows stay gated behind `TENANTATLAS_ENABLE_HEAVY_GOVERNANCE_SCHEDULE=1` and `TENANTATLAS_ENABLE_BROWSER_SCHEDULE=1` - the remaining rollout evidence task is capturing the live Gitea run set this PR enables: PR Fast Feedback, `dev` Confidence, manual and scheduled Heavy Governance, and manual and scheduled Browser runs Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #243
45 lines
3.3 KiB
PHP
45 lines
3.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Tests\Support\TestLaneManifest;
|
|
|
|
it('keeps heavy-governance manual and scheduled execution inside the dedicated workflow file with schedule gating', function (): void {
|
|
$manualProfile = TestLaneManifest::workflowProfile('heavy-governance-manual');
|
|
$scheduledProfile = TestLaneManifest::workflowProfile('heavy-governance-scheduled');
|
|
$workflowContents = (string) file_get_contents(repo_path($manualProfile['filePath']));
|
|
|
|
expect(file_exists(repo_path($manualProfile['filePath'])))->toBeTrue()
|
|
->and($manualProfile['filePath'])->toBe($scheduledProfile['filePath'])
|
|
->and($manualProfile['laneBindings'])->toBe(['heavy-governance'])
|
|
->and($scheduledProfile['scheduleCron'])->toBe('17 4 * * 1-5')
|
|
->and($workflowContents)->toContain('workflow_dispatch:')
|
|
->and($workflowContents)->toContain('schedule:')
|
|
->and($workflowContents)->toContain('17 4 * * 1-5')
|
|
->and($workflowContents)->toContain("vars.TENANTATLAS_ENABLE_HEAVY_GOVERNANCE_SCHEDULE == '1'")
|
|
->and($workflowContents)->toContain('workflow_id=heavy-governance-manual')
|
|
->and($workflowContents)->toContain('workflow_id=heavy-governance-scheduled')
|
|
->and($workflowContents)->toContain('./scripts/platform-test-lane heavy-governance --workflow-id=${{ steps.context.outputs.workflow_id }} --trigger-class=${{ steps.context.outputs.trigger_class }}')
|
|
->and($workflowContents)->toContain('./scripts/platform-test-artifacts heavy-governance .gitea-artifacts/heavy-governance --workflow-id=${{ steps.context.outputs.workflow_id }} --trigger-class=${{ steps.context.outputs.trigger_class }}')
|
|
->and($workflowContents)->not->toContain('pull_request:', './scripts/platform-test-lane browser');
|
|
});
|
|
|
|
it('keeps browser manual and scheduled execution isolated from pull-request and confidence validation', function (): void {
|
|
$manualProfile = TestLaneManifest::workflowProfile('browser-manual');
|
|
$scheduledProfile = TestLaneManifest::workflowProfile('browser-scheduled');
|
|
$workflowContents = (string) file_get_contents(repo_path($manualProfile['filePath']));
|
|
|
|
expect(file_exists(repo_path($manualProfile['filePath'])))->toBeTrue()
|
|
->and($manualProfile['filePath'])->toBe($scheduledProfile['filePath'])
|
|
->and($manualProfile['laneBindings'])->toBe(['browser'])
|
|
->and($scheduledProfile['scheduleCron'])->toBe('43 4 * * 1-5')
|
|
->and($workflowContents)->toContain('workflow_dispatch:')
|
|
->and($workflowContents)->toContain('schedule:')
|
|
->and($workflowContents)->toContain('43 4 * * 1-5')
|
|
->and($workflowContents)->toContain("vars.TENANTATLAS_ENABLE_BROWSER_SCHEDULE == '1'")
|
|
->and($workflowContents)->toContain('workflow_id=browser-manual')
|
|
->and($workflowContents)->toContain('workflow_id=browser-scheduled')
|
|
->and($workflowContents)->toContain('./scripts/platform-test-lane browser --workflow-id=${{ steps.context.outputs.workflow_id }} --trigger-class=${{ steps.context.outputs.trigger_class }}')
|
|
->and($workflowContents)->toContain('./scripts/platform-test-artifacts browser .gitea-artifacts/browser --workflow-id=${{ steps.context.outputs.workflow_id }} --trigger-class=${{ steps.context.outputs.trigger_class }}')
|
|
->and($workflowContents)->not->toContain('pull_request:', './scripts/platform-test-lane confidence');
|
|
}); |