展示URL工作流hard block锁
结论:release URL workflow 已展示 hard-block runtime lock 与 promoted blocked family count;baseline 保持 28/28/131/0,Python remap、tool DB、external user-M 仍 locked。
This commit is contained in:
@@ -2562,6 +2562,9 @@ export function createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel
|
|||||||
const missing = arrayOrEmpty(workflow?.missing);
|
const missing = arrayOrEmpty(workflow?.missing);
|
||||||
const promotionCandidateSummary = objectOrEmpty(workflow?.diagnosticsArtifact?.virtualHalPromotionCandidateSummary);
|
const promotionCandidateSummary = objectOrEmpty(workflow?.diagnosticsArtifact?.virtualHalPromotionCandidateSummary);
|
||||||
const promotionCandidateSummaryReady = promotionCandidateSummary.ready === true;
|
const promotionCandidateSummaryReady = promotionCandidateSummary.ready === true;
|
||||||
|
const validationRows = arrayOrEmpty(workflow?.validation?.rows);
|
||||||
|
const hardBlockRuntimeLock = validationRows.find(({ id }) => id === "hard-block-runtime-lock")?.value;
|
||||||
|
const promotedBlockedFamilyCount = validationRows.find(({ id }) => id === "promoted-blocked-family-count")?.value;
|
||||||
const ready = workflow?.ready === true;
|
const ready = workflow?.ready === true;
|
||||||
const statusText = ready ? "Ready" : "Blocked";
|
const statusText = ready ? "Ready" : "Blocked";
|
||||||
const detailText = ready
|
const detailText = ready
|
||||||
@@ -2671,6 +2674,16 @@ export function createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel
|
|||||||
label: "Candidate inventory baseline",
|
label: "Candidate inventory baseline",
|
||||||
value: promotionCandidateSummary.inventoryBaseline ?? "not provided",
|
value: promotionCandidateSummary.inventoryBaseline ?? "not provided",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "hard-block-runtime-lock",
|
||||||
|
label: "Hard-block runtime lock",
|
||||||
|
value: hardBlockRuntimeLock ?? "not provided",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "promoted-blocked-family-count",
|
||||||
|
label: "Promoted blocked families",
|
||||||
|
value: promotedBlockedFamilyCount ?? "not provided",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "saved-session-diagnostics",
|
id: "saved-session-diagnostics",
|
||||||
label: "Saved-session diagnostics",
|
label: "Saved-session diagnostics",
|
||||||
|
|||||||
@@ -2557,6 +2557,11 @@ export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWo
|
|||||||
?? {}
|
?? {}
|
||||||
);
|
);
|
||||||
const promotionCandidateSummaryReady = promotionCandidateSummary.ready === true;
|
const promotionCandidateSummaryReady = promotionCandidateSummary.ready === true;
|
||||||
|
const validationRows = Array.isArray(workflow?.validation?.rows)
|
||||||
|
? workflow.validation.rows
|
||||||
|
: (Array.isArray(workflow?.validation?.validation?.rows) ? workflow.validation.validation.rows : []);
|
||||||
|
const hardBlockRuntimeLock = validationRows.find(({ id }) => id === "hard-block-runtime-lock")?.value;
|
||||||
|
const promotedBlockedFamilyCount = validationRows.find(({ id }) => id === "promoted-blocked-family-count")?.value;
|
||||||
const ready = workflow?.ready === true;
|
const ready = workflow?.ready === true;
|
||||||
const promotionFamilyRows = (
|
const promotionFamilyRows = (
|
||||||
workflow?.validation?.virtualHalPromotionFamilyRows
|
workflow?.validation?.virtualHalPromotionFamilyRows
|
||||||
@@ -2660,6 +2665,16 @@ export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWo
|
|||||||
label: "Candidate inventory baseline",
|
label: "Candidate inventory baseline",
|
||||||
value: promotionCandidateSummary.inventoryBaseline ?? "not provided",
|
value: promotionCandidateSummary.inventoryBaseline ?? "not provided",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "hard-block-runtime-lock",
|
||||||
|
label: "Hard-block runtime lock",
|
||||||
|
value: hardBlockRuntimeLock ?? "not provided",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "promoted-blocked-family-count",
|
||||||
|
label: "Promoted blocked families",
|
||||||
|
value: promotedBlockedFamilyCount ?? "not provided",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "virtual-hal-promotion-families",
|
id: "virtual-hal-promotion-families",
|
||||||
label: "Virtual HAL promotion families",
|
label: "Virtual HAL promotion families",
|
||||||
|
|||||||
@@ -981,9 +981,14 @@ TOOL_TABLE = browser-shell-tool.tbl
|
|||||||
);
|
);
|
||||||
assertEqual(
|
assertEqual(
|
||||||
workflowOverviewReleaseArtifactUrlWorkflowRenderResult.rowCount,
|
workflowOverviewReleaseArtifactUrlWorkflowRenderResult.rowCount,
|
||||||
8,
|
10,
|
||||||
"shell workflow overview release artifact URL workflow render rows",
|
"shell workflow overview release artifact URL workflow render rows",
|
||||||
);
|
);
|
||||||
|
assertEqual(
|
||||||
|
workflowOverviewReleaseArtifactUrlWorkflowRenderResult.rowIds.includes("hard-block-runtime-lock"),
|
||||||
|
true,
|
||||||
|
"shell workflow overview release artifact URL workflow hard-block lock row",
|
||||||
|
);
|
||||||
assertEqual(
|
assertEqual(
|
||||||
workflowOverviewReleaseArtifactUrlWorkflowRenderResult.rowIds.includes("mount-result"),
|
workflowOverviewReleaseArtifactUrlWorkflowRenderResult.rowIds.includes("mount-result"),
|
||||||
true,
|
true,
|
||||||
|
|||||||
@@ -597,7 +597,7 @@
|
|||||||
);
|
);
|
||||||
assertEqual(
|
assertEqual(
|
||||||
releaseArtifactUrlWorkflowRenderResult.rowCount,
|
releaseArtifactUrlWorkflowRenderResult.rowCount,
|
||||||
21,
|
23,
|
||||||
"workflow overview release artifact URL workflow render rows",
|
"workflow overview release artifact URL workflow render rows",
|
||||||
);
|
);
|
||||||
assertEqual(
|
assertEqual(
|
||||||
@@ -650,6 +650,16 @@
|
|||||||
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
||||||
"workflow overview release artifact URL workflow candidate baseline",
|
"workflow overview release artifact URL workflow candidate baseline",
|
||||||
);
|
);
|
||||||
|
assertEqual(
|
||||||
|
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
|
||||||
|
"locked (3 families)",
|
||||||
|
"workflow overview release artifact URL workflow hard-block lock",
|
||||||
|
);
|
||||||
|
assertEqual(
|
||||||
|
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "promoted-blocked-family-count")?.value,
|
||||||
|
"0 promoted",
|
||||||
|
"workflow overview release artifact URL workflow promoted blocked count",
|
||||||
|
);
|
||||||
assertEqual(
|
assertEqual(
|
||||||
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("saved-session-diagnostics"),
|
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("saved-session-diagnostics"),
|
||||||
true,
|
true,
|
||||||
|
|||||||
@@ -178,6 +178,14 @@ assert.equal(
|
|||||||
readySummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
|
readySummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
|
||||||
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
||||||
);
|
);
|
||||||
|
assert.equal(
|
||||||
|
readySummary.rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
|
||||||
|
"locked (3 families)",
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
readySummary.rows.find(({ id }) => id === "promoted-blocked-family-count")?.value,
|
||||||
|
"0 promoted",
|
||||||
|
);
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
readySummary.rows
|
readySummary.rows
|
||||||
.filter(({ id }) => expectedPromotionFamilyRows.some(([familyId]) => familyId === id))
|
.filter(({ id }) => expectedPromotionFamilyRows.some(([familyId]) => familyId === id))
|
||||||
@@ -206,6 +214,8 @@ assert.deepEqual(
|
|||||||
["virtual-hal-promotion-source-file-count", "17 source files"],
|
["virtual-hal-promotion-source-file-count", "17 source files"],
|
||||||
["virtual-hal-promotion-browser-diagnostics-count", "8 diagnostics-ready"],
|
["virtual-hal-promotion-browser-diagnostics-count", "8 diagnostics-ready"],
|
||||||
["virtual-hal-promotion-candidate-baseline", "executed=28 passed=28 skipped=131 unexpected_fail=0"],
|
["virtual-hal-promotion-candidate-baseline", "executed=28 passed=28 skipped=131 unexpected_fail=0"],
|
||||||
|
["hard-block-runtime-lock", "locked (3 families)"],
|
||||||
|
["promoted-blocked-family-count", "0 promoted"],
|
||||||
["saved-session-diagnostics", "ready"],
|
["saved-session-diagnostics", "ready"],
|
||||||
["next-command", "none"],
|
["next-command", "none"],
|
||||||
["missing", "none"],
|
["missing", "none"],
|
||||||
|
|||||||
@@ -471,6 +471,8 @@ assert.deepEqual(
|
|||||||
["virtual-hal-promotion-source-file-count", "not provided"],
|
["virtual-hal-promotion-source-file-count", "not provided"],
|
||||||
["virtual-hal-promotion-browser-diagnostics-count", "not provided"],
|
["virtual-hal-promotion-browser-diagnostics-count", "not provided"],
|
||||||
["virtual-hal-promotion-candidate-baseline", "not provided"],
|
["virtual-hal-promotion-candidate-baseline", "not provided"],
|
||||||
|
["hard-block-runtime-lock", "locked (3 families)"],
|
||||||
|
["promoted-blocked-family-count", "0 promoted"],
|
||||||
["saved-session-diagnostics", "not requested"],
|
["saved-session-diagnostics", "not requested"],
|
||||||
["next-command", "none"],
|
["next-command", "none"],
|
||||||
["missing", "none"],
|
["missing", "none"],
|
||||||
|
|||||||
@@ -1797,7 +1797,7 @@ const releaseArtifactMountResult = mountIniPanelShellWorkflowOverviewReleaseRead
|
|||||||
rowsNode: releaseArtifactRowsNode,
|
rowsNode: releaseArtifactRowsNode,
|
||||||
});
|
});
|
||||||
assert.equal(releaseArtifactRenderResult.rendered, true);
|
assert.equal(releaseArtifactRenderResult.rendered, true);
|
||||||
assert.equal(releaseArtifactRenderResult.rowCount, 17);
|
assert.equal(releaseArtifactRenderResult.rowCount, 20);
|
||||||
assert.equal(releaseArtifactRenderResult.dataset.handoffScope, "workflow-overview-release-readiness-artifact");
|
assert.equal(releaseArtifactRenderResult.dataset.handoffScope, "workflow-overview-release-readiness-artifact");
|
||||||
assert.equal(
|
assert.equal(
|
||||||
releaseArtifactRenderResult.rowIds.includes("gate-execution-manifest"),
|
releaseArtifactRenderResult.rowIds.includes("gate-execution-manifest"),
|
||||||
@@ -1828,7 +1828,7 @@ assert.equal(
|
|||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
assert.equal(releaseArtifactMountResult.ready, true);
|
assert.equal(releaseArtifactMountResult.ready, true);
|
||||||
assert.equal(releaseArtifactMountResult.renderResult.rowCount, 17);
|
assert.equal(releaseArtifactMountResult.renderResult.rowCount, 20);
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{").missing,
|
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{").missing,
|
||||||
["artifact-json"],
|
["artifact-json"],
|
||||||
@@ -1887,7 +1887,7 @@ assert.equal(
|
|||||||
);
|
);
|
||||||
assert.equal(releaseArtifactUrlWorkflow.renderState.statusLine, "Ready: No blocking reasons");
|
assert.equal(releaseArtifactUrlWorkflow.renderState.statusLine, "Ready: No blocking reasons");
|
||||||
assert.equal(releaseArtifactUrlWorkflow.mountResult.ready, true);
|
assert.equal(releaseArtifactUrlWorkflow.mountResult.ready, true);
|
||||||
assert.equal(releaseArtifactUrlWorkflow.mountResult.renderResult.rowCount, 17);
|
assert.equal(releaseArtifactUrlWorkflow.mountResult.renderResult.rowCount, 20);
|
||||||
const releaseArtifactUrlWorkflowSummary =
|
const releaseArtifactUrlWorkflowSummary =
|
||||||
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
|
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
|
||||||
releaseArtifactUrlWorkflow,
|
releaseArtifactUrlWorkflow,
|
||||||
@@ -1955,6 +1955,14 @@ assert.equal(
|
|||||||
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
|
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
|
||||||
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
||||||
);
|
);
|
||||||
|
assert.equal(
|
||||||
|
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
|
||||||
|
"locked (3 families)",
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "promoted-blocked-family-count")?.value,
|
||||||
|
"0 promoted",
|
||||||
|
);
|
||||||
const promotionCandidateDrilldownViewModel =
|
const promotionCandidateDrilldownViewModel =
|
||||||
createIniPanelShellWorkflowOverviewPromotionCandidateDrilldownViewModel(
|
createIniPanelShellWorkflowOverviewPromotionCandidateDrilldownViewModel(
|
||||||
releaseArtifactUrlWorkflowSummary,
|
releaseArtifactUrlWorkflowSummary,
|
||||||
@@ -2577,7 +2585,7 @@ const releaseArtifactUrlWorkflowMountResult =
|
|||||||
rowsNode: releaseArtifactUrlWorkflowRowsNode,
|
rowsNode: releaseArtifactUrlWorkflowRowsNode,
|
||||||
});
|
});
|
||||||
assert.equal(releaseArtifactUrlWorkflowRenderResult.rendered, true);
|
assert.equal(releaseArtifactUrlWorkflowRenderResult.rendered, true);
|
||||||
assert.equal(releaseArtifactUrlWorkflowRenderResult.rowCount, 25);
|
assert.equal(releaseArtifactUrlWorkflowRenderResult.rowCount, 27);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("browser-diagnostics"),
|
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("browser-diagnostics"),
|
||||||
true,
|
true,
|
||||||
@@ -2595,7 +2603,7 @@ assert.equal(
|
|||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
assert.equal(releaseArtifactUrlWorkflowMountResult.ready, true);
|
assert.equal(releaseArtifactUrlWorkflowMountResult.ready, true);
|
||||||
assert.equal(releaseArtifactUrlWorkflowMountResult.renderResult.rowCount, 25);
|
assert.equal(releaseArtifactUrlWorkflowMountResult.renderResult.rowCount, 27);
|
||||||
const releaseArtifactUrlWorkflowMissingDom = await loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl({
|
const releaseArtifactUrlWorkflowMissingDom = await loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl({
|
||||||
artifactUrl: "/project-release-readiness.json",
|
artifactUrl: "/project-release-readiness.json",
|
||||||
fetchRef: async () => ({
|
fetchRef: async () => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user