chore: establish local platform baseline
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package safariconformance
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestRealSafariCompleteMatrixPasses(t *testing.T) {
|
||||
t.Parallel()
|
||||
capture := safariFixture("MACOS_SAFARI")
|
||||
report := Evaluate(capture, capture.CandidateVersion, capture.BuildDigest, time.Now())
|
||||
if report.Result != "PASS" || report.EvidenceScope != "REAL_SAFARI" || report.ExternalValidationRequired || report.ResultCount != 24 {
|
||||
t.Fatalf("unexpected report: %+v", report)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRealSafariMissingWorkflowFails(t *testing.T) {
|
||||
t.Parallel()
|
||||
capture := safariFixture("MACOS_SAFARI")
|
||||
capture.Runs[1].Results = capture.Runs[1].Results[:len(capture.Runs[1].Results)-1]
|
||||
report := Evaluate(capture, capture.CandidateVersion, capture.BuildDigest, time.Now())
|
||||
if report.Result != "FAIL" || !report.ExternalValidationRequired {
|
||||
t.Fatalf("expected failed report: %+v", report)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNonSafariToolchainCannotCompleteExternalValidation(t *testing.T) {
|
||||
t.Parallel()
|
||||
capture := safariFixture("NON_SAFARI_TOOLCHAIN")
|
||||
capture.Runs = capture.Runs[:1]
|
||||
capture.Runs[0].BrowserName = "Chrome"
|
||||
report := Evaluate(capture, capture.CandidateVersion, capture.BuildDigest, time.Now())
|
||||
if report.Result != "PASS" || report.EvidenceScope != "NON_SAFARI_TOOLCHAIN" || !report.ExternalValidationRequired {
|
||||
t.Fatalf("unexpected toolchain report: %+v", report)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseCaptureRejectsUnknownFields(t *testing.T) {
|
||||
t.Parallel()
|
||||
content, err := json.Marshal(safariFixture("NON_SAFARI_TOOLCHAIN"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
content = []byte(strings.TrimSuffix(string(content), "}") + `,"unexpected":true}`)
|
||||
if _, err = ParseCapture(content); err == nil {
|
||||
t.Fatal("expected unknown field rejection")
|
||||
}
|
||||
}
|
||||
|
||||
func safariFixture(source string) Capture {
|
||||
startedAt := time.Date(2026, 8, 25, 10, 0, 0, 0, time.UTC)
|
||||
collectedAt := startedAt.Add(3 * time.Hour)
|
||||
environment := "STAGING"
|
||||
if source == "NON_SAFARI_TOOLCHAIN" {
|
||||
environment = "LOCAL"
|
||||
}
|
||||
runs := make([]BrowserRun, 0, 2)
|
||||
for rankPosition, rank := range RequiredReleaseRanks {
|
||||
results := make([]WorkflowResult, 0, len(RequiredWorkflows)*len(RequiredViewports))
|
||||
for _, workflow := range RequiredWorkflows {
|
||||
for _, viewport := range RequiredViewports {
|
||||
results = append(results, WorkflowResult{Workflow: workflow, Viewport: viewport, Status: "PASS", EvidenceRef: "evidence:" + rank + ":" + workflow + ":" + viewport})
|
||||
}
|
||||
}
|
||||
runs = append(runs, BrowserRun{
|
||||
ReleaseRank: rank, BrowserName: "Safari", BrowserVersion: []string{"26.0", "18.6"}[rankPosition], MacOSVersion: "macOS-test", MachineRef: "mac-runner-a",
|
||||
ExecutionMode: "SAFARIDRIVER", StartedAt: startedAt.Add(time.Duration(rankPosition) * time.Hour), EndedAt: startedAt.Add(time.Duration(rankPosition+1) * time.Hour), Results: results,
|
||||
})
|
||||
}
|
||||
return Capture{
|
||||
SchemaVersion: CaptureSchema, EvidenceSource: source, CandidateVersion: "0.63.0-rc.1", BuildDigest: "sha256:" + strings.Repeat("a", 64), Environment: environment,
|
||||
ReleaseReferenceRef: "apple-release-baseline:2026-08-25", ChangeTicketRef: "change-20260825", ExecutedByRef: "qa-executor", AttestedByRef: "qa-reviewer",
|
||||
AttestedAt: collectedAt.Add(-30 * time.Minute), CollectedAt: collectedAt, Runs: runs,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user