{"id":"691687b1636c7492e8cddbe7","title":"2025 11 11 Serenity","path":"how-to/committee/release-notes/2025-11-11-serenity","contentMarkdown":"## Backup & Restore CLI (MongoDB) ([4a2bc6b](https://github.com/nbarrett/ngx-ramblers/commit/4a2bc6be5feb838220e9bd222818b6f96350116c))\n\n\n![](https://ngx-ramblers.org.uk/api/aws/s3/site-content/0ac17751-9a27-4ea8-afc0-c6d2d1db6925.jpeg)\n\n\n###   What’s New\n\n  - Interactive CLI to back up and restore MongoDB, with optional Fly.io scale‑down and S3 upload.\n  - List backups, list environments, dry‑run restore, selective collection restore, and optional drop.\n\n###   Where to Find It\n\n  - From `server`, run:\n      - Interactive: `npm run mongo-cli:interactive`\n      - One‑shot: `npm run mongo:backup`, `npm run mongo:restore`\n\n###   Typical Workflows\n\n  - Create a backup\n      - npm run mongo-cli:interactive → “Create a backup”\n      - Pick environment (or all), optionally choose collections\n      - Optionally scale down Fly app and upload to S3\n      - Result saved under ../non-vcs/dump/backups/<timestamp>-<environment>-<db> and optionally to s3://<bucket>/backups/<name>\n  - Restore from a backup\n      - npm run mongo-cli:interactive → “Restore from backup”\n      - Choose backup, pick target environment\n      - Optionally select collections, choose Drop Collections or Dry Run\n      - Confirm to proceed; restore runs with mongorestore\n\n###   Benefits\n\n  - Safe operations: dry‑run and selective restore reduce risk.\n  - Operational flexibility: scale down for consistency; archive backups to S3.\n  - Visibility: list available backups and configured environments.\n\n\n\n  ## Serenity cookie handling and stability improvements\n### Benefits\n  - Function‑based ExecuteScript tasks that perform dismissal of cookie banners in a more resilient way than before.\n  - Invoked before UI interactions like clicks and uploads so walk export flow is more reliable.\n  - More reliable automation on Ramblers sites with consistent preconditions.\n  - Easier debugging with structured logs.\n### Where to Find It\n  - `server/lib/serenity-js/screenplay/tasks/ramblers/common/accept-cookie-prompt.ts`","contentHtml":"<h2>Backup &amp; Restore CLI (MongoDB) (<a href=\"https://github.com/nbarrett/ngx-ramblers/commit/4a2bc6be5feb838220e9bd222818b6f96350116c\">4a2bc6b</a>)</h2>\n<p><img src=\"https://ngx-ramblers.org.uk/api/aws/s3/site-content/0ac17751-9a27-4ea8-afc0-c6d2d1db6925.jpeg\" alt=\"\"></p>\n<h3>What’s New</h3>\n<ul>\n<li>Interactive CLI to back up and restore MongoDB, with optional Fly.io scale‑down and S3 upload.</li>\n<li>List backups, list environments, dry‑run restore, selective collection restore, and optional drop.</li>\n</ul>\n<h3>Where to Find It</h3>\n<ul>\n<li>From <code>server</code>, run:<ul>\n<li>Interactive: <code>npm run mongo-cli:interactive</code></li>\n<li>One‑shot: <code>npm run mongo:backup</code>, <code>npm run mongo:restore</code></li>\n</ul>\n</li>\n</ul>\n<h3>Typical Workflows</h3>\n<ul>\n<li>Create a backup<ul>\n<li>npm run mongo-cli:interactive → “Create a backup”</li>\n<li>Pick environment (or all), optionally choose collections</li>\n<li>Optionally scale down Fly app and upload to S3</li>\n<li>Result saved under ../non-vcs/dump/backups/<timestamp>-<environment>-<db> and optionally to s3://<bucket>/backups/<name></li>\n</ul>\n</li>\n<li>Restore from a backup<ul>\n<li>npm run mongo-cli:interactive → “Restore from backup”</li>\n<li>Choose backup, pick target environment</li>\n<li>Optionally select collections, choose Drop Collections or Dry Run</li>\n<li>Confirm to proceed; restore runs with mongorestore</li>\n</ul>\n</li>\n</ul>\n<h3>Benefits</h3>\n<ul>\n<li>Safe operations: dry‑run and selective restore reduce risk.</li>\n<li>Operational flexibility: scale down for consistency; archive backups to S3.</li>\n<li>Visibility: list available backups and configured environments.</li>\n</ul>\n<h2>Serenity cookie handling and stability improvements</h2>\n<h3>Benefits</h3>\n<ul>\n<li>Function‑based ExecuteScript tasks that perform dismissal of cookie banners in a more resilient way than before.</li>\n<li>Invoked before UI interactions like clicks and uploads so walk export flow is more reliable.</li>\n<li>More reliable automation on Ramblers sites with consistent preconditions.</li>\n<li>Easier debugging with structured logs.</li>\n</ul>\n<h3>Where to Find It</h3>\n<ul>\n<li><code>server/lib/serenity-js/screenplay/tasks/ramblers/common/accept-cookie-prompt.ts</code></li>\n</ul>\n"}