diff --git a/src/testdir/README.txt b/src/testdir/README.txt
index 7907e50..203c324 100644
--- a/src/testdir/README.txt
+++ b/src/testdir/README.txt
@@ -97,8 +97,7 @@
 
 - To execute only specific test functions, add a second argument:
 
-	 $ ../vim -u NONE -S runtest.vim test_channel.vim open_delay
-
+    $ ../vim -u NONE -S runtest.vim test_channel.vim open_delay
 
 - To run all the tests:
 
@@ -120,9 +119,82 @@
 
     $ make clean
 
-# ANALYZE FAILED SCREENDUMPS FROM CI:
 
-See the file ../../runtime/syntax/testdir/README.txt section
-"Viewing generated screendumps" on how to analyze failed screen dumps
-(from CI or locally) using the provided Vim script
-../../runtime/syntax/testdir/viewdumps.vim in a more automatic way.
+VIEWING GENERATED SCREENDUMPS (local):
+
+You may also wish to look at the whole batch of failed screendumps after
+running "make".  Source the "viewdumps.vim" script for this task:
+
+    $ ../vim -u NONE -S viewdumps.vim \
+				[dumps/Test_xxd_*.dump ...]
+
+By default, all screendumps found in the "failed" directory will be added to
+the argument list and then the first one will be loaded.  Loaded screendumps
+that bear filenames of screendumps found in the "dumps" directory will be
+rendering the contents of any such pair of files and the difference between
+them (:help term_dumpdiff()); otherwise, they will be rendering own contents
+(:help term_dumpload()).  Remember to execute :edit when occasionally you see
+raw file contents instead of rendered.
+
+At any time, you can add, list, and abandon other screendumps:
+
+    :$argedit dumps/Test_spell_*.dump
+    :args
+    :qall
+
+The listing of argument commands can be found under :help buffer-list.
+
+
+VIEWING GENERATED SCREENDUMPS (from a CI-uploaded artifact):
+
+After you have downloaded an artifact archive containing failed screendumps
+and extracted its files in a temporary directory, you need to set up a "dumps"
+directory by creating a symlink:
+
+    $ cd /path/to/fork
+    $ ln -s $(pwd)/src/testdir/dumps /tmp/src/testdir/dumps
+
+You can now examine the extracted screendumps:
+
+    $ ./src/vim -u NONE -S src/testdir/viewdumps.vim \
+				/tmp/src/testdir/failed/*.dump
+
+
+VIEWING GENERATED SCREENDUMPS (submitted for a pull request):
+
+First, you need to check out the topic branch with the proposed changes and
+write down a difference list between the HEAD commit (index) and its parent
+commit with respect to the changed "dumps" filenames:
+
+    $ cd /path/to/fork
+    $ git switch prs/1234
+    $ git diff-index --relative=src/testdir/dumps/ \
+				--name-only prs/1234~1 > /tmp/filelist
+
+Then, you need to check out the master branch, change the current working
+directory to reconcile relative filepaths written in the filenames list,
+possibly create an empty "failed" directory, copy in this directory the old
+"dumps" files, whose names are on the same list, and follow it by checking out
+the topic branch:
+
+    $ git switch master
+    $ cd src/testdir/dumps
+    $ test -d ../failed || mkdir ../failed
+    $ cp -t ../failed $(cat /tmp/filelist)
+    $ git switch prs/1234
+
+Make note of any missing new screendumps.  Please remember about the
+introduced INVERTED relation between "dumps" and "failed", i.e. the files to
+be committed are in "dumps" already and their old versions are in "failed".
+Therefore, you need to copy the missing new screendumps from "dumps" to
+"failed":
+
+    $ cp -t ../failed foo_10.dump foo_11.dump foo_12.dump
+
+After you have changed the current working directory to its parent directory,
+you can now examine the screendumps from the "failed" directory (note that new
+screendumps will be shown with no difference between their versions):
+
+    $ cd ..
+    $ ../vim -u NONE -S viewdumps.vim
+
diff --git a/src/testdir/commondumps.vim b/src/testdir/commondumps.vim
new file mode 100644
index 0000000..ed70280
--- /dev/null
+++ b/src/testdir/commondumps.vim
@@ -0,0 +1,76 @@
+vim9script
+
+# (Script-local.)
+#
+# Render a loaded screendump file or the difference of a loaded screendump
+# file and its namesake file from the "dumps" directory.
+def Render()
+  const failed_fname: string = bufname()
+  try
+    setlocal suffixesadd=.dump
+    const dumps_fname: string = findfile(
+			fnamemodify(failed_fname, ':p:t'),
+			fnamemodify(failed_fname, ':p:h:h') .. '/dumps')
+    if filereadable(dumps_fname)
+      term_dumpdiff(failed_fname, dumps_fname)
+    else
+      term_dumpload(failed_fname)
+    endif
+  finally
+    exec 'bwipeout ' .. failed_fname
+  endtry
+enddef
+
+# Search for the "failed" directory in the passed _subtreedirname_ directories
+# (usually "\<src\>" or "\<syntax\>") and, if found, select its passed _count_
+# occurence, add all its "*.dump" files to the argument list and list them;
+# also define a BufRead autocommand that would invoke "Render()" for every
+# "*.dump" file.
+def g:Init(subtreedirname: string, count: number)
+  # Support sourcing this script from any directory in the direct path that
+  # leads to the project's root directory.
+  const failed_path: string = finddir('failed', getcwd() .. '/**', -1)
+    ->filter(((cwdpath: string, parentdirname: string) =>
+			(_: number, dirpath: string) =>
+	cwdpath =~ parentdirname || dirpath =~ parentdirname)(
+			getcwd(),
+			subtreedirname))
+    ->get(count, '') .. '/'
+  var error: string = null_string
+
+  if failed_path == '/'
+    error = 'No such directory: "failed"'
+  else
+    const failed_fnames: string = failed_path .. readdir(failed_path,
+			(fname: string) => fname =~ '^.\+\.dump$')
+      ->join(' ' .. failed_path)
+
+    if failed_fnames =~ 'failed/$'
+      error = 'No such file: "*.dump"'
+    else
+      exec ':0argedit ' .. failed_fnames
+      buffers
+    endif
+  endif
+
+  autocmd_add([{
+    replace:	true,
+    group:	'viewdumps',
+    event:	'BufRead',
+    pattern:	'*.dump',
+    cmd:	'Render()',
+  }])
+
+  # Unconditionally help, in case a list of filenames is passed to the
+  # command, the first terminal window with its BufRead event.
+  silent doautocmd viewdumps BufRead
+
+  if error != null_string
+    # Instead of sleeping, fill half a window with blanks and prompt
+    # hit-enter.
+    echom error .. repeat("\x20",
+	(winwidth(0) * (winheight(0) / 2) - strlen(error)))
+  endif
+enddef
+
+# vim:fdm=syntax:sw=2:ts=8:noet:nolist:nosta:
diff --git a/src/testdir/viewdumps.vim b/src/testdir/viewdumps.vim
new file mode 100644
index 0000000..62f7bbe
--- /dev/null
+++ b/src/testdir/viewdumps.vim
@@ -0,0 +1,11 @@
+vim9script
+
+exec 'source ' .. (((cwdpath: string) => cwdpath
+  ->strpart(0, cwdpath->strridx('/vim')))(getcwd()))
+  .. '/vim/src/testdir/commondumps.vim'
+g:Init('\<src\>', 0)
+
+# Match ":language" of runtest.vim.
+language messages C
+
+# vim:fdm=syntax:sw=2:ts=8:noet:nolist:nosta:
