Skip to content

Test and verify the embedded Scope UI in required CI #726

Open

Description

@Meta-Develop

Proposal

Run Scope UI tests and verify that its generated HTML matches the file embedded in the shipped binary, using a pinned supported Node version in CI and the development environment.

Background and evidence

On main fa0c79b9ae38eca2c59b2b1911becfe1a6b3c9ab, scope-ui/package.json:7-8 defines test/build commands. src/scope/server.rs:20 directly embeds tracked src/scope/placeholder.html. The Rust workflow at .github/workflows/ci.yml:74-98,131-184 does not run the UI commands; the Account Manager Node job covers a different frontend.

scope-ui/tests/build.test.mjs:11-21 builds into a temporary file but does not compare it with the embedded tracked artifact. flake.nix:199-211 does not include Node in the development shell.

A change to scope-ui/src/** can pass required Rust checks while the binary continues serving the older generated HTML, and JavaScript regressions are outside those checks. Regeneration during source inspection matched the current embedded artifact after newline normalization, so no existing content drift is asserted.

Acceptance criteria

  • Pin/provide the supported Node runtime in authoritative CI and the development shell.
  • Run scope-ui tests as a required check.
  • Regenerate into a temporary output and fail on substantive differences from src/scope/placeholder.html, with a deliberate portable newline policy.
  • Test that editing UI source without refreshing the artifact fails the consistency check.
  • Keep the gate dependency-free unless a separate demonstrated requirement arises.

Advantages

Catches frontend regressions and prevents source/binary drift at merge time.

Disadvantages and costs

Adds a small Node gate and runtime-version maintenance; portable generated-output comparison requires an explicit newline convention.

Scope and verification

Scope UI tooling, embedded artifact, development environment and CI. Source/gate inspection plus reported regeneration comparison; no full Rust build or browser acceptance run. Closed #152 delivered the UI; no current Issue/PR adds this gate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions