16-Mar-2026 — Ci, Maps and 3 more areas: 2 fixes, 2 build changes and 1 CI update #185
build 543 — commit 857144d
Update Chrome and ChromeDriver to 146, fix wdio.conf to use local Chrome binary when available, replace json2csv with csv-stringify, restore stderr logging in upload process, and prefer detected Chrome version over override in CLI setup.
maps: tighten explorer projection handling (#185)
Summary
- keep the Explorer-style OS map path on the existing
Leisure_27700configuration - tighten the
proj4leafletintegration used by the frontend map tile service - centralise projection code names behind shared constants instead of repeating raw
EPSG:27700,EPSG:3857, andWGS84strings - align the server ESRI import paths with the same shared projection constants
Verification
npm run test -- --include='projects/ngx-ramblers/src/app/services/maps/map-tiles.service.spec.ts'cd server && npm run build- confirmed the staging deployment map display now renders correctly
frontend: upgrade Angular 21 and migrate tests to Vitest (#185)
Summary
- Upgrade the frontend workspace from Angular 20 to Angular 21 and move the unit-test pipeline from Karma/Jasmine to the Angular application builder with Vitest.
- Keep the local development flow working by aligning repo install behaviour with the current Angular 21 dependency graph.
- Remove the legacy Angular global scripts bundle and complete the remaining runtime fixes uncovered during local validation.
What changed
Angular and tooling
- Upgrade Angular core, CLI, CDK, compiler, language service, and angular-eslint to Angular 21 compatible versions.
- Move the app build to
@angular/build:application, the dev server to@angular/build:dev-server, extract-i18n to@angular/build:extract-i18n, and unit tests to@angular/build:unit-test. - Replace Karma/Jasmine bootstrap files with a shared Vitest setup at
projects/ngx-ramblers/src/test-setup.tsand remove the obsoletekarma.conf.jsandsrc/test.tsfiles. - Add
type-festbecause the Mermaid module type surface now requires it.
Test migration and spec cleanup
- Refactor the frontend spec suite to run under Vitest, including explicit
viimports where editor resolution was unreliable. - Add explicit
expectimports in the async matcher specs that useawait expect(...).resolves(...)so editor navigation and type resolution stay stable under Vitest. - Replace the remaining legacy
HttpClientandHttpHandlertest wiring inmeetup-service.spec.tswith Angular 21 HTTP testing providers and lightweight service stubs, removing thethis.handler.handle is not a functionstderr noise. - Clean up schematic fallout in service and utility specs so matcher usage, spies, async handling, and local stubs all work consistently under Vitest.
- Preserve the existing test coverage surface rather than reducing scope for the migration.
Application compatibility
- Replace the Angular global
scriptsbundle inangular.jsonwith module-based usage. - Wire Mermaid through the ESM module path in
app.module.ts, assign it toglobalThis.mermaidforngx-markdown, and register the custom and Iconify logo packs on the same instance. - Add a project
.npmrcwithlegacy-peer-deps=truesongx-cli local devand other repo installs continue to work whileng2-file-uploadstill advertises Angular 20 peers. - Harden the walk-list Leaflet popup auto-open flow so delayed timers are cancelled during rebuilds and teardown, preventing stale popup work from hitting detached marker DOM.
Developer-facing behaviour
ng serve --project ngx-ramblers --configuration development --verboseno longer emits the earlierangular:script/global:scriptsdirectory read failure.- Local markdown rendering with the
mermaidattribute no longer throws thengx-markdownMermaid runtime error after startup. ngx-cli local dev <env>no longer depends on a manual--legacy-peer-depsinstall workaround.- Vitest is now the default frontend unit-test runner for this workspace.
- The Meetup service spec no longer emits the old
this.handler.handle is not a functionHTTP test setup noise.
Verification
npm run test-> 46 passed, 697 passed- Targeted migrated-spec slice -> 8 passed, 118 passed
- Targeted async matcher specs -> 2 passed, 8 passed
npm run test -- --include='projects/ngx-ramblers/src/app/services/meetup-service.spec.ts'-> 1 passed, 2 passedng build --project ngx-ramblers --configuration development --verbose-> passed and removed the legacy global-scripts startup debug noisenpm install --dry-run-> passed with project-level legacy peer dependency resolution enabled
Known limitations
npm run buildstill fails on the existing initial bundle budget inangular.json.- The current initial bundle is lower than the static Mermaid import attempt, but it still exceeds the configured 8 MB error budget.
- Existing Sass deprecation warnings and CommonJS warnings remain and are not resolved in this commit.
How to use the new setup
- Run frontend unit tests with
npm run test. - Run local development with
ngx-cli local dev <environment>or./bin/ngx-cli local dev <environment>. - Use the Angular 21 application builder flow for development and build diagnostics going forward; the older Karma-specific setup is no longer part of the frontend workspace.
runtime: align repo with Node 24 LTS (#185)
Runtime baseline
Upgrade the repository baseline from Node 22.19.0 / npm 10.9.3 to Node 24.14.0 / npm 11.9.0.
Tooling and infrastructure
Align .nvmrc, package engine declarations, Docker, and GitHub Actions workflow runtime settings with the Node 24 baseline. Opt workflow JavaScript actions into Node 24 and keep the deploy matrix at max-parallel 6 with npm fetch retries in deploy installs.
Compatibility updates
Upgrade Serenity, WebdriverIO, and npm-failsafe dependencies so local install, build, and test flows run on Node 24 without unsupported engine warnings.
Documentation
Update README, AGENTS guidance, release-notes docs, and codebase-evolution-stats.html so the documented platform baseline matches the actual runtime target.
Ramblers export fix
Use the configured public group URL for Ramblers CSV website links so local development exports do not publish localhost URLs into Walks Manager.
Verification
Validated locally on Node 24 with lint, frontend tests, server tests, targeted URL service coverage, and production build.
Follow-on
Leave Angular 21 as separate follow-on work under issue #185 so framework changes are isolated from the runtime uplift.
workflows: align Chrome and action runtimes (#185)
Workflow runtime alignment
Upgrade GitHub Actions checkout and setup-node steps to current Node 24-compatible versions, replace the remaining Docker and Fly JavaScript actions with shell-based equivalents, and keep the workflow behaviour unchanged.
Chrome version consistency
Read CHROME_VERSION from injected configuration for the build workflow, use the same value for headless test setup and Docker image builds, and remove the hard-coded server-side setup literals that could drift from deployed environments.
Verification
Validated workflow YAML parsing, server TypeScript compilation, and diff hygiene locally.