Repository navigation
FEAT: Add saved attack results analytics GUI - #3168
Merged
Roman Lutz (romanlutz) merged 5 commits intoOct 15, 2026
Merged
Roman Lutz (romanlutz) merged 5 commits into
Roman Lutz (romanlutz) merged 5 commits into
Conversation
Build the final CoPyRIT analytics slice on the merged REST foundation. Keep cohorts, statistics, facets and drilldowns SDK-owned; support bounded shared views, explicit denominators and offset-aware dates. Include isolated SQLite browser coverage and consistent outcome presentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: db72bc20-c170-4c32-bd74-64127c7e3f89
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: db72bc20-c170-4c32-bd74-64127c7e3f89
Richard Lundeen (richlundeen)
approved these changes
Oct 14, 2026
Preserve the Analytics guide and current sidebar destinations while adopting upstream's Technique.execute label. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: db72bc20-c170-4c32-bd74-64127c7e3f89
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: db72bc20-c170-4c32-bd74-64127c7e3f89
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 15, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 15, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Users need to explore saved attack results without exporting data or interpreting a paginated sample as the whole population. This completes part 5 of the attack analytics roadmap, building on the REST/SDK foundation merged in #3149.
Critical self-review fixes include stale request/page revival during A -> B -> A navigation, rejected-edit errors after Back, invalid link acceptance, abortable Retry-After cooldowns, and narrow-layout overflow. Backend arithmetic, storage configuration, HTTP endpoints, and performance-test policies are unchanged. Started from
ca54989f8049a693dd6af311fe656b5a9656e5fd.Tests and Documentation
Added component, hook, API-client, URL/date, and request-lifecycle regressions. A dedicated browser suite uses the real application routes and compatibility/readiness middleware over isolated synthetic SQLite, with a private home/config and no shared database or external provider calls. It covers saved-ID counting, scenario retries, pagination, large direct/reload/Back links, invalid-state recovery, exact outcome fills, keyboard navigation, and narrow layouts. The suite is an additional shard of the existing required frontend E2E CI check.
Validation completed before PR creation:
npm --prefix frontend run test:coverage -- --maxWorkers=2 --silent --coverageReporters=text-summary --coverageReporters=json-summary: passed, 120 suites and 2,981 tests; all coverage thresholds passed.npm --prefix frontend run test:e2e:analytics: passed, 9 real-SQLite browser tests.npx tsc --project tsconfig.test.json --noEmitfromfrontend: passed.npm --prefix frontend run build: passed, including a clean committed-head build with matching frontend/backend compatibility stamps.ESLint, main TypeScript checking, Ruff check/format, commit pre-commit checks, and a focused analytics-hook open-handle check also passed. Final light/dark, heatmap-drilldown, and narrow screenshots were captured and inspected locally after fixes; images are retained in session artifacts and not uploaded or committed.
Known validation limits: live Azure SQL, Entra-authenticated deployment, and external providers were not exercised. The full Jest run passed but emitted a worker-force-exit warning; focused analytics hooks reported no open handles, so the cause remains unestablished. Vite emitted config-loader and large-chunk warnings. The backend 100,000-result workload was not repeated for this frontend-only slice. JupyText was not run because no executable documentation examples changed.
Updated the GUI guide and frontend README with analytics semantics, sharing, dates, refresh behavior, and the isolated browser-test setup.