Repository: obsidian-tasks-group/obsidian-tasks
Pull request #2004 (2023-05-31 18:00:25)

chore(deps): bump peter-evans/create-pull-request from 3 to 5
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 3 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/peter-evans/create-pull-request/releases">peter-evans/create-pull-request's releases</a>.</em></p>
<blockquote>
<h2>Create Pull Request v5.0.0</h2>
<h2>Behaviour changes</h2>
<ul>
<li>The action will no longer leave the local repository checked out on the pull request <code>branch</code>. Instead, it will leave the repository checked out on the branch or commit that it was when the action started.</li>
<li>When using <code>add-paths</code>, uncommitted changes will no longer be destroyed. They will be stashed and restored at the end of the action run.</li>
</ul>
<h2>What's new</h2>
<ul>
<li>Adds input <code>body-path</code>, the path to a file containing the pull request body.</li>
<li>At the end of the action run the local repository is now checked out on the branch or commit that it was when the action started.</li>
<li>Any uncommitted tracked or untracked changes are now stashed and restored at the end of the action run. Currently, this can only occur when using the <code>add-paths</code> input, which allows for changes to not be committed. Previously, any uncommitted changes would be destroyed.</li>
<li>The proxy implementation has been revised but is not expected to have any change in behaviour. It continues to support the standard environment variables <code>http_proxy</code>, <code>https_proxy</code> and <code>no_proxy</code>.</li>
<li>Now sets the git <code>safe.directory</code> configuration for the local repository path. The configuration is removed when the action completes. Fixes issue <a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1170">peter-evans/create-pull-request#1170</a>.</li>
<li>Now determines the git directory path using the <code>git rev-parse --git-dir</code> command. This allows users with custom repository configurations to use the action.</li>
<li>Improved handling of the <code>team-reviewers</code> input and associated errors.</li>
</ul>
<h2>News</h2>
<p>:trophy:  create-pull-request won <a href="https://twitter.com/peterevans0/status/1638463617686470657?s=20">an award</a> for &quot;awesome action&quot; at the Open Source Awards at GitHub Universe. Thank you for your support and for making create-pull-request one of the top used actions. Please give it a :star:, or even <a href="https://github.com/sponsors/peter-evans">buy me a coffee</a>.</p>
<h2>What's Changed</h2>
<ul>
<li>v5 by <a href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/1792">peter-evans/create-pull-request#1792</a></li>
<li>15 dependency updates by <a href="https://github.com/dependabot"><code>@​dependabot</code></a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/peter-evans/create-pull-request/compare/v4.2.4...v5.0.0">https://github.com/peter-evans/create-pull-request/compare/v4.2.4...v5.0.0</a></p>
<h2>Create Pull Request v4.2.4</h2>
<p>⚙️ Patches some recent security vulnerabilities.</p>
<h2>What's Changed</h2>
<ul>
<li>Update concepts-guidelines.md by <a href="https://github.com/chrisbruford"><code>@​chrisbruford</code></a> in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/1610">peter-evans/create-pull-request#1610</a></li>
<li>58 dependency updates by <a href="https://github.com/dependabot"><code>@​dependabot</code></a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/chrisbruford"><code>@​chrisbruford</code></a> made their first contribution in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/1610">peter-evans/create-pull-request#1610</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/peter-evans/create-pull-request/compare/v4.2.3...v4.2.4">https://github.com/peter-evans/create-pull-request/compare/v4.2.3...v4.2.4</a></p>
<h2>Create Pull Request v4.2.3</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: add check for missing token input by <a href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/1324">peter-evans/create-pull-request#1324</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/peter-evans/create-pull-request/compare/v4.2.2...v4.2.3">https://github.com/peter-evans/create-pull-request/compare/v4.2.2...v4.2.3</a></p>
<h2>Create Pull Request v4.2.2</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: support github server url for pushing to fork by <a href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/1318">peter-evans/create-pull-request#1318</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/284f54f989303d2699d373481a0cfa13ad5a6666"><code>284f54f</code></a> fix: truncate body if exceeds max length (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1915">#1915</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/9e5b2344021c369f621dcb89ffde8fd910dac08c"><code>9e5b234</code></a> build(deps-dev): bump eslint from 8.38.0 to 8.39.0 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1888">#1888</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/2d8e7db84cac6d2c614124f2f4a8582a45f3b6f6"><code>2d8e7db</code></a> build(deps-dev): bump <code>@​types/node</code> from 18.15.11 to 18.16.0 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1887">#1887</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/041b6ab1635f4e31e86773ec8a91cf42d1403b67"><code>041b6ab</code></a> build(deps-dev): bump prettier from 2.8.7 to 2.8.8 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1886">#1886</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/31de0fdf3fbb0da088e82df3d7ae33c4112d4ef6"><code>31de0fd</code></a> build(deps-dev): bump <code>@​types/jest</code> from 29.5.0 to 29.5.1 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1885">#1885</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/28295f66367f85dd76ea1d27825cb5987f67c861"><code>28295f6</code></a> build(deps-dev): bump <code>@​typescript-eslint/parser</code> from 5.59.0 to 5.59.1 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1884">#1884</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/8dcaf3883b89ee69284b5200207140ee0ff16fd4"><code>8dcaf38</code></a> build(deps-dev): bump <code>@​typescript-eslint/parser</code> from 5.58.0 to 5.59.0 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1876">#1876</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/2827897dcca3eb94b42cba2228d9abc3ff04185e"><code>2827897</code></a> docs: add note about push-to-fork with remote repos</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/c4f19d3a23df3f9c18e7893bb435a88a2e045c49"><code>c4f19d3</code></a> build(deps-dev): bump eslint-import-resolver-typescript (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1844">#1844</a>)</li>
<li><a href="https://github.com/peter-evans/create-pull-request/commit/46035868a3d3d84411578c2a440de0f822dd7a06"><code>4603586</code></a> build(deps-dev): bump eslint from 8.37.0 to 8.38.0 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/1842">#1842</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/peter-evans/create-pull-request/compare/v3...v5">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=peter-evans/create-pull-request&package-manager=github_actions&previous-version=3&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


Patch:
diff --git a/.github/workflows/update-docs-markdown.yml b/.github/workflows/update-docs-markdown.yml
index ca6cd442..bf24a038 100644
--- a/.github/workflows/update-docs-markdown.yml
+++ b/.github/workflows/update-docs-markdown.yml
@@ -30,7 +30,7 @@ jobs:
       # Reference: https://github.com/marketplace/actions/create-pull-request
       - name: Create Pull Request
         id: cpr
-        uses: peter-evans/create-pull-request@v3
+        uses: peter-evans/create-pull-request@v5
         with:
           title: "docs/contrib: Update snippets and examples in markdown"
           branch: create-pull-request/${{ github.workflow }}
diff --git a/docs/Reference/Task Formats/Dataview Format.md b/docs/Reference/Task Formats/Dataview Format.md
index 7e394a26..4658bc25 100644
--- a/docs/Reference/Task Formats/Dataview Format.md
+++ b/docs/Reference/Task Formats/Dataview Format.md
@@ -104,14 +104,16 @@ For more information, see [[Dates]].
 > [!Info]
 > These names were chosen for use in Tasks, and are not known to dataview. They can of course be searched in dataview.
 
-```markdown
-- [ ] #task Lowest priority [priority:: lowest]
-- [ ] #task Low priority [priority:: low]
+<!-- snippet: DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-snippet.approved.md -->
+```md
+- [ ] #task Lowest priority  [priority:: lowest]
+- [ ] #task Low priority  [priority:: low]
 - [ ] #task Normal priority
-- [ ] #task Medium priority [priority:: medium]
-- [ ] #task High priority [priority:: high]
-- [ ] #task Highest priority [priority:: highest]
+- [ ] #task Medium priority  [priority:: medium]
+- [ ] #task High priority  [priority:: high]
+- [ ] #task Highest priority  [priority:: highest]
 ```
+<!-- endSnippet -->
 
 For more information, see [[Priority]].
 
diff --git a/docs/Reference/Task Formats/Tasks Emoji Format.md b/docs/Reference/Task Formats/Tasks Emoji Format.md
index 741c3557..aa6f58b2 100644
--- a/docs/Reference/Task Formats/Tasks Emoji Format.md
+++ b/docs/Reference/Task Formats/Tasks Emoji Format.md
@@ -22,14 +22,16 @@ For more information, see [[Dates]].
 
 ## Tasks Emoji Format for Priorities
 
-```markdown
-- [ ] #task Lowest priority ⏬️
+<!-- snippet: DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-snippet.approved.md -->
+```md
+- [ ] #task Lowest priority ⏬
 - [ ] #task Low priority 🔽
 - [ ] #task Normal priority
 - [ ] #task Medium priority 🔼
 - [ ] #task High priority ⏫
 - [ ] #task Highest priority 🔺
 ```
+<!-- endSnippet -->
 
 For more information, see [[Priority]].
 
diff --git a/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md b/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md
index 1c9b6ae3..3b0b8627 100644
--- a/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md
+++ b/resources/sample_vaults/Tasks-Demo/Formats/Dataview Format.md
@@ -12,6 +12,8 @@ The fields shown below can be surrounded by either `[]` or `()`.
 
 ## Dataview Format for Priorities
 
+<!-- placeholder to force blank line before included text --> <!-- include: DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-include.approved.md -->
+
 - [ ] #task Lowest priority  [priority:: lowest]
 - [ ] #task Low priority  [priority:: low]
 - [ ] #task Normal priority
@@ -19,6 +21,8 @@ The fields shown below can be surrounded by either `[]` or `()`.
 - [ ] #task High priority  [priority:: high]
 - [ ] #task Highest priority  [priority:: highest]
 
+<!-- placeholder to force blank line after included text --> <!-- endInclude -->
+
 ## Dataview Format for Recurrence
 
 - [ ] #task Is a recurring task  [repeat:: every day when done]
diff --git a/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md b/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md
index 905953ca..9e02ba1a 100644
--- a/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md
+++ b/resources/sample_vaults/Tasks-Demo/Formats/Tasks Format.md
@@ -10,6 +10,8 @@
 
 ## Tasks Format for Priorities
 
+<!-- placeholder to force blank line before included text --> <!-- include: DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-include.approved.md -->
+
 - [ ] #task Lowest priority ⏬
 - [ ] #task Low priority 🔽
 - [ ] #task Normal priority
@@ -17,6 +19,8 @@
 - [ ] #task High priority ⏫
 - [ ] #task Highest priority 🔺
 
+<!-- placeholder to force blank line after included text --> <!-- endInclude -->
+
 ## Tasks Format for Recurrence
 
 - [ ] #task Is a recurring task 🔁 every day when done
diff --git a/src/Query/Filter/PriorityField.ts b/src/Query/Filter/PriorityField.ts
index 991797c7..6e30cd74 100644
--- a/src/Query/Filter/PriorityField.ts
+++ b/src/Query/Filter/PriorityField.ts
@@ -94,28 +94,47 @@ export class PriorityField extends Field {
 
     public grouper(): GrouperFunction {
         return (task: Task) => {
-            let priorityName = 'ERROR';
-            switch (task.priority) {
-                case Priority.High:
-                    priorityName = 'High';
-                    break;
-                case Priority.Highest:
-                    priorityName = 'Highest';
-                    break;
-                case Priority.Medium:
-                    priorityName = 'Medium';
-                    break;
-                case Priority.None:
-                    priorityName = 'None';
-                    break;
-                case Priority.Low:
-                    priorityName = 'Low';
-                    break;
-                case Priority.Lowest:
-                    priorityName = 'Lowest';
-                    break;
-            }
+            const priorityName = PriorityField.priorityNameUsingNone(task.priority);
             return [`Priority ${task.priority}: ${priorityName}`];
         };
     }
+
+    /**
+     * Get the name of a {@link Priority} value, returning 'None' for {@link Priority.None}
+     * @param priority
+     * @see priorityNameUsingNormal
+     */
+    public static priorityNameUsingNone(priority: Priority) {
+        let priorityName = 'ERROR';
+        switch (priority) {
+            case Priority.High:
+                priorityName = 'High';
+                break;
+            case Priority.Highest:
+                priorityName = 'Highest';
+                break;
+            case Priority.Medium:
+                priorityName = 'Medium';
+                break;
+            case Priority.None:
+                priorityName = 'None';
+                break;
+            case Priority.Low:
+                priorityName = 'Low';
+                break;
+            case Priority.Lowest:
+                priorityName = 'Lowest';
+                break;
+        }
+        return priorityName;
+    }
+
+    /**
+     * Get the name of a {@link Priority} value, returning 'Normal' for {@link Priority.None}
+     * @param priority
+     * @see priorityNameUsingNone
+     */
+    public static priorityNameUsingNormal(priority: Priority) {
+        return PriorityField.priorityNameUsingNone(priority).replace('None', 'Normal');
+    }
 }
diff --git a/src/Task.ts b/src/Task.ts
index c7074303..35760513 100644
--- a/src/Task.ts
+++ b/src/Task.ts
@@ -15,6 +15,10 @@ import { compareByDate } from './lib/DateTools';
  * When sorting, make sure low always comes after none. This way any tasks with low will be below any exiting
  * tasks that have no priority which would be the default.
  *
+ * Values can be converted to strings with:
+ * - {@link priorityNameUsingNone} in {@link PriorityField}
+ * - {@link priorityNameUsingNormal} in {@link PriorityField}
+ *
  * @export
  * @enum {number}
  */


Test patch:
diff --git a/tests/Query/Filter/PriorityField.test.ts b/tests/Query/Filter/PriorityField.test.ts
index 9c865ff9..003203c6 100644
--- a/tests/Query/Filter/PriorityField.test.ts
+++ b/tests/Query/Filter/PriorityField.test.ts
@@ -16,6 +16,19 @@ function testTaskFilterForTaskWithPriority(filter: string, priority: Priority, e
     testFilter(filterOrError, builder.priority(priority), expected);
 }
 
+describe('priority naming', () => {
+    it.each(Object.values(Priority))('should name priority value: "%i"', (priority) => {
+        const name = PriorityField.priorityNameUsingNone(priority);
+        expect(name).not.toEqual('ERROR'); // if this fails, code needs to be updated for a new priority
+    });
+
+    it('should name default priority correctly', () => {
+        const none = Priority.None;
+        expect(PriorityField.priorityNameUsingNone(none)).toEqual('None');
+        expect(PriorityField.priorityNameUsingNormal(none)).toEqual('Normal');
+    });
+});
+
 describe('priority is', () => {
     it('priority is highest', () => {
         const filter = 'priority is highest';
@@ -229,11 +242,16 @@ describe('grouping by priority', () => {
     });
 });
 
-function withAllPriorities(): Task[] {
+export function withAllPriorities(): Task[] {
     const tasks: Task[] = [];
     const allPriorities = Object.values(Priority);
     allPriorities.forEach((priority) => {
-        const task = new TaskBuilder().priority(priority).build();
+        // This description is chosen to be useful for including tasks in user docs, so
+        // changing it will change documentation and sample vault content.
+        const priorityName = PriorityField.priorityNameUsingNormal(priority);
+        const description = `#task ${priorityName} priority`;
+
+        const task = new TaskBuilder().priority(priority).description(description).build();
         tasks.push(task);
     });
     return tasks;
diff --git a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-include.approved.md b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-include.approved.md
new file mode 100644
index 00000000..98a76929
--- /dev/null
+++ b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-include.approved.md
@@ -0,0 +1,10 @@
+<!-- placeholder to force blank line before included text -->
+
+- [ ] #task Lowest priority  [priority:: lowest]
+- [ ] #task Low priority  [priority:: low]
+- [ ] #task Normal priority
+- [ ] #task Medium priority  [priority:: medium]
+- [ ] #task High priority  [priority:: high]
+- [ ] #task Highest priority  [priority:: highest]
+
+<!-- placeholder to force blank line after included text -->
diff --git a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-snippet.approved.md b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-snippet.approved.md
new file mode 100644
index 00000000..617872c3
--- /dev/null
+++ b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_dataview-snippet.approved.md
@@ -0,0 +1,6 @@
+- [ ] #task Lowest priority  [priority:: lowest]
+- [ ] #task Low priority  [priority:: low]
+- [ ] #task Normal priority
+- [ ] #task Medium priority  [priority:: medium]
+- [ ] #task High priority  [priority:: high]
+- [ ] #task Highest priority  [priority:: highest]
diff --git a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-include.approved.md b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-include.approved.md
new file mode 100644
index 00000000..d124d82c
--- /dev/null
+++ b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-include.approved.md
@@ -0,0 +1,10 @@
+<!-- placeholder to force blank line before included text -->
+
+- [ ] #task Lowest priority ⏬
+- [ ] #task Low priority 🔽
+- [ ] #task Normal priority
+- [ ] #task Medium priority 🔼
+- [ ] #task High priority ⏫
+- [ ] #task Highest priority 🔺
+
+<!-- placeholder to force blank line after included text -->
diff --git a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-snippet.approved.md b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-snippet.approved.md
new file mode 100644
index 00000000..9eec9559
--- /dev/null
+++ b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.Serializer_Priorities_tasksPluginEmoji-snippet.approved.md
@@ -0,0 +1,6 @@
+- [ ] #task Lowest priority ⏬
+- [ ] #task Low priority 🔽
+- [ ] #task Normal priority
+- [ ] #task Medium priority 🔼
+- [ ] #task High priority ⏫
+- [ ] #task Highest priority 🔺
diff --git a/tests/TaskSerializer/DocsSamplesForTaskFormats.test.ts b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.ts
new file mode 100644
index 00000000..1e8c7888
--- /dev/null
+++ b/tests/TaskSerializer/DocsSamplesForTaskFormats.test.ts
@@ -0,0 +1,22 @@
+import { TASK_FORMATS, updateSettings } from '../../src/Config/Settings';
+import { verifyMarkdown, verifyMarkdownForDocs } from '../TestingTools/VerifyMarkdownTable';
+import { withAllPriorities } from '../Query/Filter/PriorityField.test';
+
+describe('Serializer', () => {
+    describe('Priorities', () => {
+        function allPriorityLines() {
+            const tasks = withAllPriorities().reverse();
+            return tasks.map((t) => t.toFileLineString()).join('\n');
+        }
+
+        it.each(Object.keys(TASK_FORMATS))('%s-snippet', (key: string) => {
+            updateSettings({ taskFormat: key as keyof TASK_FORMATS });
+            verifyMarkdown(allPriorityLines());
+        });
+
+        it.each(Object.keys(TASK_FORMATS))('%s-include', (key: string) => {
+            updateSettings({ taskFormat: key as keyof TASK_FORMATS });
+            verifyMarkdownForDocs(allPriorityLines());
+        });
+    });
+});
diff --git a/tests/TestingTools/VerifyMarkdownTable.ts b/tests/TestingTools/VerifyMarkdownTable.ts
index f95e2e81..9a9856d8 100644
--- a/tests/TestingTools/VerifyMarkdownTable.ts
+++ b/tests/TestingTools/VerifyMarkdownTable.ts
@@ -1,12 +1,36 @@
-import { Options } from 'approvals/lib/Core/Options';
+import { type ConfigModifier, Options } from 'approvals/lib/Core/Options';
 import { verify } from 'approvals/lib/Providers/Jest/JestApprovals';
 
-function verifyMarkdown(output: string) {
+// This import fails with Approvals.NodeJS 6.2.1:
+// error TS1371: This import is never used as a value and must use 'import type' because 'importsNotUsedAsValues' is set to 'error'.
+// import { JestReporter } from 'approvals/lib/Providers/Jest/JestReporter';
+
+export function verifyMarkdown(output: string) {
     let options = new Options();
     options = options.forFile().withFileExtention('md');
-    verify(output, options);
+
+    const configModifier: ConfigModifier = (c) => {
+        c.reporters = [
+            // Built-in reporters listed at:
+            // https://github.com/approvals/Approvals.NodeJS#built-in-reporters
+            'vscode', // VS Code diff works well with files containing emojis
+            //-----------------
+            // Last one is jest reporter, that should write diffs to console in
+            // Continuous Integration builds, such as GitHub Actions
+            // new JestReporter(), // disabled due to import error - see above
+        ];
+        return c;
+    };
+
+    verify(output, options.withConfig(configModifier));
 }
 
+/**
+ * Write out markdown block for including directly in documentation.
+ * To embed the approved file directly in user docs, write line like this, and then run mdsnippets:
+ *      include: output-file-name.approved.md
+ * @param markdown
+ */
 export function verifyMarkdownForDocs(markdown: string) {
     let output = '<!-- placeholder to force blank line before included text -->\n\n';
     output += markdown;