推进 INI 面板 workflow overview embedding report
This commit is contained in:
106
text13.txt
106
text13.txt
@@ -1205,3 +1205,109 @@ host_wasm_opfs_browser_smokes=ok
|
|||||||
`createIniPanelShellWorkflowOverviewEmbeddingReport()` 或等价 helper,把 overview iframe
|
`createIniPanelShellWorkflowOverviewEmbeddingReport()` 或等价 helper,把 overview iframe
|
||||||
readiness、missing methods、mount phase、render row count 和 error 合并成 display-ready report,
|
readiness、missing methods、mount phase、render row count 和 error 合并成 display-ready report,
|
||||||
便于外部 shell 在不能嵌入 overview 时直接显示原因;仍保持只读,不新增控制按钮,不解析 G-code。
|
便于外部 shell 在不能嵌入 overview 时直接显示原因;仍保持只读,不新增控制按钮,不解析 G-code。
|
||||||
|
|
||||||
|
十一、2026-06-15 继续执行记录:INI panel workflow overview embedding report
|
||||||
|
|
||||||
|
本轮按 `text13.txt` 执行,不扩展 `text12.txt`。继续推进 browser/UI workflow 与可执行
|
||||||
|
gate,新增只读 workflow-overview embedding report,把 iframe API readiness、缺失方法、
|
||||||
|
mount phase、render row count 和 error 合并成外部 shell 可直接显示的诊断。
|
||||||
|
|
||||||
|
完成内容:
|
||||||
|
|
||||||
|
- `ui-shell.js` 新增 `createIniPanelShellWorkflowOverviewEmbeddingReport()`;
|
||||||
|
- embedding report 输出:
|
||||||
|
- `apiName: "ini-panel-shell-workflow-overview-embedding-report"`;
|
||||||
|
- `reportVersion: 1`;
|
||||||
|
- `phase`;
|
||||||
|
- `ready`;
|
||||||
|
- `overviewReady`;
|
||||||
|
- `embeddingReady`;
|
||||||
|
- `mountReady`;
|
||||||
|
- `statusLine`;
|
||||||
|
- `pageHref`;
|
||||||
|
- `contract`;
|
||||||
|
- `missingMethods`;
|
||||||
|
- `mountPhase`;
|
||||||
|
- `renderRowCount`;
|
||||||
|
- `error`;
|
||||||
|
- `blockingReasons`;
|
||||||
|
- `rows`;
|
||||||
|
- report rows 固定覆盖:
|
||||||
|
- `overview-api`;
|
||||||
|
- `missing-methods`;
|
||||||
|
- `embedding-ready`;
|
||||||
|
- `mount-phase`;
|
||||||
|
- `render-row-count`;
|
||||||
|
- `error`;
|
||||||
|
- `createIniPanelLaunchApiManifest().methods` 新增
|
||||||
|
`getWorkflowOverviewEmbeddingReport`;
|
||||||
|
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
|
||||||
|
`getWorkflowOverviewEmbeddingReport()`;
|
||||||
|
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增
|
||||||
|
`getWorkflowOverviewEmbeddingReport()`;
|
||||||
|
- `verify_ini_panel_ui_shell.mjs` 覆盖:
|
||||||
|
- blocked embedding report 完整 shape;
|
||||||
|
- missing methods report;
|
||||||
|
- thrown mount error report;
|
||||||
|
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API;
|
||||||
|
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、默认 blocked report、
|
||||||
|
launch method count 与文档记录;
|
||||||
|
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API;
|
||||||
|
- `ini_panel_workflow_overview_smoke.html` 校验 workflow overview iframe 自身 report API;
|
||||||
|
- `ini_panel_launch_smoke.html` 校验真实 launch iframe 读取真实 workflow overview iframe 的
|
||||||
|
embedding report;
|
||||||
|
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 读取同一 report;
|
||||||
|
- 未新增控制按钮;
|
||||||
|
- 未执行 action-plan;
|
||||||
|
- 未解析 G-code;
|
||||||
|
- 未解释 canonical events;
|
||||||
|
- 未新增 JS CNC 语义;
|
||||||
|
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||||||
|
LinuxCNC-owned runtime semantics。
|
||||||
|
|
||||||
|
验证已通过:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||||||
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||||||
|
wasm-port/tools/verify_vendor_sync.sh
|
||||||
|
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||||
|
wasm-port/tests/host/verify_host_smokes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
关键输出:
|
||||||
|
|
||||||
|
```text
|
||||||
|
ini_panel_ui_shell_node_smoke=ok
|
||||||
|
ini_panel_launch_api_manifest_node_smoke=ok
|
||||||
|
ini_panel_shell_integration_manifest_node_smoke=ok
|
||||||
|
ini_panel_entry_docs_node_smoke=ok
|
||||||
|
ui_node_smokes=ok
|
||||||
|
browser_ini_opfs_smoke=ok
|
||||||
|
browser_ini_control_page_smoke=ok
|
||||||
|
browser_ini_launch_smoke=ok
|
||||||
|
browser_ini_workflow_overview_smoke=ok
|
||||||
|
browser_ini_shell_integration_workflow_smoke=ok
|
||||||
|
vendor sync up to date
|
||||||
|
standalone CNC semantics guard complete
|
||||||
|
interp_wasm_node_smoke=ok
|
||||||
|
sim_configs_wasm_node_inventory_executed=28
|
||||||
|
sim_configs_wasm_node_inventory_passed=28
|
||||||
|
sim_configs_wasm_node_inventory_skipped=131
|
||||||
|
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||||||
|
host_wasm_opfs_browser_smokes=ok
|
||||||
|
```
|
||||||
|
|
||||||
|
下一步建议:
|
||||||
|
|
||||||
|
继续推进 browser/UI workflow。下一批建议新增一个只读
|
||||||
|
`createIniPanelShellWorkflowOverviewEmbeddingDisplayViewModel()` 或等价 helper,把 embedding
|
||||||
|
report 压成稳定 `title/statusText/detailText/rows`,供 launch 页面、workflow overview 页面或外部
|
||||||
|
shell 直接渲染该 report;仍保持只读,不新增控制按钮,不解析 G-code。
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import {
|
|||||||
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
||||||
createIniPanelShellWorkflowOverviewContract,
|
createIniPanelShellWorkflowOverviewContract,
|
||||||
createIniPanelShellWorkflowOverviewReadiness,
|
createIniPanelShellWorkflowOverviewReadiness,
|
||||||
|
createIniPanelShellWorkflowOverviewEmbeddingReport,
|
||||||
mountIniPanelShellWorkflowOverviewEmbedding,
|
mountIniPanelShellWorkflowOverviewEmbedding,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
@@ -302,7 +303,14 @@ shell needs one structured embedding result containing contract readiness,
|
|||||||
render-state, workflow overview mount result, and any mount error as data. The
|
render-state, workflow overview mount result, and any mount error as data. The
|
||||||
workflow overview page also exposes
|
workflow overview page also exposes
|
||||||
`linuxCncIniPanelWorkflowOverviewApi.mountWorkflowOverviewEmbedding()` for the
|
`linuxCncIniPanelWorkflowOverviewApi.mountWorkflowOverviewEmbedding()` for the
|
||||||
same read-only embedding path from inside the iframe.
|
same read-only embedding path from inside the iframe. Use
|
||||||
|
`createIniPanelShellWorkflowOverviewEmbeddingReport()` or
|
||||||
|
`linuxCncIniPanelLaunchApi.getWorkflowOverviewEmbeddingReport()` when an outer
|
||||||
|
shell needs display-ready diagnostics for overview API readiness, missing
|
||||||
|
methods, embedding readiness, mount phase, render row count, and embedding
|
||||||
|
errors. The workflow overview page also exposes
|
||||||
|
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewEmbeddingReport()` for
|
||||||
|
the same report shape.
|
||||||
Use
|
Use
|
||||||
`renderIniPanelShellSessionHandoffMountState()` or
|
`renderIniPanelShellSessionHandoffMountState()` or
|
||||||
`linuxCncIniPanelLaunchApi.renderShellSessionHandoffMountState()` when an outer
|
`linuxCncIniPanelLaunchApi.renderShellSessionHandoffMountState()` when an outer
|
||||||
|
|||||||
@@ -279,6 +279,9 @@
|
|||||||
mountWorkflowOverviewEmbedding: (options) => (
|
mountWorkflowOverviewEmbedding: (options) => (
|
||||||
shellViewModel.mountWorkflowOverviewEmbedding(options)
|
shellViewModel.mountWorkflowOverviewEmbedding(options)
|
||||||
),
|
),
|
||||||
|
getWorkflowOverviewEmbeddingReport: (embeddingResult, contract) => (
|
||||||
|
shellViewModel.createWorkflowOverviewEmbeddingReport(embeddingResult, contract)
|
||||||
|
),
|
||||||
isSupportedShellSessionHandoffPackage: shellViewModel.isSupportedShellSessionHandoffPackage,
|
isSupportedShellSessionHandoffPackage: shellViewModel.isSupportedShellSessionHandoffPackage,
|
||||||
getLauncherLinks: () => shellViewModel.launcherLinks,
|
getLauncherLinks: () => shellViewModel.launcherLinks,
|
||||||
getControlPageApiMethods: () => shellViewModel.controlPage.browserApiMethods,
|
getControlPageApiMethods: () => shellViewModel.controlPage.browserApiMethods,
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ export function createIniPanelLaunchApiManifest(entries = getVisibleIniPanelEntr
|
|||||||
"getWorkflowOverviewContract",
|
"getWorkflowOverviewContract",
|
||||||
"getWorkflowOverviewReadiness",
|
"getWorkflowOverviewReadiness",
|
||||||
"mountWorkflowOverviewEmbedding",
|
"mountWorkflowOverviewEmbedding",
|
||||||
|
"getWorkflowOverviewEmbeddingReport",
|
||||||
"isSupportedShellSessionHandoffPackage",
|
"isSupportedShellSessionHandoffPackage",
|
||||||
"getLauncherLinks",
|
"getLauncherLinks",
|
||||||
"getControlPageApiMethods",
|
"getControlPageApiMethods",
|
||||||
@@ -1807,6 +1808,86 @@ export function mountIniPanelShellWorkflowOverviewEmbedding({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function createIniPanelShellWorkflowOverviewEmbeddingReport(
|
||||||
|
embeddingResult = mountIniPanelShellWorkflowOverviewEmbedding(),
|
||||||
|
contract = createIniPanelShellWorkflowOverviewContract(),
|
||||||
|
) {
|
||||||
|
const result = embeddingResult && typeof embeddingResult === "object" ? embeddingResult : {};
|
||||||
|
const readiness = result.readiness && typeof result.readiness === "object" ? result.readiness : {};
|
||||||
|
const resultContract = result.contract && typeof result.contract === "object" ? result.contract : contract;
|
||||||
|
const mountResult = result.mountResult && typeof result.mountResult === "object" ? result.mountResult : {};
|
||||||
|
const renderResult = mountResult.renderResult && typeof mountResult.renderResult === "object"
|
||||||
|
? mountResult.renderResult
|
||||||
|
: {};
|
||||||
|
const missingMethods = Array.isArray(readiness.missing) ? [...readiness.missing] : [];
|
||||||
|
const error = result.error ?? mountResult.error ?? null;
|
||||||
|
const overviewReady = readiness.ready === true;
|
||||||
|
const embeddingReady = result.ready === true;
|
||||||
|
const mountPhase = mountResult.phase ?? null;
|
||||||
|
const mountReady = mountResult.ready === true;
|
||||||
|
const renderRowCount = Number.isFinite(renderResult.rowCount) ? renderResult.rowCount : 0;
|
||||||
|
const blockingReasons = [
|
||||||
|
...missingMethods.map((methodName) => `missing:${methodName}`),
|
||||||
|
...(embeddingReady ? [] : [`embedding:${result.phase ?? "blocked"}`]),
|
||||||
|
...(mountPhase && !mountReady ? [`mount:${mountPhase}`] : []),
|
||||||
|
...(error ? [`error:${error}`] : []),
|
||||||
|
];
|
||||||
|
const ready = overviewReady && embeddingReady && mountReady && !error && blockingReasons.length === 0;
|
||||||
|
const statusLine = ready
|
||||||
|
? "Ready: No blocking reasons"
|
||||||
|
: `Blocked: ${blockingReasons.length > 0 ? blockingReasons.join(", ") : "workflow overview embedding unavailable"}`;
|
||||||
|
|
||||||
|
return {
|
||||||
|
apiName: "ini-panel-shell-workflow-overview-embedding-report",
|
||||||
|
reportVersion: 1,
|
||||||
|
phase: ready ? "ready" : "blocked",
|
||||||
|
ready,
|
||||||
|
overviewReady,
|
||||||
|
embeddingReady,
|
||||||
|
mountReady,
|
||||||
|
statusLine,
|
||||||
|
pageHref: result.pageHref ?? resultContract.pageHref ?? null,
|
||||||
|
contract: resultContract,
|
||||||
|
missingMethods,
|
||||||
|
mountPhase,
|
||||||
|
renderRowCount,
|
||||||
|
error,
|
||||||
|
blockingReasons,
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
id: "overview-api",
|
||||||
|
label: "Overview API",
|
||||||
|
value: overviewReady ? "ready" : "blocked",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "missing-methods",
|
||||||
|
label: "Missing methods",
|
||||||
|
value: missingMethods.length === 0 ? "none" : missingMethods.join(", "),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "embedding-ready",
|
||||||
|
label: "Embedding readiness",
|
||||||
|
value: embeddingReady ? "ready" : "blocked",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "mount-phase",
|
||||||
|
label: "Mount phase",
|
||||||
|
value: mountPhase ?? "missing",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "render-row-count",
|
||||||
|
label: "Render row count",
|
||||||
|
value: String(renderRowCount),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "error",
|
||||||
|
label: "Error",
|
||||||
|
value: error ?? "none",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries()) {
|
export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries()) {
|
||||||
const shellIntegrationManifest = createIniPanelShellIntegrationManifest(entries);
|
const shellIntegrationManifest = createIniPanelShellIntegrationManifest(entries);
|
||||||
const shellIntegrationReadiness = createIniPanelShellIntegrationReadiness(shellIntegrationManifest);
|
const shellIntegrationReadiness = createIniPanelShellIntegrationReadiness(shellIntegrationManifest);
|
||||||
@@ -1965,6 +2046,7 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
|
|||||||
createWorkflowOverviewContract: createIniPanelShellWorkflowOverviewContract,
|
createWorkflowOverviewContract: createIniPanelShellWorkflowOverviewContract,
|
||||||
createWorkflowOverviewReadiness: createIniPanelShellWorkflowOverviewReadiness,
|
createWorkflowOverviewReadiness: createIniPanelShellWorkflowOverviewReadiness,
|
||||||
mountWorkflowOverviewEmbedding: mountIniPanelShellWorkflowOverviewEmbedding,
|
mountWorkflowOverviewEmbedding: mountIniPanelShellWorkflowOverviewEmbedding,
|
||||||
|
createWorkflowOverviewEmbeddingReport: createIniPanelShellWorkflowOverviewEmbeddingReport,
|
||||||
isSupportedShellSessionHandoffPackage: isSupportedIniPanelShellSessionHandoffPackage,
|
isSupportedShellSessionHandoffPackage: isSupportedIniPanelShellSessionHandoffPackage,
|
||||||
controlPage: {
|
controlPage: {
|
||||||
browserApiSchema: createControlPageBrowserApiSchema(),
|
browserApiSchema: createControlPageBrowserApiSchema(),
|
||||||
|
|||||||
@@ -89,6 +89,7 @@
|
|||||||
createIniPanelShellSessionHandoffWorkflowRenderState,
|
createIniPanelShellSessionHandoffWorkflowRenderState,
|
||||||
createIniPanelShellWorkflowOverviewContract,
|
createIniPanelShellWorkflowOverviewContract,
|
||||||
createIniPanelShellWorkflowOverviewReadiness,
|
createIniPanelShellWorkflowOverviewReadiness,
|
||||||
|
createIniPanelShellWorkflowOverviewEmbeddingReport,
|
||||||
mountIniPanelShellWorkflowOverviewEmbedding,
|
mountIniPanelShellWorkflowOverviewEmbedding,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
@@ -131,6 +132,9 @@
|
|||||||
...(options ?? {}),
|
...(options ?? {}),
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
|
getWorkflowOverviewEmbeddingReport: (embeddingResult, contract) => (
|
||||||
|
createIniPanelShellWorkflowOverviewEmbeddingReport(embeddingResult, contract)
|
||||||
|
),
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -103,6 +103,7 @@
|
|||||||
!launchApi?.getWorkflowOverviewContract ||
|
!launchApi?.getWorkflowOverviewContract ||
|
||||||
!launchApi?.getWorkflowOverviewReadiness ||
|
!launchApi?.getWorkflowOverviewReadiness ||
|
||||||
!launchApi?.mountWorkflowOverviewEmbedding ||
|
!launchApi?.mountWorkflowOverviewEmbedding ||
|
||||||
|
!launchApi?.getWorkflowOverviewEmbeddingReport ||
|
||||||
!launchApi?.isSupportedShellSessionHandoffPackage ||
|
!launchApi?.isSupportedShellSessionHandoffPackage ||
|
||||||
!launchApi?.getLauncherLinks ||
|
!launchApi?.getLauncherLinks ||
|
||||||
!launchApi?.getControlPageApiMethods
|
!launchApi?.getControlPageApiMethods
|
||||||
@@ -627,7 +628,8 @@
|
|||||||
!workflowOverviewApi?.getWorkflowOverviewRenderState ||
|
!workflowOverviewApi?.getWorkflowOverviewRenderState ||
|
||||||
!workflowOverviewApi?.getWorkflowOverviewContract ||
|
!workflowOverviewApi?.getWorkflowOverviewContract ||
|
||||||
!workflowOverviewApi?.getWorkflowOverviewReadinessFromApi ||
|
!workflowOverviewApi?.getWorkflowOverviewReadinessFromApi ||
|
||||||
!workflowOverviewApi?.mountWorkflowOverviewEmbedding
|
!workflowOverviewApi?.mountWorkflowOverviewEmbedding ||
|
||||||
|
!workflowOverviewApi?.getWorkflowOverviewEmbeddingReport
|
||||||
) {
|
) {
|
||||||
throw new Error("workflow overview API namespace did not expose shell helpers");
|
throw new Error("workflow overview API namespace did not expose shell helpers");
|
||||||
}
|
}
|
||||||
@@ -637,6 +639,9 @@
|
|||||||
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
|
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
|
||||||
overviewApi: workflowOverviewApi,
|
overviewApi: workflowOverviewApi,
|
||||||
});
|
});
|
||||||
|
const workflowOverviewEmbeddingReport = launchApi.getWorkflowOverviewEmbeddingReport(
|
||||||
|
workflowOverviewEmbedding,
|
||||||
|
);
|
||||||
assertEqual(workflowOverviewApi.getWorkflowOverviewContract().pageHref, "./workflow-overview.html", "workflow overview page contract");
|
assertEqual(workflowOverviewApi.getWorkflowOverviewContract().pageHref, "./workflow-overview.html", "workflow overview page contract");
|
||||||
assertEqual(workflowOverviewReadiness.ready, true, "workflow overview readiness");
|
assertEqual(workflowOverviewReadiness.ready, true, "workflow overview readiness");
|
||||||
assertEqual(workflowOverviewReadiness.missing.join(","), "", "workflow overview readiness missing");
|
assertEqual(workflowOverviewReadiness.missing.join(","), "", "workflow overview readiness missing");
|
||||||
@@ -647,6 +652,16 @@
|
|||||||
assertEqual(workflowOverviewEmbedding.renderState.dataset.handoffScope, "workflow", "workflow overview embedding scope");
|
assertEqual(workflowOverviewEmbedding.renderState.dataset.handoffScope, "workflow", "workflow overview embedding scope");
|
||||||
assertEqual(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 5, "workflow overview embedding rows");
|
assertEqual(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 5, "workflow overview embedding rows");
|
||||||
assertEqual(workflowOverviewEmbedding.error, null, "workflow overview embedding error");
|
assertEqual(workflowOverviewEmbedding.error, null, "workflow overview embedding error");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.apiName, "ini-panel-shell-workflow-overview-embedding-report", "workflow overview embedding report API name");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.ready, false, "workflow overview embedding report readiness");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.missingMethods.join(","), "", "workflow overview embedding report missing methods");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.renderRowCount, 5, "workflow overview embedding report row count");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.rows.length, 6, "workflow overview embedding report rows");
|
||||||
|
assertEqual(
|
||||||
|
workflowOverviewApi.getWorkflowOverviewEmbeddingReport(workflowOverviewEmbedding).renderRowCount,
|
||||||
|
workflowOverviewEmbeddingReport.renderRowCount,
|
||||||
|
"workflow overview self embedding report",
|
||||||
|
);
|
||||||
status.textContent = "browser_ini_launch_smoke=ok";
|
status.textContent = "browser_ini_launch_smoke=ok";
|
||||||
console.log("browser_ini_launch_smoke=ok");
|
console.log("browser_ini_launch_smoke=ok");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ TOOL_TABLE = browser-shell-tool.tbl
|
|||||||
!launchApi?.getWorkflowOverviewContract ||
|
!launchApi?.getWorkflowOverviewContract ||
|
||||||
!launchApi?.getWorkflowOverviewReadiness ||
|
!launchApi?.getWorkflowOverviewReadiness ||
|
||||||
!launchApi?.mountWorkflowOverviewEmbedding ||
|
!launchApi?.mountWorkflowOverviewEmbedding ||
|
||||||
|
!launchApi?.getWorkflowOverviewEmbeddingReport ||
|
||||||
!launchApi?.isSupportedShellSessionHandoffPackage
|
!launchApi?.isSupportedShellSessionHandoffPackage
|
||||||
) {
|
) {
|
||||||
throw new Error("launch API namespace did not expose shell integration helpers");
|
throw new Error("launch API namespace did not expose shell integration helpers");
|
||||||
@@ -288,12 +289,19 @@ TOOL_TABLE = browser-shell-tool.tbl
|
|||||||
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
|
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
|
||||||
overviewApi: workflowOverviewApi,
|
overviewApi: workflowOverviewApi,
|
||||||
});
|
});
|
||||||
|
const workflowOverviewEmbeddingReport = launchApi.getWorkflowOverviewEmbeddingReport(
|
||||||
|
workflowOverviewEmbedding,
|
||||||
|
);
|
||||||
assertEqual(workflowOverviewReadiness.ready, true, "shell workflow overview iframe readiness");
|
assertEqual(workflowOverviewReadiness.ready, true, "shell workflow overview iframe readiness");
|
||||||
assertEqual(workflowOverviewReadiness.missing.join(","), "", "shell workflow overview iframe missing methods");
|
assertEqual(workflowOverviewReadiness.missing.join(","), "", "shell workflow overview iframe missing methods");
|
||||||
assertEqual(workflowOverviewEmbedding.apiName, "ini-panel-shell-workflow-overview-embedding", "shell workflow overview embedding API");
|
assertEqual(workflowOverviewEmbedding.apiName, "ini-panel-shell-workflow-overview-embedding", "shell workflow overview embedding API");
|
||||||
assertEqual(workflowOverviewEmbedding.renderState.dataset.handoffScope, "workflow", "shell workflow overview embedding scope");
|
assertEqual(workflowOverviewEmbedding.renderState.dataset.handoffScope, "workflow", "shell workflow overview embedding scope");
|
||||||
assertEqual(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 5, "shell workflow overview embedding rows");
|
assertEqual(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 5, "shell workflow overview embedding rows");
|
||||||
assertEqual(workflowOverviewEmbedding.error, null, "shell workflow overview embedding error");
|
assertEqual(workflowOverviewEmbedding.error, null, "shell workflow overview embedding error");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.ready, false, "shell workflow overview embedding report readiness");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.rows.length, 6, "shell workflow overview embedding report rows");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.renderRowCount, 5, "shell workflow overview embedding report row count");
|
||||||
|
assertEqual(workflowOverviewEmbeddingReport.error, null, "shell workflow overview embedding report error");
|
||||||
|
|
||||||
const controlDoc = await loadFrame(`../../runtime/ui/ini-panel/${controlTarget.href.slice(2)}`);
|
const controlDoc = await loadFrame(`../../runtime/ui/ini-panel/${controlTarget.href.slice(2)}`);
|
||||||
const controlPageApi = controlDoc.defaultView.linuxCncIniPanelControlPageApi;
|
const controlPageApi = controlDoc.defaultView.linuxCncIniPanelControlPageApi;
|
||||||
|
|||||||
@@ -35,7 +35,8 @@
|
|||||||
!workflowApi?.getWorkflowOverviewDomReadiness ||
|
!workflowApi?.getWorkflowOverviewDomReadiness ||
|
||||||
!workflowApi?.renderWorkflowOverview ||
|
!workflowApi?.renderWorkflowOverview ||
|
||||||
!workflowApi?.mountWorkflowOverview ||
|
!workflowApi?.mountWorkflowOverview ||
|
||||||
!workflowApi?.createWorkflowOverviewRenderState
|
!workflowApi?.createWorkflowOverviewRenderState ||
|
||||||
|
!workflowApi?.getWorkflowOverviewEmbeddingReport
|
||||||
) {
|
) {
|
||||||
throw new Error("workflow overview API namespace did not expose overview helpers");
|
throw new Error("workflow overview API namespace did not expose overview helpers");
|
||||||
}
|
}
|
||||||
@@ -47,6 +48,18 @@
|
|||||||
const domReadiness = workflowApi.getWorkflowOverviewDomReadiness();
|
const domReadiness = workflowApi.getWorkflowOverviewDomReadiness();
|
||||||
const renderResult = workflowApi.renderWorkflowOverview();
|
const renderResult = workflowApi.renderWorkflowOverview();
|
||||||
const mountResult = workflowApi.mountWorkflowOverview();
|
const mountResult = workflowApi.mountWorkflowOverview();
|
||||||
|
const embeddingReport = workflowApi.getWorkflowOverviewEmbeddingReport({
|
||||||
|
phase: mountResult.phase,
|
||||||
|
ready: mountResult.ready,
|
||||||
|
pageHref: "./workflow-overview.html",
|
||||||
|
readiness: {
|
||||||
|
ready: true,
|
||||||
|
missing: [],
|
||||||
|
},
|
||||||
|
renderState,
|
||||||
|
mountResult,
|
||||||
|
error: null,
|
||||||
|
});
|
||||||
|
|
||||||
assertEqual(summary.summaryVersion, 1, "workflow overview summary version");
|
assertEqual(summary.summaryVersion, 1, "workflow overview summary version");
|
||||||
assertEqual(displayViewModel.title, "Shell handoff workflow", "workflow overview display title");
|
assertEqual(displayViewModel.title, "Shell handoff workflow", "workflow overview display title");
|
||||||
@@ -58,6 +71,10 @@
|
|||||||
assertEqual(renderResult.rowCount, 5, "workflow overview render row count");
|
assertEqual(renderResult.rowCount, 5, "workflow overview render row count");
|
||||||
assertEqual(mountResult.ready, false, "workflow overview mount result readiness");
|
assertEqual(mountResult.ready, false, "workflow overview mount result readiness");
|
||||||
assertEqual(mountResult.renderResult.rendered, true, "workflow overview mount result rendered");
|
assertEqual(mountResult.renderResult.rendered, true, "workflow overview mount result rendered");
|
||||||
|
assertEqual(embeddingReport.apiName, "ini-panel-shell-workflow-overview-embedding-report", "workflow overview embedding report API name");
|
||||||
|
assertEqual(embeddingReport.ready, false, "workflow overview embedding report readiness");
|
||||||
|
assertEqual(embeddingReport.renderRowCount, 5, "workflow overview embedding report row count");
|
||||||
|
assertEqual(embeddingReport.rows.length, 6, "workflow overview embedding report rows");
|
||||||
assertEqual(
|
assertEqual(
|
||||||
workflowDoc.querySelector("[data-handoff-workflow]").dataset.handoffScope,
|
workflowDoc.querySelector("[data-handoff-workflow]").dataset.handoffScope,
|
||||||
"workflow",
|
"workflow",
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import {
|
|||||||
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
||||||
createIniPanelShellWorkflowOverviewContract,
|
createIniPanelShellWorkflowOverviewContract,
|
||||||
createIniPanelShellWorkflowOverviewReadiness,
|
createIniPanelShellWorkflowOverviewReadiness,
|
||||||
|
createIniPanelShellWorkflowOverviewEmbeddingReport,
|
||||||
mountIniPanelShellWorkflowOverviewEmbedding,
|
mountIniPanelShellWorkflowOverviewEmbedding,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
@@ -120,6 +121,7 @@ const requiredShellExports = [
|
|||||||
"createIniPanelShellSessionHandoffWorkflowDomReadiness",
|
"createIniPanelShellSessionHandoffWorkflowDomReadiness",
|
||||||
"createIniPanelShellWorkflowOverviewContract",
|
"createIniPanelShellWorkflowOverviewContract",
|
||||||
"createIniPanelShellWorkflowOverviewReadiness",
|
"createIniPanelShellWorkflowOverviewReadiness",
|
||||||
|
"createIniPanelShellWorkflowOverviewEmbeddingReport",
|
||||||
"mountIniPanelShellWorkflowOverviewEmbedding",
|
"mountIniPanelShellWorkflowOverviewEmbedding",
|
||||||
"renderIniPanelShellSessionHandoffWorkflowState",
|
"renderIniPanelShellSessionHandoffWorkflowState",
|
||||||
"mountIniPanelShellSessionHandoffWorkflow",
|
"mountIniPanelShellSessionHandoffWorkflow",
|
||||||
@@ -420,6 +422,7 @@ assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffRend
|
|||||||
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffSnapshot\b/);
|
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffSnapshot\b/);
|
||||||
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffSummary\b/);
|
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffSummary\b/);
|
||||||
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffSummarySchema\b/);
|
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffSummarySchema\b/);
|
||||||
|
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(shellText, /\bexport function isSupportedIniPanelControlPageApiManifest\b/);
|
assert.match(shellText, /\bexport function isSupportedIniPanelControlPageApiManifest\b/);
|
||||||
assert.match(shellText, /\bexport function isSupportedIniPanelLaunchApiManifest\b/);
|
assert.match(shellText, /\bexport function isSupportedIniPanelLaunchApiManifest\b/);
|
||||||
assert.match(shellText, /\bexport function isSupportedIniPanelShellIntegrationManifest\b/);
|
assert.match(shellText, /\bexport function isSupportedIniPanelShellIntegrationManifest\b/);
|
||||||
@@ -448,6 +451,7 @@ assert.match(launchText, /\bgetShellSessionHandoffChecklist\b/);
|
|||||||
assert.match(launchText, /\bgetShellSessionHandoffPackageSchema\b/);
|
assert.match(launchText, /\bgetShellSessionHandoffPackageSchema\b/);
|
||||||
assert.match(launchText, /\bgetShellSessionHandoffPackage\b/);
|
assert.match(launchText, /\bgetShellSessionHandoffPackage\b/);
|
||||||
assert.match(launchText, /\bgetShellSessionHandoffPackageReport\b/);
|
assert.match(launchText, /\bgetShellSessionHandoffPackageReport\b/);
|
||||||
|
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(launchText, /\bisSupportedShellSessionHandoffPackage\b/);
|
assert.match(launchText, /\bisSupportedShellSessionHandoffPackage\b/);
|
||||||
assert.match(launchText, /\bdata-handoff-shell\b/);
|
assert.match(launchText, /\bdata-handoff-shell\b/);
|
||||||
assert.match(launchText, /\bdata-handoff-status\b/);
|
assert.match(launchText, /\bdata-handoff-status\b/);
|
||||||
@@ -481,6 +485,7 @@ assert.match(docText, /\bcreateIniPanelShellSessionHandoffRenderState\b/);
|
|||||||
assert.match(docText, /\bcreateIniPanelShellSessionHandoffSnapshot\b/);
|
assert.match(docText, /\bcreateIniPanelShellSessionHandoffSnapshot\b/);
|
||||||
assert.match(docText, /\bcreateIniPanelShellSessionHandoffSummary\b/);
|
assert.match(docText, /\bcreateIniPanelShellSessionHandoffSummary\b/);
|
||||||
assert.match(docText, /\bcreateIniPanelShellSessionHandoffSummarySchema\b/);
|
assert.match(docText, /\bcreateIniPanelShellSessionHandoffSummarySchema\b/);
|
||||||
|
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(docText, /\bisSupportedIniPanelControlPageApiManifest\b/);
|
assert.match(docText, /\bisSupportedIniPanelControlPageApiManifest\b/);
|
||||||
assert.match(docText, /\bisSupportedIniPanelLaunchApiManifest\b/);
|
assert.match(docText, /\bisSupportedIniPanelLaunchApiManifest\b/);
|
||||||
assert.match(docText, /\bisSupportedIniPanelShellIntegrationManifest\b/);
|
assert.match(docText, /\bisSupportedIniPanelShellIntegrationManifest\b/);
|
||||||
@@ -504,6 +509,7 @@ assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getShellSessionHandoffCheckl
|
|||||||
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getShellSessionHandoffPackageSchema\b/);
|
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getShellSessionHandoffPackageSchema\b/);
|
||||||
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getShellSessionHandoffPackage\b/);
|
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getShellSessionHandoffPackage\b/);
|
||||||
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getShellSessionHandoffPackageReport\b/);
|
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getShellSessionHandoffPackageReport\b/);
|
||||||
|
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.getWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.isSupportedShellSessionHandoffPackage\b/);
|
assert.match(docText, /\blinuxCncIniPanelLaunchApi\.isSupportedShellSessionHandoffPackage\b/);
|
||||||
assert.match(docText, /\bdata-handoff-shell\b/);
|
assert.match(docText, /\bdata-handoff-shell\b/);
|
||||||
assert.match(docText, /\bdata-handoff-status\b/);
|
assert.match(docText, /\bdata-handoff-status\b/);
|
||||||
@@ -551,6 +557,7 @@ assert.match(shellIntegrationWorkflowSmokeText, /\bgetShellSessionHandoffWorkflo
|
|||||||
assert.match(shellIntegrationWorkflowSmokeText, /\bgetShellSessionHandoffWorkflowDomReadiness\b/);
|
assert.match(shellIntegrationWorkflowSmokeText, /\bgetShellSessionHandoffWorkflowDomReadiness\b/);
|
||||||
assert.match(shellIntegrationWorkflowSmokeText, /\brenderShellSessionHandoffWorkflowState\b/);
|
assert.match(shellIntegrationWorkflowSmokeText, /\brenderShellSessionHandoffWorkflowState\b/);
|
||||||
assert.match(shellIntegrationWorkflowSmokeText, /\bmountShellSessionHandoffWorkflow\b/);
|
assert.match(shellIntegrationWorkflowSmokeText, /\bmountShellSessionHandoffWorkflow\b/);
|
||||||
|
assert.match(shellIntegrationWorkflowSmokeText, /\bgetWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(shellIntegrationWorkflowSmokeText, /\brenderShellSessionHandoffMountState\b/);
|
assert.match(shellIntegrationWorkflowSmokeText, /\brenderShellSessionHandoffMountState\b/);
|
||||||
assert.match(shellIntegrationWorkflowSmokeText, /\bdata-external-shell-mount\b/);
|
assert.match(shellIntegrationWorkflowSmokeText, /\bdata-external-shell-mount\b/);
|
||||||
assert.match(shellIntegrationWorkflowSmokeText, /\bdata-external-mount-value\b/);
|
assert.match(shellIntegrationWorkflowSmokeText, /\bdata-external-mount-value\b/);
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ assert.deepEqual(manifest, {
|
|||||||
"getWorkflowOverviewContract",
|
"getWorkflowOverviewContract",
|
||||||
"getWorkflowOverviewReadiness",
|
"getWorkflowOverviewReadiness",
|
||||||
"mountWorkflowOverviewEmbedding",
|
"mountWorkflowOverviewEmbedding",
|
||||||
|
"getWorkflowOverviewEmbeddingReport",
|
||||||
"isSupportedShellSessionHandoffPackage",
|
"isSupportedShellSessionHandoffPackage",
|
||||||
"getLauncherLinks",
|
"getLauncherLinks",
|
||||||
"getControlPageApiMethods",
|
"getControlPageApiMethods",
|
||||||
@@ -222,6 +223,7 @@ assert.match(launchText, /\bmountShellSessionHandoffWorkflow\b/);
|
|||||||
assert.match(launchText, /\bgetWorkflowOverviewContract\b/);
|
assert.match(launchText, /\bgetWorkflowOverviewContract\b/);
|
||||||
assert.match(launchText, /\bgetWorkflowOverviewReadiness\b/);
|
assert.match(launchText, /\bgetWorkflowOverviewReadiness\b/);
|
||||||
assert.match(launchText, /\bmountWorkflowOverviewEmbedding\b/);
|
assert.match(launchText, /\bmountWorkflowOverviewEmbedding\b/);
|
||||||
|
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(launchText, /\bisSupportedShellSessionHandoffPackage\b/);
|
assert.match(launchText, /\bisSupportedShellSessionHandoffPackage\b/);
|
||||||
assert.match(launchText, /\bdata-handoff-workflow\b/);
|
assert.match(launchText, /\bdata-handoff-workflow\b/);
|
||||||
assert.match(launchText, /\bdata-handoff-workflow-status\b/);
|
assert.match(launchText, /\bdata-handoff-workflow-status\b/);
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import {
|
|||||||
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
||||||
createIniPanelShellWorkflowOverviewContract,
|
createIniPanelShellWorkflowOverviewContract,
|
||||||
createIniPanelShellWorkflowOverviewReadiness,
|
createIniPanelShellWorkflowOverviewReadiness,
|
||||||
|
createIniPanelShellWorkflowOverviewEmbeddingReport,
|
||||||
mountIniPanelShellWorkflowOverviewEmbedding,
|
mountIniPanelShellWorkflowOverviewEmbedding,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
@@ -164,7 +165,7 @@ assert.deepEqual(readiness, {
|
|||||||
counts: {
|
counts: {
|
||||||
pages: 3,
|
pages: 3,
|
||||||
launcherLinks: 3,
|
launcherLinks: 3,
|
||||||
launchMethods: 42,
|
launchMethods: 43,
|
||||||
controlPageMethods: 11,
|
controlPageMethods: 11,
|
||||||
persistenceCapabilities: 3,
|
persistenceCapabilities: 3,
|
||||||
},
|
},
|
||||||
@@ -226,7 +227,7 @@ assert.deepEqual(handoffSummary, {
|
|||||||
counts: {
|
counts: {
|
||||||
pages: 3,
|
pages: 3,
|
||||||
launcherLinks: 3,
|
launcherLinks: 3,
|
||||||
launchMethods: 42,
|
launchMethods: 43,
|
||||||
controlPageMethods: 11,
|
controlPageMethods: 11,
|
||||||
persistenceCapabilities: 3,
|
persistenceCapabilities: 3,
|
||||||
},
|
},
|
||||||
@@ -766,6 +767,8 @@ assert.deepEqual(createIniPanelShellWorkflowOverviewContract(), {
|
|||||||
],
|
],
|
||||||
});
|
});
|
||||||
assert.equal(createIniPanelShellWorkflowOverviewReadiness().ready, false);
|
assert.equal(createIniPanelShellWorkflowOverviewReadiness().ready, false);
|
||||||
|
assert.equal(createIniPanelShellWorkflowOverviewEmbeddingReport().ready, false);
|
||||||
|
assert.equal(createIniPanelShellWorkflowOverviewEmbeddingReport().rows.length, 6);
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
createIniPanelShellWorkflowOverviewReadiness({
|
createIniPanelShellWorkflowOverviewReadiness({
|
||||||
overviewApi: {
|
overviewApi: {
|
||||||
@@ -1194,7 +1197,7 @@ assert.deepEqual(createIniPanelShellIntegrationReadiness(blockedManifest), {
|
|||||||
counts: {
|
counts: {
|
||||||
pages: 3,
|
pages: 3,
|
||||||
launcherLinks: 3,
|
launcherLinks: 3,
|
||||||
launchMethods: 42,
|
launchMethods: 43,
|
||||||
controlPageMethods: 11,
|
controlPageMethods: 11,
|
||||||
persistenceCapabilities: 3,
|
persistenceCapabilities: 3,
|
||||||
},
|
},
|
||||||
@@ -1376,6 +1379,7 @@ assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffWork
|
|||||||
assert.match(shellText, /\bexport function renderIniPanelShellSessionHandoffWorkflowState\b/);
|
assert.match(shellText, /\bexport function renderIniPanelShellSessionHandoffWorkflowState\b/);
|
||||||
assert.match(shellText, /\bexport function mountIniPanelShellSessionHandoffWorkflow\b/);
|
assert.match(shellText, /\bexport function mountIniPanelShellSessionHandoffWorkflow\b/);
|
||||||
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageReport\b/);
|
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageReport\b/);
|
||||||
|
assert.match(shellText, /\bexport function createIniPanelShellWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageRenderState\b/);
|
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageRenderState\b/);
|
||||||
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageSchema\b/);
|
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffPackageSchema\b/);
|
||||||
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffRenderState\b/);
|
assert.match(shellText, /\bexport function createIniPanelShellSessionHandoffRenderState\b/);
|
||||||
@@ -1413,6 +1417,7 @@ assert.match(docText, /\bcreateIniPanelShellSessionHandoffWorkflowDomReadiness\b
|
|||||||
assert.match(docText, /\brenderIniPanelShellSessionHandoffWorkflowState\b/);
|
assert.match(docText, /\brenderIniPanelShellSessionHandoffWorkflowState\b/);
|
||||||
assert.match(docText, /\bmountIniPanelShellSessionHandoffWorkflow\b/);
|
assert.match(docText, /\bmountIniPanelShellSessionHandoffWorkflow\b/);
|
||||||
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageReport\b/);
|
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageReport\b/);
|
||||||
|
assert.match(docText, /\bcreateIniPanelShellWorkflowOverviewEmbeddingReport\b/);
|
||||||
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageRenderState\b/);
|
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageRenderState\b/);
|
||||||
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageSchema\b/);
|
assert.match(docText, /\bcreateIniPanelShellSessionHandoffPackageSchema\b/);
|
||||||
assert.match(docText, /\bcreateIniPanelShellSessionHandoffRenderState\b/);
|
assert.match(docText, /\bcreateIniPanelShellSessionHandoffRenderState\b/);
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import {
|
|||||||
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
createIniPanelShellSessionHandoffWorkflowDomReadiness,
|
||||||
createIniPanelShellWorkflowOverviewContract,
|
createIniPanelShellWorkflowOverviewContract,
|
||||||
createIniPanelShellWorkflowOverviewReadiness,
|
createIniPanelShellWorkflowOverviewReadiness,
|
||||||
|
createIniPanelShellWorkflowOverviewEmbeddingReport,
|
||||||
mountIniPanelShellWorkflowOverviewEmbedding,
|
mountIniPanelShellWorkflowOverviewEmbedding,
|
||||||
renderIniPanelShellSessionHandoffWorkflowState,
|
renderIniPanelShellSessionHandoffWorkflowState,
|
||||||
mountIniPanelShellSessionHandoffWorkflow,
|
mountIniPanelShellSessionHandoffWorkflow,
|
||||||
@@ -121,6 +122,7 @@ assert.equal(typeof createIniPanelShellSessionHandoffWorkflowDomContract, "funct
|
|||||||
assert.equal(typeof createIniPanelShellSessionHandoffWorkflowDomReadiness, "function");
|
assert.equal(typeof createIniPanelShellSessionHandoffWorkflowDomReadiness, "function");
|
||||||
assert.equal(typeof createIniPanelShellWorkflowOverviewContract, "function");
|
assert.equal(typeof createIniPanelShellWorkflowOverviewContract, "function");
|
||||||
assert.equal(typeof createIniPanelShellWorkflowOverviewReadiness, "function");
|
assert.equal(typeof createIniPanelShellWorkflowOverviewReadiness, "function");
|
||||||
|
assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingReport, "function");
|
||||||
assert.equal(typeof mountIniPanelShellWorkflowOverviewEmbedding, "function");
|
assert.equal(typeof mountIniPanelShellWorkflowOverviewEmbedding, "function");
|
||||||
assert.equal(typeof renderIniPanelShellSessionHandoffWorkflowState, "function");
|
assert.equal(typeof renderIniPanelShellSessionHandoffWorkflowState, "function");
|
||||||
assert.equal(typeof mountIniPanelShellSessionHandoffWorkflow, "function");
|
assert.equal(typeof mountIniPanelShellSessionHandoffWorkflow, "function");
|
||||||
@@ -790,6 +792,7 @@ assert.equal(
|
|||||||
assert.equal(shellViewModel.createWorkflowOverviewContract, createIniPanelShellWorkflowOverviewContract);
|
assert.equal(shellViewModel.createWorkflowOverviewContract, createIniPanelShellWorkflowOverviewContract);
|
||||||
assert.equal(shellViewModel.createWorkflowOverviewReadiness, createIniPanelShellWorkflowOverviewReadiness);
|
assert.equal(shellViewModel.createWorkflowOverviewReadiness, createIniPanelShellWorkflowOverviewReadiness);
|
||||||
assert.equal(shellViewModel.mountWorkflowOverviewEmbedding, mountIniPanelShellWorkflowOverviewEmbedding);
|
assert.equal(shellViewModel.mountWorkflowOverviewEmbedding, mountIniPanelShellWorkflowOverviewEmbedding);
|
||||||
|
assert.equal(shellViewModel.createWorkflowOverviewEmbeddingReport, createIniPanelShellWorkflowOverviewEmbeddingReport);
|
||||||
assert.equal(shellViewModel.createShellSessionHandoffPackageReport, createIniPanelShellSessionHandoffPackageReport);
|
assert.equal(shellViewModel.createShellSessionHandoffPackageReport, createIniPanelShellSessionHandoffPackageReport);
|
||||||
assert.equal(shellViewModel.createShellSessionHandoffPackageSchema, createIniPanelShellSessionHandoffPackageSchema);
|
assert.equal(shellViewModel.createShellSessionHandoffPackageSchema, createIniPanelShellSessionHandoffPackageSchema);
|
||||||
assert.equal(shellViewModel.isSupportedShellSessionHandoffPackage, isSupportedIniPanelShellSessionHandoffPackage);
|
assert.equal(shellViewModel.isSupportedShellSessionHandoffPackage, isSupportedIniPanelShellSessionHandoffPackage);
|
||||||
@@ -1176,19 +1179,74 @@ assert.equal(workflowOverviewEmbedding.ready, false);
|
|||||||
assert.equal(workflowOverviewEmbedding.renderState.statusLine, "Blocked: mount:blocked");
|
assert.equal(workflowOverviewEmbedding.renderState.statusLine, "Blocked: mount:blocked");
|
||||||
assert.equal(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 5);
|
assert.equal(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 5);
|
||||||
assert.equal(workflowOverviewEmbedding.error, null);
|
assert.equal(workflowOverviewEmbedding.error, null);
|
||||||
|
assert.deepEqual(createIniPanelShellWorkflowOverviewEmbeddingReport(workflowOverviewEmbedding), {
|
||||||
|
apiName: "ini-panel-shell-workflow-overview-embedding-report",
|
||||||
|
reportVersion: 1,
|
||||||
|
phase: "blocked",
|
||||||
|
ready: false,
|
||||||
|
overviewReady: true,
|
||||||
|
embeddingReady: false,
|
||||||
|
mountReady: false,
|
||||||
|
statusLine: "Blocked: embedding:blocked, mount:blocked",
|
||||||
|
pageHref: "./workflow-overview.html",
|
||||||
|
contract: shellViewModel.shellWorkflowOverviewContract,
|
||||||
|
missingMethods: [],
|
||||||
|
mountPhase: "blocked",
|
||||||
|
renderRowCount: 5,
|
||||||
|
error: null,
|
||||||
|
blockingReasons: ["embedding:blocked", "mount:blocked"],
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
id: "overview-api",
|
||||||
|
label: "Overview API",
|
||||||
|
value: "ready",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "missing-methods",
|
||||||
|
label: "Missing methods",
|
||||||
|
value: "none",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "embedding-ready",
|
||||||
|
label: "Embedding readiness",
|
||||||
|
value: "blocked",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "mount-phase",
|
||||||
|
label: "Mount phase",
|
||||||
|
value: "blocked",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "render-row-count",
|
||||||
|
label: "Render row count",
|
||||||
|
value: "5",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "error",
|
||||||
|
label: "Error",
|
||||||
|
value: "none",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
mountIniPanelShellWorkflowOverviewEmbedding({ overviewApi: null }).readiness.missing,
|
mountIniPanelShellWorkflowOverviewEmbedding({ overviewApi: null }).readiness.missing,
|
||||||
shellViewModel.shellWorkflowOverviewContract.methodNames,
|
shellViewModel.shellWorkflowOverviewContract.methodNames,
|
||||||
);
|
);
|
||||||
|
assert.deepEqual(
|
||||||
|
createIniPanelShellWorkflowOverviewEmbeddingReport(
|
||||||
|
mountIniPanelShellWorkflowOverviewEmbedding({ overviewApi: null }),
|
||||||
|
).missingMethods,
|
||||||
|
shellViewModel.shellWorkflowOverviewContract.methodNames,
|
||||||
|
);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
mountIniPanelShellWorkflowOverviewEmbedding({
|
createIniPanelShellWorkflowOverviewEmbeddingReport(mountIniPanelShellWorkflowOverviewEmbedding({
|
||||||
overviewApi: {
|
overviewApi: {
|
||||||
...workflowOverviewApi,
|
...workflowOverviewApi,
|
||||||
mountWorkflowOverview: () => {
|
mountWorkflowOverview: () => {
|
||||||
throw new Error("mount failed");
|
throw new Error("mount failed");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}).error,
|
})).error,
|
||||||
"mount failed",
|
"mount failed",
|
||||||
);
|
);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
|
|||||||
Reference in New Issue
Block a user