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:
Peter Steinberger
2026-07-11 22:08:49 -07:00
committed by GitHub
parent b67417909b
commit b163dbb97d
3 changed files with 25 additions and 4 deletions
+8 -1
View File
@@ -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
+7
View File
@@ -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");