Skip to content

chore: bring the dev docs and tooling up to date - #5995

Merged
norman-abramovitz merged 18 commits into
cloudfoundry:developfrom
nabramovitz:norm/chore/stale-docs-and-tooling
Oct 8, 2026
Merged

norman-abramovitz merged 18 commits into
cloudfoundry:developfrom
nabramovitz:norm/chore/stale-docs-and-tooling

Conversation

@nabramovitz

@nabramovitz nabramovitz commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Brings the contributor docs and repo tooling in line with how Stratos is built today (make targets, bun, ports 5440/5443, the release package), and removes leftovers from the Protractor, Code Climate and NgRx eras. Each item was checked against the code before it was changed.

What changes

  • Docs that taught the pre-v5 workflow:
    • docs/developer/frontend-tests.md now gives the make and bun commands. The PR checks it lists are the ones that actually report on develop: Jenkins, Snyk and Code Climate are gone.
    • The developer introduction, frontend and backend guides drop npm, the global Angular CLI, Node 12, Go 1.12, port 4200, src/jetstream/jetstream and Angular Material theming.
    • The e2e guide, extension guides, TESTING.md, lockdiff instructions, plugin diagram and issue template are updated the same way.
    • The README's developer section used renamed targets (make dev-frontend), make bootstrap (no such target), bun test (Bun's runner, not Vitest) and bin/package (removed). It now uses the current targets. A link to a CLAUDE.md that is not in the repo is removed, and the theming link points at a page that exists.
  • CF deploy from source (docs/deploy/cloud-foundry/cloud-foundry.md): it checked out the stable tag (a 2021 v4 commit) and described the custom buildpack that built the UI during staging. manifest.yml now pushes dist/cf-package with binary_buildpack, so the section now says to check out a release tag, run make build release cf, then cf push.
  • Removing packages (docs/extensions/disable-packages.md): backend plugins come from src/jetstream/plugin-config.yaml, not package.json, and STRATOS_BUILD_REMOVE acts at build time, not from manifest.yml. Both the stratos.yaml packages.exclude route and the env var were checked against the extension generator: each drops @stratosui/kubernetes from the generated module.
  • List architecture (docs/pagination-architecture.md): rewritten from the current code. The old version described NgRx selectors, reducers and LocalListController.
  • Tooling runs through bun:
    • The Makefile's e2e recipes and tsc version stamp, scripts/e2e-run.mjs, the e2e-impact hint, ngbuild.sh's devkit build, ./bootstrap and the STB workflow used npx, npm or node.
    • Playwright lists the same 713 chromium tests either way, and the STB checks pass through bun run.
    • The devkit keeps npm, because it has its own package-lock.json. So do ngbuild.sh's publish and link steps, which act on the npm registry.
  • Prebuild steps run with bun (angular.json): the prebuild-application builder spawned its four steps with node. Each runs unchanged under bun; prepare backend writes a byte-identical extra_plugins.go, and make build frontend runs all four steps under bun.
  • The list filter e2e suite never ran (e2e/tests/core/list-filter.spec.ts): it waited for the removed app-paginator, so all 9 tests skipped on every run. It is rewritten for the signal-list wall on seeded apps: table, card and cross-view filtering. Live on a CF lab: 9 passed, 0 skipped; with the ViewPipeline filter disabled, the table filter test fails.
  • Port 4200: e2e:dev pointed Playwright at https://localhost:4200, where nothing listens; it now targets 5440. RequestHelper, EndpointManagementHelper and the cfApi fixture defaulted to 4200, but all nine call sites pass a URL, so the parameter is now required and a missing URL fails loudly.
  • Removed leftovers:
    • .codeclimate.yml and the climate script; Code Climate no longer reports on PRs.
    • theme/styles/main.scss.backup.
    • The BrowserStack docs section and README acknowledgement, plus the unused browserstack-local devDependency. That dependency and its four exclusive dependencies leave bun.lock, and nothing else changes there.
    • AppPaginatorComponent and PageSizeSessionService, which have no importers.

Verification

  • make check gate green on the branch, including after the follow-up commits.
  • STB: bun run typecheck, bun run lint and bun run test (61 files, 601 tests) pass in tools/stb.
  • Docs lint clean; the website builds with no broken links.
  • Every documented make command was dry-run with make -n.

AI disclosure (RFC-0047): prepared with AI coding assistance; reviewed by the author.

The frontend tests page still told contributors to run npm scripts,
called the linter tslint, and described a Jenkins, Snyk and Code
Climate pipeline that no longer runs. Point it at the make targets
and bun scripts the repo uses today, document the PROJECT/SCOPE and
E2E variables, and list the GitHub Actions checks a PR actually gets.
Code Climate no longer reports on pull requests, and its project page
now redirects to a Qlty sign-in. Remove .codeclimate.yml (unchanged
since 2020), the climate package script and the docs pointer to the
project page.
main.scss.backup was committed with the Material-to-Tailwind
conversion and nothing reads it; main.scss is the live stylesheet.
The make e2e recipes and the tiered runner launched Playwright with
npx, the version stamp ran tsc with npx, ngbuild.sh built the devkit
with npm, and the STB workflow ran its checks with npm. Use bun run
everywhere, as the rest of the Makefile and CI already do. Playwright
lists the same 713 chromium tests either way, and tsc reports the same
version. ngbuild.sh keeps npm for publish, unpublish and link, which
act on the npm registry.
e2e:dev pointed Playwright at https://localhost:4200, the Angular CLI
default; the dev frontend serves on 5440 (angular.json, make dev
frontend). RequestHelper and EndpointManagementHelper defaulted to
https://127.0.0.1:4200 and the cfApi fixture fell back to
http://localhost:4200, but all 9 call sites pass a URL. Make baseURL
required so a missing one fails loudly instead of hitting a wrong host.
The developer introduction, frontend and backend guides still taught
the pre-v5 workflow: npm install/start/build, a global Angular CLI,
Node 12 and Go 1.12 minimums, a jetstream binary in src/jetstream,
port 4200 and Angular Material theming. Point them at make install,
make dev frontend/backend, make build frontend/backend, dist/bin,
port 5440, the Required Runtimes table and the theming docs.

Also replace the remaining npm, npx and node commands in the
extension guides, the issue template, TESTING.md, the lockdiff
instructions and the plugin build diagram with their bun or make
equivalents.
npm run e2e-dev no longer exists and assumed port 4200. Document make
test e2e, E2E_BASE_URL for an already running Stratos, the bun run
Playwright scripts and make e2e clean for leftover CF resources.

Remove the BrowserStack section: nothing in e2e/ or
playwright.config.ts reads the BROWSERSTACK_* variables; the support
went with the Protractor suite.
Deploy from source checked out the stable tag (a 2021 v4 commit) and
pushed the source tree, and Pre-building the UI described the custom
buildpack that compiled the UI during staging. manifest.yml now pushes
dist/cf-package with the binary_buildpack, so a bare cf push from a
fresh clone has nothing to push. Check out a release tag, run make
build release cf, then cf push.
The README told contributors to run make dev-frontend and
make build-frontend (renamed to make dev frontend and make build
frontend), make bootstrap and bun run bootstrap (no such target; the
script only prints that bootstrap is no longer needed), bun test (Bun's
own runner, not Vitest) and bin/package (removed). Replace the setup,
command and packaging sections with the current make targets and link
the contributor guide for backend configuration.

Also remove the link to a CLAUDE.md that is not in the repository, fix
the theming link (the extensions/theming page no longer exists), and
drop the "Tested with Browserstack" acknowledgement and its logo:
BrowserStack testing ended with the Protractor suite.
Nothing in e2e/, playwright.config.ts or scripts/ loads it; it served
the Protractor suite. Removing it drops browserstack-local and its
exclusive dependencies (agent-base@6, https-proxy-agent@5, is-running,
tree-kill) from bun.lock and nothing else.
bootstrap ran extension-generator.mjs and dev-setup.cjs with node;
the postinstall step already runs both with bun. The devkit steps keep
npm, because the devkit has its own package-lock.json.
The guide said frontend packages declare their backend plugins in
package.json (none do; src/jetstream/plugin-config.yaml is the list),
that removing a package drops its plugins, that prepare-backend and
npm install in the buildpack handle it, and that STRATOS_BUILD_REMOVE
works from manifest.yml. A release push uses binary_buildpack and
builds nothing during staging. Describe the stratos.yaml
packages.exclude list, STRATOS_YAML, STRATOS_BUILD_REMOVE at build
time and plugin-config.yaml for backend plugins.

Checked with the extension generator: both stratos.yaml and
STRATOS_BUILD_REMOVE drop @stratosui/kubernetes from the generated
_custom-import.module.ts.
pagination-architecture.md still described NgRx selectors, reducers,
LocalListController and the global page-size session, all removed with
NgRx. Rewrite it from the current code: client-side page draining
(drainCfPages and CnsiEntitySource), per-endpoint sources, the
EndpointDataService registry and its caching and staleness rules,
MergeOrchestrator, ViewPipeline paging/sorting/filtering, list state,
signal-list rendering and the app wall's stats polling.
AppPaginatorComponent and PageSizeSessionService have no importers:
app-signal-list has its own pager and keeps page size per list. Both
were left behind when the lists moved off NgRx.
The prebuild-application builder spawned its four steps (clean
symlinks, git metadata, custom imports, prepare backend) with node, so
a production build mixed node and bun processes. Each script runs
unchanged under bun; prepare backend writes a byte-identical
extra_plugins.go either way, and make build frontend runs all four
steps under bun.
goToAppsPage waited for app-paginator, which the app wall no longer
renders, so the wait always timed out and all 9 tests skipped on
every run. Rewrite the suite for the signal-list wall: seed 3 apps
with withTestApps, filter by one app's unique name, and assert that
every rendered row or card matches and the other seeded apps are
gone, in table view, card view and across view switches.

Live on a CF lab (chromium, 2 workers): 9 passed, 0 skipped. With the
ViewPipeline filter disabled, the table filter test fails.

@norman-abramovitz norman-abramovitz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@norman-abramovitz
norman-abramovitz marked this pull request as ready for review October 8, 2026 04:10
@norman-abramovitz
norman-abramovitz merged commit f659b42 into cloudfoundry:develop Oct 8, 2026
24 checks passed
@nabramovitz
nabramovitz deleted the norm/chore/stale-docs-and-tooling branch October 8, 2026 04:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants