新增 release artifact URL workflow summary view model

This commit is contained in:
2026-06-16 11:44:11 +08:00
parent 4970d156c1
commit e00c7b038b
18 changed files with 225 additions and 6 deletions

View File

@@ -169,6 +169,10 @@ when the shell should fetch the artifact JSON URL, validate it, and optionally
mount the render-state into caller-owned DOM without executing gates. The URL
workflow result includes `validationSummaryViewModel` so callers can show
stable validation status and rows from the same fetch.
Use `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel()` or
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel()`
when the shell needs one stable status line and dashboard rows for the whole
artifact URL fetch/validate/render/mount workflow.
Use `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel()` or
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel()`
when the shell needs stable artifact validation status text and dashboard rows

View File

@@ -62,7 +62,10 @@ continuation records are in `../text14.txt`.
can also call
`linuxCncIniPanelWorkflowOverviewApi.loadWorkflowOverviewReleaseReadinessArtifactUrl()`
to fetch the artifact URL, validate it, and optionally mount the resulting
read-only render state. When the outer shell needs DOM output, the workflow
read-only render state. That URL workflow includes a validation summary
view-model and can be summarized with
`getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel()`.
When the outer shell needs DOM output, the workflow
overview iframe also exposes
display, render-state, DOM readiness, renderer, and mount helpers for the
same release readiness artifact validation.

View File

@@ -45,6 +45,7 @@ import {
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createLinuxCncIniSdk,
createLinuxCncInterpSdk,
@@ -301,6 +302,8 @@ for external browser shells:
browser or shell should fetch the artifact JSON URL, validate it, and
optionally mount the resulting render-state into caller-owned DOM. The URL
workflow result includes `validationSummaryViewModel` for dashboards.
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel()`
turns the full URL workflow result into stable status text and rows.
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel()`,

View File

@@ -103,6 +103,7 @@ export {
createIniPanelShellWorkflowOverviewEmbeddingRenderState,
createIniPanelShellWorkflowOverviewEmbeddingReport,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,

View File

@@ -300,6 +300,9 @@
loadWorkflowOverviewReleaseReadinessArtifactUrl: (options) => (
shellViewModel.loadWorkflowOverviewReleaseReadinessArtifactUrl(options)
),
getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel: (workflow) => (
shellViewModel.createWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(workflow)
),
getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel: (validation) => (
shellViewModel.createWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(validation)
),

View File

@@ -197,6 +197,7 @@ export function createIniPanelLaunchApiManifest(entries = getVisibleIniPanelEntr
"getWorkflowOverviewReadiness",
"mountWorkflowOverviewEmbedding",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewEmbeddingReport",
"getWorkflowOverviewEmbeddingDisplayViewModel",
@@ -1879,6 +1880,7 @@ export function createIniPanelShellWorkflowOverviewContract() {
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
@@ -2048,6 +2050,61 @@ export async function loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactU
}
}
export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
workflow = {},
) {
const missing = Array.isArray(workflow?.missing) ? workflow.missing : [];
const ready = workflow?.ready === true;
const statusText = ready ? "Ready" : "Blocked";
const detailText = ready
? "Artifact URL workflow complete"
: (missing.length > 0 ? missing.join(", ") : workflow?.error ?? "artifact URL workflow blocked");
return {
apiName: "ini-panel-shell-workflow-overview-release-readiness-artifact-url-workflow-summary-view-model",
viewModelVersion: 1,
phase: ready ? "ready" : "blocked",
ready,
title: "Release artifact URL workflow",
statusText,
detailText,
statusLine: `${statusText}: ${detailText}`,
rows: [
{
id: "artifact-url",
label: "Artifact URL",
value: workflow?.artifactUrl || "missing",
},
{
id: "http-status",
label: "HTTP status",
value: workflow?.httpStatus == null ? "none" : String(workflow.httpStatus),
},
{
id: "validation-summary",
label: "Validation summary",
value: workflow?.validationSummaryViewModel?.statusLine ?? "missing",
},
{
id: "render-state",
label: "Render state",
value: workflow?.renderState?.statusLine ?? "missing",
},
{
id: "mount-result",
label: "Mount result",
value: workflow?.mountResult
? (workflow.mountResult.ready ? "ready" : workflow.mountResult.statusLine)
: "not requested",
},
{
id: "missing",
label: "Missing workflow evidence",
value: missing.length > 0 ? missing.join(", ") : "none",
},
],
};
}
export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(
validation = validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{}"),
) {
@@ -3292,6 +3349,8 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
createWorkflowOverviewReadiness: createIniPanelShellWorkflowOverviewReadiness,
createWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel:
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel:
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
loadWorkflowOverviewReleaseReadinessArtifactUrl:
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
mountWorkflowOverviewEmbedding: mountIniPanelShellWorkflowOverviewEmbedding,

View File

@@ -107,6 +107,7 @@
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
@@ -148,6 +149,9 @@
loadWorkflowOverviewReleaseReadinessArtifactUrl: (options) => (
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl(options)
),
getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel: (workflow) => (
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(workflow)
),
getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel: (validation) => (
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(validation)
),

View File

@@ -116,6 +116,7 @@ TOOL_TABLE = browser-shell-tool.tbl
!launchApi?.getWorkflowOverviewReadiness ||
!launchApi?.mountWorkflowOverviewEmbedding ||
!launchApi?.loadWorkflowOverviewReleaseReadinessArtifactUrl ||
!launchApi?.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel ||
!launchApi?.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel ||
!launchApi?.getWorkflowOverviewEmbeddingReport ||
!launchApi?.getWorkflowOverviewEmbeddingDisplayViewModel ||
@@ -372,6 +373,14 @@ TOOL_TABLE = browser-shell-tool.tbl
.loadWorkflowOverviewReleaseReadinessArtifactUrl({
artifactUrl: "../../tests/fixtures/project-release-readiness-ready.json",
});
const workflowOverviewReleaseArtifactUrlWorkflowSummary = workflowOverviewApi
.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
workflowOverviewReleaseArtifactUrlWorkflow,
);
const launchReleaseArtifactUrlWorkflowSummary = launchApi
.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
launchReleaseArtifactUrlWorkflow,
);
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
overviewApi: workflowOverviewApi,
});
@@ -478,6 +487,11 @@ TOOL_TABLE = browser-shell-tool.tbl
"Ready: Artifact evidence complete",
"shell workflow overview release artifact URL workflow summary",
);
assertEqual(
workflowOverviewReleaseArtifactUrlWorkflowSummary.statusLine,
"Ready: Artifact URL workflow complete",
"shell workflow overview release artifact URL workflow summary view model",
);
assertEqual(
workflowOverviewReleaseArtifactUrlWorkflow.mountResult.ready,
true,
@@ -493,6 +507,11 @@ TOOL_TABLE = browser-shell-tool.tbl
"Ready: Artifact evidence complete",
"launch release artifact URL workflow summary",
);
assertEqual(
launchReleaseArtifactUrlWorkflowSummary.statusLine,
workflowOverviewReleaseArtifactUrlWorkflowSummary.statusLine,
"launch release artifact URL workflow summary view model",
);
assertEqual(
document.querySelector("[data-external-release-artifact-status]").textContent,
"Ready: No blocking reasons",

View File

@@ -36,6 +36,7 @@
!workflowApi?.getWorkflowOverviewPersistenceSummary ||
!workflowApi?.validateWorkflowOverviewReleaseReadinessArtifactJson ||
!workflowApi?.loadWorkflowOverviewReleaseReadinessArtifactUrl ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactRenderState ||
@@ -257,6 +258,8 @@
artifactUrl: "../../tests/fixtures/project-release-readiness-ready.json",
mount: true,
});
const releaseArtifactUrlWorkflowSummary = workflowApi
.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(releaseArtifactUrlWorkflow);
assertEqual(releaseArtifactDomReadinessReady.ready, true, "workflow overview release artifact DOM readiness");
assertEqual(releaseArtifactRenderResult.rendered, true, "workflow overview release artifact render result");
assertEqual(releaseArtifactRenderResult.rowCount, 6, "workflow overview release artifact render row count");
@@ -269,6 +272,11 @@
"Ready: Artifact evidence complete",
"workflow overview release artifact URL workflow summary",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.statusLine,
"Ready: Artifact URL workflow complete",
"workflow overview release artifact URL workflow summary view model",
);
assertEqual(releaseArtifactUrlWorkflow.mountResult.ready, true, "workflow overview release artifact URL workflow mount");
assertEqual(releaseArtifactStatus.textContent, releaseArtifactRenderState.statusLine, "workflow overview release artifact rendered status");
assertEqual(

View File

@@ -27,7 +27,10 @@
try {
const workflowDoc = await loadWorkflowOverviewFrame();
const workflowApi = workflowDoc.defaultView.linuxCncIniPanelWorkflowOverviewApi;
if (!workflowApi?.loadWorkflowOverviewReleaseReadinessArtifactUrl) {
if (
!workflowApi?.loadWorkflowOverviewReleaseReadinessArtifactUrl ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel
) {
throw new Error("workflow overview API did not expose release artifact URL workflow");
}
@@ -56,6 +59,8 @@
artifactUrl: "../../tests/fixtures/project-release-readiness-ready.json",
mount: true,
});
const readyWorkflowSummary = workflowApi
.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(readyWorkflow);
assertEqual(
readyWorkflow.apiName,
"ini-panel-shell-workflow-overview-release-readiness-artifact-url-workflow",
@@ -69,6 +74,11 @@
"Ready: Artifact evidence complete",
"ready workflow validation summary",
);
assertEqual(
readyWorkflowSummary.statusLine,
"Ready: Artifact URL workflow complete",
"ready workflow summary view model",
);
assertEqual(readyWorkflow.renderState.statusLine, "Ready: No blocking reasons", "ready workflow status");
assertEqual(readyWorkflow.mountResult.ready, true, "ready workflow mount readiness");
assertEqual(readyWorkflow.mountResult.renderResult.rowCount, 6, "ready workflow mount rows");

View File

@@ -42,6 +42,7 @@ for (const phrase of [
"embedded gate manifest, result matrix, and action plan",
"validateWorkflowOverviewReleaseReadinessArtifactJson()",
"loadWorkflowOverviewReleaseReadinessArtifactUrl()",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel()",
"render-state",
"DOM readiness",
"createIniPanelShellApiSurfaceInventory()",

View File

@@ -26,6 +26,7 @@ import {
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createLinuxCncIniSdk,
createLinuxCncInterpSdk,
@@ -166,6 +167,10 @@ const requiredExports = [
"createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness",
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
@@ -365,6 +370,12 @@ assert.equal(
releaseReadinessArtifactUrlWorkflow.validationSummaryViewModel.statusLine,
"Ready: Artifact evidence complete",
);
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
releaseReadinessArtifactUrlWorkflow,
).statusLine,
"Ready: Artifact URL workflow complete",
);
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(

View File

@@ -164,6 +164,7 @@ const requiredShellExports = [
"mountIniPanelShellWorkflowOverviewEmbeddingMountState",
"validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson",
"loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState",

View File

@@ -83,6 +83,7 @@ assert.deepEqual(manifest, {
"getWorkflowOverviewReadiness",
"mountWorkflowOverviewEmbedding",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewEmbeddingReport",
"getWorkflowOverviewEmbeddingDisplayViewModel",
@@ -244,6 +245,7 @@ assert.match(launchText, /\bgetWorkflowOverviewContract\b/);
assert.match(launchText, /\bgetWorkflowOverviewReadiness\b/);
assert.match(launchText, /\bmountWorkflowOverviewEmbedding\b/);
assert.match(launchText, /\bloadWorkflowOverviewReleaseReadinessArtifactUrl\b/);
assert.match(launchText, /\bgetWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel\b/);
assert.match(launchText, /\bgetWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingReport\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingDisplayViewModel\b/);

View File

@@ -53,6 +53,7 @@ import {
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
@@ -188,7 +189,7 @@ assert.deepEqual(readiness, {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 60,
launchMethods: 61,
controlPageMethods: 11,
persistenceCapabilities: 3,
},
@@ -251,7 +252,7 @@ assert.deepEqual(handoffSummary, {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 60,
launchMethods: 61,
controlPageMethods: 11,
persistenceCapabilities: 3,
},
@@ -791,6 +792,7 @@ assert.deepEqual(createIniPanelShellWorkflowOverviewContract(), {
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
@@ -837,6 +839,7 @@ assert.equal(typeof renderIniPanelShellWorkflowOverviewEmbeddingMountState, "fun
assert.equal(typeof mountIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
assert.equal(typeof validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson, "function");
assert.equal(typeof loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState, "function");
@@ -852,6 +855,10 @@ assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel().phase,
"blocked",
);
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel().phase,
"blocked",
);
assert.deepEqual(
createIniPanelShellWorkflowOverviewReadiness({
overviewApi: {
@@ -866,6 +873,7 @@ assert.deepEqual(
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
@@ -1292,7 +1300,7 @@ assert.deepEqual(createIniPanelShellIntegrationReadiness(blockedManifest), {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 60,
launchMethods: 61,
controlPageMethods: 11,
persistenceCapabilities: 3,
},

View File

@@ -58,6 +58,7 @@ import {
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
@@ -690,6 +691,7 @@ assert.deepEqual(shellViewModel.shellWorkflowOverviewContract, {
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
@@ -1413,6 +1415,18 @@ assert.equal(
assert.equal(releaseArtifactUrlWorkflow.renderState.statusLine, "Ready: No blocking reasons");
assert.equal(releaseArtifactUrlWorkflow.mountResult.ready, true);
assert.equal(releaseArtifactUrlWorkflow.mountResult.renderResult.rowCount, 6);
const releaseArtifactUrlWorkflowSummary =
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
releaseArtifactUrlWorkflow,
);
assert.equal(
releaseArtifactUrlWorkflowSummary.statusLine,
"Ready: Artifact URL workflow complete",
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "validation-summary")?.value,
"Ready: Artifact evidence complete",
);
const releaseArtifactUrlWorkflowMissingDom = await loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl({
artifactUrl: "/project-release-readiness.json",
fetchRef: async () => ({
@@ -1452,6 +1466,7 @@ const workflowOverviewApi = {
getWorkflowOverviewPersistenceSummary: () => shellViewModel.shellPersistenceSummary,
validateWorkflowOverviewReleaseReadinessArtifactJson: () => ({ ready: true }),
loadWorkflowOverviewReleaseReadinessArtifactUrl: loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel: () => releaseArtifactUrlWorkflowSummary,
getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel: () => releaseArtifactValidationSummary,
getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel: () => releaseArtifactDisplay,
getWorkflowOverviewReleaseReadinessArtifactRenderState: () => releaseArtifactRenderState,