From 391dcc3314229a2b21f068b9fee70ca06c61af12 Mon Sep 17 00:00:00 2001
From: Jonathan Smith <20701-jonathan1055@users.noreply.drupalcode.org>
Date: Thu, 31 Oct 2024 16:23:37 +0000
Subject: [PATCH] Issue #3473000 by jonathan1055, fjgarlin: Documentation pages

---
 .gitlab-ci.yml                                |  4 +--
 CHANGELOG.md                                  | 28 +++++++++----------
 docs/info/common.md                           |  4 +--
 docs/info/test-locally.md                     |  2 +-
 docs/info/variants.md                         |  2 +-
 docs/jobs/composer-lint.md                    |  2 +-
 docs/jobs/composer.md                         |  6 ++--
 docs/jobs/cspell.md                           | 14 +++++-----
 docs/jobs/eslint.md                           | 12 ++++++--
 docs/jobs/nightwatch.md                       |  2 +-
 docs/jobs/phpstan.md                          |  6 ++--
 docs/jobs/phpunit.md                          |  8 +++---
 docs/jobs/stylelint.md                        |  8 +++++-
 docs/jobs/test-only-changes.md                |  8 +++---
 docs/jobs/upgrade-status.md                   |  2 +-
 .../include.drupalci.hidden-variables.yml     |  2 +-
 includes/include.drupalci.main-d7.yml         |  2 +-
 includes/include.drupalci.main.yml            | 28 +++++++++----------
 includes/include.drupalci.variables.yml       | 20 ++++++-------
 scripts/prepare-cspell.php                    |  2 +-
 20 files changed, 88 insertions(+), 74 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5d616a85..76af3189 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -51,7 +51,7 @@ workflow:
 # We can't have all possible combinations of projects that use certain flags,
 # but it's useful to have a selected few where we can be trigger pipelines when
 # testing merge requests and commits.
-# Testing via phpunit.
+# Testing via PHPUnit.
 'Test Key CDN':
   extends: .downstream-base
   trigger:
@@ -128,7 +128,7 @@ workflow:
       npx cspell --show-suggestions --show-context --no-progress --dot {**,.**} || EXIT_CODE=$((EXIT_CODE+1))
     - |
       # YML linting.
-      echo "ESlint version $(npx eslint --version)"
+      echo "ESLint version $(npx eslint --version)"
       npx eslint --no-error-on-unmatched-pattern --ext=.yml . || EXIT_CODE=$((EXIT_CODE+1))
     - |
       # PHP standards.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b1234e74..5ea5873a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -84,14 +84,14 @@
 ## 1.5.1 - 2024-06-20
 
 #3455923 - Allow scheduled pipelines from non 'project' namespace.\
-#3454363 - CSPELL ignores files in hidden folders.\
-#3453105 - Include a phpstan baseline without a custom phpstan.neon file.
+#3454363 - CSpell ignores files in hidden folders.\
+#3453105 - Include a PHPStan baseline without a custom phpstan.neon file.
 
 ## 1.5.0 - 2024-06-13
 
 #3449098 - Linting skips files ending in .theme, .profile and .engine.\
 #3450701 - Add a variable for run-tests.sh concurrency.\
-#3453102 - Add a variable to specify phpstan level.\
+#3453102 - Add a variable to specify PHPStan level.\
 #3453001 - Check if composer.lock file exist in composer-lint job.\
 #3452898 - Bump core stable to 10.2.7.\
 #3450355 - Composer Lint needs to check original composer.json.
@@ -146,7 +146,7 @@
 ## 1.3.7 - 2024-04-12
 
 #3440448 - When requiring drush, do it with the the `-W` param.\
-#3359927 - Document option to improve phpunit information in log.\
+#3359927 - Document option to improve PHPUnit information in log.\
 #3423154 - Change chromedriver for the new one used by core.
 
 ## 1.3.6 - 2024-04-10
@@ -156,11 +156,11 @@
 
 ## 1.3.5 - 2024-04-08
 
-#3432261 - Eslint on contrib is making incorrect recommendations.\
+#3432261 - ESLint on contrib is making incorrect recommendations.\
 #3427357 - Move default phpcs configuration file and clean up unneeded lines in it.\
 #3435899 - Only update documentation when merging into default branch.\
 #3409296 - Add process for defining dynamic internal variables.\
-#3400979 - Document additional options for phpunit deprecations.\
+#3400979 - Document additional options for PHPUnit deprecations.\
 #3437578 - Add some missing extensions for PHP files.\
 #3436889 - D7 Fix variable name used for max PHP version.
 
@@ -177,7 +177,7 @@
 
 #3437434 - Composer (next major) no longer works after `11.x` updated to Symfony 7.\
 #3437397 - Add missing phpstan (max PHP version) job.\
-#3436819 - Composer-lint fails if there are no php files in the project.\
+#3436819 - composer-lint fails if there are no php files in the project.\
 #3431247 - Fix image references.\
 #3422720 - D7 Test dependencies are not automatically brought.
 
@@ -185,20 +185,20 @@
 
 #3431247 - Add common customizations to the documentation site.\
 #3432593 - Fix broken link in the contributing documentation.\
-#3426136 - Execute CSPELL in project root folder and make fixing words easier.\
+#3426136 - Execute CSpell in project root folder and make fixing words easier.\
 #3432156 - Wrong references in phpstan and nightwatch next major jobs.
 
 ## 1.3.1 - 2024-03-19
 
 #3431269 - Yarn install fails in "composer (next major)" job.\
-#3419008 - Add logic to avoid running PHPUnit if the project has no phpunit tests.
+#3419008 - Add logic to avoid running PHPUnit if the project has no PHPUnit tests.
 
 ## 1.3.0 - 2024-03-14
 
 #3426647 - Check our own coding standards and basic editor configurations.\
 #3426277 - Revert code changes and add alternative way via documentation pages.\
 #3418831 - Test-only job.\
-#3423402 - Document how to use the CSPELL job.
+#3423402 - Document how to use the CSpell job.
 
 ## 1.2.3 - 2024-03-08
 
@@ -219,7 +219,7 @@
 
 ## 1.2.1 - 2024-03-04
 
-#3422323 - Improve CSPELL, use pre-configured .cspell.json.\
+#3422323 - Improve CSpell, use pre-configured .cspell.json.\
 #3421873 - Allow override of docker image tag.\
 #3422720 - Test dependencies are not automatically brought on Drupal 7 modules.\
 #3422978 - Update link in default template.\
@@ -228,8 +228,8 @@
 
 ## 1.2.0 - 2024-02-16
 
-#3405955 - Add job for CSPELL in contrib pipeline.\
-#3405813 - Create downloadable patch for ESLINT automated fixes.\
+#3405955 - Add job for CSpell in contrib pipeline.\
+#3405813 - Create downloadable patch for ESLint automated fixes.\
 #3419069 - Tidy up template and remove redundant lines.\
 #3421674 - Add condition for mariadb.\
 #3397270 - Nightwatch testing against all opted in versions.
@@ -245,7 +245,7 @@
 
 #3417987 - Amend ability to use a tag, even for files brought via curl.\
 #3419178 - Increase PHP_MAX to 8.3 (part 1).\
-#3414377 - Wrong phpunit's junit.xml location in Drupal 10.2.\
+#3414377 - Wrong PHPUnit's junit.xml location in Drupal 10.2.\
 #3417807 - Being able to ignore CSS files.
 
 ## 1.1.0 - 2024-01-30
diff --git a/docs/info/common.md b/docs/info/common.md
index 3045d526..668ec4c2 100644
--- a/docs/info/common.md
+++ b/docs/info/common.md
@@ -120,7 +120,7 @@ phpunit (next major):
 
 ## Test different SQLite versions
 
-The default images ship with SQLite 3.26. If you need SQLite 3.45 you can set the `_TARGET_PHP_IMAGE_VARIANT` to `ubuntu-apache`. Note that this variant is only available for newer versions of PHP. You can check the available PHP images in the [drupalci_environments](https://git.drupalcode.org/project/drupalci_environments/-/tree/dev/php) project.
+The default images ship with SQLite 3.45, and the default image variant is `ubuntu-apache`. If you want to test with older Core and PHP versions, you can set the `_TARGET_PHP_IMAGE_VARIANT` to `apache`. Note that not all PHP versions have a `apache` and `ubuntu-apache` variation. You can check the available PHP images in the [drupalci_environments](https://git.drupalcode.org/project/drupalci_environments/-/tree/dev/php) project.
 
 ## Viewing environment variables
 
@@ -129,7 +129,7 @@ During development or when debugging a job, you may want to view all the environ
 variables:
   _SHOW_ENVIRONMENT_VARIABLES: "1"
 ```
- You can also set this variable in the 'run pipeline' form. The information is displayed in the `Composer` and `PHPunit` job log, inside an expandable drop-down which is closed by default. If you want the environment variables to be displayed in other jobs, add the following reference into a `before_script` or `after_script` section
+ You can also set this variable in the 'run pipeline' form. The information is displayed in the `composer` and `phpunit` job log, inside an expandable drop-down which is closed by default. If you want the environment variables to be displayed in other jobs, add the following reference into a `before_script` or `after_script` section
 ```
   - !reference [ .show-environment-variables ]
 ```
diff --git a/docs/info/test-locally.md b/docs/info/test-locally.md
index 399fd6ce..787f7fab 100644
--- a/docs/info/test-locally.md
+++ b/docs/info/test-locally.md
@@ -2,7 +2,7 @@
 
 ## ddev-drupal-contrib
 
-DDEV users working on contrib modules are encouraged to use the [ddev-drupal-contrib service](https://github.com/ddev/ddev-drupal-contrib). This assembles a codebase and provides composer scripts that mimic GitLab CI. See the repository README for detailed installation and usage instructions.
+DDEV users working on contrib modules are encouraged to use the [ddev-drupal-contrib service](https://github.com/ddev/ddev-drupal-contrib). This assembles a codebase and provides Composer scripts that mimic GitLab CI. See the repository README for detailed installation and usage instructions.
 
 ## Running GitLab CI containers locally
 
diff --git a/docs/info/variants.md b/docs/info/variants.md
index 58310172..82576c37 100644
--- a/docs/info/variants.md
+++ b/docs/info/variants.md
@@ -87,6 +87,6 @@ phpunit (D9):
     - "composer (D9)"
 ```
 
-If your module does not have nightwatch or phpunit tests, you can remove that particular block.
+If your module does not have Nightwatch or PHPUnit tests, you can remove that particular block.
 
 Code validation, coding standards and linting jobs are run against the "current" core version, so you do not need to make duplicate variants for those jobs.
diff --git a/docs/jobs/composer-lint.md b/docs/jobs/composer-lint.md
index 04741c63..3ee7b581 100644
--- a/docs/jobs/composer-lint.md
+++ b/docs/jobs/composer-lint.md
@@ -1,6 +1,6 @@
 # Composer validation and PHP syntax check
 
-The **composer-lint** job validates the project's `composer.json` file by executing the `composer validate` command.
+The `composer-lint` job validates the project's `composer.json` file by executing the `composer validate` command.
 
 It also uses the [php-parallel-lint](https://github.com/php-parallel-lint/PHP-Parallel-Lint) package to check the syntax of the module's PHP files. All files with an extension of `.php`, `.inc`, `.module`, and `.install` are checked.
 
diff --git a/docs/jobs/composer.md b/docs/jobs/composer.md
index 55e250ba..b9cb6cce 100644
--- a/docs/jobs/composer.md
+++ b/docs/jobs/composer.md
@@ -1,6 +1,6 @@
 # Composer
 
-The Composer jobs are run automatically if a related job needs something from `composer`. You cannot skip the Composer job unless you skip phpunit testing and also skip every validation/linting job that needs Composer.
+The `composer` jobs are run automatically if a related job needs something from Composer. You cannot skip these jobs unless you skip PHPUnit and Nightwatch testing and also skip every validation/linting job that needs Composer.
 
 ## Updating dependencies when testing against future releases
 
@@ -8,7 +8,7 @@ When testing against future versions of Drupal, the minimum stability value is a
 
 ### Lenient support
 
-The variable `_LENIENT_ALLOW_LIST` can specify a comma-separated list of modules that composer dependencies on the core version will be ignored for. This is achieved using the [mglaman/composer-drupal-lenient](https://github.com/mglaman/composer-drupal-lenient) composer extension.
+The variable `_LENIENT_ALLOW_LIST` can specify a comma-separated list of modules that Composer dependencies on the core version will be ignored for. This is achieved using the [mglaman/composer-drupal-lenient](https://github.com/mglaman/composer-drupal-lenient) Composer extension.
 
 An example of this can be:
 ```
@@ -26,7 +26,7 @@ composer (next major):
     _LENIENT_ALLOW_LIST: entity_reference_revisions,inline_entity_form,paragraphs,token
 ```
 
-In this example, the lenient plugin will NOT be used in the regular composer task. But it will be used for the next minor and next major with different lists of projects that are allowed, even if those projects are not compatible with the new release.
+In this example, the lenient plugin will NOT be used in the regular Composer task. But it will be used for the next minor and next major with different lists of projects that are allowed, even if those projects are not compatible with the new release.
 
 
 ### Composer patches
diff --git a/docs/jobs/cspell.md b/docs/jobs/cspell.md
index cd309d46..e5669d9a 100644
--- a/docs/jobs/cspell.md
+++ b/docs/jobs/cspell.md
@@ -1,6 +1,6 @@
 # CSpell
 
-The CSPELL job runs spelling checks on the module's code, using [cspell](https://cspell.org/). This checks for spelling mistakes and unrecognized words and will give suggested corrections. The language is US English, the Drupal standard. CSPELL checks all words of length 4 or more, in comments, variable names and function names.
+The `cspell` job runs spelling checks on the module's code, using [CSpell](https://cspell.org/). This checks for spelling mistakes and unrecognized words and will give suggested corrections. The language is US English, the Drupal standard. CSpell checks all words of length 4 or more, in comments, variable names and function names.
 
 Your module does not need to have a `.cspell.json` configuration file, as a default one is used, based on the Drupal core file. This contains Drupal's two custom dictionaries and other standard dictionaries of programming terms.
 
@@ -8,7 +8,7 @@ Your module does not need to have a `.cspell.json` configuration file, as a defa
 Variable names and function names that are all lower-case and consist of two or more words joined together are likely to be reported as unrecognized. It may be appropriate to change these to `snake_case` or `lowerCamelCase` to resolve the problem, because the name will be separated out into the individual words to be checked.
 
 ## How do I ignore words that CSpell thinks are spelling mistakes?
-When you have fixed any actual spelling errors, there are several ways to tell cspell not to report other words that it thinks are incorrect. You can use any combination of the following:
+When you have fixed any actual spelling errors, there are several ways to tell CSpell not to report other words that it thinks are incorrect. You can use any combination of the following:
 
 ### Short word list
 If you only have a short list of words to ignore, and they are used in several files throughout the project, the simplest solution is provide a value for the `_CSPELL_WORDS` variable. For example:
@@ -43,7 +43,7 @@ variables:
 The list should be comma-separated, but the paths _do not_ need to be quoted individually.
 
 ### Skip the entire job
-It is possible to not run the cspell job at all, by adding a `SKIP_CSPELL: "1"` variable to your project's `.gitlab-ci.yml`. However, we do not recommend that you do this, but instead use the various methods above to maintain a green passing pipeline.
+It is possible to not run the `cspell` job at all, by adding a `SKIP_CSPELL: "1"` variable to your project's `.gitlab-ci.yml`. However, we do not recommend that you do this, but instead use the various methods above to maintain a green passing pipeline.
 
 ## Prevent specific words being used in the project
 CSpell can highlight and prevent the usage of words which exist in dictionaries. This can be required for a variety of reasons - coding standards consistency when more than one spelling exists, local preferences, stylistic choices, etc. Drupal Core has `e-mail`, `grey` and `queuing` in the list of flagged words, and these are also contained in the default configuration for contrib projects. Any usage of these should be replaced with `email`, `gray` and `queueing`. Core also has `please` as a flagword, but this has been removed from the default for contrib projects.
@@ -51,7 +51,7 @@ CSpell can highlight and prevent the usage of words which exist in dictionaries.
 If your project needs to specify additional words to be flagged, set the variable `_CSPELL_FLAGWORDS` to a comma-separated list of words to flag. Like `_CSPELL_WORDS` the list does not need quotes and it is case-insensitive.
 
 ## Commonly ignored files
-Several files that are either very common or mandatory for all projects often need to be ignored. So by default, the cspell job is configured to ignore the following:
+Several files that are either very common or mandatory for all projects often need to be ignored. So by default, the job is configured to ignore the following:
 ```
 composer.*, license.*, copyright.*, maintainers.*, changelog.*,
 **/.*.json, package.json, yarn.lock, phpstan*, .*ignore
@@ -61,7 +61,7 @@ The first five in this list will be ignored in all folders within the directory
 The variable `_CSPELL_IGNORE_STANDARD_FILES` (which defaults to 1) is used to control this. If you want these files to be checked and _not_ ignored then you can set `_CSPELL_IGNORE_STANDARD_FILES: '0'`
 
 ## List of unrecognized words
-The cspell job log shows each of the unrecognized words, with the file name, line and column number, a short "context" showing a segment of the line, and a list of alternative suggestions. To assist with fixing the words, or adding them to your custom dictionary, a sorted list is of words is saved as an artifact called `_cspell_unrecognized_words.txt`. This file contains all unrecognized words found, including all versions where the case is different. However, the actual spell checking is set to non-case-sensitive by default, so you only need to add one version of each word to `_CSPELL_WORDS` or `.cspell-project-words.txt`.
+The CSpell job log shows each of the unrecognized words, with the file name, line and column number, a short "context" showing a segment of the line, and a list of alternative suggestions. To assist with fixing the words, or adding them to your custom dictionary, a sorted list is of words is saved as an artifact called `_cspell_unrecognized_words.txt`. This file contains all unrecognized words found, including all versions where the case is different. However, the actual spell checking is set to non-case-sensitive by default, so you only need to add one version of each word to `_CSPELL_WORDS` or `.cspell-project-words.txt`.
 
 ## Extra options
 If there are extra options that you want to pass to the `cspell` executable command, specify these in the `_CSPELL_EXTRA` variable.
@@ -70,6 +70,6 @@ If there are extra options that you want to pass to the `cspell` executable comm
 By default, hidden files (where the filename starts with a dot) and files in hidden folders (where the folder or sub-folder name starts with dot) are not checked for spelling. If you want to include these files, add `--dot` into the value for `_CSPELL_EXTRA`.
 
 ## Full customization
-For more advanced configuration, you can add a `.cspell.json` file to your project, which follows [CSpell's configuration syntax](https://cspell.org/configuration/). Start by downloading the generated `_cspell_json.txt` artifact from the cspell job, save it into your project as `.cspell.json`, and customize it to your needs.
+For more advanced configuration, you can add a `.cspell.json` file to your project, which follows [CSpell's configuration syntax](https://cspell.org/configuration/). Start by downloading the generated `_cspell_json.txt` artifact, save it into your project as `.cspell.json`, and customize it to your needs.
 
-Your customized file will work _in addition_ to the values of `_CSPELL_WORDS`, `_CSPELL_IGNORE_PATHS` and `_CSPELL_IGNORE_STANDARD_FILES` so you do not need to include those values in your .cspell.json configuration. You can make changes to the paths to run cspell locally and the values will be modified in the gitlab cspell job to match what is needed when running a pipeline.
+Your customized file will work _in addition_ to the values of `_CSPELL_WORDS`, `_CSPELL_IGNORE_PATHS` and `_CSPELL_IGNORE_STANDARD_FILES` so you do not need to include those values in your `.cspell.json` configuration. You can make changes to the paths to run `cspell` locally and the values will be modified in the gitlab job to match what is needed when running a pipeline.
diff --git a/docs/jobs/eslint.md b/docs/jobs/eslint.md
index 35fb288c..40a485ae 100644
--- a/docs/jobs/eslint.md
+++ b/docs/jobs/eslint.md
@@ -1,8 +1,8 @@
 # ESLint
 
-If the module has `.js` or `.yml` files, then [eslint](https://eslint.org/) will be run to validate coding standards for these files.
+The `eslint` job checks coding standards in `.js` and `.yml` files.
 
-Your project does not need a `.eslintrc.json` file because a default one matching Core's standards `core/.eslintrc.passing.json` is used. If you do create a `.eslintrc.json` file then it only needs to contain the specific rules that you want to override, because all other rules will be inherited due to ESLint's cascading configuration.
+[ESLint](https://eslint.org/) can be configured using a `.eslintrc.json` file placed in your projects root directory. This is not mandatory, and if no such file exists then a default one matching Core's standards `core/.eslintrc.passing.json` is used. If you do create a `.eslintrc.json` file then it only needs to contain the specific rules that you want to override, because all other rules will be inherited from Core due to ESLint's cascading configuration.
 
 You can pass additional options to the `eslint` call via the `_ESLINT_EXTRA` variable. This variable has a default value of `--quiet` to match what Drupal core does.
 
@@ -11,6 +11,14 @@ If there are `.js` or `.yml` files that you do not want to fix, or cannot fix fo
 # Ignore all minified javascript files
 **/*.min.js
 ```
+### Extra Dependencies
+If your project requires `ckeditor`-specific linting, and you have the dependencies in a `package.json` file then you can install them using:
+```
+composer:
+  after_script:
+    - npm ci
+```
+Note that if you also have a `package-lock.json`, use `npm ci` to install dependencies instead of `npm install`. This is because `npm install` may install dependencies that are more up-to-date than what is specified in `package-lock.json`, whereas `npm ci` will install exactly what is specified in the `package-lock.json`.
 
 ## Prettier
 
diff --git a/docs/jobs/nightwatch.md b/docs/jobs/nightwatch.md
index 96de1936..663aac85 100644
--- a/docs/jobs/nightwatch.md
+++ b/docs/jobs/nightwatch.md
@@ -1,6 +1,6 @@
 # Nightwatch
 
-If your module contains [nightwatch](https://nightwatchjs.org/) tests, this job will run them.
+If your module contains [Nightwatch](https://nightwatchjs.org/) tests, this job will run them.
 
 It will set up a chrome browser and run the tests against it.
 
diff --git a/docs/jobs/phpstan.md b/docs/jobs/phpstan.md
index f87bb924..afb1c20a 100644
--- a/docs/jobs/phpstan.md
+++ b/docs/jobs/phpstan.md
@@ -1,10 +1,10 @@
 # PHPStan
 
-The [PHPStan](https://phpstan.org/) job runs static code quality checks.
+The `phpstan` jobs run static code quality checks using [PHPStan](https://phpstan.org/)
 
 If the project contains a `phpstan.neon` configuration file it will be used. If not, a [default configuration](https://git.drupalcode.org/project/gitlab_templates/-/blob/main/assets/phpstan.neon) is used.
 
-The pipeline variable `_PHPSTAN_LEVEL` can be set to a value from 0-9 to specify how relaxed or severe the code quality checks should be. This can be used to temporarily override the value in your `phpstan.neon` file. If no value is given, either in the variable or the fle, then the default of 0 is used. See the [PHPStan rule levels](https://phpstan.org/user-guide/rule-levels) for more information.
+The pipeline variable `_PHPSTAN_LEVEL` can be set to a value from 0-9 to specify how relaxed or severe the code quality checks should be. This can be used to temporarily override the value in your `phpstan.neon` file. If no value is given, either in the variable or the file, then the default of 0 is used. See the [PHPStan rule levels](https://phpstan.org/user-guide/rule-levels) for more information.
 
 Projects can specify [baseline](https://phpstan.org/user-guide/baseline) file(s) of messages to ignore, using the `includes:` keyword in the `phpstan.neon` file:
 ```
@@ -15,7 +15,7 @@ includes:
 
 Any warnings that are found are written to a new baseline file which is available as a job artifact for download. These can be added into the existing baseline file until the code is fixed. Unmatched messages in the baseline file are also reported in the log.
 
-In addition to testing at the current core version, the `PHPStan` job has optional variants for the next major and minor core versions and the maximum PHP version.
+In addition to testing at the current core version, the `phpstan` job has optional variants for the next major and minor core versions and the maximum PHP version.
 
 Consider the PHP version when interpreting the results of the PHPStan job, as the analysis may give different results between major versions of PHP.
 
diff --git a/docs/jobs/phpunit.md b/docs/jobs/phpunit.md
index eda110f7..3de94702 100644
--- a/docs/jobs/phpunit.md
+++ b/docs/jobs/phpunit.md
@@ -1,6 +1,6 @@
 # PHPUnit
 
-This job runs the [phpunit](https://phpunit.de/index.html) tests defined by your module, including Functional, FunctionalJavascript, Kernel and Unit tests. You have a choice of two ways that the tests can be executed:
+The `phpunit` jobs run the [PHPUnit](https://phpunit.de/index.html) tests defined by your module, including Functional, FunctionalJavascript, Kernel and Unit tests. You have a choice of two ways that the tests can be executed:
 
 - Using the `phpunit` binary directly and running the tests in sequential mode. This is the default, but you can specify it using:
 ```
@@ -46,7 +46,7 @@ There may be times when you temporarily only need to run one or two tests, inste
 variables:
   _PHPUNIT_EXTRA: "--filter='/thisTest|thatTest/' "
 ```
-The `--filter` parameter is only valid when running the phpunit binary directly.
+The `--filter` parameter is only valid when running the `phpunit` binary directly.
 
 ## Using `run-tests.sh` core script (concurrent mode)
 
@@ -68,7 +68,7 @@ phpunit:
 
 ## Variants
 
-The phpunit job has multiple variants to check previous, current and future versions of Drupal. See the [OPT_IN variables](../jobs.md#skip-and-opt_in-variables) for more details.
+The `phpunit` job has multiple variants to check previous, current and future versions of Drupal. See the [OPT_IN variables](../jobs.md#skip-and-opt_in-variables) for more details.
 
 If you want to tweak the value of the options per variant, you can do something like this:
 
@@ -129,7 +129,7 @@ phpunit:
     SYMFONY_DEPRECATIONS_HELPER: "ignoreFile=$CI_PROJECT_DIR/$_WEB_ROOT/core/.deprecation-ignore.txt"
 ```
 
-If you are testing with Drupal 10 (which uses PHPUnit 9), and are running phpunit direct via `_PHPUNIT_CONCURRENT: 0`, your project needs to have a PHPUnit configuration file (`phpunit.xml`) to be able to get deprecation warnings. This file needs to load the `DrupalListener` class and the most minimal required configuration is shown below. This is not needed for Drupal 11 (which uses PHPUnit 10):
+If you are testing with Drupal 10 (which uses PHPUnit 9), and are running PHPUnit directly via `_PHPUNIT_CONCURRENT: 0`, your project needs to have a PHPUnit configuration file (`phpunit.xml`) to be able to get deprecation warnings. This file needs to load the `DrupalListener` class and the most minimal required configuration is shown below. This is not needed for Drupal 11 (which uses PHPUnit 10):
 ```
  <?xml version="1.0" encoding="UTF-8"?>
  <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
diff --git a/docs/jobs/stylelint.md b/docs/jobs/stylelint.md
index e0030473..75fa0e1b 100644
--- a/docs/jobs/stylelint.md
+++ b/docs/jobs/stylelint.md
@@ -1,5 +1,11 @@
 # Stylelint
 
-This job will run [stylelint](https://stylelint.io/) checks on the CSS code of the module
+The `stylelint` job runs [Stylelint](https://stylelint.io/) checks on the CSS code of the project, using a [Drupal core configuration file](https://git.drupalcode.org/project/drupal/-/blob/11.x/core/.stylelintrc.json).
+
+To disable a specific rule from reporting faults in a file, you can add a `stylelint-disable` comment to the file, for example:
+
+`/* stylelint-disable order/properties-order */`
+
+Files can be completely ignored by listing the paths in a `.stylelintignore` file in your project's top level directory. 
 
 You can add extra options to the command using the `_STYLELINT_EXTRA` variable.
diff --git a/docs/jobs/test-only-changes.md b/docs/jobs/test-only-changes.md
index 4248887e..dab2d47e 100644
--- a/docs/jobs/test-only-changes.md
+++ b/docs/jobs/test-only-changes.md
@@ -1,10 +1,10 @@
 # Test-only changes
 
-The `test-only changes` job does not run the full set of phpunit tests, but instead it just runs the tests that have been modified in a Merge Request. Additionally all of the non-test files are reverted back to their unchanged state.
+The `test-only changes` job does not run the full set of PHPUnit tests, but instead it just runs the tests that have been modified in a Merge Request. Additionally all of the non-test files are reverted back to their unchanged state.
 
 The purpose of this job is to demonstrate that the changes in the tests provide test coverage for the feature/bug/problem which is being worked on. It is equivalent to the "test-only will fail" patches that have been used on DrupalCI for contrib projects and for core over the past years. Drupal Core already has a 'test-only changes' GitLab pipeline job, but this feature is new for contrib projects.
 
-This job is only created in Merge Request pipelines, it will not appear in branch or scheduled pipelines. It will only be created if the merge request actually contains changes to phpunit test files.
+This job is only created in Merge Request pipelines, it will not appear in branch or scheduled pipelines. It will only be created if the merge request actually contains changes to PHPUnit test files.
 
 It is `manual`, which means it is optional and will not start automatically, but requires you to click the `[>]` 'play' button.
 
@@ -21,6 +21,6 @@ If the `phpunit` job uses `parallel`, those options will be inherited by the `te
 If you want the `test-only changes` job to not have parallel options, you can do this in your `.gitlab-ci.yml`:
 ```
 test-only changes:
-  # Remove the parallel definition that is defined in the customized phpunit.
-  parallel:
+  # Remove the parallel definition that is defined in the customized phpunit job.
+  parallel: []
 ```
diff --git a/docs/jobs/upgrade-status.md b/docs/jobs/upgrade-status.md
index 6880ac85..ed9f6ffc 100644
--- a/docs/jobs/upgrade-status.md
+++ b/docs/jobs/upgrade-status.md
@@ -9,7 +9,7 @@ The module provides the following key features:
 - Checks if you are using a version of Drupal that supports an upgrade.
 - Checks if your system meets the next major version's system requirements.
 - Integrates with the Update Status core module to inform you to update your contributed projects. Projects can be compatible with multiple major Drupal versions, so most projects can be updated on your existing site before doing the core major update.
-- Runs phpstan checks and a whole set of other checks to find any compatibility issues with the next Drupal major version that may remain (see more details below).
+- Runs PHPStan checks and a whole set of other checks to find any compatibility issues with the next Drupal major version that may remain (see more details below).
 - Integrates with drush.
 
 ## Enabling this job
diff --git a/includes/include.drupalci.hidden-variables.yml b/includes/include.drupalci.hidden-variables.yml
index 4b7ecfb3..16b95ba6 100644
--- a/includes/include.drupalci.hidden-variables.yml
+++ b/includes/include.drupalci.hidden-variables.yml
@@ -7,7 +7,7 @@
 ##################
 
 variables:
-  # Have to have a comment here to satisfy eslint prettier. Need to get our customized rules set up, so we can allow a blank line here.
+  # Have to have a comment here to satisfy ESLint prettier. Need to get our customized rules set up, so we can allow a blank line here.
 
   ################
   # Semantic Labels for Core Versions
diff --git a/includes/include.drupalci.main-d7.yml b/includes/include.drupalci.main-d7.yml
index 0101fc2c..a7adeb70 100644
--- a/includes/include.drupalci.main-d7.yml
+++ b/includes/include.drupalci.main-d7.yml
@@ -114,7 +114,7 @@
 # In this case, just use the 'when' clause that makes the most sense.
 # Note that the '- exists:' condition always has to be placed last in the sequence.
 
-# The Composer job is required for phpunit and phpcs. If both of these are skipped then Composer can
+# The Composer job is required for PHPUnit and PHPCS. If both of these are skipped then Composer can
 # still be tested by leaving the default OPT_IN_TEST_CURRENT set to 1.
 .check-current-composer-not-needed-rule: &check-current-composer-not-needed-rule
   if: '$SKIP_PHPCS == "1" && $SKIP_PHPUNIT == "1" && $OPT_IN_TEST_CURRENT == "0"'
diff --git a/includes/include.drupalci.main.yml b/includes/include.drupalci.main.yml
index e4a72c2c..1810a59e 100644
--- a/includes/include.drupalci.main.yml
+++ b/includes/include.drupalci.main.yml
@@ -74,7 +74,7 @@
       echo -e "\e[0Ksection_end:`date +%s`:show_env_vars\r\e[0K"
     fi
 
-# Check the internal composer end code. This is necessary in case allow_failure:true is set in the Composer job or one of its variants.
+# Check the internal Composer end code. This is necessary in case allow_failure:true is set in the Composer job or one of its variants.
 .check-composer-end-code: &check-composer-end-code
   - |
     echo "COMPOSER_END_CODE=$COMPOSER_END_CODE"
@@ -401,7 +401,7 @@ stages:
     - touch $_WEB_ROOT/core/.env
     # Display any deprecation warning which may have been set.
     - printf "$_DEPRECATION_MESSAGE"
-    # Set an internal composer end code, to halt subsequent jobs even when allow_failure: true is set.
+    # Set an internal Composer end code, to halt subsequent jobs even when allow_failure: true is set.
     - echo "COMPOSER_END_CODE=0" >> build.env
 
 composer:
@@ -705,7 +705,7 @@ stylelint:
     - cd $_WEB_ROOT/core && corepack enable && yarn add stylelint-junit-formatter
     # Change directory to the project root folder.
     - cd $CI_PROJECT_DIR/$_WEB_ROOT/modules/custom/$CI_PROJECT_NAME
-    - echo "STYLELINT version $(${CI_PROJECT_DIR}/${_WEB_ROOT}/core/node_modules/.bin/stylelint --version)"
+    - echo "Stylelint version $(${CI_PROJECT_DIR}/${_WEB_ROOT}/core/node_modules/.bin/stylelint --version)"
     # If there is no .stylelintignore file, there is no warning or error. The
     # option is just ignored.
     # The `|| true` makes sure the second call runs even if the first fails. https://stackoverflow.com/questions/59180675/how-to-continue-job-even-when-script-fails
@@ -734,15 +734,15 @@ eslint:
   script:
     # Change directory to the project root folder
     - cd $CI_PROJECT_DIR/$_WEB_ROOT/modules/custom/$CI_PROJECT_NAME
-    # Configure eslint with core defaults. We use core/.eslintrc.passing.json which includes core/.eslintrc.json and .eslintrc.jquery.json.
+    # Configure ESLint with core defaults. We use core/.eslintrc.passing.json which includes core/.eslintrc.json and .eslintrc.jquery.json.
     # These links are created in the folder above modules/custom/$CI_PROJECT_NAME and will be used in addition to the project's own .eslintrc.json.
     - ln -s $CI_PROJECT_DIR/$_WEB_ROOT/core/.eslintrc.passing.json $CI_PROJECT_DIR/$_WEB_ROOT/modules/custom/.eslintrc.json
     - ln -s $CI_PROJECT_DIR/$_WEB_ROOT/core/.eslintrc.jquery.json $CI_PROJECT_DIR/$_WEB_ROOT/modules/custom/.eslintrc.jquery.json
     # Configure prettier with core defaults.
     - test -e .prettierrc.json || ln -s $CI_PROJECT_DIR/$_WEB_ROOT/core/.prettierrc.json .
     - test -e .prettierignore || echo '*.yml' > .prettierignore
-    - echo "ESLINT version $(${CI_PROJECT_DIR}/${_WEB_ROOT}/core/node_modules/.bin/eslint --version)"
-    # The first run of eslint generates a junit output file.
+    - echo "ESLint version $(${CI_PROJECT_DIR}/${_WEB_ROOT}/core/node_modules/.bin/eslint --version)"
+    # The first run of ESLint generates a junit output file.
     # The `|| EXIT_CODE_FILE=$?` stores an exit code if the job fails, and makes sure the script continues.
     # https://stackoverflow.com/questions/59180675/how-to-continue-job-even-when-script-fails
     - $CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/eslint --no-error-on-unmatched-pattern --ignore-pattern="*.es6.js" --resolve-plugins-relative-to=$CI_PROJECT_DIR/$_WEB_ROOT/core --ext=.js,.yml --format=junit --output-file=$CI_PROJECT_DIR/junit.xml $_ESLINT_EXTRA . || EXIT_CODE_FILE=$?
@@ -751,15 +751,15 @@ eslint:
     # Exit early if we cannot --fix anything. This also caters for config failures.
     - |
       if [ "$EXIT_CODE_FILE" != "1" ]; then
-        [[ "$EXIT_CODE_FILE" == "" ]] && printf "$DIVIDER\nThere are no ESLINT errors or warnings$DIVIDER\n"
+        [[ "$EXIT_CODE_FILE" == "" ]] && printf "$DIVIDER\nThere are no ESLint errors or warnings$DIVIDER\n"
         echo "Exiting with EXIT_CODE=$EXIT_CODE_FILE"
         exit $EXIT_CODE_FILE
       fi
-    # There are eslint warnings so run it a second time to write the messages to the log.
-    - printf "$DIVIDER\nThese are the current ESLINT errors and warnings$DIVIDER\n"
+    # There are ESLint warnings so run it a second time to write the messages to the log.
+    - printf "$DIVIDER\nThese are the current ESLint errors and warnings$DIVIDER\n"
     - $CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/eslint --no-error-on-unmatched-pattern --ignore-pattern="*.es6.js" --resolve-plugins-relative-to=$CI_PROJECT_DIR/$_WEB_ROOT/core --ext=.js,.yml $_ESLINT_EXTRA . || true
     # Run a third time with the --fix option to enable a patch to be created.
-    - printf "$DIVIDER\nNow running ESLINT using the --fix option. Any errors shown below are not fixable automatically.$DIVIDER\n"
+    - printf "$DIVIDER\nNow running ESLint using the --fix option. Any errors shown below are not fixable automatically.$DIVIDER\n"
     - $CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/eslint --no-error-on-unmatched-pattern --ignore-pattern="*.es6.js" --resolve-plugins-relative-to=$CI_PROJECT_DIR/$_WEB_ROOT/core --ext=.js,.yml $_ESLINT_EXTRA --fix . || EXIT_CODE_FIX=$?
     # Get the names of the files that have been changed by using the --fix option.
     # Use -G"." to ignore files with no actual content changes, as there may be files where the only change is the mode and we do not want these.
@@ -769,7 +769,7 @@ eslint:
       if [ "$CHANGED" != "" ]; then
         printf "$CHANGED" | xargs -I % git diff % $CI_PROJECT_DIR/% >> $CI_PROJECT_DIR/_eslint.patch
         [[ $EXIT_CODE_FIX == "1" ]] && HOW_MANY="some" || HOW_MANY="ALL"
-        printf "$DIVIDER\nThe following files have ESLINT errors and warnings, and $HOW_MANY of them can be resolved using the --fix argument.\n \n$CHANGED\n \nA patch file _eslint.patch containing the changes has been created as an artifact for download.$DIVIDER\n"
+        printf "$DIVIDER\nThe following files have ESLint errors and warnings, and $HOW_MANY of them can be resolved using the --fix argument.\n \n$CHANGED\n \nA patch file _eslint.patch containing the changes has been created as an artifact for download.$DIVIDER\n"
       else
         printf "$DIVIDER\nNothing could be fixed with the --fix option$DIVIDER\n"
       fi
@@ -822,7 +822,7 @@ cspell:
     - rm prepare-cspell.php
     # If _CSPELL_EXTRA contains --dot then add hidden folders into the search path.
     - CSPELL_SEARCH=$([[ $_CSPELL_EXTRA =~ "--dot" ]] && echo "{**,.**}" || echo "**")
-    - echo "CSPELL version $($CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/cspell --version)"
+    - echo "CSpell version $($CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/cspell --version)"
     - echo "Executing $CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/cspell -c .cspell.json --show-suggestions --show-context --no-progress $_CSPELL_EXTRA $CSPELL_SEARCH"
     - $CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/cspell -c .cspell.json --show-suggestions --show-context --no-progress $_CSPELL_EXTRA $CSPELL_SEARCH || EXIT_CODE=$?
     - WORDS_FILE=_cspell_unrecognized_words.txt
@@ -833,7 +833,7 @@ cspell:
         $CI_PROJECT_DIR/$_WEB_ROOT/core/node_modules/.bin/cspell -c .cspell.json --words-only --unique --no-progress $_CSPELL_EXTRA $CSPELL_SEARCH | sort --ignore-case >> $WORDS_FILE || true
         echo "The number of unrecognised/misspelled words is $(wc -l < $WORDS_FILE)"
         echo "An artifact file has been created containing a list of these unrecognized words, for you to browse or download."
-        echo "For hints on getting this CSPELL job to pass see https://project.pages.drupalcode.org/gitlab_templates/jobs/cspell/"
+        echo "For hints on getting this CSpell job to pass see https://project.pages.drupalcode.org/gitlab_templates/jobs/cspell/"
         echo "=== This is $WORDS_FILE ===" && cat $WORDS_FILE
       fi
     - cp .cspell.json _cspell_json.txt
@@ -1249,7 +1249,7 @@ environment check:
       [[ $_TARGET_CORE != "" && ($JOB_NAME == 'composer' || $JOB_NAME == 'composer (max PHP version)') ]] && printf "$DIVIDER\n* _TARGET_CORE=$_TARGET_CORE\n* The _TARGET_CORE variable is deprecated in GitLab Templates version 1.5.10. Instead use\n*\n* $JOB_NAME:\n*   variables:\n*     DRUPAL_CORE: $_TARGET_CORE\n*\n* See https://git.drupalcode.org/project/gitlab_templates/-/blob/main/CHANGELOG.md#1510---2024-10-04 $DIVIDER\n"
     - exit 1
 
-# Check the variables defined for each of the composer-variants. This covers checking variables defined at the top level.
+# Check the variables defined for each of the Composer variants. This covers checking variables defined at the top level.
 deprecation - composer:
   extends: .deprecation-warning-base
   variables: !reference ["composer", variables]
diff --git a/includes/include.drupalci.variables.yml b/includes/include.drupalci.variables.yml
index e2c808b8..e30977bc 100644
--- a/includes/include.drupalci.variables.yml
+++ b/includes/include.drupalci.variables.yml
@@ -85,7 +85,7 @@ variables:
 
   _COMPOSER_PATCHES_FILE:
     value: ""
-    description: 'Set the file name of the composer patches file that should be applied. That file must be a local file in the project, preferably located in the recommended "./.gitlab-ci/" subdirectory. The path should be relative to the module root or the recommended folder.'
+    description: 'Set the file name of the Composer patches file that should be applied. That file must be a local file in the project, preferably located in the recommended "./.gitlab-ci/" subdirectory. The path should be relative to the module root or the recommended folder.'
 
   _PHPUNIT_TESTGROUPS:
     value: "--all"
@@ -97,7 +97,7 @@ variables:
 
   _PHPUNIT_CONCURRENT:
     value: "0"
-    description: "Run the phpunit job leveraging concurrency. Turned off by default, set to 1 to enable concurrency. This will use the Drupal core `run-tests.sh` script currently used in DrupalCI for both core and contrib."
+    description: "Run the `phpunit` job leveraging concurrency. Turned off by default, set to 1 to enable concurrency. This will use the Drupal core `run-tests.sh` script currently used in DrupalCI for both core and contrib."
 
   _CONCURRENCY_THREADS:
     value: "32"
@@ -191,27 +191,27 @@ variables:
 
   SKIP_COMPOSER_LINT:
     value: "0"
-    description: "Set to 1 to skip the composer lint CI job"
+    description: "Set to 1 to skip the Composer Lint CI job"
 
   SKIP_PAGES:
     value: "0"
-    description: "Set to 1 to skip the Composer pages CI job"
+    description: "Set to 1 to skip the Pages CI job"
 
   SKIP_PHPCS:
     value: "0"
-    description: "Set to 1 to skip the phpcs CI job"
+    description: "Set to 1 to skip the PHPCS CI job"
 
   SKIP_PHPSTAN:
     value: "0"
-    description: "Set to 1 to skip the phpstan CI job"
+    description: "Set to 1 to skip the PHPStan CI job"
 
   SKIP_STYLELINT:
     value: "0"
-    description: "Set to 1 to skip the stylelint CI job"
+    description: "Set to 1 to skip the Stylelint CI job"
 
   SKIP_ESLINT:
     value: "0"
-    description: "Set to 1 to skip the ESLINT CI job"
+    description: "Set to 1 to skip the ESLint CI job"
 
   SKIP_CSPELL:
     value: "0"
@@ -219,7 +219,7 @@ variables:
 
   SKIP_PHPUNIT:
     value: "0"
-    description: "Set to 1 to skip the PHPUNIT CI job"
+    description: "Set to 1 to skip the PHPUnit CI job"
 
   SKIP_TEST_ONLY_CHANGES:
     value: "0"
@@ -227,7 +227,7 @@ variables:
 
   SKIP_NIGHTWATCH:
     value: "0"
-    description: "Set to 1 to skip the nightwatch CI job"
+    description: "Set to 1 to skip the Nightwatch CI job"
 
   ################
   # Opt in variables
diff --git a/scripts/prepare-cspell.php b/scripts/prepare-cspell.php
index 0d3a1dbb..e6cb508f 100644
--- a/scripts/prepare-cspell.php
+++ b/scripts/prepare-cspell.php
@@ -176,7 +176,7 @@ foreach ($dictionary_definitions as $key => $data) {
     unset($dictionary_definitions[$key]);
   }
 }
-// These dictionaries are provided by cspell.
+// These dictionaries are provided by CSpell.
 $built_in_dictionaries = [
   'companies',
   'fonts',
-- 
GitLab