Skip to content

Capture evidence for editor, restore, and CSV stories - #2047

Merged
stefan-burke merged 11 commits into
mainfrom
evidence-page-captures
Aug 7, 2026
Merged

Capture evidence for editor, restore, and CSV stories#2047
stefan-burke merged 11 commits into
mainfrom
evidence-page-captures

Conversation

@stefan-burke

@stefan-burke stefan-burke commented Aug 5, 2026

Copy link
Copy Markdown
Member

Summary

  • capture editor listings, restored bookings, and attendee CSV export evidence
  • preserve the exact admin session needed by each non-owner capture
  • render only the parsed CSV date column, with the selected theme, so screenshot artifacts contain no attendee personal data
  • keep non-PR evidence artifacts for 35 days so they remain available until the next monthly refresh; PR runs do not upload them

Verification

  • nix develop -c deno task test:files test/specs/support/by-hand.test.ts
  • nix develop -c deno task precommit
  • nix develop -c deno task specs:evidence --themes /home/user/git/tickets-site/evidence-themes

Summary by CodeRabbit

  • New Features

    • Added evidence capture coverage for editor listings, backup restoration, and attendee CSV exports.
    • Evidence captures now preserve session context and support themed HTML pages and downloaded content.
    • Attendee exports can display dates without exposing personal contact details.
  • Bug Fixes

    • Improved cookie handling and validation for captured pages and downloads.
    • Added support for HTML data URLs in captured evidence.
  • Documentation

    • Updated evidence artifact retention details.
  • Chores

    • Reduced artifact retention from 90 to 35 days and limited uploads for pull-request builds.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The evidence system adds three mobile captures, stores cookies per capture, applies declaration-specific cookies during capture, injects themes into HTML data pages, and records editor, backup, and attendee CSV evidence.

Changes

Evidence capture updates

Layer / File(s) Summary
Capture declarations and state
scripts/specs/evidence/declarations.ts, scripts/specs/evidence/hook.ts, scripts/specs/evidence/pages.ts, scripts/specs/evidence/schema.ts, test/scripts/specs/evidence-hook.test.ts, test/scripts/specs/evidence/pages.test.ts, test/specs/support/hooks.ts
Three mobile captures are declared. Evidence worlds and page state store cookies per capture. Evidence paths accept HTML data URLs and placeholder-free paths.
Scenario evidence recording
test/specs/support/evidence.ts, test/specs/support/by-hand.ts, test/specs/steps/editors.ts, test/specs/steps/backup-restore.ts, test/specs/support/browser.test.ts, test/specs/support/by-hand.test.ts
Editor listings, backup restoration, and attendee CSV flows record evidence pages and session cookies. CSV evidence keeps only date columns and escapes rendered HTML content.
Cookie and theme capture flow
scripts/specs/evidence/capture-flow.ts, test/scripts/specs/evidence-capture.test.ts, .github/workflows/spec-evidence.yml, README.md
Capture setup selects and parses per-capture cookies and injects non-empty themes into HTML data pages. Tests cover these behaviors. Evidence artifacts skip pull requests and retain for 35 days.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant EvidenceStep
  participant leaveEvidencePage
  participant CaptureFlow
  participant BrowserContext
  participant EvidencePage
  EvidenceStep->>leaveEvidencePage: record page path and session cookie
  leaveEvidencePage->>CaptureFlow: provide capture-specific cookie
  CaptureFlow->>BrowserContext: set selected cookie
  CaptureFlow->>EvidencePage: navigate to evidence page
  CaptureFlow->>EvidencePage: inject non-empty theme CSS for HTML data URLs
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main changes: evidence captures for editor listings, restore workflows, and CSV exports.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch evidence-page-captures
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch evidence-page-captures

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/specs/evidence/capture-flow.ts (1)

47-59: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve all evidence cookies.

debugCookies() can return multiple cookies, but browserCookie() keeps only the first pair before context.addCookies(). Parse and add every cookie, or pass only the required session cookie.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/specs/evidence/capture-flow.ts` around lines 47 - 59, Update
browserCookie in scripts/specs/evidence/capture-flow.ts to preserve every cookie
returned by debugCookies, either by parsing all cookie pairs for
context.addCookies or by explicitly selecting only the required session cookie.
Apply the same preservation fix at test/specs/steps/editors.ts lines 149-158;
both sites must retain the intended cookie values instead of silently discarding
all but the first pair.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@scripts/specs/evidence/capture-flow.ts`:
- Around line 47-59: Update browserCookie in
scripts/specs/evidence/capture-flow.ts to preserve every cookie returned by
debugCookies, either by parsing all cookie pairs for context.addCookies or by
explicitly selecting only the required session cookie. Apply the same
preservation fix at test/specs/steps/editors.ts lines 149-158; both sites must
retain the intended cookie values instead of silently discarding all but the
first pair.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 185cbb9b-6df3-474d-8b8d-c09d473d15e4

📥 Commits

Reviewing files that changed from the base of the PR and between d30671f and f88609b.

📒 Files selected for processing (11)
  • flake.nix
  • scripts/specs/evidence/capture-flow.ts
  • scripts/specs/evidence/declarations.ts
  • scripts/specs/evidence/hook.ts
  • scripts/specs/evidence/pages.ts
  • test/scripts/specs/evidence-capture.test.ts
  • test/scripts/specs/evidence-hook.test.ts
  • test/scripts/specs/evidence/pages.test.ts
  • test/specs/steps/editors.ts
  • test/specs/support/by-hand.ts
  • test/specs/support/hooks.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f88609b20f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/specs/evidence/declarations.ts Outdated
Comment thread test/specs/support/by-hand.ts Outdated
@stefan-burke
stefan-burke force-pushed the evidence-page-captures branch from f88609b to e3c8662 Compare August 6, 2026 04:42
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@coderabbitai coderabbitai Bot 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/specs/evidence/capture-flow.ts (1)

45-59: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Preserve every cookie in a declaration-specific session.

test/specs/steps/editors.ts Lines 155-157 serializes every browser.debugCookies() entry into one semicolon-delimited string. browserCookie uses cookie.split(";", 1) at Line 49, so context.addCookies receives only the first cookie. When authentication or request state needs another cookie, the capture loses that state and can render the wrong page.

Keep cookie name/value tuples structured through EvidencePages and add every tuple to the browser context, or select the required cookie explicitly. Add a regression test with two cookies. Do not split Path=/ attributes into separate cookies.

Also applies to: 107-111

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/specs/evidence/capture-flow.ts` around lines 45 - 59, Update the
cookie flow around browserCookie and EvidencePages so multiple debug cookies
remain structured as individual name/value tuples instead of being combined into
one semicolon-delimited string. Ensure context.addCookies adds every cookie
without splitting attributes such as Path=/, while preserving any required
cookie selection behavior. Add a regression test covering two cookies.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@scripts/specs/evidence/capture-flow.ts`:
- Around line 45-59: Update the cookie flow around browserCookie and
EvidencePages so multiple debug cookies remain structured as individual
name/value tuples instead of being combined into one semicolon-delimited string.
Ensure context.addCookies adds every cookie without splitting attributes such as
Path=/, while preserving any required cookie selection behavior. Add a
regression test covering two cookies.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 28ff290d-bc8c-4924-80f2-757372d50a11

📥 Commits

Reviewing files that changed from the base of the PR and between d30671f and e3c8662.

📒 Files selected for processing (10)
  • scripts/specs/evidence/capture-flow.ts
  • scripts/specs/evidence/declarations.ts
  • scripts/specs/evidence/hook.ts
  • scripts/specs/evidence/pages.ts
  • test/scripts/specs/evidence-capture.test.ts
  • test/scripts/specs/evidence-hook.test.ts
  • test/scripts/specs/evidence/pages.test.ts
  • test/specs/steps/editors.ts
  • test/specs/support/by-hand.ts
  • test/specs/support/hooks.ts

@stefan-burke

Copy link
Copy Markdown
Member Author

Replying to CodeRabbit’s 6 August review: 99f40044c explicitly selects only the authentication cookie with sessionCookie() in test/specs/support/browser.ts. The editor and backup captures use that selected cookie. This avoids treating Path and other cookie attributes as separate cookies while preserving the only cookie that determines the admin identity.

Verified with nix develop -c deno task specs:evidence --themes /home/user/git/tickets-site/evidence-themes.

🤖 Generated with Claude Code

@stefan-burke

Copy link
Copy Markdown
Member Author

Replying to CodeRabbit’s 5 August review: 99f40044c explicitly selects only the authentication cookie with sessionCookie() in test/specs/support/browser.ts. The editor and backup captures use that selected cookie. This avoids treating Path and other cookie attributes as separate cookies while preserving the only cookie that determines the admin identity.

Verified with nix develop -c deno task specs:evidence --themes /home/user/git/tickets-site/evidence-themes.

🤖 Generated with Claude Code

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d961ec68a5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread test/specs/support/browser.ts Outdated
Comment thread test/specs/support/by-hand.ts Outdated

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/specs/support/by-hand.ts`:
- Around line 72-75: Update the evidence flow around csvEvidencePage and
leaveEvidencePage so attendee names and email addresses are removed or redacted
before rendering PNG attachments; retain only non-sensitive CSV fields needed by
the specification evidence. Also update the spec-evidence workflow artifact
configuration to restrict access and reduce retention duration.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 35b2680a-2027-4a45-9115-0f6024973477

📥 Commits

Reviewing files that changed from the base of the PR and between e3c8662 and d961ec6.

📒 Files selected for processing (7)
  • scripts/specs/evidence/declarations.ts
  • scripts/specs/evidence/schema.ts
  • test/scripts/specs/evidence/pages.test.ts
  • test/specs/steps/backup-restore.ts
  • test/specs/steps/editors.ts
  • test/specs/support/browser.ts
  • test/specs/support/by-hand.ts

Comment thread test/specs/support/by-hand.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 02adc233c8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread test/specs/support/by-hand.ts Outdated
Comment thread .github/workflows/spec-evidence.yml Outdated

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/specs/support/evidence.ts`:
- Around line 17-22: Replace the line-based parsing in csvDateColumn with the
repository’s standard CSV parser, then render only the Date field from parsed
records so quoted attendee fields containing embedded newlines remain intact.
Add a direct regression test covering a quoted newline in an attendee field and
verify the resulting date column excludes continuation-line fragments.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 73ecb489-23a8-4b1e-9516-0f902cd909af

📥 Commits

Reviewing files that changed from the base of the PR and between d961ec6 and c81b973.

📒 Files selected for processing (9)
  • .github/workflows/spec-evidence.yml
  • scripts/specs/evidence/capture-flow.ts
  • test/scripts/specs/evidence-capture.test.ts
  • test/specs/steps/backup-restore.ts
  • test/specs/steps/editors.ts
  • test/specs/support/browser.test.ts
  • test/specs/support/by-hand.test.ts
  • test/specs/support/by-hand.ts
  • test/specs/support/evidence.ts

Comment thread test/specs/support/evidence.ts Outdated
@stefan-burke stefan-burke changed the title Add Cucumber evidence captures Capture evidence for editor, restore, and CSV stories Aug 6, 2026
coderabbitai[bot]
coderabbitai Bot previously requested changes Aug 6, 2026

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/spec-evidence.yml (1)

73-79: ⚠️ Potential issue | 🟠 Major

Apply the seven-day retention policy consistently.

The workflow and README use 35 days, but the PR objective requires seven days.

  • .github/workflows/spec-evidence.yml#L73-L79: change retention-days: 35 to retention-days: 7.
  • README.md#L335-L335: document seven-day retention.
Suggested synchronized change
-          retention-days: 35
+          retention-days: 7

-`tickets-evidence` artifact with GitHub's 35-day retention.
+`tickets-evidence` artifact with GitHub's seven-day retention.

Based on the PR objectives, non-PR specification-evidence artifacts must retain for seven days.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/spec-evidence.yml around lines 73 - 79, Update
.github/workflows/spec-evidence.yml lines 73-79 to set the upload-artifact
retention-days value to 7, and update README.md line 335 to document seven-day
retention so the workflow and documentation are consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/specs/support/evidence.ts`:
- Around line 18-21: Update csvDateColumn to validate that every parsed row
contains a Date value before joining, and throw immediately when the expected
field is missing instead of producing an empty line. Add a direct regression
test covering CSV input with a missing Date field and assert that csvDateColumn
throws.

---

Outside diff comments:
In @.github/workflows/spec-evidence.yml:
- Around line 73-79: Update .github/workflows/spec-evidence.yml lines 73-79 to
set the upload-artifact retention-days value to 7, and update README.md line 335
to document seven-day retention so the workflow and documentation are
consistent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 625d4262-2624-4203-8870-bcc4efd513c2

📥 Commits

Reviewing files that changed from the base of the PR and between c81b973 and afbc16e.

📒 Files selected for processing (5)
  • .github/workflows/spec-evidence.yml
  • README.md
  • test/specs/support/by-hand.test.ts
  • test/specs/support/by-hand.ts
  • test/specs/support/evidence.ts

Comment thread test/specs/support/evidence.ts Outdated
@stefan-burke

Copy link
Copy Markdown
Member Author

Replying to CodeRabbit’s 6 August retention comment: no change is appropriate. The evidence workflow runs monthly, so seven-day retention would delete the published tickets-evidence artifact more than three weeks before its next scheduled refresh. Commit bbb1117f9 deliberately set both .github/workflows/spec-evidence.yml and README.md to 35 days after the earlier review identified that gap, and the current PR summary states the same policy. PR runs still upload no evidence artifact, so 35 days applies only to the scheduled or main-branch artifact that must survive until the next monthly run.

@stefan-burke
stefan-burke dismissed coderabbitai[bot]’s stale review August 6, 2026 16:33

The inline Date-field issue is fixed in 7884e21 and its thread is resolved. The separate seven-day retention suggestion conflicts with the monthly refresh schedule and the previously accepted 35-day requirement; the evidence is recorded in issue comment 5207469120.

coderabbitai[bot]
coderabbitai Bot previously requested changes Aug 6, 2026

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/specs/support/evidence.ts`:
- Around line 21-27: Update the CSV date validation in the parse callback so it
rejects empty and whitespace-only Date strings in addition to non-string values,
preserving the existing error behavior for invalid rows. Add a regression test
covering a blank Date value and assert that parsing fails.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: bb35f987-0819-4a1c-9ec5-83a1377f4ef9

📥 Commits

Reviewing files that changed from the base of the PR and between afbc16e and 7884e21.

📒 Files selected for processing (2)
  • test/specs/support/by-hand.test.ts
  • test/specs/support/evidence.ts

Comment thread test/specs/support/evidence.ts
@stefan-burke
stefan-burke dismissed coderabbitai[bot]’s stale review August 6, 2026 17:46

Fixed in 525770b with direct tests for empty and whitespace-only Date values; the review thread is answered, confirmed by CodeRabbit, and resolved.

@coderabbitai coderabbitai Bot 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
test/specs/support/evidence.ts (2)

18-28: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Reject CSV exports with no date rows.

The parser validates each existing row, but it does not verify that any row exists. For "Date,Name\n", the mapping is empty and this function returns "Date". csvEvidencePage can then capture evidence with no date value.

Store the parsed rows, throw when the list is empty, and add a direct regression test.

Suggested fix
-export const csvDateColumn = (csv: string): string =>
-  [
+export const csvDateColumn = (csv: string): string => {
+  const rows = parse(csv, { skipFirstRow: true });
+  if (rows.length === 0) {
+    throw new Error("Attendee CSV has no date rows");
+  }
+  return [
     "Date",
-    ...parse(csv, { skipFirstRow: true }).map((row) => {
+    ...rows.map((row) => {
       const date = row.Date;
       if (typeof date !== "string" || date.trim() === "") {
         throw new Error("Attendee CSV is missing the Date field");
       }
       return date;
     }),
   ].join("\n");
+};

As per coding guidelines, required results must throw when absent instead of returning a sentinel result; the PR objective also requires rejecting CSV evidence without dates.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/specs/support/evidence.ts` around lines 18 - 28, Update csvDateColumn to
store the parsed rows, reject an empty row list by throwing an appropriate
missing-Date error, and then map validated dates as before. Add a direct
regression test covering a header-only CSV such as "Date,Name\n" and asserting
that the function throws.

Source: Coding guidelines


1-14: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Add a regression test for session values containing =.

Pass session=abc=def through the capture flow and assert that addCookies receives value: "abc=def".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/specs/support/evidence.ts` around lines 1 - 14, Add a regression test
covering the capture flow with a session cookie value containing “=” (for
example, “abc=def”). Verify that the resulting addCookies call preserves the
complete value as “abc=def” rather than truncating it at the delimiter, using
the existing capture-flow test helpers and assertions.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@test/specs/support/evidence.ts`:
- Around line 18-28: Update csvDateColumn to store the parsed rows, reject an
empty row list by throwing an appropriate missing-Date error, and then map
validated dates as before. Add a direct regression test covering a header-only
CSV such as "Date,Name\n" and asserting that the function throws.
- Around line 1-14: Add a regression test covering the capture flow with a
session cookie value containing “=” (for example, “abc=def”). Verify that the
resulting addCookies call preserves the complete value as “abc=def” rather than
truncating it at the delimiter, using the existing capture-flow test helpers and
assertions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 96bc4e3f-8170-4ad5-b653-b0c1ff3b32f0

📥 Commits

Reviewing files that changed from the base of the PR and between 7884e21 and 525770b.

📒 Files selected for processing (2)
  • test/specs/support/by-hand.test.ts
  • test/specs/support/evidence.ts

@stefan-burke
stefan-burke added this pull request to the merge queue Aug 7, 2026
Merged via the queue into main with commit 402cd6b Aug 7, 2026
3 checks passed
@stefan-burke
stefan-burke deleted the evidence-page-captures branch August 7, 2026 04:10
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.

1 participant