Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
15509c4
Renamed the 'preg_match()' result array from '$match' to '$matches' i…
AlexSkrypnyk Oct 3, 2026
75abcb0
Spelled the 'UnserializableDomDocument' test double and 3 data set la…
AlexSkrypnyk Oct 3, 2026
250e081
Renamed the test identifiers that still called a registry or an authe…
AlexSkrypnyk Oct 3, 2026
7f3e0c9
Renamed the '$half' local in 'docs.php' to '$context', the name the g…
AlexSkrypnyk Oct 3, 2026
5fb46af
Named the single-letter loop variables in 'AccessibilityTrait', 'Watc…
AlexSkrypnyk Oct 3, 2026
d489f21
Removed the space between 'fn' and its parameter list at the 9 arrow …
AlexSkrypnyk Oct 3, 2026
ab2fdf7
Sorted the helper trait 'use' statements in 'ContentTrait', 'Paragrap…
AlexSkrypnyk Oct 3, 2026
7bbf7c6
Compared 'preg_match()' results with '=== 1' or '!== 1' at the 9 site…
AlexSkrypnyk Oct 3, 2026
37ed82d
Named the 5 outlying test bridge methods 'call<Method>()' after the p…
AlexSkrypnyk Oct 3, 2026
e7d095c
Renamed the '$trait_info' local in 'docs.php' to '$class_info', since…
AlexSkrypnyk Oct 3, 2026
8668152
Doubled the backslashes in the 30 single-quoted namespace literals th…
AlexSkrypnyk Oct 3, 2026
b350b60
Moved 'dataProviderParseArguments()' and 'dataProviderInvokesDrush()'…
AlexSkrypnyk Oct 3, 2026
394310c
Moved the helper methods of 'AuthenticatorTest' and 'DrushBackendMeth…
AlexSkrypnyk Oct 3, 2026
b6b8d98
Rewrote 430 source comments as plain technical statements and deleted…
AlexSkrypnyk Oct 3, 2026
f85655e
Corrected 77 comments whose claims disagreed with the code, regenerat…
AlexSkrypnyk Oct 3, 2026
a706b63
Labelled the 24 rows of 'FileDownloadTraitTest::dataProviderIsRegex()…
AlexSkrypnyk Oct 3, 2026
5a68807
Called 'parent::setUp()' and 'parent::tearDown()' in 'EntityLifecycle…
AlexSkrypnyk Oct 3, 2026
5dbb0e2
Compared entity ids with 'assertSame()' on integers in the 2 file reu…
AlexSkrypnyk Oct 3, 2026
7b1303c
Named the basic authenticator by its role in 'CONTRIBUTING.md'.
AlexSkrypnyk Oct 3, 2026
66567b5
Threw '\RuntimeException' instead of a plain '\Exception' at the 14 f…
AlexSkrypnyk Oct 3, 2026
4886038
Ordered the 'TraitOptionResolver' constructor arguments as '(config, …
AlexSkrypnyk Oct 3, 2026
9014b46
Worded the 'NameHandler' failure messages like the other field handle…
AlexSkrypnyk Oct 3, 2026
1b59168
Threw 'ElementNotFoundException' from 'messageAssertExistsOfType()' w…
AlexSkrypnyk Oct 3, 2026
02bc07f
Renamed the bundle parameter of 'contentBlockCreateSingle()' and 'con…
AlexSkrypnyk Oct 3, 2026
ee32465
Named the hook dispatcher, browser capability resolver, scenario tag …
AlexSkrypnyk Oct 3, 2026
4d396e4
Compared typed strings with '=== ''' instead of 'empty()' at 12 sites…
AlexSkrypnyk Oct 3, 2026
02498d9
Worded the 18 failure messages that ended in ', but should not' as ',…
AlexSkrypnyk Oct 3, 2026
316f1f9
Spelled 'serialize' and 'organization' in American English in the 'Xm…
AlexSkrypnyk Oct 3, 2026
4d66bb0
Named value types with 'get_debug_type()' instead of 'gettype()' in t…
AlexSkrypnyk Oct 3, 2026
f2df228
Opened the 4 outlying 'does not exist' messages with 'The', like the …
AlexSkrypnyk Oct 3, 2026
af3d106
Quoted interpolated values in double quotes in the 22 failure message…
AlexSkrypnyk Oct 3, 2026
fcbc467
Ended the 15 failure messages that stopped on a value, hint or list w…
AlexSkrypnyk Oct 3, 2026
1f36c7a
Renamed the 8 assertion and action methods qualified with 'By' to 'Wi…
AlexSkrypnyk Oct 3, 2026
c99aeac
Worded the meta robots steps 'should contain' and 'should not contain…
AlexSkrypnyk Oct 3, 2026
4ae63d8
Named the 10 single-event hooks that were named for their action afte…
AlexSkrypnyk Oct 3, 2026
dc430ac
Matched the double-quoted user name in 'testNodeCreateRejectsUnknownA…
AlexSkrypnyk Oct 3, 2026
8963361
Named the current 'entityLifecycleAfterScenario()' hook in the 'SkipT…
AlexSkrypnyk Oct 3, 2026
e0ebb56
Renamed the 'failOnIncomplete' accessibility aggregate key to 'fail_o…
AlexSkrypnyk Oct 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ A trait's directory is its classification, so nothing has to be declared twice:
A step is only as portable as the backend behind it, so each trait falls into one of four bands. Which band a trait is in decides which capability its steps resolve, and therefore which suites can run them.

- **Nothing.** Every trait under `src/Steps/Web` except `MessageTrait`, `RegionTrait`, `MappingTrait` and `BasicAuthTrait` reads and drives the page through Mink alone. They run on any backend, against any site, with no Drupal at all.
- **Extension configuration, but no backend.** `MessageTrait`, `RegionTrait` and `MappingTrait` read the `selectors`, `regions` and `mappings` maps that `BehatStepsExtension` injects, and `BasicAuthTrait` reads the authentication manager. They need the extension registered, not a bootstrapped site.
- **Extension configuration, but no backend.** `MessageTrait`, `RegionTrait` and `MappingTrait` read the `selectors`, `regions` and `mappings` maps that `BehatStepsExtension` injects, and `BasicAuthTrait` reads the basic authenticator. They need the extension registered, not a bootstrapped site.
- **A narrow capability.** `CacheTrait`'s clear and cron steps, `DrushTrait` and the user and content creation steps resolve one named capability (`CacheCapabilityInterface`, `CronCapabilityInterface`, `DrushCapabilityInterface`, `UserCapabilityInterface`, `ContentCapabilityInterface`, `RoleCapabilityInterface`). They work on any backend implementing it, which for most is the Drush backend as well as the in-process one.
- **Drupal's API in this process.** Every other trait under `src/Steps/Drupal` calls into `\Drupal::` directly, which only a backend that bootstraps Drupal in-process can serve. Those steps resolve `CoreCapabilityInterface`.

Expand Down
20 changes: 10 additions & 10 deletions HELPERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
| [WaitTrait](#waittrait) | 1 | Wait for a period of time or for AJAX to finish. |
| [XmlTrait](#xmltrait) | 6 | Assert XML responses with element and attribute checks. |
| [RequestHeadersTrait](#requestheaderstrait) | 1 | Holds the request headers shared by the traits that issue HTTP requests. |
| [TableTransposeTrait](#tabletransposetrait) | 2 | Reads a vertical Gherkin table as one set of values per entity. |
| [TableTransposeTrait](#tabletransposetrait) | 2 | Reads a vertical Gherkin table as 1 set of values per entity. |

### Index of Drupal helpers

Expand All @@ -48,7 +48,7 @@
| [Drupal\EntityTrait](#drupalentitytrait) | 6 | Create entities of a type that has no dedicated trait. |
| [Drupal\FileTrait](#drupalfiletrait) | 3 | Manage Drupal file entities with upload and storage operations. |
| [Drupal\MediaTrait](#drupalmediatrait) | 4 | Manage Drupal media entities with type-specific field handling. |
| [Drupal\MenuTrait](#drupalmenutrait) | 2 | Manage Drupal menu systems and menu link rendering. |
| [Drupal\MenuTrait](#drupalmenutrait) | 2 | Manage Drupal menus and menu links. |
| [Drupal\ModuleTrait](#drupalmoduletrait) | 4 | Enable and disable Drupal modules with automatic state restoration. |
| [Drupal\ParagraphsTrait](#drupalparagraphstrait) | 2 | Manage Drupal paragraphs entities with structured field data. |
| [Drupal\QueueTrait](#drupalqueuetrait) | 2 | Manage and assert Drupal queue state. |
Expand Down Expand Up @@ -180,7 +180,7 @@ Return the JavaScript source to inject into the page
<summary><code>public function accessibilityGetPrintCli(): bool</code></summary>

<br/>
Return TRUE to print a one-line per-page summary to the console
Return TRUE to print a 1-line per-page summary to the console
<br/><br/>

</details>
Expand Down Expand Up @@ -918,7 +918,7 @@ Generates an integer in '[min, max]' inclusive
<summary><code>public function randomGenerateMachineName(int $length): string</code></summary>

<br/>
Generates a Drupal-shaped machine name (lowercase + underscores)
Generates a lowercase alphanumeric machine name starting with a letter
<br/><br/>

</details>
Expand Down Expand Up @@ -1188,7 +1188,7 @@ Return the configured AJAX timeout, in seconds
<summary><code>public function xmlParse(string $content): array</code></summary>

<br/>
Parse XML content without disturbing the cached document
Parse XML content without altering the cached document
<br/><br/>

</details>
Expand Down Expand Up @@ -1261,7 +1261,7 @@ $this->requestHeadersSet('X-Acme-Token', 'secret');

[Source](src/Helper/Web/TableTransposeTrait.php)

> Reads a vertical Gherkin table as one set of values per entity.
> Reads a vertical Gherkin table as 1 set of values per entity.

<details>
<summary><code>public function tableTransposeHorizontal(array $entities): TableNode</code></summary>
Expand Down Expand Up @@ -1375,7 +1375,7 @@ Read a stored configuration value, ignoring runtime overrides
> Manage Drupal content blocks.

<details>
<summary><code>public function contentBlockCreateSingle(string $type, array $values): BlockContent</code></summary>
<summary><code>public function contentBlockCreateSingle(string $content_block_type, array $values): BlockContent</code></summary>

<br/>
Create a block content entity with the specified type and field values
Expand All @@ -1384,7 +1384,7 @@ Create a block content entity with the specified type and field values
</details>

<details>
<summary><code>public function contentBlockLoadMultiple(string $type, array $conditions = []): array</code></summary>
<summary><code>public function contentBlockLoadMultiple(string $content_block_type, array $conditions = []): array</code></summary>

<br/>
Load multiple content blocks with specified type and conditions
Expand Down Expand Up @@ -1669,7 +1669,7 @@ Visit the action page of the media with a specified name

[Source](src/Steps/Drupal/MenuTrait.php), [Steps](STEPS.md#drupalmenutrait)

> Manage Drupal menu systems and menu link rendering.
> Manage Drupal menus and menu links.

<details>
<summary><code>public function menuFindByLabel(string $label): ?MenuInterface</code></summary>
Expand Down Expand Up @@ -2251,7 +2251,7 @@ Returns the basic authenticator
</details>

<details>
<summary><code>public function getBrowserResolver(): BrowserCapabilityResolver</code></summary>
<summary><code>public function getBrowserCapabilityResolver(): BrowserCapabilityResolver</code></summary>

<br/>
Returns the browser capability resolver, creating it on first use
Expand Down
Loading
Loading