Skip to content

Script editing and replay - #397

Merged
psiinon merged 1 commit into
zaproxy:mainfrom
psiinon:script-ui
Oct 20, 2026
Merged

psiinon merged 1 commit into
zaproxy:mainfrom
psiinon:script-ui

Conversation

@psiinon

@psiinon psiinon commented Oct 16, 2026

Copy link
Copy Markdown
Member

No description provided.

@psiinon

psiinon commented Oct 16, 2026 •

Copy link
Copy Markdown
Member Author

Logo
Checkmarx One – Scan Summary & Details – 0dc720a4-816c-4d42-8abf-e03a6a68ec7e


New Issues (4 out of 4) Checkmarx found the following issues in this Pull Request

Severity: 2 Medium · 2 Low

# Severity Issue Source File / Package Checkmarx Insight
1 MEDIUM CVE-2026-110180 Npm-fast-uri-3.1.7
detailsRecommended version: 3.1.9
Description: fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. In versions from 2.4.2 through 2.4.7, from 3.1.3 through 3.1.8, and f...
Attack Vector: NETWORK
Attack Complexity: HIGH
Vulnerable Package
2 MEDIUM CVE-2026-110306 Npm-fast-uri-3.1.7
detailsRecommended version: 3.1.9
Description: fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. In versions before 2.4.8, from 3.0.0 through 3.1.8, and from 4.0.0 th...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
3 LOW CVE-2026-110095 Npm-fast-uri-3.1.7
detailsRecommended version: 3.1.9
Description: fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. In versions before 2.4.8, from 3.0.0 through 3.1.8, and from 4.0.0 th...
Attack Vector: NETWORK
Attack Complexity: HIGH
Vulnerable Package
4 LOW CVE-2026-110725 Npm-fast-uri-3.1.7
detailsRecommended version: 3.1.9
Description: fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. In versions before 2.4.8, from 3.0.0 through 3.1.8, and from 4.0.0 th...
Attack Vector: NETWORK
Attack Complexity: HIGH
Vulnerable Package

Use @Checkmarx to take action directly from this PR:

  • Rescan the PR

Try it: @Checkmarx how can you help? · @Checkmarx rescan this PR

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

Unresolved cancellation, persistence, import preservation, and replay defects affect correctness and script data integrity.

8 open findings
What changed in this PR

Adds a Script Viewer to both ZAP extension variants, extending recording with editing, file management, and replay.

Changes:

  • Adds statement editing, undo, import, and export.
  • Introduces replay and step-through controls with an on-page overlay.
  • Adds shared translations, tests, build integration, and documentation.
File Description
webpack.config.rec.js Builds the recorder’s Script Viewer.
webpack.config.js Builds the full extension’s Script Viewer.
views/​script.html Adds viewer layout and controls.
views/​popup.html Adds the viewer entry point.
views/​help.html Documents editing and replay.
test/​Background/​zestSummary.test.ts Tests statement summaries.
test/​Background/​zestScript.test.ts Tests replacement and numbering.
test/​Background/​zestEdit.test.ts Tests editing and import validation.
test/​Background/​tabs.test.ts Tests extension-tab reuse.
test/​Background/​scriptView.test.ts Tests viewer saving and controls.
test/​Background/​replayOverlay.test.ts Tests overlay behavior.
test/​Background/​replayer.test.ts Tests DOM actions and frame switching.
test/​Background/​player.test.ts Tests replay orchestration and stepping.
test/​Background/​i18n.test.ts Checks translation coverage.
source/​utils/​zestSummary.ts Formats statement summaries.
source/​utils/​zestEdit.ts Defines editable statements and validation.
source/​utils/​util.ts Adds an asynchronous delay helper.
source/​utils/​tabs.ts Reuses or creates extension tabs.
source/​utils/​i18n.ts Centralizes and expands translations.
source/​utils/​constants.ts Adds editing and replay message types.
source/​types/​zestScript/​ZestScript.ts Supports statement replacement.
source/​types/​zestScript/​RawStatement.ts Defines a generic statement type.
source/​ScriptView/​player.ts Coordinates replay and stepping.
source/​ScriptView/​index.ts Implements viewer interactions and persistence.
source/​ScriptView/​dialogs.ts Implements editing and confirmation dialogs.
source/​Popup/​styles.scss Styles the viewer icon.
source/​Popup/​index.tsx Opens the viewer and shares translations.
source/​ContentScript/​replayOverlay.ts Adds draggable replay status and controls.
source/​ContentScript/​replayer.ts Executes statements against page elements.
source/​ContentScript/​index.ts Handles replay messages.
source/​Background/​index.ts Persists replacement statements.
source/​assets/​icons/​view.svg Adds the viewer icon.
CHANGELOG.rec.md Announces recorder viewer functionality.
CHANGELOG.md Announces full-extension viewer functionality.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread source/Background/index.ts Outdated
Comment thread source/ContentScript/replayer.ts Outdated
Comment thread source/ContentScript/replayer.ts Outdated
Comment thread source/Popup/index.tsx Outdated
Comment thread source/ScriptView/index.ts Outdated
Comment thread source/ScriptView/index.ts Outdated
Comment thread source/ScriptView/player.ts
Comment thread source/utils/zestEdit.ts

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Comment thread source/Background/index.ts Outdated
Comment thread source/ContentScript/replayer.ts Outdated
Comment thread source/ScriptView/dialogs.ts Outdated
Comment thread source/ScriptView/index.ts Outdated
Comment thread source/ScriptView/index.ts Outdated
Comment thread views/popup.html Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Comment thread source/ContentScript/replayer.ts
Comment thread source/ContentScript/replayer.ts Outdated
Comment thread source/ScriptView/dialogs.ts Outdated
Comment thread source/ScriptView/index.ts Outdated
Comment thread source/ScriptView/player.ts

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Comment thread source/ScriptView/index.ts Outdated
Comment thread source/ScriptView/player.ts Outdated
Comment thread source/ScriptView/index.ts Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Comment thread source/Background/index.ts
Comment thread source/ScriptView/dialogs.ts Outdated
Comment thread source/ScriptView/index.ts
@kingthorin
kingthorin requested a balanced review from Copilot October 19, 2026 16:49

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@psiinon
psiinon force-pushed the script-ui branch 6 times, most recently from c9cdb40 to b9cd6f6 Compare October 20, 2026 10:37
@thc202

thc202 commented Oct 20, 2026

Copy link
Copy Markdown
Member

Thank you!

@psiinon
psiinon requested a review from kingthorin October 20, 2026 10:42
Signed-off-by: Simon Bennetts <psiinon@gmail.com>
@psiinon
psiinon merged commit fff47fd into zaproxy:main Oct 20, 2026
6 checks passed
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.

4 participants