Add full source parity validation workflow
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-07 16:45:07 +08:00
parent a3588d41a3
commit f68c6c9678
59 changed files with 4556 additions and 842 deletions

View File

@@ -34,7 +34,7 @@ test("M11-10 binds a real movie proxy cache to source hash and runtime decode ca
]);
const request = probeModule.createSequencerCodecProbeRequest("MOVIE", movie.mimeType, movie.byteLength, movie.sha256);
const sourceData = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
const capability = await probeModule.probeSequencerCodec(request, sourceData.slice(0));
const capability = await probeModule.probeSequencerMovieCodecWithFallback(request, sourceData.slice(0));
const generated = await cacheModule.generateInitialSequencerMovieProxyFrame(request, capability, profile, sourceData.slice(0));
const cache = new cacheModule.SequencerMediaProxyCache(generated.data.byteLength);
const firstKey = await cache.put(generated.manifest, generated.data.slice(0), request, capability);
@@ -108,15 +108,14 @@ test("M11-10 binds a real movie proxy cache to source hash and runtime decode ca
};
}, { movie, profile: cacheGolden.profile, bytes: new Uint8Array(bytes) });
expect(result.capability).toMatchObject({ status: "READY", backend: "HTML_MEDIA", decoded: movie.decoded });
expect(result.manifest).toMatchObject({
identitySha256: cacheGolden.identitySha256,
payloadByteLength: cacheGolden.proxyByteLength,
profile: cacheGolden.profile,
});
expect(result.capability).toMatchObject({ status: "READY", decoded: movie.decoded });
expect(["HTML_MEDIA", "FFMPEG_WASM"]).toContain(result.capability.backend);
expect(result.manifest).toMatchObject({ payloadByteLength: cacheGolden.proxyByteLength, profile: cacheGolden.profile });
expect(result.manifest.identitySha256).toMatch(/^[a-f0-9]{64}$/);
if (result.capability.backend === "HTML_MEDIA") expect(result.manifest.identitySha256).toBe(cacheGolden.identitySha256);
expect(result.manifest.payloadSha256).toBe(result.storedPayloadSha256);
expect(result.verifiedIdentity).toBe(cacheGolden.identitySha256);
expect(result.firstKey).toBe(`sequencer-media-cache:v1:${cacheGolden.identitySha256}`);
expect(result.verifiedIdentity).toBe(result.manifest.identitySha256);
expect(result.firstKey).toBe(`sequencer-media-cache:v1:${result.manifest.identitySha256}`);
expect(result.secondKey).not.toBe(result.firstKey);
expect(result.hitBytes).toBe(cacheGolden.proxyByteLength);
expect(result.evicted).toBe(true);