function UiHelperTrait::submitForm
Same name and namespace in other branches
- 11.x core/tests/Drupal/Tests/UiHelperTrait.php \Drupal\Tests\UiHelperTrait::submitForm()
- 10 core/tests/Drupal/Tests/UiHelperTrait.php \Drupal\Tests\UiHelperTrait::submitForm()
- 9 core/tests/Drupal/Tests/UiHelperTrait.php \Drupal\Tests\UiHelperTrait::submitForm()
- 8.9.x core/tests/Drupal/Tests/UiHelperTrait.php \Drupal\Tests\UiHelperTrait::submitForm()
Fills and submits a form.
Parameters
array $edit: Field data in an associative array. Changes the current input fields (where possible) to the values indicated.
A checkbox can be set to TRUE to be checked and should be set to FALSE to be unchecked.
string $submit: Value of the submit button whose click is to be emulated. For example, 'Save'. The processing of the request depends on this value. For example, a form may have one button with the value 'Save' and another button with the value 'Delete', and execute different code depending on which one is clicked.
string $form_html_id: (optional) HTML ID of the form to be submitted. On some pages there are many identical forms, so just using the value of the submit button is not enough. For example: 'trigger-node-presave-assign-form'. Note that this is not the Drupal $form_id, but rather the HTML ID of the form, which is typically the same thing but with hyphens replacing the underscores.
623 calls to UiHelperTrait::submitForm()
- AreaTest::testUI in core/
modules/ views/ tests/ src/ Functional/ Handler/ AreaTest.php - Tests the generic UI of an area handler.
- ArgumentDefaultTest::testArgumentDefaultNode in core/
modules/ views/ tests/ src/ Functional/ Plugin/ ArgumentDefaultTest.php - Tests node default argument.
- ArgumentDefaultTest::testArgumentDefaultNoOptions in core/
modules/ views/ tests/ src/ Functional/ Plugin/ ArgumentDefaultTest.php - Tests the use of a default argument plugin that provides no options.
- BasicTest::testViewsWizardAndListing in core/
modules/ views/ tests/ src/ Functional/ Wizard/ BasicTest.php - Tests the Views wizard and listing.
- BasicTest::testWizardDefaultValues in core/
modules/ views/ tests/ src/ Functional/ Wizard/ BasicTest.php - Tests default plugin values are populated from the wizard form.
File
-
core/
tests/ Drupal/ Tests/ UiHelperTrait.php, line 73
Class
- UiHelperTrait
- Provides UI helper methods.
Namespace
Drupal\TestsCode
protected function submitForm(array $edit, $submit, $form_html_id = NULL) {
$assert_session = $this->assertSession();
$submit_button = $assert_session->buttonExists($submit);
// Check if button has a form attribute set.
if ($form_id = $submit_button->getAttribute('form')) {
$form = $assert_session->elementExists('xpath', "//form[@id='{$form_id}']");
$action = $form->getAttribute('action');
}
elseif (isset($form_html_id)) {
$form = $assert_session->elementExists('xpath', "//form[@id='{$form_html_id}']");
$submit_button = $assert_session->buttonExists($submit, $form);
$action = $form->getAttribute('action');
}
else {
$form = $assert_session->elementExists('xpath', './ancestor::form', $submit_button);
$action = $form->getAttribute('action');
}
// Edit the form values.
foreach ($edit as $name => $value) {
$field = $assert_session->fieldExists($name, $form);
$value = match ($field->getAttribute('type')) { 'checkbox' => (bool) $value,
'text', 'number', 'radio' => (string) $value,
default => $value,
};
$field->setValue($value);
}
// Submit form.
$this->prepareRequest();
$submit_button->press();
// Ensure that any changes to variables in the other thread are picked up.
$this->refreshVariables();
// Check if there are any meta refresh redirects (like Batch API pages).
if ($this->checkForMetaRefresh()) {
// We are finished with all meta refresh redirects, so reset the counter.
$this->metaRefreshCount = 0;
}
// Log only for WebDriverTestBase tests because for tests using
// DrupalTestBrowser we log with ::getResponseLogHandler.
if ($this->htmlOutputEnabled && !$this->isTestUsingGuzzleClient()) {
$out = $this->getSession()
->getPage()
->getContent();
$html_output = 'POST request to: ' . $action . '<hr />Ending URL: ' . $this->getSession()
->getCurrentUrl();
$html_output .= '<hr />' . $out;
$html_output .= $this->getHtmlOutputHeaders();
$this->htmlOutput($html_output);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.