mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-28 05:16:23 -06:00
ci: harden current and frozen release checks (#104956)
* test(qa): wait for complete process pid fixture * style(qa): format pid readiness predicate * test(sqlite): allow schema version pragma * ci: install target playwright for frozen UI checks
This commit is contained in:
committed by
GitHub
parent
b67417909b
commit
b163dbb97d
@@ -1042,7 +1042,14 @@ jobs:
|
||||
install-bun: "false"
|
||||
|
||||
- name: Install Playwright Chromium
|
||||
run: node scripts/ensure-playwright-chromium.mjs
|
||||
run: |
|
||||
if [[ "$COMPATIBILITY_TARGET" == "true" ]]; then
|
||||
# Legacy Vitest configs cannot pass a discovered system browser to Playwright.
|
||||
# Install the managed browser revision pinned by the selected target instead.
|
||||
pnpm --dir ui exec playwright install chromium
|
||||
else
|
||||
node scripts/ensure-playwright-chromium.mjs
|
||||
fi
|
||||
|
||||
- name: Lint Control UI window.open usage
|
||||
run: pnpm lint:ui:no-raw-window-open
|
||||
|
||||
@@ -1868,12 +1868,19 @@ describe("ci workflow guards", () => {
|
||||
expect(checkShard.run).toContain("pnpm tsgo:strict-ratchet");
|
||||
expect(checkShard.run).toContain('elif [[ "$HISTORICAL_TARGET" != "true" ]]');
|
||||
|
||||
const uiInstall = workflow.jobs["checks-ui"].steps.find(
|
||||
(step: { name?: string }) => step.name === "Install Playwright Chromium",
|
||||
);
|
||||
const uiTest = workflow.jobs["checks-ui"].steps.find(
|
||||
(step: { name?: string }) => step.name === "Test Control UI",
|
||||
);
|
||||
expect(workflow.jobs["checks-ui"].env.COMPATIBILITY_TARGET).toBe(
|
||||
"${{ needs.preflight.outputs.compatibility_target }}",
|
||||
);
|
||||
expect(uiInstall.run).toContain('if [[ "$COMPATIBILITY_TARGET" == "true" ]]');
|
||||
expect(uiInstall.run).toContain("pnpm --dir ui exec playwright install chromium");
|
||||
expect(uiInstall.run).toContain("node scripts/ensure-playwright-chromium.mjs");
|
||||
expect(uiInstall.run).not.toContain("OPENCLAW_UI_E2E_ALLOW_MISSING_CHROMIUM");
|
||||
expect(uiTest.run).toContain('if [[ "$COMPATIBILITY_TARGET" == "true" ]]');
|
||||
expect(uiTest.run).toContain("pnpm --dir ui test --testTimeout=30000");
|
||||
expect(uiTest.run).not.toContain("--retry");
|
||||
|
||||
@@ -612,9 +612,16 @@ setInterval(() => {}, 1000);
|
||||
stdio: "ignore",
|
||||
});
|
||||
try {
|
||||
await waitFor(() => fs.existsSync(descendantPidPath));
|
||||
descendantPid = Number.parseInt(fs.readFileSync(descendantPidPath, "utf8"), 10);
|
||||
expect(isProcessAlive(descendantPid)).toBe(true);
|
||||
await waitFor(() => {
|
||||
if (!fs.existsSync(descendantPidPath)) {
|
||||
return false;
|
||||
}
|
||||
descendantPid = Number.parseInt(fs.readFileSync(descendantPidPath, "utf8"), 10);
|
||||
return (
|
||||
Number.isInteger(descendantPid) && descendantPid > 1 && isProcessAlive(descendantPid)
|
||||
);
|
||||
});
|
||||
expect(Number.isInteger(descendantPid)).toBe(true);
|
||||
await waitFor(() => fs.existsSync(commandSettledPath));
|
||||
if (!runner.pid) {
|
||||
throw new Error("runner did not start");
|
||||
|
||||
Reference in New Issue
Block a user