From ced4d8a6da293e1ea216aeaf74f6b07c61ce9c65 Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Tue, 25 Aug 2026 11:00:07 -0700 Subject: [PATCH 1/5] add file annotation functionality --- actions/preview-link-generator/README.md | 6 + .../__tests__/pull-updater.test.ts | 103 +++++++- actions/preview-link-generator/action.yml | 9 +- actions/preview-link-generator/dist/index.js | 165 +++++++++++- .../preview-link-generator/dist/index.js.map | 2 +- .../src/pull-updater.ts | 245 +++++++++++++++++- .../src/types/WorkflowInput.ts | 4 + 7 files changed, 507 insertions(+), 27 deletions(-) diff --git a/actions/preview-link-generator/README.md b/actions/preview-link-generator/README.md index b640fd40..ae1fbdf2 100644 --- a/actions/preview-link-generator/README.md +++ b/actions/preview-link-generator/README.md @@ -9,10 +9,16 @@ on: [pull_request_target] jobs: preview_link_generator_job: + permissions: + checks: write + pull-requests: write runs-on: ubuntu-latest steps: - uses: dotnet/docs-tools/actions/preview-link-generator@main with: repo_token: ${{ secrets.GITHUB_TOKEN }} max_wait_time_minutes: 20 + mark_up_files_changed: true ``` + + When `mark_up_files_changed` is enabled, the action creates check-run annotations for build errors and warnings that occur on added lines in the pull request. Diagnostics on unchanged lines are ignored. The workflow token requires `checks: write` for this option. diff --git a/actions/preview-link-generator/__tests__/pull-updater.test.ts b/actions/preview-link-generator/__tests__/pull-updater.test.ts index cd68d2f6..8d5b1e03 100644 --- a/actions/preview-link-generator/__tests__/pull-updater.test.ts +++ b/actions/preview-link-generator/__tests__/pull-updater.test.ts @@ -1,12 +1,15 @@ import { exportedForTesting } from "../src/pull-updater"; -import { describe, expect, it } from "@jest/globals"; +import { beforeAll, describe, expect, it } from "@jest/globals"; import { WorkflowInput, workflowInput } from "../src/types/WorkflowInput"; const { appendTable, buildMarkdownPreviewTableFromExtractedLinks, calculateMaxPollAttempts, + extractChangedLinesFromPatch, + extractDiagnosticsFromBuildReport, extractPreviewLinksFromBuildReport, + filterDiagnosticsToChangedLines, PREVIEW_TABLE_END, PREVIEW_TABLE_START, replaceExistingTable, @@ -82,6 +85,7 @@ ${PREVIEW_TABLE_END}`; setInput("COLLAPSIBLE_AFTER", "7"); setInput("MAX_ROW_COUNT", "42"); setInput("MAX_WAIT_TIME_MINUTES", "15"); + setInput("annotate_file_warnings", "true"); setInput("REPO_TOKEN", "test-token"); const opts: WorkflowInput = workflowInput; @@ -90,6 +94,7 @@ ${PREVIEW_TABLE_END}`; expect(opts.collapsibleAfter).toBe(7); expect(opts.maxRowCount).toBe(42); expect(opts.maxWaitTimeMinutes).toBe(15); + expect(opts.annotateFiles).toBe(true); expect(opts.repoToken).toBe("test-token"); }); @@ -130,6 +135,94 @@ ${PREVIEW_TABLE_END}`; ); }); + it("extracts errors and warnings from validated file details", () => { + const html = ` +
| File | Status | Preview URL | Details | +
| articles/create.md | Warning | View | +
+ Line 61: [Warning] Multiple H1s are not allowed. + Line 83: [Error] Another top-level heading was found. + |
+
| articles/overview.md | Warning | View | +Line 92: [Warning] Duplicate heading: 'Next step'. | +