Skip to content

[codex] Add Reborn Playwright workflow - #5449

Merged
serrrfirat merged 1 commit into
mainfrom
codex/reborn-playwright-workflow
Jun 30, 2026
Merged

serrrfirat merged 1 commit into
mainfrom
codex/reborn-playwright-workflow

Conversation

@serrrfirat

@serrrfirat serrrfirat commented Jun 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Adds a separate nightly Reborn Playwright workflow for standalone Reborn browser scenarios.

The workflow:

  • runs nightly at 03:20 UTC and can also be started manually with workflow_dispatch
  • builds the ironclaw-reborn WebUI binary once
  • uploads that binary as a short-lived artifact
  • runs standalone Reborn browser-backed scenario files across five named pytest shards with --durations=25
  • excludes test_reborn_legacy_always_approve_survives_reborn_restart, which is a server restart persistence test rather than a browser timing test and timed out in the first measurement run

Validation

  • scripts/ci/check-e2e-matrix-files.sh .github/workflows/reborn-playwright.yml
  • ruby -e 'require "yaml"; YAML.load_file(".github/workflows/reborn-playwright.yml"); puts "yaml ok"'
  • pytest collect-only for every matrix shard:
    • webui-smoke-files: 14 tests
    • legacy-core-ui: 19 tests
    • legacy-auth-inputs: 31 tests
    • legacy-settings-extensions: 58 selected / 59 collected, 1 deselected
    • legacy-runtime: 31 tests
    • total selected: 153 tests

Notes

Earlier measurement showed the Playwright shards are short, but the shared Rust build dominates wall time. This PR keeps the suite out of normal PR CI and makes it nightly/manual instead.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@coderabbitai

coderabbitai Bot commented Jun 30, 2026 •

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 5a93a0e1-b519-42ce-b26f-15a78cace96b

📥 Commits

Reviewing files that changed from the base of the PR and between 73ea1ff and be70f67.

📒 Files selected for processing (1)
  • .github/workflows/reborn-playwright.yml

📝 Walkthrough

Summary by CodeRabbit

  • Tests
    • Added an automated Playwright end-to-end test pipeline that runs on demand and on a nightly schedule.
    • Split test runs into multiple shards for faster execution and improved reporting.
    • Collects screenshots automatically when a test shard fails, making issues easier to investigate.
    • Builds and validates the app binary before running the tests to ensure results match the shipped build.

Walkthrough

Adds a new GitHub Actions workflow (reborn-playwright.yml) that runs nightly/dispatch-triggered E2E Playwright tests against a built Reborn CLI binary. It includes matrix generation, a build job, sharded pytest execution with screenshot capture on failure, and a final aggregation job that fails on any shard failure.

Changes

Reborn Playwright CI Workflow

Layer / File(s) Summary
Workflow triggers and matrix config
.github/workflows/reborn-playwright.yml
New workflow defines workflow_dispatch/nightly cron triggers, contents: read permissions, concurrency cancellation, and a matrix-config job that validates scenario files and emits a test matrix.
Binary build job
.github/workflows/reborn-playwright.yml
Adds a build job installing Rust/Node, restoring cache, compiling ironclaw-reborn with webui-v2-beta, and uploading the debug binary as a short-lived artifact.
Sharded test execution and aggregation
.github/workflows/reborn-playwright.yml
Adds a test job downloading the binary, installing Python/Playwright/Chromium deps, running per-shard pytest with timeouts and failure screenshot uploads, plus a final reborn-playwright job that fails if any shard result is not success.

No invariant docs (CLAUDE.md/AGENTS.md/.claude/rules) referenced in diff to check against. Flagging anyway, since this is CI-as-code, not Rust:

  • Artifact trust boundary: build job uploads a debug binary; test job downloads and chmod +xs it with no checksum/provenance pinning shown — verify artifact integrity isn't implicitly trusted across job boundary within same run only (acceptable if so, but not stated).
  • Scenario file existence check in matrix-config is good but unspecified script — confirm it fails closed (non-zero exit) on missing files rather than just logging.
  • webui-v2-beta feature build for CI E2E — confirm this matches prod feature flags or is explicitly a beta-only test path to avoid divergent coverage.
  • No egress/secrets surfaced in summary; nothing to flag there assuming permissions: contents: read is the ceiling for all jobs (not just the default).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

A nightly pipeline takes flight,
Shards of tests run through the night,
Binary built, Chromium spawned,
Screenshots saved when shards have yawned,
🌙 CI sleeps not, till green and right.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5449 June 30, 2026 12:45 Destroyed
@github-actions github-actions Bot added scope: ci CI/CD workflows size: M 50-199 changed lines risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Jun 30, 2026
@serrrfirat
serrrfirat force-pushed the codex/reborn-playwright-workflow branch from 63d0d65 to 652eb34 Compare June 30, 2026 13:05
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5449 June 30, 2026 13:05 Destroyed
@railway-app

railway-app Bot commented Jun 30, 2026 •

Copy link
Copy Markdown

🚅 Deployed to the ironclaw-pr-5449 environment in ironclaw-ci-preview

Service Status Web Updated (UTC)
ironclaw ✅ Success (View Logs) Web Jun 30, 2026 at 6:52 pm

@serrrfirat
serrrfirat force-pushed the codex/reborn-playwright-workflow branch from 652eb34 to 63fe9cd Compare June 30, 2026 13:27
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5449 June 30, 2026 13:28 Destroyed
@serrrfirat
serrrfirat force-pushed the codex/reborn-playwright-workflow branch from 63fe9cd to 5d5f457 Compare June 30, 2026 13:29
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5449 June 30, 2026 13:29 Destroyed
@serrrfirat

Copy link
Copy Markdown
Collaborator Author

Initial timing from the passing Reborn Playwright run: https://github.com/nearai/ironclaw/actions/runs/28448064891

  • Configure matrix: 7s
  • Shared binary build: 12m47s
  • Playwright shards, running in parallel:
    • gateway-smoke: 56s
    • webui-smoke-files: 1m13s
    • legacy-core-ui: 1m22s
    • legacy-auth-inputs: 1m27s
    • legacy-settings-extensions: 1m44s
    • legacy-runtime: 2m03s
  • End-to-end workflow wall time: ~15m13s

Takeaway: the Playwright browser tests are cheap once binaries exist; the PR cost is dominated by the shared Rust build. If we want this as required PR CI, the next optimization target is reusing an existing warm Reborn build/cache or only running this workflow where another job has already built the same binary.

@serrrfirat
serrrfirat force-pushed the codex/reborn-playwright-workflow branch from 5d5f457 to 7a95b92 Compare June 30, 2026 16:38
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5449 June 30, 2026 16:38 Destroyed
@serrrfirat

Copy link
Copy Markdown
Collaborator Author

Correction: removed the earlier gateway-smoke shard. That file boots the legacy gateway with ENGINE_V2=true, which is not the Reborn surface we want this workflow to measure. The workflow now targets standalone ironclaw-reborn browser scenarios only.

@serrrfirat
serrrfirat force-pushed the codex/reborn-playwright-workflow branch from 7a95b92 to be70f67 Compare June 30, 2026 18:51
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5449 June 30, 2026 18:52 Destroyed
@serrrfirat

Copy link
Copy Markdown
Collaborator Author

Updated: moved Reborn Playwright off PR CI. It now runs nightly at 03:20 UTC plus manual workflow_dispatch, because the measured shard time was short but the shared Rust build dominated total runtime.

@serrrfirat
serrrfirat marked this pull request as ready for review June 30, 2026 21:01
@serrrfirat
serrrfirat merged commit 78b144f into main Jun 30, 2026
31 of 32 checks passed
@serrrfirat
serrrfirat deleted the codex/reborn-playwright-workflow branch June 30, 2026 21:01

This branch was successfully deployed

No deployments
ironclaw-ci-preview / ironclaw-pr-5449 — be70f67a Deployed Jun 30, 2026 by railway-app[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: medium Business logic, config, or moderate-risk modules scope: ci CI/CD workflows size: M 50-199 changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant