From 994314d9ce5a152439a3ee32df09b85e6f1acb99 Mon Sep 17 00:00:00 2001 From: Alex Skrypnyk Date: Tue, 30 Jul 2024 21:02:23 +1000 Subject: [PATCH] Update README.md --- README.md | 269 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 158 insertions(+), 111 deletions(-) diff --git a/README.md b/README.md index bf175d1..a2c8dec 100644 --- a/README.md +++ b/README.md @@ -55,117 +55,164 @@ Modification of `behat.yml` configuration is not required. ### Available steps -| Step Name | Description | Trait | Example | -|------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|-----------------------|------------------------------------------------------------------------------------------------------------------------| -| `Given no :type content type` | Delete the content type. | `ContentTrait` | [content.feature](tests/behat/features/content.feature) | -| `When I visit :type :title` | Navigate to a page with a specified type and title. | `ContentTrait` | [content.feature](tests/behat/features/content.feature) | -| `When I edit :type :title` | Navigate to the edit page with a specified type and title. | `ContentTrait` | [content.feature](tests/behat/features/content.feature) | -| `When I delete :type :title` | Navigate to the delete page with a specified type and title. | `ContentTrait` | [content.feature](tests/behat/features/content.feature) | -| `Given no ([a-zA-z0-9_-]+) content:$/` | Remove content defined by provided properties. | `ContentTrait` | [content.feature](tests/behat/features/content.feature) | -| `When the moderation state of :type :title changes from :old_state to :new_state` | Change the moderation state of content with the specified title. | `ContentTrait` | [content.feature](tests/behat/features/content.feature) | -| `When I visit :type :title scheduled transitions` | Visit the scheduled transition page for a node with the specified title. | `ContentTrait` | [content.feature](tests/behat/features/content.feature) | -| `Then I save draggable views :view_id view :views_display_id display :bundle items in the following order:` | Save the order of the draggable items. | `DraggableViewsTrait` | [draggableviews.feature](tests/behat/features/draggableviews.feature) | -| `Given :bundle :entity_type entities:` | Create ECK entities. | `EckTrait` | [eck.feature](tests/behat/features/eck.feature) | -| `Given no :bundle :entity_type entities:` | Remove custom entities by field. | `EckTrait` | [eck.feature](tests/behat/features/eck.feature) | -| `When I edit :bundle :entity_type with title :label` | Navigate to the edit page for the specified ECK entity type and title. | `EckTrait` | [eck.feature](tests/behat/features/eck.feature) | -| `When I visit :bundle :entity_type with title :label` | Navigate to the view page for the specified ECK entity type and title. | `EckTrait` | [eck.feature](tests/behat/features/eck.feature) | -| `Then I( should) see the :selector element with the :attribute attribute set to :value` | Assert that an element with the specified selector and attribute value exists. | `ElementTrait` | [element.feature](tests/behat/features/element.feature) | -| `Given I enable the test email system` | Enable the test email system. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Given I disable the test email system` | Disable the test email system. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `When I clear the test email system queue` | Clear the test email system queue. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then an email is sent to :address` | Assert that an email was sent to the specified address. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then no emails were sent` | Assert that no email messages were sent. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then no emails were sent to :address` | Assert that no email messages were sent to the specified address. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then an email header :header contains:` | Assert that an email message header contains the specified content. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then an email header :header contains exact:` | Assert that an email message header contains the exact specified content. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then /^an email to "(?P[^"]*)" user is "(?P[^"]*)" with "(?P[^"]*)" content:$/` | Assert that an email message was sent or not sent to a user with the specified content. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then an email :field contains` | Assert that an email message field contains the specified value. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then an email :field contains exact` | Assert that an email message field contains the exact specified value. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then an email :field does not contain` | Assert that an email message field does not contain the specified value. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then an email :field does not contains exact` | Assert that an email message field does not contain the exact specified value. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `When I follow the link number :number in the email with the subject` | Visit a link from the email with the specified subject. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then file :name attached to the email with the subject` | Assert that a file is attached to an email message with the specified subject. | `EmailTrait` | [email.feature](tests/behat/features/email.feature) | -| `Then I see field :name` | Assert that a field exists on the page using its id, name, label, or value. | `FieldTrait` | [field.feature](tests/behat/features/field.feature) | -| `Then I don't see field :name` | Assert that a field does not exist on the page using its id, name, label, or value. | `FieldTrait` | [field.feature](tests/behat/features/field.feature) | -| `Then field :name :exists on the page` | Assert whether the field exists on the page using its id, name, label, or value. | `FieldTrait` | [field.feature](tests/behat/features/field.feature) | -| `Then field :name is :disabled on the page` | Assert whether the field is disabled on the page. | `FieldTrait` | [field.feature](tests/behat/features/field.feature) | -| `Then field :name should be :presence on the page and have state :state` | Assert whether the field exists on the page and has a specified state. | `FieldTrait` | [field.feature](tests/behat/features/field.feature) | -| `Then I download file from :url` | Download a file from the specified URL. | `FileDownloadTrait` | [file-download.feature](tests/behat/features/file-download.feature) | -| `Then I download file from link :link` | Download a file from the specified HTML link. | `FileDownloadTrait` | [file-download.feature](tests/behat/features/file-download.feature) | -| `Then I see download :link link :presence(on the page)` | Assert that an HTML link is present or absent on the page. | `FileDownloadTrait` | [file-download.feature](tests/behat/features/file-download.feature) | -| `Then downloaded file contains:` | Assert the contents of the downloaded file. | `FileDownloadTrait` | [file-download.feature](tests/behat/features/file-download.feature) | -| `Then downloaded file name is :name` | Assert the file name of the downloaded file. | `FileDownloadTrait` | [file-download.feature](tests/behat/features/file-download.feature) | -| `Then downloaded file is zip archive that contains files:` | Assert that the downloaded file is a ZIP archive containing specified files. | `FileDownloadTrait` | [file-download.feature](tests/behat/features/file-download.feature) | -| `Then downloaded file is zip archive that does not contain files:` | Assert that the downloaded file is a ZIP archive that does not contain specified files. | `FileDownloadTrait` | [file-download.feature](tests/behat/features/file-download.feature) | -| `Given managed file:` | Create a managed file with the properties provided in the table. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `Given no managed files:` | Delete managed files defined by the provided properties or fields. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `Given unmanaged file :uri created` | Create an unmanaged file. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `Given unmanaged file :uri created with content :content` | Create an unmanaged file with specified content. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `Then unmanaged file :uri exists` | Assert that an unmanaged file with the specified URI exists. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `Then unmanaged file :uri does not exist` | Assert that an unmanaged file with the specified URI does not exist. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `Then unmanaged file :uri has content :content` | Assert that an unmanaged file exists and has the specified content. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `Then unmanaged file :uri does not have content :content` | Assert that an unmanaged file exists and does not have the specified content. | `FileTrait` | [file.feature](tests/behat/features/file.feature) | -| `When I accept confirmation dialogs` | Accept confirmation dialogs appearing on the page. | `JsTrait` | [js.feature](tests/behat/features/js.feature) | -| `When I do not accept confirmation dialogs` | Do not accept confirmation dialogs appearing on the page. | `JsTrait` | [js.feature](tests/behat/features/js.feature) | -| `When /^(?:\|I )click (an?\|on) "(?P[^"]*)" element$/` | Click on the element defined by the selector. | `JsTrait` | [js.feature](tests/behat/features/js.feature) | -| `When I trigger JS :event event on :selector element` | Trigger an event on the specified element. | `JsTrait` | [js.feature](tests/behat/features/js.feature) | -| `Given I press the :keys keys` | Press multiple keyboard keys. | `KeyboardTrait` | [keyboard.feature](tests/behat/features/keyboard.feature) | -| `Given I press the :keys keys on :selector` | Press multiple keyboard keys on the specified element. | `KeyboardTrait` | [keyboard.feature](tests/behat/features/keyboard.feature) | -| `Given I press the :char key` | Press the specified keyboard key. | `KeyboardTrait` | [keyboard.feature](tests/behat/features/keyboard.feature) | -| `Given I press the :char key on :selector` | Press the specified keyboard key on the specified element. | `KeyboardTrait` | [keyboard.feature](tests/behat/features/keyboard.feature) | -| `Then I should see the link :text with :href` | Assert the presence of a link with the specified href. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then I should see the link :text with :href in :locator` | Assert the presence of a link with the specified href in the specified locator. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then I should not see the link :text with :href` | Assert that a link with the specified href does not exist. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then I should not see the link :text with :href in :locator` | Assert that a link with the specified href does not exist in the specified locator. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then the link with title :title exists` | Assert that a link with the specified title exists. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then the link with title :title does not exist` | Assert that a link with the specified title does not exist. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then I click the link with title :title` | Click on the link with the specified title. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then the link( with title) :text is an absolute link` | Assert that the link with the specified text is absolute. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Then the link( with title) :text is not an absolute link` | Assert that the link with the specified text is not absolute. | `LinkTrait` | [link.feature](tests/behat/features/link.feature) | -| `Given no :type media type` | Remove the specified media type. | `MediaTrait` | [media.feature](tests/behat/features/media.feature) | -| `Given :type media:` | Create media of the given type. | `MediaTrait` | [media.feature](tests/behat/features/media.feature) | -| `Given /^no ([a-zA-z0-9_-]+) media:$/` | Remove media defined by the provided properties. | `MediaTrait` | [media.feature](tests/behat/features/media.feature) | -| `Navigate to edit media with specified type and name.` | Navigate to the edit page for the specified media type and name. | `MediaTrait` | [media.feature](tests/behat/features/media.feature) | -| `Given no menus:` | Remove the specified menus. | `MenuTrait` | [menu.feature](tests/behat/features/menu.feature) | -| `Given menus:` | Create a menu if one does not exist. | `MenuTrait` | [menu.feature](tests/behat/features/menu.feature) | -| `Given no :menu_name menu_links:` | Remove menu links by title. | `MenuTrait` | [menu.feature](tests/behat/features/menu.feature) | -| `Given :menu_name menu_links:` | Create menu links. | `MenuTrait` | [menu.feature](tests/behat/features/menu.feature) | -| `When :field_name in :bundle :entity_type with :entity_field_name of :entity_field_identifer has :paragraph_type paragraph:` | Create paragraphs of the given type with fields for the specified entity. | `ParagraphsTrait` | [paragraphs.feature](tests/behat/features/paragraphs.feature) | -| `Then I should be in the :path path` | Assert the current page is the specified path. | `PathTrait` | [path.feature](tests/behat/features/path.feature) | -| `Then I should not be in the :path path` | Assert the current page is not the specified path. | `PathTrait` | [path.feature](tests/behat/features/path.feature) | -| `Then I :can visit :path with HTTP credentials :user :pass` | Assert that the specified path can be visited with HTTP credentials. | `PathTrait` | [path.feature](tests/behat/features/path.feature) | -| `When I visit :path then the final URL should be :alias` | Visit the specified path and assert the final URL. | `PathTrait` | [path.feature](tests/behat/features/path.feature) | -| `Then response contains header :name` | Assert that the response contains a header with the specified name. | `ResponseTrait` | [response.feature](tests/behat/features/response.feature) | -| `Then response does not contain header :name` | Assert that the response does not contain a header with the specified name. | `ResponseTrait` | [response.feature](tests/behat/features/response.feature) | -| `Then response header :name contains :value` | Assert that the response header contains the specified value. | `ResponseTrait` | [response.feature](tests/behat/features/response.feature) | -| `Then response header :name does not contain :value` | Assert that the response header does not contain the specified value. | `ResponseTrait` | [response.feature](tests/behat/features/response.feature) | -| `Given role :name with permissions :permissions` | Create a single role with the specified permissions. | `RoleTrait` | [role.feature](tests/behat/features/role.feature) | -| `Given roles:` | Create multiple roles from the specified table. | `RoleTrait` | [role.feature](tests/behat/features/role.feature) | -| `Then select :select should have an option :option` | Assert that the specified select element has the specified option. | `SelectTrait` | [select.feature](tests/behat/features/select.feature) | -| `Then select :select should not have an option :option` | Assert that the specified select element does not have the specified option. | `SelectTrait` | [select.feature](tests/behat/features/select.feature) | -| `Then /^the option "([^"]*)" from select "([^"]*)" is selected$/` | Assert that the specified option is selected in the specified select element. | `SelectTrait` | [select.feature](tests/behat/features/select.feature) | -| `When I index :type :title for search` | Index a node with all Search API indices. | `SearchApiTrait` | [search.feature](tests/behat/features/search.feature) | -| `When I index :limit Search API items` | Index a specified number of items across all active Search API indices. | `SearchApiTrait` | [search.feature](tests/behat/features/search.feature) | -| `Given vocabulary :vid with name :name exists` | Assert that the specified vocabulary exists. | `TaxonomyTrait` | [taxonomy.feature](tests/behat/features/taxonomy.feature) | -| `Given taxonomy term :name from vocabulary :vocabulary_id exists` | Assert that the specified taxonomy term exists by name. | `TaxonomyTrait` | [taxonomy.feature](tests/behat/features/taxonomy.feature) | -| `Given no :vocabulary terms:` | Remove terms from the specified vocabulary. | `TaxonomyTrait` | [taxonomy.feature](tests/behat/features/taxonomy.feature) | -| `When I visit :vocabulary vocabulary term :name` | Visit the specified vocabulary term page. | `TaxonomyTrait` | [taxonomy.feature](tests/behat/features/taxonomy.feature) | -| `When I edit :vocabulary vocabulary term :name` | Visit the specified vocabulary term edit page. | `TaxonomyTrait` | [taxonomy.feature](tests/behat/features/taxonomy.feature) | -| `When I visit user :name profile` | Visit the profile page of the specified user. | `UserTrait` | [user.feature](tests/behat/features/user.feature) | -| `When I go to my profile edit page` | Visit the edit page of the current user. | `UserTrait` | [user.feature](tests/behat/features/user.feature) | -| `When I edit user :name profile` | Visit the edit page of the specified user. | `UserTrait` | [user.feature](tests/behat/features/user.feature) | -| `Given no users:` | Remove users specified in the table. | `UserTrait` | [user.feature](tests/behat/features/user.feature) | -| `Then user :name has :roles role(s) assigned` | Assert that a user has the specified roles assigned. | `UserTrait` | [user.feature](https://example.com) | -| `Then user :name does not have :roles role(s) assigned` | Assert that a user does not have the specified roles assigned. | `UserTrait` | [user.feature](tests/behat/features/user.feature) | -| `Then user :name has :status status` | Assert whether a user is active or not. | `UserTrait` | [user.feature](tests/behat/features/user.feature) | -| `Then I set user :user password to :password` | Set a password for a user. | `UserTrait` | [user.feature](tests/behat/features/user.feature) | -| `Then /^(?:\|I )should see a visible "(?P[^"]*)" element$/` | Assert that the element with the specified CSS selector is visible on the page. | `VisibilityTrait` | [visibility.feature](tests/behat/features/visibility.feature) | -| `Then /^(?:\|I )should not see a visible "(?P[^"]*)" element$/` | Assert that the element with the specified CSS selector is not visible on the page. | `VisibilityTrait` | [visibility.feature](tests/behat/features/visibility.feature) | -| `Then /^(?:\|I )should see a visually visible "(?P[^"]*)" element(?: with top offset of "([^"]*)" pixels)?$/` | Assert that the element with the specified CSS selector is visually visible on the page. | `VisibilityTrait` | [visibility.feature](tests/behat/features/visibility.feature) | -| `Then /^(?:\|I )should not see a visually hidden "(?P[^"]*)" element(?: with top offset of "([^"]*)" pixels)?$/` | Assert that the element with the specified CSS selector is visually hidden on the page. | `VisibilityTrait` | [visibility.feature](tests/behat/features/visibility.feature) | -| `Then /^(?:\|I )wait (\d+) second(s?)$/` | Wait for the specified number of seconds. | `WaitTrait` | [wait.feature](tests/behat/features/wait.feature) | -| `Given I wait :timeout seconds for AJAX to finish` | Wait for AJAX to finish. | `WaitTrait` | [wait.feature](tests/behat/features/wait.feature) | -| `When I fill in WYSIWYG :field with :value` | Set the value for the WYSIWYG field. | `WysiwygTrait` | [wysiwyg.feature](tests/behat/features/wysiwyg.feature) | +| Step Name | Description | +|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| +| **[`ContentTrait`](src/ContentTrait.php) ([example](tests/behat/features/content.feature))** | | +| `Given no :type content type` | Delete the content type. | +| `When I visit :type :title` | Navigate to a page with a specified type and title. | +| `When I edit :type :title` | Navigate to the edit page with a specified type and title. | +| `When I delete :type :title` | Navigate to the delete page with a specified type and title. | +| `Given no ([a-zA-z0-9_-]+) content:$/` | Remove content defined by provided properties. | +| `When the moderation state of :type :title changes from :old_state to :new_state` | Change the moderation state of content with the specified title. | +| `When I visit :type :title scheduled transitions` | Visit the scheduled transition page for a node with the specified title. | +|   | | +| **[`DraggableViewsTrait`](src/DraggableViewsTrait.php) ([example](tests/behat/features/draggableviews.feature))** | | +| `Then I save draggable views :view_id view :views_display_id display :bundle items in the following order:` | Save the order of the draggable items. | +|   | | +| **[`EckTrait`](src/EckTrait.php) ([example](tests/behat/features/eck.feature))** | | +| `Given :bundle :entity_type entities:` | Create ECK entities. | +| `Given no :bundle :entity_type entities:` | Remove custom entities by field. | +| `When I edit :bundle :entity_type with title :label` | Navigate to the edit page for the specified ECK entity type and title. | +| `When I visit :bundle :entity_type with title :label` | Navigate to the view page for the specified ECK entity type and title. | +|   | | +| **[`ElementTrait`](src/ElementTrait.php) ([example](tests/behat/features/element.feature))** | | +| `Then I( should) see the :selector element with the :attribute attribute set to :value` | Assert that an element with the specified selector and attribute value exists. | +|   | | +| **[`EmailTrait`](src/EmailTrait.php) ([example](tests/behat/features/email.feature))** | | +| `Given I enable the test email system` | Enable the test email system. | +| `Given I disable the test email system` | Disable the test email system. | +| `When I clear the test email system queue` | Clear the test email system queue. | +| `Then an email is sent to :address` | Assert that an email was sent to the specified address. | +| `Then no emails were sent` | Assert that no email messages were sent. | +| `Then no emails were sent to :address` | Assert that no email messages were sent to the specified address. | +| `Then an email header :header contains:` | Assert that an email message header contains the specified content. | +| `Then an email header :header contains exact:` | Assert that an email message header contains the exact specified content. | +| `Then /^an email to "(?P[^"]*)" user is "(?P[^"]*)" with "(?P[^"]*)" content:$/` | Assert that an email message was sent or not sent to a user with the specified content. | +| `Then an email :field contains` | Assert that an email message field contains the specified value. | +| `Then an email :field contains exact` | Assert that an email message field contains the exact specified value. | +| `Then an email :field does not contain` | Assert that an email message field does not contain the specified value. | +| `Then an email :field does not contains exact` | Assert that an email message field does not contain the exact specified value. | +| `When I follow the link number :number in the email with the subject` | Visit a link from the email with the specified subject. | +| `Then file :name attached to the email with the subject` | Assert that a file is attached to an email message with the specified subject. | +|   | | +| **[`FieldTrait`](src/FieldTrait.php) ([example](tests/behat/features/field.feature))** | | +| `Then I see field :name` | Assert that a field exists on the page using its id, name, label, or value. | +| `Then I don't see field :name` | Assert that a field does not exist on the page using its id, name, label, or value. | +| `Then field :name :exists on the page` | Assert whether the field exists on the page using its id, name, label, or value. | +| `Then field :name is :disabled on the page` | Assert whether the field is disabled on the page. | +| `Then field :name should be :presence on the page and have state :state` | Assert whether the field exists on the page and has a specified state. | +|   | | +| **[`FileDownloadTrait`](src/FileDownloadTrait.php) ([example](tests/behat/features/file-download.feature))** | | +| `Then I download file from :url` | Download a file from the specified URL. | +| `Then I download file from link :link` | Download a file from the specified HTML link. | +| `Then I see download :link link :presence(on the page)` | Assert that an HTML link is present or absent on the page. | +| `Then downloaded file contains:` | Assert the contents of the downloaded file. | +| `Then downloaded file name is :name` | Assert the file name of the downloaded file. | +| `Then downloaded file is zip archive that contains files:` | Assert that the downloaded file is a ZIP archive containing specified files. | +| `Then downloaded file is zip archive that does not contain files:` | Assert that the downloaded file is a ZIP archive that does not contain specified files. | +|   | | +| **[`FileTrait`](src/FileTrait.php) ([example](tests/behat/features/file.feature))** | | +| `Given managed file:` | Create a managed file with the properties provided in the table. | +| `Given no managed files:` | Delete managed files defined by the provided properties or fields. | +| `Given unmanaged file :uri created` | Create an unmanaged file. | +| `Given unmanaged file :uri created with content :content` | Create an unmanaged file with specified content. | +| `Then unmanaged file :uri exists` | Assert that an unmanaged file with the specified URI exists. | +| `Then unmanaged file :uri does not exist` | Assert that an unmanaged file with the specified URI does not exist. | +| `Then unmanaged file :uri has content :content` | Assert that an unmanaged file exists and has the specified content. | +| `Then unmanaged file :uri does not have content :content` | Assert that an unmanaged file exists and does not have the specified content. | +|   | | +| **[`JsTrait`](src/JsTrait.php) ([example](tests/behat/features/js.feature))** | | +| `When I accept confirmation dialogs` | Accept confirmation dialogs appearing on the page. | +| `When I do not accept confirmation dialogs` | Do not accept confirmation dialogs appearing on the page. | +| `When /^(?:\|I )click (an?\|on) "(?P[^"]*)" element$/` | Click on the element defined by the selector. | +| `When I trigger JS :event event on :selector element` | Trigger an event on the specified element. | +|   | | +| **[`KeyboardTrait`](src/KeyboardTrait.php) ([example](tests/behat/features/keyboard.feature))** | | +| `Given I press the :keys keys` | Press multiple keyboard keys. | +| `Given I press the :keys keys on :selector` | Press multiple keyboard keys on the specified element. | +| `Given I press the :char key` | Press the specified keyboard key. | +| `Given I press the :char key on :selector` | Press the specified keyboard key on the specified element. | +|   | | +| **[`LinkTrait`](src/LinkTrait.php) ([example](tests/behat/features/link.feature))** | | +| `Then I should see the link :text with :href` | Assert the presence of a link with the specified href. | +| `Then I should see the link :text with :href in :locator` | Assert the presence of a link with the specified href in the specified locator. | +| `Then I should not see the link :text with :href` | Assert that a link with the specified href does not exist. | +| `Then I should not see the link :text with :href in :locator` | Assert that a link with the specified href does not exist in the specified locator. | +| `Then the link with title :title exists` | Assert that a link with the specified title exists. | +| `Then the link with title :title does not exist` | Assert that a link with the specified title does not exist. | +| `Then I click the link with title :title` | Click on the link with the specified title. | +| `Then the link( with title) :text is an absolute link` | Assert that the link with the specified text is absolute. | +| `Then the link( with title) :text is not an absolute link` | Assert that the link with the specified text is not absolute. | +|   | | +| **[`MediaTrait`](src/MediaTrait.php) ([example](tests/behat/features/media.feature))** | | +| `Given no :type media type` | Remove the specified media type. | +| `Given :type media:` | Create media of the given type. | +| `Given /^no ([a-zA-z0-9_-]+) media:$/` | Remove media defined by the provided properties. | +| `Navigate to edit media with specified type and name.` | Navigate to the edit page for the specified media type and name. | +|   | | +| **[`MenuTrait`](src/MenuTrait.php) ([example](tests/behat/features/menu.feature))** | | +| `Given no menus:` | Remove the specified menus. | +| `Given menus:` | Create a menu if one does not exist. | +| `Given no :menu_name menu_links:` | Remove menu links by title. | +| `Given :menu_name menu_links:` | Create menu links. | +|   | | +| **[`ParagraphsTrait`](src/ParagraphsTrait.php) ([example](tests/behat/features/paragraphs.feature))** | | +| `When :field_name in :bundle :entity_type with :entity_field_name of :entity_field_identifer has :paragraph_type paragraph:` | Create paragraphs of the given type with fields for the specified entity. | +|   | | +| **[`PathTrait`](src/PathTrait.php) ([example](tests/behat/features/path.feature))** | | +| `Then I should be in the :path path` | Assert the current page is the specified path. | +| `Then I should not be in the :path path` | Assert the current page is not the specified path. | +| `Then I :can visit :path with HTTP credentials :user :pass` | Assert that the specified path can be visited with HTTP credentials. | +| `When I visit :path then the final URL should be :alias` | Visit the specified path and assert the final URL. | +|   | | +| **[`ResponseTrait`](src/ResponseTrait.php) ([example](tests/behat/features/response.feature))** | | +| `Then response contains header :name` | Assert that the response contains a header with the specified name. | +| `Then response does not contain header :name` | Assert that the response does not contain a header with the specified name. | +| `Then response header :name contains :value` | Assert that the response header contains the specified value. | +| `Then response header :name does not contain :value` | Assert that the response header does not contain the specified value. | +|   | | +| **[`RoleTrait`](src/RoleTrait.php) ([example](tests/behat/features/role.feature))** | | +| `Given role :name with permissions :permissions` | Create a single role with the specified permissions. | +| `Given roles:` | Create multiple roles from the specified table. | +|   | | +| **[`SelectTrait`](src/SelectTrait.php) ([example](tests/behat/features/select.feature))** | | +| `Then select :select should have an option :option` | Assert that the specified select element has the specified option. | +| `Then select :select should not have an option :option` | Assert that the specified select element does not have the specified option. | +| `Then /^the option "([^"]*)" from select "([^"]*)" is selected$/` | Assert that the specified option is selected in the specified select element. | +|   | | +| **[`SearchApiTrait`](src/SearchApiTrait.php) ([example](tests/behat/features/search.feature))** | | +| `When I index :type :title for search` | Index a node with all Search API indices. | +| `When I index :limit Search API items` | Index a specified number of items across all active Search API indices. | +|   | | +| **[`TaxonomyTrait`](src/TaxonomyTrait.php) ([example](tests/behat/features/taxonomy.feature))** | | +| `Given vocabulary :vid with name :name exists` | Assert that the specified vocabulary exists. | +| `Given taxonomy term :name from vocabulary :vocabulary_id exists` | Assert that the specified taxonomy term exists by name. | +| `Given no :vocabulary terms:` | Remove terms from the specified vocabulary. | +| `When I visit :vocabulary vocabulary term :name` | Visit the specified vocabulary term page. | +| `When I edit :vocabulary vocabulary term :name` | Visit the specified vocabulary term edit page. | +|   | | +| **[`UserTrait`](src/UserTrait.php) ([example](tests/behat/features/user.feature))** | | +| `When I visit user :name profile` | Visit the profile page of the specified user. | +| `When I go to my profile edit page` | Visit the edit page of the current user. | +| `When I edit user :name profile` | Visit the edit page of the specified user. | +| `Given no users:` | Remove users specified in the table. | +| `Then user :name has :roles role(s) assigned` | Assert that a user has the specified roles assigned. | +| `Then user :name does not have :roles role(s) assigned` | Assert that a user does not have the specified roles assigned. | +| `Then user :name has :status status` | Assert whether a user is active or not. | +| `Then I set user :user password to :password` | Set a password for a user. | +|   | | +| **[`VisibilityTrait`](src/VisibilityTrait.php) ([example](tests/behat/features/visibility.feature))** | | +| `Then /^(?:\|I )should see a visible "(?P[^"]*)" element$/` | Assert that the element with the specified CSS selector is visible on the page. | +| `Then /^(?:\|I )should not see a visible "(?P[^"]*)" element$/` | Assert that the element with the specified CSS selector is not visible on the page. | +| `Then /^(?:\|I )should see a visually visible "(?P[^"]*)" element(?: with top offset of "([^"]*)" pixels)?$/` | Assert that the element with the specified CSS selector is visually visible on the page. | +| `Then /^(?:\|I )should not see a visually hidden "(?P[^"]*)" element(?: with top offset of "([^"]*)" pixels)?$/` | Assert that the element with the specified CSS selector is visually hidden on the page. | +|   | | +| **[`WaitTrait`](src/WaitTrait.php) ([example](tests/behat/features/wait.feature))** | | +| `Then /^(?:\|I )wait (\d+) second(s?)$/` | Wait for the specified number of seconds. | +| `Given I wait :timeout seconds for AJAX to finish` | Wait for AJAX to finish. | +|   | | +| **[`WysiwygTrait`](src/WysiwygTrait.php) ([example](tests/behat/features/wysiwyg.feature))** | | +| `When I fill in WYSIWYG :field with :value` | Set the value for the WYSIWYG field. | #### Skipping before scenario hooks