 .../lib/Drupal/action/Tests/BulkFormTest.php       |    4 +-
 .../lib/Drupal/action/Tests/ConfigurationTest.php  |    8 +-
 .../Tests/AggregatorConfigurationTest.php          |    4 +-
 .../Drupal/aggregator/Tests/AggregatorTestBase.php |    8 +-
 .../aggregator/Tests/CategorizeFeedItemTest.php    |    2 +-
 .../Drupal/aggregator/Tests/CategorizeFeedTest.php |    4 +-
 .../lib/Drupal/aggregator/Tests/ImportOpmlTest.php |   12 +-
 .../Drupal/aggregator/Tests/UpdateFeedItemTest.php |    2 +-
 .../lib/Drupal/aggregator/Tests/UpdateFeedTest.php |    2 +-
 .../lib/Drupal/ban/Tests/IpAddressBlockingTest.php |   14 +-
 .../custom_block/Tests/CustomBlockCreationTest.php |   16 +-
 .../custom_block/Tests/CustomBlockFieldTest.php    |    4 +-
 .../custom_block/Tests/CustomBlockListTest.php     |    6 +-
 .../custom_block/Tests/CustomBlockTypeTest.php     |   12 +-
 .../lib/Drupal/custom_block/Tests/PageEditTest.php |    8 +-
 .../lib/Drupal/block/Tests/BlockAdminThemeTest.php |    2 +-
 .../Drupal/block/Tests/BlockInvalidRegionTest.php  |    6 +-
 .../lib/Drupal/block/Tests/BlockLanguageTest.php   |    8 +-
 .../block/lib/Drupal/block/Tests/BlockTest.php     |   24 +-
 .../block/lib/Drupal/block/Tests/BlockTestBase.php |    2 +-
 .../block/lib/Drupal/block/Tests/BlockUiTest.php   |    6 +-
 .../Drupal/block/Tests/Views/DisplayBlockTest.php  |   30 +--
 .../book/lib/Drupal/book/Tests/BookTest.php        |   34 +--
 .../Drupal/ckeditor/Tests/CKEditorAdminTest.php    |   12 +-
 .../color/lib/Drupal/color/Tests/ColorTest.php     |    6 +-
 .../Drupal/comment/Tests/CommentAnonymousTest.php  |    2 +-
 .../Drupal/comment/Tests/CommentApprovalTest.php   |    6 +-
 .../lib/Drupal/comment/Tests/CommentFieldsTest.php |   10 +-
 .../Drupal/comment/Tests/CommentLanguageTest.php   |   14 +-
 .../Drupal/comment/Tests/CommentPreviewTest.php    |   10 +-
 .../lib/Drupal/comment/Tests/CommentTestBase.php   |   12 +-
 .../lib/Drupal/comment/Tests/Views/WizardTest.php  |    6 +-
 .../Drupal/config/Tests/ConfigEntityListTest.php   |    8 +-
 .../config/Tests/ConfigEntityStatusUITest.php      |    2 +-
 .../lib/Drupal/config/Tests/ConfigEntityTest.php   |   16 +-
 .../lib/Drupal/config/Tests/ConfigExportUITest.php |    2 +-
 .../lib/Drupal/config/Tests/ConfigImportUITest.php |    4 +-
 .../Drupal/config/Tests/ConfigImportUploadTest.php |    2 +-
 .../config/Tests/ConfigLocaleOverrideWebTest.php   |    2 +-
 .../Drupal/contact/Tests/ContactPersonalTest.php   |    6 +-
 .../Drupal/contact/Tests/ContactSitewideTest.php   |   20 +-
 .../Tests/ContentTranslationSettingsTest.php       |    4 +-
 .../Tests/ContentTranslationUITest.php             |   20 +-
 .../Tests/ContentTranslationWorkflowsTest.php      |    2 +-
 .../Tests/ContextualDynamicContextTest.php         |   22 +-
 .../Drupal/datetime/Tests/DatetimeFieldTest.php    |   22 +-
 .../dblog/lib/Drupal/dblog/Tests/DbLogTest.php     |   20 +-
 .../edit/lib/Drupal/edit/Tests/EditLoadingTest.php |  229 +++-----------------
 .../editor/Tests/EditIntegrationLoadingTest.php    |   47 +---
 .../lib/Drupal/editor/Tests/EditorAdminTest.php    |    6 +-
 .../lib/Drupal/email/Tests/EmailFieldTest.php      |    2 +-
 .../Drupal/entity/Tests/EntityDisplayModeTest.php  |   12 +-
 .../Tests/EntityReferenceAdminTest.php             |   10 +-
 .../Tests/EntityReferenceAutoCreateTest.php        |    2 +-
 .../field/lib/Drupal/field/Tests/FormTest.php      |   48 ++--
 .../lib/Drupal/field/Tests/NestedFormTest.php      |   16 +-
 .../lib/Drupal/field/Tests/TranslationWebTest.php  |    2 +-
 .../lib/Drupal/field/Tests/Views/FieldUITest.php   |    6 +-
 .../Drupal/field/Tests/reEnableModuleFieldTest.php |    2 +-
 .../lib/Drupal/field_ui/Tests/FieldUiTestBase.php  |   22 +-
 .../Drupal/field_ui/Tests/ManageDisplayTest.php    |   32 +--
 .../lib/Drupal/field_ui/Tests/ManageFieldsTest.php |   26 +--
 .../lib/Drupal/file/Tests/FileFieldDisplayTest.php |    6 +-
 .../Drupal/file/Tests/FileFieldRSSContentTest.php  |    4 +-
 .../Drupal/file/Tests/FileFieldRevisionTest.php    |   10 +-
 .../lib/Drupal/file/Tests/FileFieldTestBase.php    |   10 +-
 .../Drupal/file/Tests/FileFieldValidateTest.php    |    4 +-
 .../lib/Drupal/file/Tests/FileFieldWidgetTest.php  |   50 ++---
 .../file/lib/Drupal/file/Tests/FileListingTest.php |    2 +-
 .../file/Tests/FileManagedFileElementTest.php      |   36 +--
 .../file/lib/Drupal/file/Tests/SaveUploadTest.php  |   28 +--
 .../lib/Drupal/filter/Tests/FilterAdminTest.php    |   34 +--
 .../filter/Tests/FilterDefaultFormatTest.php       |    6 +-
 .../Drupal/filter/Tests/FilterFormatAccessTest.php |   18 +-
 .../lib/Drupal/filter/Tests/FilterHooksTest.php    |    8 +-
 .../filter/Tests/FilterHtmlImageSecureTest.php     |    2 +-
 .../lib/Drupal/filter/Tests/FilterSecurityTest.php |    4 +-
 .../lib/Drupal/forum/Tests/ForumBlockTest.php      |    2 +-
 .../lib/Drupal/forum/Tests/ForumIndexTest.php      |    4 +-
 .../lib/Drupal/forum/Tests/ForumNodeAccessTest.php |    4 +-
 .../forum/lib/Drupal/forum/Tests/ForumTest.php     |   32 +--
 .../Drupal/image/Tests/ImageAdminStylesTest.php    |   38 ++--
 .../Drupal/image/Tests/ImageFieldDisplayTest.php   |   10 +-
 .../lib/Drupal/image/Tests/ImageFieldTestBase.php  |    2 +-
 .../lib/Drupal/image/Tests/ImageStyleFlushTest.php |   10 +-
 .../Tests/LanguageBrowserDetectionUnitTest.php     |   10 +-
 .../Tests/LanguageConfigurationElementTest.php     |    8 +-
 .../language/Tests/LanguageConfigurationTest.php   |   18 +-
 .../LanguageCustomLanguageConfigurationTest.php    |    8 +-
 .../lib/Drupal/language/Tests/LanguageListTest.php |   20 +-
 .../language/Tests/LanguageNegotiationInfoTest.php |    4 +-
 .../language/Tests/LanguagePathMonolingualTest.php |    8 +-
 .../language/Tests/LanguageSwitchingTest.php       |    8 +-
 .../Tests/LanguageUILanguageNegotiationTest.php    |   20 +-
 .../language/Tests/LanguageUrlRewritingTest.php    |    6 +-
 .../link/lib/Drupal/link/Tests/LinkFieldTest.php   |   18 +-
 .../link/lib/Drupal/link/Tests/LinkFieldUITest.php |    6 +-
 .../locale/Tests/LocaleConfigTranslationTest.php   |   20 +-
 .../lib/Drupal/locale/Tests/LocaleContentTest.php  |   20 +-
 .../lib/Drupal/locale/Tests/LocaleExportTest.php   |   12 +-
 .../locale/Tests/LocaleImportFunctionalTest.php    |   18 +-
 .../lib/Drupal/locale/Tests/LocalePathTest.php     |    8 +-
 .../Drupal/locale/Tests/LocalePluralFormatTest.php |   26 +--
 .../locale/Tests/LocaleTranslationUiTest.php       |   76 +++----
 .../Drupal/locale/Tests/LocaleUninstallTest.php    |    4 +-
 .../lib/Drupal/locale/Tests/LocaleUpdateBase.php   |    2 +-
 .../Drupal/locale/Tests/LocaleUpdateCronTest.php   |    6 +-
 .../lib/Drupal/locale/Tests/LocaleUpdateTest.php   |   46 ++--
 .../lib/Drupal/menu/Tests/MenuLanguageTest.php     |   12 +-
 .../menu/lib/Drupal/menu/Tests/MenuNodeTest.php    |   14 +-
 .../menu/lib/Drupal/menu/Tests/MenuTest.php        |   40 ++--
 .../Tests/MultiStepNodeFormBasicOptionsTest.php    |    2 +-
 .../Drupal/node/Tests/NodeAccessBaseTableTest.php  |    2 +-
 .../lib/Drupal/node/Tests/NodeAccessFieldTest.php  |    2 +-
 .../Drupal/node/Tests/NodeAccessRebuildTest.php    |    2 +-
 .../lib/Drupal/node/Tests/NodeCreationTest.php     |    4 +-
 .../node/Tests/NodeEntityViewModeAlterTest.php     |    2 +-
 .../node/Tests/NodeFieldMultilingualTestCase.php   |   10 +-
 .../lib/Drupal/node/Tests/NodeFormButtonsTest.php  |   14 +-
 .../lib/Drupal/node/Tests/NodePostSettingsTest.php |    8 +-
 .../Drupal/node/Tests/NodeRevisionsAllTestCase.php |    6 +-
 .../lib/Drupal/node/Tests/NodeRevisionsTest.php    |    6 +-
 .../lib/Drupal/node/Tests/NodeTitleXSSTest.php     |    2 +-
 .../Drupal/node/Tests/NodeTranslationUITest.php    |    4 +-
 .../node/Tests/NodeTypeInitialLanguageTest.php     |   12 +-
 .../Drupal/node/Tests/NodeTypePersistenceTest.php  |   16 +-
 .../node/lib/Drupal/node/Tests/NodeTypeTest.php    |   10 +-
 .../node/lib/Drupal/node/Tests/PageEditTest.php    |   14 +-
 .../node/lib/Drupal/node/Tests/PagePreviewTest.php |   14 +-
 .../lib/Drupal/node/Tests/Views/BulkFormTest.php   |   16 +-
 .../lib/Drupal/number/Tests/NumberFieldTest.php    |   24 +-
 .../Drupal/options/Tests/OptionsFieldUITest.php    |   10 +-
 .../Drupal/options/Tests/OptionsWidgetsTest.php    |   50 ++---
 .../lib/Drupal/overlay/Tests/OverlayCloseTest.php  |    2 +-
 .../Drupal/overlay/Tests/OverlaySettingTest.php    |    2 +-
 .../path/lib/Drupal/path/Tests/PathAliasTest.php   |   26 +--
 .../lib/Drupal/path/Tests/PathLanguageTest.php     |   16 +-
 .../lib/Drupal/path/Tests/PathLanguageUiTest.php   |   10 +-
 .../lib/Drupal/path/Tests/PathTaxonomyTermTest.php |    6 +-
 .../php/lib/Drupal/php/Tests/PhpFilterTest.php     |    2 +-
 .../Drupal/picture/Tests/PictureAdminUITest.php    |    6 +-
 .../lib/Drupal/rdf/Tests/TrackerAttributesTest.php |    2 +-
 .../rest/Tests/Views/StyleSerializerTest.php       |   22 +-
 .../search/Tests/SearchAdvancedSearchFormTest.php  |    6 +-
 .../lib/Drupal/search/Tests/SearchBlockTest.php    |    8 +-
 .../search/Tests/SearchCommentCountToggleTest.php  |    8 +-
 .../lib/Drupal/search/Tests/SearchCommentTest.php  |   20 +-
 .../search/Tests/SearchConfigSettingsFormTest.php  |   20 +-
 .../Drupal/search/Tests/SearchEmbedFormTest.php    |    6 +-
 .../lib/Drupal/search/Tests/SearchExactTest.php    |    4 +-
 .../lib/Drupal/search/Tests/SearchLanguageTest.php |   10 +-
 .../Drupal/search/Tests/SearchNodeAccessTest.php   |    2 +-
 .../search/Tests/SearchNumberMatchingTest.php      |    4 +-
 .../lib/Drupal/search/Tests/SearchNumbersTest.php  |    4 +-
 .../lib/Drupal/search/Tests/SearchPageTextTest.php |    6 +-
 .../search/Tests/SearchPreprocessLangcodeTest.php  |    6 +-
 .../lib/Drupal/search/Tests/SearchRankingTest.php  |    4 +-
 .../Drupal/shortcut/Tests/ShortcutLinksTest.php    |    8 +-
 .../lib/Drupal/shortcut/Tests/ShortcutSetsTest.php |   14 +-
 .../Drupal/simpletest/Tests/BrokenSetUpTest.php    |    2 +-
 .../lib/Drupal/simpletest/Tests/BrowserTest.php    |    2 +-
 .../Tests/InstallationProfileModuleTestsTest.php   |    2 +-
 .../Tests/MissingCheckedRequirementsTest.php       |    2 +-
 .../lib/Drupal/simpletest/Tests/SimpleTestTest.php |    4 +-
 .../lib/Drupal/simpletest/WebTestBase.php          |  139 +++++++++---
 .../statistics/Tests/StatisticsAdminTest.php       |    2 +-
 .../syslog/lib/Drupal/syslog/Tests/SyslogTest.php  |    2 +-
 .../lib/Drupal/system/Tests/Ajax/CommandsTest.php  |   34 +--
 .../lib/Drupal/system/Tests/Ajax/DialogTest.php    |   12 +-
 .../system/Tests/Ajax/ElementValidationTest.php    |    4 +-
 .../Drupal/system/Tests/Ajax/FormValuesTest.php    |    6 +-
 .../lib/Drupal/system/Tests/Ajax/FrameworkTest.php |   12 +-
 .../lib/Drupal/system/Tests/Ajax/MultiFormTest.php |    2 +-
 .../Drupal/system/Tests/Batch/ProcessingTest.php   |   16 +-
 .../Drupal/system/Tests/Common/FormatDateTest.php  |   10 +-
 .../system/Tests/Condition/ConditionFormTest.php   |    2 +-
 .../system/Tests/Datetime/DrupalDateTimeTest.php   |    2 +-
 .../Drupal/system/Tests/Entity/EntityFormTest.php  |    6 +-
 .../Tests/Entity/EntityTranslationFormTest.php     |    6 +-
 .../lib/Drupal/system/Tests/File/ConfigTest.php    |    2 +-
 .../system/Tests/Form/ArbitraryRebuildTest.php     |    4 +-
 .../lib/Drupal/system/Tests/Form/CheckboxTest.php  |    8 +-
 .../Drupal/system/Tests/Form/ConfirmFormTest.php   |    4 +-
 .../system/Tests/Form/ElementsTableSelectTest.php  |    6 +-
 .../lib/Drupal/system/Tests/Form/EmailTest.php     |    6 +-
 .../Drupal/system/Tests/Form/FileInclusionTest.php |    4 +-
 .../Drupal/system/Tests/Form/FormObjectTest.php    |    8 +-
 .../lib/Drupal/system/Tests/Form/FormTest.php      |   38 ++--
 .../lib/Drupal/system/Tests/Form/HTMLIdTest.php    |    2 +-
 .../Tests/Form/LanguageSelectElementTest.php       |    2 +-
 .../lib/Drupal/system/Tests/Form/RebuildTest.php   |    6 +-
 .../lib/Drupal/system/Tests/Form/RedirectTest.php  |   12 +-
 .../Tests/Form/StateValuesCleanAdvancedTest.php    |    2 +-
 .../system/Tests/Form/StateValuesCleanTest.php     |    2 +-
 .../lib/Drupal/system/Tests/Form/StorageTest.php   |   28 +--
 .../system/Tests/Form/SystemConfigFormTest.php     |    2 +-
 .../system/Tests/Form/TriggeringElementTest.php    |   18 +-
 .../lib/Drupal/system/Tests/Form/UrlTest.php       |    6 +-
 .../Drupal/system/Tests/Form/ValidationTest.php    |   32 +--
 .../Tests/Installer/InstallerTranslationTest.php   |    6 +-
 .../lib/Drupal/system/Tests/InstallerTest.php      |    2 +-
 .../Drupal/system/Tests/Menu/BreadcrumbTest.php    |   16 +-
 .../Drupal/system/Tests/Module/DependencyTest.php  |   30 +--
 .../system/Tests/Module/EnableDisableTest.php      |   12 +-
 .../system/Tests/Module/HookRequirementsTest.php   |    2 +-
 .../system/Tests/Path/UrlAlterFunctionalTest.php   |    2 +-
 .../system/Tests/Session/SessionHttpsTest.php      |   10 +-
 .../Drupal/system/Tests/Session/SessionTest.php    |    2 +-
 .../system/Tests/System/AccessDeniedTest.php       |    8 +-
 .../lib/Drupal/system/Tests/System/CronRunTest.php |    2 +-
 .../Tests/System/DateFormatsLanguageTest.php       |   14 +-
 .../Drupal/system/Tests/System/DateTimeTest.php    |    6 +-
 .../Drupal/system/Tests/System/FrontPageTest.php   |    4 +-
 .../Tests/System/MainContentFallbackTest.php       |    4 +-
 .../system/Tests/System/PageNotFoundTest.php       |    2 +-
 .../Drupal/system/Tests/System/PageTitleTest.php   |    6 +-
 .../system/Tests/System/SiteMaintenanceTest.php    |   10 +-
 .../lib/Drupal/system/Tests/System/ThemeTest.php   |   12 +-
 .../Drupal/system/Tests/Theme/TwigTransTest.php    |    6 +-
 .../system/Tests/Update/UpdateScriptTest.php       |   20 +-
 .../system/Tests/Upgrade/BlockUpgradePathTest.php  |    4 +-
 .../system/Tests/Upgrade/FieldUpgradePathTest.php  |    2 +-
 .../Tests/Upgrade/FilterFormatUpgradePathTest.php  |    2 +-
 .../system/Tests/Upgrade/UpgradePathTestBase.php   |    6 +-
 .../tests/modules/ajax_test/ajax_test.module       |    4 +-
 .../lib/Drupal/taxonomy/Tests/LegacyTest.php       |    2 +-
 .../taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php |    6 +-
 .../taxonomy/Tests/TaxonomyTermIndentationTest.php |    2 +-
 .../Tests/TermFieldMultipleVocabularyTest.php      |    4 +-
 .../lib/Drupal/taxonomy/Tests/TermFieldTest.php    |    2 +-
 .../lib/Drupal/taxonomy/Tests/TermIndexTest.php    |    6 +-
 .../lib/Drupal/taxonomy/Tests/TermLanguageTest.php |   12 +-
 .../lib/Drupal/taxonomy/Tests/TermTest.php         |   42 ++--
 .../lib/Drupal/taxonomy/Tests/TokenReplaceTest.php |    4 +-
 .../taxonomy/Tests/VocabularyLanguageTest.php      |   10 +-
 .../taxonomy/Tests/VocabularyPermissionsTest.php   |   10 +-
 .../lib/Drupal/taxonomy/Tests/VocabularyTest.php   |   18 +-
 .../Drupal/telephone/Tests/TelephoneFieldTest.php  |    4 +-
 .../text/lib/Drupal/text/Tests/TextFieldTest.php   |   10 +-
 .../toolbar/Tests/ToolbarMenuTranslationTest.php   |    8 +-
 .../lib/Drupal/tracker/Tests/TrackerTest.php       |   12 +-
 .../Drupal/translation/Tests/TranslationTest.php   |   28 +--
 .../lib/Drupal/update/Tests/UpdateUploadTest.php   |    4 +-
 .../Drupal/user/Tests/UserAccountLinksTests.php    |    2 +-
 .../user/lib/Drupal/user/Tests/UserAdminTest.php   |   10 +-
 .../user/lib/Drupal/user/Tests/UserBlocksTests.php |    6 +-
 .../user/lib/Drupal/user/Tests/UserCancelTest.php  |   38 ++--
 .../Drupal/user/Tests/UserCreateFailMailTest.php   |    2 +-
 .../user/lib/Drupal/user/Tests/UserCreateTest.php  |    2 +-
 .../user/lib/Drupal/user/Tests/UserEditTest.php    |   20 +-
 .../Drupal/user/Tests/UserEditedOwnAccountTest.php |    2 +-
 .../Drupal/user/Tests/UserLanguageCreationTest.php |    8 +-
 .../lib/Drupal/user/Tests/UserLanguageTest.php     |    4 +-
 .../user/lib/Drupal/user/Tests/UserLoginTest.php   |    2 +-
 .../Drupal/user/Tests/UserPasswordResetTest.php    |   10 +-
 .../lib/Drupal/user/Tests/UserPermissionsTest.php  |    8 +-
 .../user/lib/Drupal/user/Tests/UserPictureTest.php |    8 +-
 .../lib/Drupal/user/Tests/UserRegistrationTest.php |   38 ++--
 .../lib/Drupal/user/Tests/UserRoleAdminTest.php    |   12 +-
 .../Drupal/user/Tests/UserRolesAssignmentTest.php  |    8 +-
 .../user/lib/Drupal/user/Tests/UserSearchTest.php  |    8 +-
 .../lib/Drupal/user/Tests/UserSignatureTest.php    |    8 +-
 .../lib/Drupal/user/Tests/UserTimeZoneTest.php     |    2 +-
 .../UserValidateCurrentPassCustomFormTest.php      |    2 +-
 .../lib/Drupal/user/Tests/Views/BulkFormTest.php   |   10 +-
 .../user/Tests/Views/HandlerFilterUserNameTest.php |    6 +-
 .../lib/Drupal/views/Tests/Handler/AreaTest.php    |    4 +-
 .../Drupal/views/Tests/Handler/FilterDateTest.php  |    2 +-
 .../lib/Drupal/views/Tests/Handler/HandlerTest.php |    4 +-
 .../views/Tests/Plugin/ArgumentDefaultTest.php     |    2 +-
 .../Drupal/views/Tests/Plugin/DisplayFeedTest.php  |    4 +-
 .../lib/Drupal/views/Tests/Plugin/DisplayTest.php  |    2 +-
 .../lib/Drupal/views/Tests/Plugin/PagerTest.php    |   18 +-
 .../views/lib/Drupal/views/Tests/ViewAjaxTest.php  |   15 +-
 .../lib/Drupal/views/Tests/Wizard/BasicTest.php    |    8 +-
 .../Drupal/views/Tests/Wizard/ItemsPerPageTest.php |    2 +-
 .../lib/Drupal/views/Tests/Wizard/MenuTest.php     |    2 +-
 .../lib/Drupal/views/Tests/Wizard/SortingTest.php  |    4 +-
 .../Drupal/views/Tests/Wizard/TaggedWithTest.php   |   22 +-
 .../lib/Drupal/views_ui/Tests/AnalyzeTest.php      |    2 +-
 .../lib/Drupal/views_ui/Tests/CachedDataUITest.php |   12 +-
 .../Drupal/views_ui/Tests/CustomBooleanTest.php    |    4 +-
 .../lib/Drupal/views_ui/Tests/DefaultViewsTest.php |   16 +-
 .../views_ui/Tests/DisplayAttachmentTest.php       |    8 +-
 .../views_ui/Tests/DisplayExtenderUITest.php       |    4 +-
 .../lib/Drupal/views_ui/Tests/DisplayPath.php      |   18 +-
 .../lib/Drupal/views_ui/Tests/DisplayTest.php      |   46 ++--
 .../Drupal/views_ui/Tests/ExposedFormUITest.php    |   18 +-
 .../lib/Drupal/views_ui/Tests/FieldUITest.php      |    2 +-
 .../Drupal/views_ui/Tests/FilterBooleanWebTest.php |    8 +-
 .../lib/Drupal/views_ui/Tests/GroupByTest.php      |    6 +-
 .../lib/Drupal/views_ui/Tests/HandlerTest.php      |   22 +-
 .../Drupal/views_ui/Tests/OverrideDisplaysTest.php |   26 +--
 .../lib/Drupal/views_ui/Tests/PreviewTest.php      |   14 +-
 .../lib/Drupal/views_ui/Tests/QueryTest.php        |    4 +-
 .../Drupal/views_ui/Tests/RearrangeFieldsTest.php  |    4 +-
 .../lib/Drupal/views_ui/Tests/RedirectTest.php     |    6 +-
 .../lib/Drupal/views_ui/Tests/RowUITest.php        |    6 +-
 .../lib/Drupal/views_ui/Tests/SettingsTest.php     |   30 +--
 .../lib/Drupal/views_ui/Tests/StorageTest.php      |    4 +-
 .../lib/Drupal/views_ui/Tests/StyleUITest.php      |   10 +-
 .../lib/Drupal/views_ui/Tests/ViewEditTest.php     |    2 +-
 .../lib/Drupal/views_ui/Tests/ViewsUITourTest.php  |    2 +-
 .../lib/Drupal/standard/Tests/StandardTest.php     |    2 +-
 304 files changed, 1674 insertions(+), 1870 deletions(-)

diff --git a/core/modules/action/lib/Drupal/action/Tests/BulkFormTest.php b/core/modules/action/lib/Drupal/action/Tests/BulkFormTest.php
index 2ae5dea..ea83db2 100644
--- a/core/modules/action/lib/Drupal/action/Tests/BulkFormTest.php
+++ b/core/modules/action/lib/Drupal/action/Tests/BulkFormTest.php
@@ -60,7 +60,7 @@ public function testBulkForm() {
 
     // Set all nodes to sticky and check that.
     $edit += array('action' => 'node_make_sticky_action');
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
 
     foreach ($nodes as $node) {
       $changed_node = node_load($node->id());
@@ -74,7 +74,7 @@ public function testBulkForm() {
     $this->assertTrue($node->isPublished(), 'The node is published.');
 
     $edit = array('action_bulk_form[0]' => TRUE, 'action' => 'node_unpublish_action');
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
 
     $this->assertText('Unpublish content was applied to 1 item.');
 
diff --git a/core/modules/action/lib/Drupal/action/Tests/ConfigurationTest.php b/core/modules/action/lib/Drupal/action/Tests/ConfigurationTest.php
index 3d62bbe..97448ae 100644
--- a/core/modules/action/lib/Drupal/action/Tests/ConfigurationTest.php
+++ b/core/modules/action/lib/Drupal/action/Tests/ConfigurationTest.php
@@ -41,7 +41,7 @@ function testActionConfiguration() {
     // Make a POST request to admin/config/system/actions.
     $edit = array();
     $edit['action'] = Crypt::hashBase64('action_goto_action');
-    $this->drupalPost('admin/config/system/actions', $edit, t('Create'));
+    $this->drupalPostForm('admin/config/system/actions', $edit, t('Create'));
     $this->assertResponse(200);
 
     // Make a POST request to the individual action configuration page.
@@ -50,7 +50,7 @@ function testActionConfiguration() {
     $edit['label'] = $action_label;
     $edit['id'] = strtolower($action_label);
     $edit['url'] = 'admin';
-    $this->drupalPost('admin/config/system/actions/add/' . Crypt::hashBase64('action_goto_action'), $edit, t('Save'));
+    $this->drupalPostForm('admin/config/system/actions/add/' . Crypt::hashBase64('action_goto_action'), $edit, t('Save'));
     $this->assertResponse(200);
 
     // Make sure that the new complex action was saved properly.
@@ -65,7 +65,7 @@ function testActionConfiguration() {
     $new_action_label = $this->randomName();
     $edit['label'] = $new_action_label;
     $edit['url'] = 'admin';
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertResponse(200);
 
     // Make sure that the action updated properly.
@@ -82,7 +82,7 @@ function testActionConfiguration() {
     $this->clickLink(t('Delete'));
     $this->assertResponse(200);
     $edit = array();
-    $this->drupalPost("admin/config/system/actions/configure/$aid/delete", $edit, t('Delete'));
+    $this->drupalPostForm("admin/config/system/actions/configure/$aid/delete", $edit, t('Delete'));
     $this->assertResponse(200);
 
     // Make sure that the action was actually deleted.
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorConfigurationTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorConfigurationTest.php
index 59d5339..bd6b222 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorConfigurationTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorConfigurationTest.php
@@ -40,7 +40,7 @@ function testSettingsPage() {
       'aggregator_parser' => 'aggregator_test_parser',
       'aggregator_processors[aggregator_test_processor]' => 'aggregator_test_processor',
     );
-    $this->drupalPost('admin/config/services/aggregator/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/services/aggregator/settings', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'));
 
     foreach ($edit as $name => $value) {
@@ -53,7 +53,7 @@ function testSettingsPage() {
     $edit = array(
       'dummy_length' => 100,
     );
-    $this->drupalPost('admin/config/services/aggregator/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/services/aggregator/settings', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'));
     $this->assertFieldByName('dummy_length', 100, '"dummy_length" has correct default value.');
 
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php
index 4542116..43b4da5 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php
@@ -54,7 +54,7 @@ function setUp() {
    */
   function createFeed($feed_url = NULL, array $edit = array()) {
     $edit = $this->getFeedEditArray($feed_url, $edit);
-    $this->drupalPost('admin/config/services/aggregator/add/feed', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/feed', $edit, t('Save'));
     $this->assertRaw(t('The feed %name has been added.', array('%name' => $edit['title'])), format_string('The feed !name has been added.', array('!name' => $edit['title'])));
 
     $fid = db_query("SELECT fid FROM {aggregator_feed} WHERE title = :title AND url = :url", array(':title' => $edit['title'], ':url' => $edit['url']))->fetchField();
@@ -69,7 +69,7 @@ function createFeed($feed_url = NULL, array $edit = array()) {
    *   Feed object representing the feed.
    */
   function deleteFeed(Feed $feed) {
-    $this->drupalPost('admin/config/services/aggregator/delete/feed/' . $feed->id(), array(), t('Delete'));
+    $this->drupalPostForm('admin/config/services/aggregator/delete/feed/' . $feed->id(), array(), t('Delete'));
     $this->assertRaw(t('The feed %title has been deleted.', array('%title' => $feed->label())), 'Feed deleted successfully.');
   }
 
@@ -186,7 +186,7 @@ function updateFeedItems(Feed $feed, $expected_count = NULL) {
    *   Feed object representing the feed.
    */
   function removeFeedItems(Feed $feed) {
-    $this->drupalPost('admin/config/services/aggregator/remove/' . $feed->id(), array(), t('Remove items'));
+    $this->drupalPostForm('admin/config/services/aggregator/remove/' . $feed->id(), array(), t('Remove items'));
     $this->assertRaw(t('The news items from %title have been removed.', array('%title' => $feed->label())), 'Feed items removed.');
   }
 
@@ -362,7 +362,7 @@ function createSampleNodes($count = 5) {
       $edit = array();
       $edit['title'] = $this->randomName();
       $edit["body[$langcode][0][value]"] = $this->randomName();
-      $this->drupalPost('node/add/article', $edit, t('Save'));
+      $this->drupalPostForm('node/add/article', $edit, t('Save'));
     }
   }
 
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedItemTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedItemTest.php
index 2485f17..404f156 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedItemTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedItemTest.php
@@ -30,7 +30,7 @@ function testCategorizeFeedItem() {
 
     // Simulate form submission on "admin/config/services/aggregator/add/category".
     $edit = array('title' => $this->randomName(10), 'description' => '');
-    $this->drupalPost('admin/config/services/aggregator/add/category', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/category', $edit, t('Save'));
     $this->assertRaw(t('The category %title has been added.', array('%title' => $edit['title'])), format_string('The category %title has been added.', array('%title' => $edit['title'])));
 
     $category = db_query("SELECT * FROM {aggregator_category} WHERE title = :title", array(':title' => $edit['title']))->fetch();
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedTest.php
index 569f26a..56aef54 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/CategorizeFeedTest.php
@@ -26,11 +26,11 @@ function testCategorizeFeed() {
 
     // Create 2 categories.
     $category_1 = array('title' => $this->randomName(10), 'description' => '');
-    $this->drupalPost('admin/config/services/aggregator/add/category', $category_1, t('Save'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/category', $category_1, t('Save'));
     $this->assertRaw(t('The category %title has been added.', array('%title' => $category_1['title'])), format_string('The category %title has been added.', array('%title' => $category_1['title'])));
 
     $category_2 = array('title' => $this->randomName(10), 'description' => '');
-    $this->drupalPost('admin/config/services/aggregator/add/category', $category_2, t('Save'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/category', $category_2, t('Save'));
     $this->assertRaw(t('The category %title has been added.', array('%title' => $category_2['title'])), format_string('The category %title has been added.', array('%title' => $category_2['title'])));
 
     // Get categories from database.
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php
index 7a9f463..6732d2d 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php
@@ -66,7 +66,7 @@ function validateImportFormFields() {
     $before = db_query('SELECT COUNT(*) FROM {aggregator_feed}')->fetchField();
 
     $edit = array();
-    $this->drupalPost('admin/config/services/aggregator/add/opml', $edit, t('Import'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/opml', $edit, t('Import'));
     $this->assertRaw(t('You must <em>either</em> upload a file or enter a URL.'), 'Error if no fields are filled.');
 
     $path = $this->getEmptyOpml();
@@ -74,11 +74,11 @@ function validateImportFormFields() {
       'files[upload]' => $path,
       'remote' => file_create_url($path),
     );
-    $this->drupalPost('admin/config/services/aggregator/add/opml', $edit, t('Import'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/opml', $edit, t('Import'));
     $this->assertRaw(t('You must <em>either</em> upload a file or enter a URL.'), 'Error if both fields are filled.');
 
     $edit = array('remote' => 'invalidUrl://empty');
-    $this->drupalPost('admin/config/services/aggregator/add/opml', $edit, t('Import'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/opml', $edit, t('Import'));
     $this->assertText(t('The URL invalidUrl://empty is not valid.'), 'Error if the URL is invalid.');
 
     $after = db_query('SELECT COUNT(*) FROM {aggregator_feed}')->fetchField();
@@ -92,11 +92,11 @@ function submitImportForm() {
     $before = db_query('SELECT COUNT(*) FROM {aggregator_feed}')->fetchField();
 
     $form['files[upload]'] = $this->getInvalidOpml();
-    $this->drupalPost('admin/config/services/aggregator/add/opml', $form, t('Import'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/opml', $form, t('Import'));
     $this->assertText(t('No new feed has been added.'), 'Attempting to upload invalid XML.');
 
     $edit = array('remote' => file_create_url($this->getEmptyOpml()));
-    $this->drupalPost('admin/config/services/aggregator/add/opml', $edit, t('Import'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/opml', $edit, t('Import'));
     $this->assertText(t('No new feed has been added.'), 'Attempting to load empty OPML from remote URL.');
 
     $after = db_query('SELECT COUNT(*) FROM {aggregator_feed}')->fetchField();
@@ -123,7 +123,7 @@ function submitImportForm() {
       'refresh'       => '900',
       'category[1]'   => $category,
     );
-    $this->drupalPost('admin/config/services/aggregator/add/opml', $edit, t('Import'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/opml', $edit, t('Import'));
     $this->assertRaw(t('A feed with the URL %url already exists.', array('%url' => $feeds[0]['url'])), 'Verifying that a duplicate URL was identified');
     $this->assertRaw(t('A feed named %title already exists.', array('%title' => $feeds[1]['title'])), 'Verifying that a duplicate title was identified');
 
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedItemTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedItemTest.php
index 2cc1c8c..0227612 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedItemTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedItemTest.php
@@ -44,7 +44,7 @@ function testUpdateFeedItem() {
     $this->drupalGet($edit['url']);
     $this->assertResponse(array(200), format_string('URL !url is accessible', array('!url' => $edit['url'])));
 
-    $this->drupalPost('admin/config/services/aggregator/add/feed', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/services/aggregator/add/feed', $edit, t('Save'));
     $this->assertRaw(t('The feed %name has been added.', array('%name' => $edit['title'])), format_string('The feed !name has been added.', array('!name' => $edit['title'])));
 
     $fid = db_query("SELECT fid FROM {aggregator_feed} WHERE url = :url", array(':url' => $edit['url']))->fetchField();
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedTest.php
index 8b25bc7..8b1f0e7 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/UpdateFeedTest.php
@@ -33,7 +33,7 @@ function testUpdateFeed() {
       if (isset($feed->{$same_field}->value)) {
         $edit[$same_field] = $feed->{$same_field}->value;
       }
-      $this->drupalPost('admin/config/services/aggregator/edit/feed/' . $feed->id(), $edit, t('Save'));
+      $this->drupalPostForm('admin/config/services/aggregator/edit/feed/' . $feed->id(), $edit, t('Save'));
       $this->assertRaw(t('The feed %name has been updated.', array('%name' => $edit['title'])), format_string('The feed %name has been updated.', array('%name' => $edit['title'])));
 
       // Check feed data.
diff --git a/core/modules/ban/lib/Drupal/ban/Tests/IpAddressBlockingTest.php b/core/modules/ban/lib/Drupal/ban/Tests/IpAddressBlockingTest.php
index 8009de3..0e5cacf 100644
--- a/core/modules/ban/lib/Drupal/ban/Tests/IpAddressBlockingTest.php
+++ b/core/modules/ban/lib/Drupal/ban/Tests/IpAddressBlockingTest.php
@@ -38,7 +38,7 @@ function testIPAddressValidation() {
     // Ban a valid IP address.
     $edit = array();
     $edit['ip'] = '192.168.1.1';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
+    $this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
     $ip = db_query("SELECT iid from {ban_ip} WHERE ip = :ip", array(':ip' => $edit['ip']))->fetchField();
     $this->assertTrue($ip, 'IP address found in database.');
     $this->assertRaw(t('The IP address %ip has been banned.', array('%ip' => $edit['ip'])), 'IP address was banned.');
@@ -46,30 +46,30 @@ function testIPAddressValidation() {
     // Try to block an IP address that's already blocked.
     $edit = array();
     $edit['ip'] = '192.168.1.1';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
+    $this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
     $this->assertText(t('This IP address is already banned.'));
 
     // Try to block a reserved IP address.
     $edit = array();
     $edit['ip'] = '255.255.255.255';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
+    $this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
     $this->assertText(t('Enter a valid IP address.'));
 
     // Try to block a reserved IP address.
     $edit = array();
     $edit['ip'] = 'test.example.com';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
+    $this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
     $this->assertText(t('Enter a valid IP address.'));
 
     // Submit an empty form.
     $edit = array();
     $edit['ip'] = '';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
+    $this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
     $this->assertText(t('Enter a valid IP address.'));
 
     // Pass an IP address as a URL parameter and submit it.
     $submit_ip = '1.2.3.4';
-    $this->drupalPost('admin/config/people/ban/' . $submit_ip, NULL, t('Add'));
+    $this->drupalPostForm('admin/config/people/ban/' . $submit_ip, NULL, t('Add'));
     $ip = db_query("SELECT iid from {ban_ip} WHERE ip = :ip", array(':ip' => $submit_ip))->fetchField();
     $this->assertTrue($ip, 'IP address found in database');
     $this->assertRaw(t('The IP address %ip has been banned.', array('%ip' => $submit_ip)), 'IP address was banned.');
@@ -79,7 +79,7 @@ function testIPAddressValidation() {
     // TODO: On some systems this test fails due to a bug/inconsistency in cURL.
     // $edit = array();
     // $edit['ip'] = \Drupal::request()->getClientIP();
-    // $this->drupalPost('admin/config/people/ban', $edit, t('Save'));
+    // $this->drupalPostForm('admin/config/people/ban', $edit, t('Save'));
     // $this->assertText(t('You may not ban your own IP address.'));
   }
 }
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockCreationTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockCreationTest.php
index 3ce4513..5dbf094 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockCreationTest.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockCreationTest.php
@@ -52,7 +52,7 @@ public function testCustomBlockCreation() {
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit['info'] = $this->randomName(8);
     $edit["block_body[$langcode][0][value]"] = $this->randomName(16);
-    $this->drupalPost('block/add/basic', $edit, t('Save'));
+    $this->drupalPostForm('block/add/basic', $edit, t('Save'));
 
     // Check that the Basic block has been created.
     $this->assertRaw(format_string('!block %name has been created.', array(
@@ -67,7 +67,7 @@ public function testCustomBlockCreation() {
 
     // Check that attempting to create another block with the same value for
     // 'info' returns an error.
-    $this->drupalPost('block/add/basic', $edit, t('Save'));
+    $this->drupalPostForm('block/add/basic', $edit, t('Save'));
 
     // Check that the Basic block has been created.
     $this->assertRaw(format_string('A block with description %name already exists.', array(
@@ -88,7 +88,7 @@ public function testDefaultCustomBlockCreation() {
     $edit['info'] = $this->randomName(8);
     $edit["block_body[$langcode][0][value]"] = $this->randomName(16);
     // Don't pass the custom block type in the url so the default is forced.
-    $this->drupalPost('block/add', $edit, t('Save'));
+    $this->drupalPostForm('block/add', $edit, t('Save'));
 
     // Check that the block has been created and that it is a basic block.
     $this->assertRaw(format_string('!block %name has been created.', array(
@@ -149,7 +149,7 @@ public function testBlockDelete() {
     $edit['info'] = $this->randomName(8);
     $body = $this->randomName(16);
     $edit["block_body[$langcode][0][value]"] = $body;
-    $this->drupalPost('block/add/basic', $edit, t('Save'));
+    $this->drupalPostForm('block/add/basic', $edit, t('Save'));
 
     // Place the block.
     $instance = array(
@@ -159,7 +159,7 @@ public function testBlockDelete() {
     );
     $block = entity_load('custom_block', 1);
     $url = 'admin/structure/block/add/custom_block:' . $block->uuid() . '/' . \Drupal::config('system.theme')->get('default');
-    $this->drupalPost($url, $instance, t('Save block'));
+    $this->drupalPostForm($url, $instance, t('Save block'));
 
     $block = custom_block_load(1);
 
@@ -174,7 +174,7 @@ public function testBlockDelete() {
     $this->drupalGet('block/1/delete');
     $this->assertText(format_plural(1, 'This will also remove 1 placed block instance.', 'This will also remove @count placed block instance.'));
 
-    $this->drupalPost(NULL, array(), 'Delete');
+    $this->drupalPostForm(NULL, array(), 'Delete');
     $this->assertRaw(t('Custom block %name has been deleted.', array('%name' => $edit['info'])));
 
     // Create another block and force the plugin cache to flush.
@@ -183,7 +183,7 @@ public function testBlockDelete() {
     $edit2['info'] = $this->randomName(8);
     $body2 = $this->randomName(16);
     $edit2["block_body[$langcode][0][value]"] = $body2;
-    $this->drupalPost('block/add/basic', $edit2, t('Save'));
+    $this->drupalPostForm('block/add/basic', $edit2, t('Save'));
 
     $this->assertNoRaw('Error message');
 
@@ -193,7 +193,7 @@ public function testBlockDelete() {
     $edit3['info'] = $this->randomName(8);
     $body = $this->randomName(16);
     $edit3["block_body[$langcode][0][value]"] = $body;
-    $this->drupalPost('block/add/basic', $edit3, t('Save'));
+    $this->drupalPostForm('block/add/basic', $edit3, t('Save'));
 
     // Show the delete confirm form.
     $this->drupalGet('block/3/delete');
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php
index 53f8f5a..118467d 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php
@@ -99,7 +99,7 @@ public function testBlockFields() {
       $this->field['field_name'] . '[und][0][url]' => 'http://example.com',
       $this->field['field_name'] . '[und][0][title]' => 'Example.com'
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $block = entity_load('custom_block', 1);
     $url = 'admin/structure/block/add/custom_block:' . $block->uuid() . '/' . \Drupal::config('system.theme')->get('default');
     // Place the block.
@@ -108,7 +108,7 @@ public function testBlockFields() {
       'settings[label]' => $edit['info'],
       'region' => 'sidebar_first',
     );
-    $this->drupalPost($url, $instance, t('Save block'));
+    $this->drupalPostForm($url, $instance, t('Save block'));
     // Navigate to home page.
     $this->drupalGet('<front>');
     $this->assertLinkByHref('http://example.com');
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockListTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockListTest.php
index d7d8c5c..503749a 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockListTest.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockListTest.php
@@ -67,7 +67,7 @@ public function testListing() {
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit['info'] = $label;
     $edit["block_body[$langcode][0][value]"] = $this->randomName(16);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Confirm that once the user returns to the listing, the text of the label
     // (versus elsewhere on the page).
@@ -93,7 +93,7 @@ public function testListing() {
       $this->assertResponse(200);
       $this->assertTitle(strip_tags(t('Edit custom block %label', array('%label' => $label)) . ' | Drupal'));
       $edit = array('info' => $new_label);
-      $this->drupalPost(NULL, $edit, t('Save'));
+      $this->drupalPostForm(NULL, $edit, t('Save'));
     }
     else {
       $this->fail('Did not find Albatross block in the database.');
@@ -109,7 +109,7 @@ public function testListing() {
     $this->clickLink($delete_text);
     $this->assertResponse(200);
     $this->assertTitle(strip_tags(t('Are you sure you want to delete %label?', array('%label' => $new_label)) . ' | Drupal'));
-    $this->drupalPost(NULL, array(), $delete_text);
+    $this->drupalPostForm(NULL, array(), $delete_text);
 
     // Verify that the text of the label and machine name does not appear in
     // the list (though it may appear elsewhere on the page).
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php
index 9b0dc0b..e36fc48 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php
@@ -61,7 +61,7 @@ public function testCustomBlockTypeCreation() {
       'id' => 'foo',
       'label' => 'title for foo',
     );
-    $this->drupalPost('admin/structure/block/custom-blocks/types/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/block/custom-blocks/types/add', $edit, t('Save'));
     $block_type = entity_load('custom_block_type', 'foo');
     $this->assertTrue($block_type, 'The new block type has been created.');
 
@@ -90,7 +90,7 @@ public function testCustomBlockTypeEditing() {
     $edit = array(
       'label' => 'Bar',
     );
-    $this->drupalPost('admin/structure/block/custom-blocks/manage/basic', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/block/custom-blocks/manage/basic', $edit, t('Save'));
     field_info_cache_clear();
 
     $this->drupalGet('block/add');
@@ -99,9 +99,9 @@ public function testCustomBlockTypeEditing() {
     $this->assertEqual(url('block/add/basic', array('absolute' => TRUE)), $this->getUrl(), 'Original machine name was used in URL.');
 
     // Remove the body field.
-    $this->drupalPost('admin/structure/block/custom-blocks/manage/basic/fields/custom_block.basic.block_body/delete', array(), t('Delete'));
+    $this->drupalPostForm('admin/structure/block/custom-blocks/manage/basic/fields/custom_block.basic.block_body/delete', array(), t('Delete'));
     // Resave the settings for this type.
-    $this->drupalPost('admin/structure/block/custom-blocks/manage/basic', array(), t('Save'));
+    $this->drupalPostForm('admin/structure/block/custom-blocks/manage/basic', array(), t('Save'));
     // Check that the body field doesn't exist.
     $this->drupalGet('block/add/basic');
     $this->assertNoRaw('Block body', 'Body field was not found.');
@@ -160,7 +160,7 @@ public function testsCustomBlockAddTypes() {
     $this->clickLink(t('Add custom block'));
     $this->clickLink('foo');
     $edit = array('info' => $this->randomName(8));
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $blocks = $storage_controller->loadByProperties(array('info' => $edit['info']));
     if (!empty($blocks)) {
       $block = reset($blocks);
@@ -177,7 +177,7 @@ public function testsCustomBlockAddTypes() {
     $this->clickLink(t('Add custom block'));
     $this->clickLink('foo');
     $edit = array('info' => $this->randomName(8));
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $blocks = $storage_controller->loadByProperties(array('info' => $edit['info']));
     if (!empty($blocks)) {
       $block = reset($blocks);
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/PageEditTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/PageEditTest.php
index dab0eb6..33dabbd 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/PageEditTest.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/PageEditTest.php
@@ -38,7 +38,7 @@ public function testPageEdit() {
     $edit = array();
     $edit['info'] = drupal_strtolower($this->randomName(8));
     $edit[$body_key] = $this->randomName(16);
-    $this->drupalPost('block/add/basic', $edit, t('Save'));
+    $this->drupalPostForm('block/add/basic', $edit, t('Save'));
 
     // Check that the block exists in the database.
     $blocks = \Drupal::entityQuery('custom_block')->condition('info', $edit['info'])->execute();
@@ -55,7 +55,7 @@ public function testPageEdit() {
     $edit[$title_key] = $this->randomName(8);
     $edit[$body_key] = $this->randomName(16);
     // Stay on the current page, without reloading.
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Edit the same block, creating a new revision.
     $this->drupalGet("block/" . $block->id());
@@ -63,7 +63,7 @@ public function testPageEdit() {
     $edit['info'] = $this->randomName(8);
     $edit[$body_key] = $this->randomName(16);
     $edit['revision'] = TRUE;
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Ensure that the block revision has been created.
     $revised_block = entity_load('custom_block', $block->id->value, TRUE);
@@ -71,7 +71,7 @@ public function testPageEdit() {
 
     // Test deleting the block.
     $this->drupalGet("block/" . $revised_block->id());
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     $this->assertText(format_string('Are you sure you want to delete !label?', array('!label' => $revised_block->label())));
   }
 
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
index c3a220f..d553440 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
@@ -44,7 +44,7 @@ function testAdminTheme() {
     // Enable admin theme and confirm that tab is accessible.
     theme_enable(array('bartik'));
     $edit['admin_theme'] = 'bartik';
-    $this->drupalPost('admin/appearance', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/appearance', $edit, t('Save configuration'));
     $this->drupalGet('admin/structure/block/list/bartik');
     $this->assertResponse(200);
   }
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php
index 54417f8..1faddcb 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php
@@ -52,11 +52,11 @@ function testBlockInInvalidRegion() {
     $warning_message = t('The block %info was assigned to the invalid region %region and has been disabled.', array('%info' => $block->id(), '%region' => 'invalid_region'));
 
     // Clearing the cache should disable the test block placed in the invalid region.
-    $this->drupalPost('admin/config/development/performance', array(), 'Clear all caches');
+    $this->drupalPostForm('admin/config/development/performance', array(), 'Clear all caches');
     $this->assertRaw($warning_message, 'Enabled block was in the invalid region and has been disabled.');
 
     // Clear the cache to check if the warning message is not triggered.
-    $this->drupalPost('admin/config/development/performance', array(), 'Clear all caches');
+    $this->drupalPostForm('admin/config/development/performance', array(), 'Clear all caches');
     $this->assertNoRaw($warning_message, 'Disabled block in the invalid region will not trigger the warning.');
 
     // Place disabled test block in the invalid region of the default theme.
@@ -65,7 +65,7 @@ function testBlockInInvalidRegion() {
     $block->save();
 
     // Clear the cache to check if the warning message is not triggered.
-    $this->drupalPost('admin/config/development/performance', array(), 'Clear all caches');
+    $this->drupalPostForm('admin/config/development/performance', array(), 'Clear all caches');
     $this->assertNoRaw($warning_message, 'Disabled block in the invalid region will not trigger the warning.');
   }
 }
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php
index a078821..915e4bb 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockLanguageTest.php
@@ -45,7 +45,7 @@ function setUp() {
     $edit = array(
       'predefined_langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     $this->assertText('French', 'Language added successfully.');
   }
 
@@ -65,13 +65,13 @@ public function testLanguageBlockVisibility() {
       'machine_name' => strtolower($this->randomName(8)),
       'region' => 'sidebar_first',
     );
-    $this->drupalPost('admin/structure/block/add/system_powered_by_block' . '/' . $default_theme, $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/system_powered_by_block' . '/' . $default_theme, $edit, t('Save block'));
 
     // Change the default language.
     $edit = array(
       'site_default_language' => 'fr',
     );
-    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Reset the static cache of the language list.
     drupal_static_reset('language_list');
@@ -109,7 +109,7 @@ public function testLanguageBlockVisibilityLanguageDelete() {
     $this->assertTrue('fr' === $language, 'Language is set in the block configuration.');
 
     // Delete the language.
-    $this->drupalPost('admin/config/regional/language/delete/fr', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/fr', array(), t('Delete'));
 
     // Check that the language is no longer stored in the configuration after
     // it is deleted.
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
index e90e407..536a71c 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
@@ -40,7 +40,7 @@ function testBlockVisibility() {
     // authenticated users.
     $edit['visibility[path][pages]'] = 'user*';
     $edit['visibility[role][roles][' . DRUPAL_AUTHENTICATED_RID . ']'] = TRUE;
-    $this->drupalPost('admin/structure/block/add/' . $block_name . '/' . $default_theme, $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/' . $block_name . '/' . $default_theme, $edit, t('Save block'));
     $this->assertText('The block configuration has been saved.', 'Block was saved');
 
     $this->drupalGet('');
@@ -80,7 +80,7 @@ function testBlockVisibilityListedEmpty() {
     );
     // Set the block to be hidden on any user path, and to be shown only to
     // authenticated users.
-    $this->drupalPost('admin/structure/block/add/' . $block_name . '/' . $default_theme, $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/' . $block_name . '/' . $default_theme, $edit, t('Save block'));
     $this->assertText('The block configuration has been saved.', 'Block was saved');
 
     $this->drupalGet('user');
@@ -108,7 +108,7 @@ function testBlock() {
     $block['region'] = 'header';
 
     // Set block title to confirm that interface works and override any custom titles.
-    $this->drupalPost('admin/structure/block/add/' . $block['id'] . '/' . $block['theme'], array('settings[label]' => $block['settings[label]'], 'machine_name' => $block['machine_name'], 'region' => $block['region']), t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/' . $block['id'] . '/' . $block['theme'], array('settings[label]' => $block['settings[label]'], 'machine_name' => $block['machine_name'], 'region' => $block['region']), t('Save block'));
     $this->assertText(t('The block configuration has been saved.'), 'Block title set.');
     // Check to see if the block was created by checking its configuration.
     $instance = entity_load('block', $block['theme'] . '.' . $block['machine_name']);
@@ -123,7 +123,7 @@ function testBlock() {
     // Set the block to the disabled region.
     $edit = array();
     $edit['blocks[' . $block['theme'] . '.' . $block['machine_name'] . '][region]'] = -1;
-    $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+    $this->drupalPostForm('admin/structure/block', $edit, t('Save blocks'));
 
     // Confirm that the block is now listed as disabled.
     $this->assertText(t('The block settings have been updated.'), 'Block successfully move to disabled region.');
@@ -138,9 +138,9 @@ function testBlock() {
 
     // Test deleting the block from the edit form.
     $this->drupalGet('admin/structure/block/manage/' . $block['theme'] . '.' . $block['machine_name']);
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     $this->assertRaw(t('Are you sure you want to delete the block %name?', array('%name' => $block['settings[label]'])));
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     $this->assertRaw(t('The block %name has been removed.', array('%name' => $block['settings[label]'])));
   }
 
@@ -157,7 +157,7 @@ public function testBlockThemeSelector() {
       $block['machine_name'] = strtolower($this->randomName(8));
       $block['theme'] = $theme;
       $block['region'] = 'content';
-      $this->drupalPost('admin/structure/block/add/system_powered_by_block', $block, t('Save block'));
+      $this->drupalPostForm('admin/structure/block/add/system_powered_by_block', $block, t('Save block'));
       $this->assertText(t('The block configuration has been saved.'));
       $this->assertUrl('admin/structure/block/list/' . $theme . '?block-placement=' . drupal_html_class($theme . ':' . $block['machine_name']));
 
@@ -184,7 +184,7 @@ function testHideBlockTitle() {
       'region' => 'sidebar_first',
       'settings[label]' => $title,
     );
-    $this->drupalPost('admin/structure/block/add/' . $block_name . '/' . $default_theme, $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/' . $block_name . '/' . $default_theme, $edit, t('Save block'));
     $this->assertText('The block configuration has been saved.', 'Block was saved');
 
     $this->drupalGet('user');
@@ -193,7 +193,7 @@ function testHideBlockTitle() {
     $edit = array(
       'settings[label_display]' => FALSE,
     );
-    $this->drupalPost('admin/structure/block/manage/' . $default_theme . '.' . $machine_name, $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/manage/' . $default_theme . '.' . $machine_name, $edit, t('Save block'));
     $this->assertText('The block configuration has been saved.', 'Block was saved');
 
     $this->drupalGet('user');
@@ -217,7 +217,7 @@ function moveBlockToRegion(array $block, $region) {
     $block += array('theme' => \Drupal::config('system.theme')->get('default'));
     $edit = array();
     $edit['blocks[' . $block['theme'] . '.' . $block['machine_name'] . '][region]'] = $region;
-    $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+    $this->drupalPostForm('admin/structure/block', $edit, t('Save blocks'));
 
     // Confirm that the block was moved to the proper region.
     $this->assertText(t('The block settings have been updated.'), format_string('Block successfully moved to %region_name region.', array( '%region_name' => $region)));
@@ -325,13 +325,13 @@ function testBlockModuleDisable() {
       'machine_name' => strtolower($this->randomName(8)),
       'region' => 'sidebar_first',
     );
-    $this->drupalPost('admin/structure/block/add/system_powered_by_block/stark', $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/system_powered_by_block/stark', $edit, t('Save block'));
     $this->assertText(t('The block configuration has been saved.'));
     $this->assertText($edit['settings[label]']);
 
     // Update the weight of a block.
     $edit = array('blocks[stark.' . $edit['machine_name'] . '][weight]' => -1);
-    $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+    $this->drupalPostForm('admin/structure/block', $edit, t('Save blocks'));
     $this->assertText(t('The block settings have been updated.'));
 
     // Re-enable the module and refresh the definitions cache.
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockTestBase.php b/core/modules/block/lib/Drupal/block/Tests/BlockTestBase.php
index 5c8bf6a..96ea288 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockTestBase.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockTestBase.php
@@ -91,7 +91,7 @@ function moveBlockToRegion(array $block, $region) {
     // Set the created block to a specific region.
     $edit = array();
     $edit['blocks[0][region]'] = $region;
-    $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+    $this->drupalPostForm('admin/structure/block', $edit, t('Save blocks'));
 
     // Confirm that the block was moved to the proper region.
     $this->assertText(t('The block settings have been updated.'), format_string('Block successfully moved to %region_name region.', array( '%region_name' => $region)));
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockUiTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockUiTest.php
index 9921f8e..d996b1e 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockUiTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockUiTest.php
@@ -89,7 +89,7 @@ function testBlockAdminUiPage() {
       // Change the test block's weight.
       $edit['blocks[stark.' . $values['settings']['machine_name'] . '][weight]'] = $values['test_weight'];
     }
-    $this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
+    $this->drupalPostForm('admin/structure/block', $edit, t('Save blocks'));
     foreach ($this->testBlocks as $values) {
       // Check if the region and weight settings changes have persisted.
       $this->assertOptionSelected(
@@ -136,12 +136,12 @@ public function testMachineNameSuggestion() {
     $url = 'admin/structure/block/add/test_block_instantiation/stark';
     $this->drupalGet($url);
     $this->assertFieldByName('machine_name', 'displaymessage', 'Block form uses raw machine name suggestion when no instance already exists.');
-    $this->drupalPost($url, array(), 'Save block');
+    $this->drupalPostForm($url, array(), 'Save block');
 
     // Now, check to make sure the form starts by autoincrementing correctly.
     $this->drupalGet($url);
     $this->assertFieldByName('machine_name', 'displaymessage_2', 'Block form appends _2 to plugin-suggested machine name when an instance already exists.');
-    $this->drupalPost($url, array(), 'Save block');
+    $this->drupalPostForm($url, array(), 'Save block');
 
     // And verify that it continues working beyond just the first two.
     $this->drupalGet($url);
diff --git a/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php b/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php
index e6b73b8..ba51073 100644
--- a/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php
@@ -61,7 +61,7 @@ public function testBlockCategory() {
     $edit['description'] = $this->randomString();
     $edit['block[create]'] = TRUE;
     $edit['block[style][row_plugin]'] = 'fields';
-    $this->drupalPost('admin/structure/views/add', $edit, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $edit, t('Save and edit'));
 
     // Test that the block was given a default category corresponding to its
     // base table.
@@ -76,7 +76,7 @@ public function testBlockCategory() {
     $this->assertTrue(!empty($elements), 'The test block appears in the category for its base table.');
 
     // Clone the block before changing the category.
-    $this->drupalPost('admin/structure/views/view/' . $edit['id'] . '/edit/block_1', array(), t('Clone @display_title', array('@display_title' => 'Block')));
+    $this->drupalPostForm('admin/structure/views/view/' . $edit['id'] . '/edit/block_1', array(), t('Clone @display_title', array('@display_title' => 'Block')));
     $this->assertUrl('admin/structure/views/view/' . $edit['id'] . '/edit/block_2');
 
     // Change the block category to a random string.
@@ -86,13 +86,13 @@ public function testBlockCategory() {
     $this->assertTrue(!empty($link));
     $this->clickLink($label);
     $category = $this->randomString();
-    $this->drupalPost(NULL, array('block_category' => $category), t('Apply'));
+    $this->drupalPostForm(NULL, array('block_category' => $category), t('Apply'));
 
     // Clone the block after changing the category.
-    $this->drupalPost(NULL, array(), t('Clone @display_title', array('@display_title' => 'Block')));
+    $this->drupalPostForm(NULL, array(), t('Clone @display_title', array('@display_title' => 'Block')));
     $this->assertUrl('admin/structure/views/view/' . $edit['id'] . '/edit/block_3');
 
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     // Test that the blocks are listed under the correct categories.
     $category_id = 'edit-' . drupal_html_id(String::checkPlain($category));
@@ -186,7 +186,7 @@ public function testViewsBlockForm() {
     // saved as expected from the default value.
     $this->assertNoFieldById('edit-machine-name', 'stark.views_block__test_view_block_1', 'The machine name is hidden on the views block form.');
     // Save the block.
-    $this->drupalPost(NULL, array(), t('Save block'));
+    $this->drupalPostForm(NULL, array(), t('Save block'));
     $storage = $this->container->get('entity.manager')->getStorageController('block');
     $block = $storage->load('stark.views_block__test_view_block_block_1');
     // This will only return a result if our new block has been created with the
@@ -195,7 +195,7 @@ public function testViewsBlockForm() {
 
     for ($i = 2; $i <= 3; $i++) {
       // Place the same block again and make sure we have a new ID.
-      $this->drupalPost('admin/structure/block/add/views_block:test_view_block-block_1/' . $default_theme, array(), t('Save block'));
+      $this->drupalPostForm('admin/structure/block/add/views_block:test_view_block-block_1/' . $default_theme, array(), t('Save block'));
       $block = $storage->load('stark.views_block__test_view_block_block_1_' . $i);
       // This will only return a result if our new block has been created with the
       // expected machine name.
@@ -207,14 +207,14 @@ public function testViewsBlockForm() {
     $edit = array();
     $edit['settings[override][items_per_page]'] = 10;
 
-    $this->drupalPost('admin/structure/block/add/views_block:test_view_block-block_1/' . $default_theme, $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/views_block:test_view_block-block_1/' . $default_theme, $edit, t('Save block'));
 
     $block = $storage->load('stark.views_block__test_view_block_block_1_4');
     $config = $block->getPlugin()->getConfiguration();
     $this->assertEqual(10, $config['items_per_page'], "'Items per page' is properly saved.");
 
     $edit['settings[override][items_per_page]'] = 5;
-    $this->drupalPost('admin/structure/block/manage/stark.views_block__test_view_block_block_1_4', $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/manage/stark.views_block__test_view_block_block_1_4', $edit, t('Save block'));
 
     $block = $storage->load('stark.views_block__test_view_block_block_1_4');
 
@@ -236,16 +236,8 @@ public function testBlockContextualLinks() {
 
     // Get server-rendered contextual links.
     // @see \Drupal\contextual\Tests\ContextualDynamicContextTest:renderContextualLinks()
-    $post = urlencode('ids[0]') . '=' . urlencode($id);
-    $response = $this->curlExec(array(
-      CURLOPT_URL => url('contextual/render', array('absolute' => TRUE, 'query' => array('destination' => 'test-page'))),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post,
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
+    $post = array('ids[0]' => $id);
+    $response = $this->drupalPost('contextual/render', 'application/json', $post, array('query' => array('destination' => 'test-page')));
     $this->assertResponse(200);
     $json = drupal_json_decode($response);
     $this->assertIdentical($json[$id], '<ul class="contextual-links"><li class="block-configure odd first"><a href="' . base_path() . 'admin/structure/block/manage/' . $block->id() . '?destination=test-page">Configure block</a></li><li class="views-ui-edit even last"><a href="' . base_path() . 'admin/structure/views/view/test_view_block/edit/block_1?destination=test-page">Edit view</a></li></ul>');
diff --git a/core/modules/book/lib/Drupal/book/Tests/BookTest.php b/core/modules/book/lib/Drupal/book/Tests/BookTest.php
index f4ad875..53976df 100644
--- a/core/modules/book/lib/Drupal/book/Tests/BookTest.php
+++ b/core/modules/book/lib/Drupal/book/Tests/BookTest.php
@@ -128,7 +128,7 @@ function testBook() {
     $other_book = $this->createBookNode('new');
     $node = $this->createBookNode($book->id());
     $edit = array('book[bid]' => $other_book->id());
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
 
     $this->drupalLogout();
     $this->drupalLogin($this->web_user);
@@ -249,13 +249,13 @@ function createBookNode($book_nid, $parent = NULL) {
     $edit['book[bid]'] = $book_nid;
 
     if ($parent !== NULL) {
-      $this->drupalPost('node/add/book', $edit, t('Change book (update list of parents)'));
+      $this->drupalPostForm('node/add/book', $edit, t('Change book (update list of parents)'));
 
       $edit['book[plid]'] = $parent;
-      $this->drupalPost(NULL, $edit, t('Save'));
+      $this->drupalPostForm(NULL, $edit, t('Save'));
     }
     else {
-      $this->drupalPost('node/add/book', $edit, t('Save'));
+      $this->drupalPostForm('node/add/book', $edit, t('Save'));
     }
 
     // Check to make sure the book node was created.
@@ -323,7 +323,7 @@ function testBookNavigationBlock() {
     // Give anonymous users the permission 'node test view'.
     $edit = array();
     $edit[DRUPAL_ANONYMOUS_RID . '[node test view]'] = TRUE;
-    $this->drupalPost('admin/people/permissions/' . DRUPAL_ANONYMOUS_RID, $edit, t('Save permissions'));
+    $this->drupalPostForm('admin/people/permissions/' . DRUPAL_ANONYMOUS_RID, $edit, t('Save permissions'));
     $this->assertText(t('The changes have been saved.'), "Permission 'node test view' successfully assigned to anonymous users.");
 
     // Test correct display of the block.
@@ -344,7 +344,7 @@ function testNavigationBlockOnAccessModuleEnabled() {
     // Give anonymous users the permission 'node test view'.
     $edit = array();
     $edit[DRUPAL_ANONYMOUS_RID . '[node test view]'] = TRUE;
-    $this->drupalPost('admin/people/permissions/' . DRUPAL_ANONYMOUS_RID, $edit, t('Save permissions'));
+    $this->drupalPostForm('admin/people/permissions/' . DRUPAL_ANONYMOUS_RID, $edit, t('Save permissions'));
     $this->assertText(t('The changes have been saved.'), "Permission 'node test view' successfully assigned to anonymous users.");
 
     // Create a book.
@@ -376,7 +376,7 @@ function testBookDelete() {
      // Test access to delete top-level and child book nodes.
      $this->drupalGet('node/' . $this->book->id() . '/outline/remove');
      $this->assertResponse('403', 'Deleting top-level book node properly forbidden.');
-     $this->drupalPost('node/' . $nodes[4]->id() . '/outline/remove', $edit, t('Remove'));
+     $this->drupalPostForm('node/' . $nodes[4]->id() . '/outline/remove', $edit, t('Remove'));
      $node4 = node_load($nodes[4]->id(), TRUE);
      $this->assertTrue(empty($node4->book), 'Deleting child book node properly allowed.');
 
@@ -385,7 +385,7 @@ function testBookDelete() {
        $nids[] = $node->id();
      }
      entity_delete_multiple('node', $nids);
-     $this->drupalPost('node/' . $this->book->id() . '/outline/remove', $edit, t('Remove'));
+     $this->drupalPostForm('node/' . $this->book->id() . '/outline/remove', $edit, t('Remove'));
      $node = node_load($this->book->id(), TRUE);
      $this->assertTrue(empty($node->book), 'Deleting childless top-level book node properly allowed.');
    }
@@ -400,7 +400,7 @@ function testBookNodeTypeChange() {
       'name' => 'Bar',
       'type' => 'bar',
     );
-    $this->drupalPost('admin/structure/types/manage/book', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/book', $edit, t('Save content type'));
 
     // Ensure that the config book.settings:allowed_types has been updated with
     // the new machine and the old one has been removed.
@@ -412,7 +412,7 @@ function testBookNodeTypeChange() {
       'title_label' => 'Title for basic page',
       'type' => 'page',
     );
-    $this->drupalPost('admin/structure/types/add', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/add', $edit, t('Save content type'));
 
     // Add page to the allowed node types.
     $edit = array(
@@ -420,7 +420,7 @@ function testBookNodeTypeChange() {
       'book_allowed_types[bar]' => 'bar',
     );
 
-    $this->drupalPost('admin/structure/book/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/structure/book/settings', $edit, t('Save configuration'));
     $this->assertTrue(book_type_is_allowed('bar'), 'Config book.settings:allowed_types contains the bar node type.');
     $this->assertTrue(book_type_is_allowed('page'), 'Config book.settings:allowed_types contains the page node type.');
 
@@ -436,7 +436,7 @@ function testBookNodeTypeChange() {
     // );
     // @endcode
     $current_config = \Drupal::config('book.settings')->init()->get();
-    $this->drupalPost('admin/structure/book/settings', array(), t('Save configuration'));
+    $this->drupalPostForm('admin/structure/book/settings', array(), t('Save configuration'));
     $this->assertIdentical($current_config, \Drupal::config('book.settings')->init()->get());
 
     // Change the name, machine name and description.
@@ -444,7 +444,7 @@ function testBookNodeTypeChange() {
       'name' => 'Zebra book',
       'type' => 'zebra',
     );
-    $this->drupalPost('admin/structure/types/manage/bar', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/bar', $edit, t('Save content type'));
     $this->assertTrue(book_type_is_allowed('zebra'), 'Config book.settings:allowed_types contains the zebra node type.');
     $this->assertTrue(book_type_is_allowed('page'), 'Config book.settings:allowed_types contains the page node type.');
 
@@ -457,14 +457,14 @@ function testBookNodeTypeChange() {
     // );
     // @endcode
     $current_config = \Drupal::config('book.settings')->init()->get();
-    $this->drupalPost('admin/structure/book/settings', array(), t('Save configuration'));
+    $this->drupalPostForm('admin/structure/book/settings', array(), t('Save configuration'));
     $this->assertIdentical($current_config, \Drupal::config('book.settings')->init()->get());
 
     $edit = array(
       'name' => 'Animal book',
       'type' => 'zebra',
     );
-    $this->drupalPost('admin/structure/types/manage/zebra', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/zebra', $edit, t('Save content type'));
 
     // Test the order of the book.settings::allowed_types configuration is as
     // expected. The order should be:
@@ -475,7 +475,7 @@ function testBookNodeTypeChange() {
     // );
     // @endcode
     $current_config = \Drupal::config('book.settings')->init()->get();
-    $this->drupalPost('admin/structure/book/settings', array(), t('Save configuration'));
+    $this->drupalPostForm('admin/structure/book/settings', array(), t('Save configuration'));
     $this->assertIdentical($current_config, \Drupal::config('book.settings')->init()->get());
 
     // Ensure that after all the node type changes book.settings:child_type has
@@ -504,7 +504,7 @@ public function testBookOrdering() {
       // Put node 2 under node 1.
       "table[book-admin-{$node2->id()}][plid]" => $plid,
     );
-    $this->drupalPost(NULL, $edit, t('Save book pages'));
+    $this->drupalPostForm(NULL, $edit, t('Save book pages'));
     // Verify weight was updated.
     $this->assertFieldByName("table[book-admin-{$node1->id()}][weight]", 1);
     $this->assertFieldByName("table[book-admin-{$node2->id()}][weight]", 2);
diff --git a/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorAdminTest.php b/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorAdminTest.php
index e0e3cac..d2e42f9 100644
--- a/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorAdminTest.php
+++ b/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorAdminTest.php
@@ -71,7 +71,7 @@ function testAdmin() {
     $edit = array(
       'editor[editor]' => 'ckeditor',
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertRaw(t('You must configure the selected text editor.'));
 
     // Ensure the CKEditor editor returns the expected default settings.
@@ -92,7 +92,7 @@ function testAdmin() {
     $this->assertIdentical($ckeditor->getDefaultSettings(), $expected_default_settings);
 
     // Keep the "CKEditor" editor selected and click the "Configure" button.
-    $this->drupalPostAjax(NULL, $edit, 'editor_configure');
+    $this->drupalPostAjaxForm(NULL, $edit, 'editor_configure');
     $editor = entity_load('editor', 'filtered_html');
     $this->assertFalse($editor, 'No Editor config entity exists yet.');
 
@@ -107,7 +107,7 @@ function testAdmin() {
     $this->assertTrue(count($styles_textarea) === 1, 'The "styles" textarea exists.');
 
     // Submit the form to save the selection of CKEditor as the chosen editor.
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
 
     // Ensure an Editor object exists now, with the proper settings.
     $expected_settings = $expected_default_settings;
@@ -121,7 +121,7 @@ function testAdmin() {
     $edit = array(
       'editor[settings][plugins][stylescombo][styles]' => "h1.title|Title\np.callout|Callout\n\n",
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $expected_settings['plugins']['stylescombo']['styles'] = "h1.title|Title\np.callout|Callout\n\n";
     $editor = entity_load('editor', 'filtered_html');
     $this->assertTrue($editor instanceof Editor, 'An Editor config entity exists.');
@@ -138,7 +138,7 @@ function testAdmin() {
     $edit = array(
       'editor[settings][toolbar][buttons]' => json_encode($expected_settings['toolbar']['buttons']),
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $editor = entity_load('editor', 'filtered_html');
     $this->assertTrue($editor instanceof Editor, 'An Editor config entity exists.');
     $this->assertIdentical($expected_settings, $editor->settings, 'The Editor config entity has the correct settings.');
@@ -159,7 +159,7 @@ function testAdmin() {
     $edit = array(
       'editor[settings][plugins][llama_contextual_and_button][ultra_llama_mode]' => '1',
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->drupalGet('admin/config/content/formats/manage/filtered_html');
     $ultra_llama_mode_checkbox = $this->xpath('//input[@type="checkbox" and @name="editor[settings][plugins][llama_contextual_and_button][ultra_llama_mode]" and @checked="checked"]');
     $this->assertTrue(count($ultra_llama_mode_checkbox) === 1, 'The "Ultra llama mode" checkbox exists and is checked.');
diff --git a/core/modules/color/lib/Drupal/color/Tests/ColorTest.php b/core/modules/color/lib/Drupal/color/Tests/ColorTest.php
index 897943c..315d85d 100644
--- a/core/modules/color/lib/Drupal/color/Tests/ColorTest.php
+++ b/core/modules/color/lib/Drupal/color/Tests/ColorTest.php
@@ -88,7 +88,7 @@ function _testColor($theme, $test_values) {
     $this->assertResponse(200);
     $edit['scheme'] = '';
     $edit[$test_values['palette_input']] = '#123456';
-    $this->drupalPost($settings_path, $edit, t('Save configuration'));
+    $this->drupalPostForm($settings_path, $edit, t('Save configuration'));
 
     $this->drupalGet('<front>');
     $stylesheets = \Drupal::config('color.' . $theme)->get('stylesheets');
@@ -100,7 +100,7 @@ function _testColor($theme, $test_values) {
     $this->drupalGet($settings_path);
     $this->assertResponse(200);
     $edit['scheme'] = $test_values['scheme'];
-    $this->drupalPost($settings_path, $edit, t('Save configuration'));
+    $this->drupalPostForm($settings_path, $edit, t('Save configuration'));
 
     $this->drupalGet('<front>');
     $stylesheets = \Drupal::config('color.' . $theme)->get('stylesheets');
@@ -136,7 +136,7 @@ function testValidColor() {
 
     foreach ($this->colorTests as $color => $is_valid) {
       $edit['palette[bg]'] = $color;
-      $this->drupalPost($settings_path, $edit, t('Save configuration'));
+      $this->drupalPostForm($settings_path, $edit, t('Save configuration'));
 
       if($is_valid) {
         $this->assertText('The configuration options have been saved.');
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php
index 5fe19ba..d285e45 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php
@@ -75,7 +75,7 @@ function testAnonymous() {
       'subject' => $this->randomName(),
       "comment_body[$langcode][0][value]" => $this->randomName(),
     );
-    $this->drupalPost('comment/reply/' . $this->node->id(), $edit, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $this->node->id(), $edit, t('Save'));
     $this->assertText(t('The name you used belongs to a registered user.'));
 
     // Require contact info.
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentApprovalTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentApprovalTest.php
index 6f70b0c..6c0a90a 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentApprovalTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentApprovalTest.php
@@ -72,7 +72,7 @@ function testApprovalAdminInterface() {
       "comments[{$comments[0]->id()}]" => 1,
       "comments[{$comments[1]->id()}]" => 1,
     );
-    $this->drupalPost(NULL, $edit, t('Update'));
+    $this->drupalPostForm(NULL, $edit, t('Update'));
     $this->assertText(t('Unapproved comments (@count)', array('@count' => 0)), 'All comments were approved.');
 
     // Delete multiple comments in one operation.
@@ -82,9 +82,9 @@ function testApprovalAdminInterface() {
       "comments[{$comments[1]->id()}]" => 1,
       "comments[{$anonymous_comment4->id()}]" => 1,
     );
-    $this->drupalPost(NULL, $edit, t('Update'));
+    $this->drupalPostForm(NULL, $edit, t('Update'));
     $this->assertText(t('Are you sure you want to delete these comments and all their children?'), 'Confirmation required.');
-    $this->drupalPost(NULL, $edit, t('Delete comments'));
+    $this->drupalPostForm(NULL, $edit, t('Delete comments'));
     $this->assertText(t('No comments available.'), 'All comments were deleted.');
   }
 
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
index f9d25f1..09625a5 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
@@ -71,19 +71,19 @@ function testCommentEnable() {
     // Disable the comment module.
     $edit = array();
     $edit['modules[Core][comment][enable]'] = FALSE;
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->rebuildContainer();
     $this->assertFalse(module_exists('comment'), 'Comment module disabled.');
 
     // Enable core content type module (book).
     $edit = array();
     $edit['modules[Core][book][enable]'] = 'book';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
 
     // Now enable the comment module.
     $edit = array();
     $edit['modules[Core][comment][enable]'] = 'comment';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->rebuildContainer();
     $this->assertTrue(module_exists('comment'), 'Comment module enabled.');
 
@@ -107,11 +107,11 @@ function testCommentFormat() {
     // Disable text processing for comments.
     $this->drupalLogin($this->admin_user);
     $edit = array('instance[settings][text_processing]' => 0);
-    $this->drupalPost('admin/structure/types/manage/article/comment/fields/comment.comment_node_article.comment_body', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/article/comment/fields/comment.comment_node_article.comment_body', $edit, t('Save settings'));
 
     // Post a comment without an explicit subject.
     $this->drupalLogin($this->web_user);
     $edit = array('comment_body[und][0][value]' => $this->randomName(8));
-    $this->drupalPost('node/' . $this->node->id(), $edit, t('Save'));
+    $this->drupalPostForm('node/' . $this->node->id(), $edit, t('Save'));
   }
 }
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
index 4064b22..479beba 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
@@ -45,11 +45,11 @@ function setUp() {
 
     // Add language.
     $edit = array('predefined_langcode' => 'fr');
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Set "Article" content type to use multilingual support.
     $edit = array('language_configuration[language_show]' => TRUE);
-    $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
 
     // Enable content language negotiation UI.
     \Drupal::state()->set('language_test.content_language_type', TRUE);
@@ -63,12 +63,12 @@ function setUp() {
       'language_content[enabled][language-url]' => TRUE,
       'language_content[enabled][language-interface]' => FALSE,
     );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Change user language preference, this way interface language is always
     // French no matter what path prefix the URLs have.
     $edit = array('preferred_langcode' => 'fr');
-    $this->drupalPost("user/" . $admin_user->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $admin_user->id() . "/edit", $edit, t('Save'));
 
     // Make comment body translatable.
     $field = field_info_field('comment', 'comment_body');
@@ -99,7 +99,7 @@ function testCommentLanguage() {
         "body[$langcode_not_specified][0][value]" => $this->randomName(),
         "langcode" => $node_langcode,
       );
-      $this->drupalPost("node/add/article", $edit, t('Save'));
+      $this->drupalPostForm("node/add/article", $edit, t('Save'));
       $node = $this->drupalGetNodeByTitle($title);
 
       $prefixes = language_negotiation_url_prefixes();
@@ -111,8 +111,8 @@ function testCommentLanguage() {
           'subject' => $this->randomName(),
           "comment_body[$langcode][0][value]" => $comment_values[$node_langcode][$langcode],
         );
-        $this->drupalPost($prefix . 'node/' . $node->id(), $edit, t('Preview'));
-        $this->drupalPost(NULL, $edit, t('Save'));
+        $this->drupalPostForm($prefix . 'node/' . $node->id(), $edit, t('Preview'));
+        $this->drupalPostForm(NULL, $edit, t('Save'));
 
         // Check that comment language matches the current content language.
         $cid = db_select('comment', 'c')
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php
index e69507a..d7b9c77 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php
@@ -78,13 +78,13 @@ function testCommentPreview() {
     $edit['signature[value]'] = '<a href="http://example.com/">' . $test_signature. '</a>';
     $image = current($this->drupalGetTestFiles('image'));
     $edit['files[user_picture_und_0]'] = drupal_realpath($image->uri);
-    $this->drupalPost('user/' . $this->web_user->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('user/' . $this->web_user->id() . '/edit', $edit, t('Save'));
 
     // As the web user, fill in the comment form and preview the comment.
     $edit = array();
     $edit['subject'] = $this->randomName(8);
     $edit['comment_body[' . $langcode . '][0][value]'] = $this->randomName(16);
-    $this->drupalPost('node/' . $this->node->id(), $edit, t('Preview'));
+    $this->drupalPostForm('node/' . $this->node->id(), $edit, t('Preview'));
 
     // Check that the preview is displaying the title and body.
     $this->assertTitle(t('Preview comment | Drupal'), 'Page title is "Preview comment".');
@@ -126,7 +126,7 @@ function testCommentEditPreviewSave() {
     $expected_form_date = $date->format('Y-m-d');
     $expected_form_time = $date->format('H:i:s');
     $comment = $this->postComment($this->node, $edit['subject'], $edit['comment_body[' . $langcode . '][0][value]'], TRUE);
-    $this->drupalPost('comment/' . $comment->id() . '/edit', $edit, t('Preview'));
+    $this->drupalPostForm('comment/' . $comment->id() . '/edit', $edit, t('Preview'));
 
     // Check that the preview is displaying the subject, comment, author and date correctly.
     $this->assertTitle(t('Preview comment | Drupal'), 'Page title is "Preview comment".');
@@ -143,7 +143,7 @@ function testCommentEditPreviewSave() {
     $this->assertFieldByName('date[time]', $edit['date[time]'], 'Time field displayed.');
 
     // Check that saving a comment produces a success message.
-    $this->drupalPost('comment/' . $comment->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('comment/' . $comment->id() . '/edit', $edit, t('Save'));
     $this->assertText(t('Your comment has been posted.'), 'Comment posted.');
 
     // Check that the comment fields are correct after loading the saved comment.
@@ -161,7 +161,7 @@ function testCommentEditPreviewSave() {
     $displayed['name'] = (string) current($this->xpath("//input[@id='edit-name']/@value"));
     $displayed['date[date]'] = (string) current($this->xpath("//input[@id='edit-date-date']/@value"));
     $displayed['date[time]'] = (string) current($this->xpath("//input[@id='edit-date-time']/@value"));
-    $this->drupalPost('comment/' . $comment->id() . '/edit', $displayed, t('Save'));
+    $this->drupalPostForm('comment/' . $comment->id() . '/edit', $displayed, t('Save'));
 
     // Check that the saved comment is still correct.
     $comment_loaded = comment_load($comment->id(), TRUE);
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php
index 8b9ab47..2f7fbda 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php
@@ -120,19 +120,19 @@ function postComment($entity, $comment, $subject = '', $contact = NULL) {
       case DRUPAL_REQUIRED:
         // Preview required so no save button should be found.
         $this->assertNoFieldByName('op', t('Save'), 'Save button not found.');
-        $this->drupalPost(NULL, $edit, t('Preview'));
+        $this->drupalPostForm(NULL, $edit, t('Preview'));
         // Don't break here so that we can test post-preview field presence and
         // function below.
       case DRUPAL_OPTIONAL:
         $this->assertFieldByName('op', t('Preview'), 'Preview button found.');
         $this->assertFieldByName('op', t('Save'), 'Save button found.');
-        $this->drupalPost(NULL, $edit, t('Save'));
+        $this->drupalPostForm(NULL, $edit, t('Save'));
         break;
 
       case DRUPAL_DISABLED:
         $this->assertNoFieldByName('op', t('Preview'), 'Preview button not found.');
         $this->assertFieldByName('op', t('Save'), 'Save button found.');
-        $this->drupalPost(NULL, $edit, t('Save'));
+        $this->drupalPostForm(NULL, $edit, t('Save'));
         break;
     }
     $match = array();
@@ -186,7 +186,7 @@ function commentExists(CommentInterface $comment = NULL, $reply = FALSE) {
    *   Comment to delete.
    */
   function deleteComment(CommentInterface $comment) {
-    $this->drupalPost('comment/' . $comment->id() . '/delete', array(), t('Delete'));
+    $this->drupalPostForm('comment/' . $comment->id() . '/delete', array(), t('Delete'));
     $this->assertText(t('The comment and all its replies have been deleted.'), 'Comment deleted.');
   }
 
@@ -297,10 +297,10 @@ function performCommentOperation(CommentInterface $comment, $operation, $approva
     $edit = array();
     $edit['operation'] = $operation;
     $edit['comments[' . $comment->id() . ']'] = TRUE;
-    $this->drupalPost('admin/content/comment' . ($approval ? '/approval' : ''), $edit, t('Update'));
+    $this->drupalPostForm('admin/content/comment' . ($approval ? '/approval' : ''), $edit, t('Update'));
 
     if ($operation == 'delete') {
-      $this->drupalPost(NULL, array(), t('Delete comments'));
+      $this->drupalPostForm(NULL, array(), t('Delete comments'));
       $this->assertRaw(format_plural(1, 'Deleted 1 comment.', 'Deleted @count comments.'), format_string('Operation "@operation" was performed on comment.', array('@operation' => $operation)));
     }
     else {
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/Views/WizardTest.php b/core/modules/comment/lib/Drupal/comment/Tests/Views/WizardTest.php
index de1487a..3d7b6e9 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/Views/WizardTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/Views/WizardTest.php
@@ -45,14 +45,14 @@ public function testCommentWizard() {
 
     // Just triggering the saving should automatically choose a proper row
     // plugin.
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
     $this->assertUrl('admin/structure/views/view/' . $view['id'], array(), 'Make sure the view saving was successful and the browser got redirected to the edit page.');
 
     // If we update the type first we should get a selection of comment valid
     // row plugins as the select field.
 
     $this->drupalGet('admin/structure/views/add');
-    $this->drupalPost('admin/structure/views/add', $view, t('Update "of type" choice'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Update "of type" choice'));
 
     // Check for available options of the row plugin.
     $xpath = $this->constructFieldXpath('name', 'page[style][row_plugin]');
@@ -68,7 +68,7 @@ public function testCommentWizard() {
     $this->assertEqual($options, $expected_options);
 
     $view['id'] = strtolower($this->randomName(16));
-    $this->drupalPost(NULL, $view, t('Save and edit'));
+    $this->drupalPostForm(NULL, $view, t('Save and edit'));
     $this->assertUrl('admin/structure/views/view/' . $view['id'], array(), 'Make sure the view saving was successful and the browser got redirected to the edit page.');
 
     $view = views_get_view($view['id']);
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
index f1a3703..b26e7f2 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
@@ -199,7 +199,7 @@ function testListUI() {
       'id' => 'antelope',
       'weight' => 1,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Ensure that the entity's sort method was called.
     $this->assertTrue(\Drupal::state()->get('config_entity_sort'), 'ConfigTest::sort() was called.');
@@ -216,7 +216,7 @@ function testListUI() {
     $this->assertResponse(200);
     $this->assertTitle('Edit Antelope | Drupal');
     $edit = array('label' => 'Albatross', 'id' => 'albatross');
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Confirm that the user is returned to the listing, and verify that the
     // text of the label and machine name appears in the list (versus elsewhere
@@ -229,7 +229,7 @@ function testListUI() {
     $this->clickLink('Delete', 1);
     $this->assertResponse(200);
     $this->assertTitle('Are you sure you want to delete Albatross | Drupal');
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
 
     // Verify that the text of the label and machine name does not appear in
     // the list (though it may appear elsewhere on the page).
@@ -240,7 +240,7 @@ function testListUI() {
     $this->clickLink('Delete');
     $this->assertResponse(200);
     $this->assertTitle('Are you sure you want to delete Default | Drupal');
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
 
     // Verify that the text of the label and machine name does not appear in
     // the list (though it may appear elsewhere on the page).
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityStatusUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityStatusUITest.php
index 642fe2e..da36cab 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityStatusUITest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityStatusUITest.php
@@ -39,7 +39,7 @@ function testCRUD() {
       'id' => $id,
       'label' => $this->randomName(),
     );
-    $this->drupalPost('admin/structure/config_test/add', $edit, 'Save');
+    $this->drupalPostForm('admin/structure/config_test/add', $edit, 'Save');
 
     $uri = entity_load('config_test', $id)->uri();
 
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
index faaccde..3e2a718 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
@@ -203,7 +203,7 @@ function testCRUDUI() {
       'id' => $id,
       'label' => $label1,
     );
-    $this->drupalPost('admin/structure/config_test/add', $edit, 'Save');
+    $this->drupalPostForm('admin/structure/config_test/add', $edit, 'Save');
     $this->assertUrl('admin/structure/config_test');
     $this->assertResponse(200);
     $this->assertRaw($message_insert);
@@ -214,7 +214,7 @@ function testCRUDUI() {
     $edit = array(
       'label' => $label2,
     );
-    $this->drupalPost("admin/structure/config_test/manage/$id", $edit, 'Save');
+    $this->drupalPostForm("admin/structure/config_test/manage/$id", $edit, 'Save');
     $this->assertUrl('admin/structure/config_test');
     $this->assertResponse(200);
     $this->assertNoRaw($message_insert);
@@ -224,9 +224,9 @@ function testCRUDUI() {
 
     // Delete the configuration entity.
     $this->drupalGet("admin/structure/config_test/manage/$id");
-    $this->drupalPost(NULL, array(), 'Delete');
+    $this->drupalPostForm(NULL, array(), 'Delete');
     $this->assertUrl("admin/structure/config_test/manage/$id/delete");
-    $this->drupalPost(NULL, array(), 'Delete');
+    $this->drupalPostForm(NULL, array(), 'Delete');
     $this->assertUrl('admin/structure/config_test');
     $this->assertResponse(200);
     $this->assertNoRaw($message_update);
@@ -239,7 +239,7 @@ function testCRUDUI() {
       'id' => $id,
       'label' => $label1,
     );
-    $this->drupalPost('admin/structure/config_test/add', $edit, 'Save');
+    $this->drupalPostForm('admin/structure/config_test/add', $edit, 'Save');
     $this->assertUrl('admin/structure/config_test');
     $this->assertResponse(200);
     $this->assertText($label1);
@@ -250,7 +250,7 @@ function testCRUDUI() {
       'id' => strtolower($this->randomName()),
       'label' => $label3,
     );
-    $this->drupalPost("admin/structure/config_test/manage/$id", $edit, 'Save');
+    $this->drupalPostForm("admin/structure/config_test/manage/$id", $edit, 'Save');
     $this->assertUrl('admin/structure/config_test');
     $this->assertResponse(200);
     $this->assertNoText($label1);
@@ -265,13 +265,13 @@ function testCRUDUI() {
       'id' => '0',
       'label' => '0',
     );
-    $this->drupalPost('admin/structure/config_test/add', $edit, 'Save');
+    $this->drupalPostForm('admin/structure/config_test/add', $edit, 'Save');
     $this->assertResponse(200);
     $message_insert = format_string('%label configuration has been created.', array('%label' => $edit['label']));
     $this->assertRaw($message_insert);
     $this->assertLinkByHref('admin/structure/config_test/manage/0');
     $this->assertLinkByHref('admin/structure/config_test/manage/0/delete');
-    $this->drupalPost('admin/structure/config_test/manage/0/delete', array(), 'Delete');
+    $this->drupalPostForm('admin/structure/config_test/manage/0/delete', array(), 'Delete');
     $this->assertFalse(entity_load('config_test', '0'), 'Test entity deleted');
 
   }
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
index 8d7ba53..80c63d6 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
@@ -48,7 +48,7 @@ function testExport() {
     $this->assertFieldById('edit-submit', t('Export'));
 
     // Submit the export form and verify response.
-    $this->drupalPost('admin/config/development/export', array(), t('Export'));
+    $this->drupalPostForm('admin/config/development/export', array(), t('Export'));
     $this->assertResponse(200, 'User can access the download callback.');
 
     // Get the archived binary file provided to user for download.
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
index 59cd19c..737ddf8 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
@@ -71,7 +71,7 @@ function testImport() {
     $this->assertFieldById('edit-submit', t('Import all'));
 
     // Import and verify that both do not appear anymore.
-    $this->drupalPost(NULL, array(), t('Import all'));
+    $this->drupalPostForm(NULL, array(), t('Import all'));
     $this->assertNoText($name);
     $this->assertNoText($dynamic_name);
     $this->assertNoFieldById('edit-submit', t('Import all'));
@@ -106,7 +106,7 @@ function testImportLock() {
     $this->container->get('lock')->acquire($config_importer_lock);
 
     // Attempt to import configuration and verify that an error message appears.
-    $this->drupalPost(NULL, array(), t('Import all'));
+    $this->drupalPostForm(NULL, array(), t('Import all'));
     $this->assertText(t('Another request may be synchronizing configuration already.'));
 
     // Release the lock, just to keep testing sane.
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php
index e753695..89cdf6f 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php
@@ -42,7 +42,7 @@ function testImport() {
     // Attempt to upload a non-tar file.
     $text_file = current($this->drupalGetTestFiles('text'));
     $edit = array('files[import_tarball]' => drupal_realpath($text_file->uri));
-    $this->drupalPost('admin/config/development/import', $edit, t('Upload'));
+    $this->drupalPostForm('admin/config/development/import', $edit, t('Upload'));
     $this->assertText(t('Could not extract the contents of the tar file'));
   }
 
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverrideWebTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverrideWebTest.php
index 99bee07..f98a1e0 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverrideWebTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverrideWebTest.php
@@ -44,7 +44,7 @@ function testSiteNameTranslation() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Save an override for the XX language.
     \Drupal::config('locale.config.xx.system.site')->set('name', 'XX site name')->save();
diff --git a/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php b/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php
index e735180..e974ec6 100644
--- a/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php
+++ b/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php
@@ -134,7 +134,7 @@ function testPersonalContactAccess() {
     // Disable the personal contact form.
     $this->drupalLogin($this->admin_user);
     $edit = array('contact_default_status' => FALSE);
-    $this->drupalPost('admin/config/people/accounts', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/people/accounts', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Setting successfully saved.');
     $this->drupalLogout();
 
@@ -171,7 +171,7 @@ function testPersonalContactAccess() {
     $this->drupalGet('user/' . $this->web_user->id() . '/edit');
     $this->assertNoFieldChecked('edit-contact--2');
     $this->assertFalse(\Drupal::service('user.data')->get('contact', $this->web_user->id(), 'enabled'), 'Personal contact form disabled');
-    $this->drupalPost(NULL, array('contact' => TRUE), t('Save'));
+    $this->drupalPostForm(NULL, array('contact' => TRUE), t('Save'));
     $this->assertFieldChecked('edit-contact--2');
     $this->assertTrue(\Drupal::service('user.data')->get('contact', $this->web_user->id(), 'enabled'), 'Personal contact form enabled');
   }
@@ -220,7 +220,7 @@ protected function submitPersonalContact($account, array $message = array()) {
       'subject' => $this->randomName(16),
       'message' => $this->randomName(64),
     );
-    $this->drupalPost('user/' . $account->id() . '/contact', $message, t('Send message'));
+    $this->drupalPostForm('user/' . $account->id() . '/contact', $message, t('Send message'));
     return $message;
   }
 }
diff --git a/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php b/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php
index b524dfa..2a4da64 100644
--- a/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php
+++ b/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php
@@ -53,7 +53,7 @@ function testSiteWideContact() {
     // Set settings.
     $edit = array();
     $edit['contact_default_status'] = TRUE;
-    $this->drupalPost('admin/config/people/accounts', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/people/accounts', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'));
 
     $this->drupalGet('admin/structure/contact');
@@ -241,9 +241,9 @@ function testSiteWideContact() {
       'fields[_add_new_field][type]' => 'text',
     );
     $field_name = 'field_' . $edit['fields[_add_new_field][field_name]'];
-    $this->drupalPost(NULL, $edit, t('Save'));
-    $this->drupalPost(NULL, array(), t('Save field settings'));
-    $this->drupalPost(NULL, array(), t('Save settings'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save field settings'));
+    $this->drupalPostForm(NULL, array(), t('Save settings'));
 
     // Check that the field is displayed.
     $this->drupalGet('contact/' . $category);
@@ -255,7 +255,7 @@ function testSiteWideContact() {
       'message' => $this->randomName(),
       $field_name . '[und][0][value]' => $this->randomName(),
     );
-    $this->drupalPost(NULL, $edit, t('Send message'));
+    $this->drupalPostForm(NULL, $edit, t('Send message'));
     $mails = $this->drupalGetMails();
     $mail = array_pop($mails);
     $this->assertEqual($mail['subject'], t('[@label] @subject', array('@label' => $label, '@subject' => $edit['subject'])));
@@ -330,7 +330,7 @@ function addCategory($id, $label, $recipients, $reply, $selected) {
     $edit['recipients'] = $recipients;
     $edit['reply'] = $reply;
     $edit['selected'] = ($selected ? TRUE : FALSE);
-    $this->drupalPost('admin/structure/contact/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/contact/add', $edit, t('Save'));
   }
 
   /**
@@ -354,7 +354,7 @@ function updateCategory($id, $label, $recipients, $reply, $selected) {
     $edit['recipients'] = $recipients;
     $edit['reply'] = $reply;
     $edit['selected'] = ($selected ? TRUE : FALSE);
-    $this->drupalPost("admin/structure/contact/manage/$id", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/contact/manage/$id", $edit, t('Save'));
   }
 
   /**
@@ -378,10 +378,10 @@ function submitContact($name, $mail, $subject, $id, $message) {
     $edit['subject'] = $subject;
     $edit['message'] = $message;
     if ($id == \Drupal::config('contact.settings')->get('default_category')) {
-      $this->drupalPost('contact', $edit, t('Send message'));
+      $this->drupalPostForm('contact', $edit, t('Send message'));
     }
     else {
-      $this->drupalPost('contact/' . $id, $edit, t('Send message'));
+      $this->drupalPostForm('contact/' . $id, $edit, t('Send message'));
     }
   }
 
@@ -397,7 +397,7 @@ function deleteCategories() {
         $this->assertResponse(403);
       }
       else {
-        $this->drupalPost("admin/structure/contact/manage/$id/delete", array(), t('Delete'));
+        $this->drupalPostForm("admin/structure/contact/manage/$id/delete", array(), t('Delete'));
         $this->assertRaw(t('Category %label has been deleted.', array('%label' => $category->label())));
         $this->assertFalse(entity_load('contact_category', $id), format_string('Category %category not found', array('%category' => $category->label())));
       }
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php
index f4e2f13..ecab4c4 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationSettingsTest.php
@@ -110,7 +110,7 @@ function testSettingsUI() {
     $this->drupalGet('admin/structure/types/manage/article');
     $this->assertField('language_configuration[content_translation]');
     $this->assertNoFieldChecked('edit-language-configuration-content-translation');
-    $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
     $this->drupalGet('admin/structure/types/manage/article');
     $this->assertFieldChecked('edit-language-configuration-content-translation');
   }
@@ -131,7 +131,7 @@ function testSettingsUI() {
    *   TRUE if the assertion succeeded, FALSE otherwise.
    */
   protected function assertSettings($entity_type, $bundle, $enabled, $edit) {
-    $this->drupalPost('admin/config/regional/content-language', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/regional/content-language', $edit, t('Save'));
     $args = array('@entity_type' => $entity_type, '@bundle' => $bundle, '@enabled' => $enabled ? 'enabled' : 'disabled');
     $message = format_string('Translation for entity @entity_type (@bundle) is @enabled.', $args);
     field_info_cache_clear();
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationUITest.php b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationUITest.php
index 74b779b..608d9f9 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationUITest.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationUITest.php
@@ -66,7 +66,7 @@ protected function assertBasicTranslation() {
 
     $base_path = $this->controller->getBasePath($entity);
     $path = $langcode . '/' . $base_path . '/translations/add/' . $default_langcode . '/' . $langcode;
-    $this->drupalPost($path, $this->getEditValues($values, $langcode), $this->getFormSubmitAction($entity));
+    $this->drupalPostForm($path, $this->getEditValues($values, $langcode), $this->getFormSubmitAction($entity));
     if ($this->testLanguageSelector) {
       $this->assertNoFieldByXPath('//select[@id="edit-langcode"]', NULL, 'Language selector correclty disabled on translations.');
     }
@@ -77,13 +77,13 @@ protected function assertBasicTranslation() {
     $source_langcode = 'it';
     $edit = array('source_langcode[source]' => $source_langcode);
     $path = $langcode . '/' . $base_path . '/translations/add/' . $default_langcode . '/' . $langcode;
-    $this->drupalPost($path, $edit, t('Change'));
+    $this->drupalPostForm($path, $edit, t('Change'));
     $this->assertFieldByXPath("//input[@name=\"{$this->fieldName}[fr][0][value]\"]", $values[$source_langcode][$this->fieldName][0]['value'], 'Source language correctly switched.');
 
     // Add another translation and mark the other ones as outdated.
     $values[$langcode] = $this->getNewEntityValues($langcode);
     $edit = $this->getEditValues($values, $langcode) + array('content_translation[retranslate]' => TRUE);
-    $this->drupalPost($path, $edit, $this->getFormSubmitAction($entity));
+    $this->drupalPostForm($path, $edit, $this->getFormSubmitAction($entity));
     $entity = entity_load($this->entityType, $this->entityId, TRUE);
 
     // Check that the entered values have been correctly stored.
@@ -108,7 +108,7 @@ protected function assertOutdatedStatus() {
 
     // Mark translations as outdated.
     $edit = array('content_translation[retranslate]' => TRUE);
-    $this->drupalPost($langcode . '/' . $this->controller->getEditPath($entity), $edit, $this->getFormSubmitAction($entity));
+    $this->drupalPostForm($langcode . '/' . $this->controller->getEditPath($entity), $edit, $this->getFormSubmitAction($entity));
     $entity = entity_load($this->entityType, $this->entityId, TRUE);
 
     // Check that every translation has the correct "outdated" status.
@@ -122,7 +122,7 @@ protected function assertOutdatedStatus() {
       else {
         $this->assertFieldByXPath('//input[@name="content_translation[outdated]"]', TRUE, 'The translate flag is checked by default.');
         $edit = array('content_translation[outdated]' => FALSE);
-        $this->drupalPost($path, $edit, $this->getFormSubmitAction($entity));
+        $this->drupalPostForm($path, $edit, $this->getFormSubmitAction($entity));
         $this->drupalGet($path);
         $this->assertFieldByXPath('//input[@name="content_translation[retranslate]"]', FALSE, 'The retranslate flag is now shown.');
         $entity = entity_load($this->entityType, $this->entityId, TRUE);
@@ -142,7 +142,7 @@ protected function assertPublishedStatus() {
     foreach ($this->langcodes as $index => $langcode) {
       if ($index > 0) {
         $edit = array('content_translation[status]' => FALSE);
-        $this->drupalPost($langcode . '/' . $path, $edit, $this->getFormSubmitAction($entity));
+        $this->drupalPostForm($langcode . '/' . $path, $edit, $this->getFormSubmitAction($entity));
         $entity = entity_load($this->entityType, $this->entityId, TRUE);
         $this->assertFalse($entity->translation[$langcode]['status'], 'The translation has been correctly unpublished.');
       }
@@ -173,7 +173,7 @@ protected function assertAuthoringInfo() {
         'content_translation[created]' => format_date($values[$langcode]['created'], 'custom', 'Y-m-d H:i:s O'),
       );
       $prefix = $index > 0 ? $langcode . '/' : '';
-      $this->drupalPost($prefix . $path, $edit, $this->getFormSubmitAction($entity));
+      $this->drupalPostForm($prefix . $path, $edit, $this->getFormSubmitAction($entity));
     }
 
     $entity = entity_load($this->entityType, $this->entityId, TRUE);
@@ -189,7 +189,7 @@ protected function assertAuthoringInfo() {
       'content_translation[name]' => $this->randomName(12),
       'content_translation[created]' => '19/11/1978',
     );
-    $this->drupalPost($path, $edit, $this->getFormSubmitAction($entity));
+    $this->drupalPostForm($path, $edit, $this->getFormSubmitAction($entity));
     $this->assertTrue($this->xpath('//div[contains(@class, "error")]//ul'), 'Invalid values generate a list of form errors.');
     $this->assertEqual($entity->translation[$langcode]['uid'] == $values[$langcode]['uid'], 'Translation author correctly kept.');
     $this->assertEqual($entity->translation[$langcode]['created'] == $values[$langcode]['created'], 'Translation date correctly kept.');
@@ -202,8 +202,8 @@ protected function assertTranslationDeletion() {
     // Confirm and delete a translation.
     $langcode = 'fr';
     $entity = entity_load($this->entityType, $this->entityId, TRUE);
-    $this->drupalPost($langcode . '/' . $this->controller->getEditPath($entity), array(), t('Delete translation'));
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm($langcode . '/' . $this->controller->getEditPath($entity), array(), t('Delete translation'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     $entity = entity_load($this->entityType, $this->entityId, TRUE);
     if ($this->assertTrue(is_object($entity), 'Entity found')) {
       $translations = $entity->getTranslationLanguages();
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php
index ec414f9..c523900 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationWorkflowsTest.php
@@ -68,7 +68,7 @@ protected function setupEntity() {
     // Create a translation.
     $this->drupalLogin($this->translator);
     $add_translation_path = $this->controller->getBasePath($this->entity) . "/translations/add/$default_langcode/{$this->langcodes[2]}";
-    $this->drupalPost($add_translation_path, array(), t('Save'));
+    $this->drupalPostForm($add_translation_path, array(), t('Save'));
     $this->rebuildContainer();
   }
 
diff --git a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
index 3c35e48..638ce15 100644
--- a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
+++ b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
@@ -147,30 +147,10 @@ protected function assertNoContextualLinkPlaceHolder($id) {
    *   The response body.
    */
   protected function renderContextualLinks($ids, $current_path) {
-    // Build POST values.
     $post = array();
     for ($i = 0; $i < count($ids); $i++) {
       $post['ids[' . $i . ']'] = $ids[$i];
     }
-
-    // Serialize POST values.
-    foreach ($post as $key => $value) {
-      // Encode according to application/x-www-form-urlencoded
-      // Both names and values needs to be urlencoded, according to
-      // http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
-      $post[$key] = urlencode($key) . '=' . urlencode($value);
-    }
-    $post = implode('&', $post);
-
-    // Perform HTTP request.
-    return $this->curlExec(array(
-      CURLOPT_URL => url('contextual/render', array('absolute' => TRUE, 'query' => array('destination' => $current_path))),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post,
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
+    return $this->drupalPost('contextual/render', 'application/json', $post, array('query' => array('destination' => $current_path)));
   }
 }
diff --git a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php
index 09d4380..d3cfca4 100644
--- a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php
+++ b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php
@@ -113,7 +113,7 @@ function testDateField() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value][date]" => $date->format($date_format),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
@@ -185,7 +185,7 @@ function testDatetimeField() {
       "{$field_name}[$langcode][0][value][date]" => $date->format($date_format),
       "{$field_name}[$langcode][0][value][time]" => $date->format($time_format),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
@@ -279,7 +279,7 @@ function testDatelistWidget() {
       $edit["{$field_name}[$langcode][0][value][$part]"] = $value;
     }
 
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
@@ -355,7 +355,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => '12:00:00',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', 'Empty date value has been caught.');
 
     $date_value = 'aaaa-12-01';
@@ -363,7 +363,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => '00:00:00',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', format_string('Invalid year value %date has been caught.', array('%date' => $date_value)));
 
     $date_value = '2012-75-01';
@@ -371,7 +371,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => '00:00:00',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', format_string('Invalid month value %date has been caught.', array('%date' => $date_value)));
 
     $date_value = '2012-12-99';
@@ -379,7 +379,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => '00:00:00',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', format_string('Invalid day value %date has been caught.', array('%date' => $date_value)));
 
     $date_value = '2012-12-01';
@@ -388,7 +388,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => $time_value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', 'Empty time value has been caught.');
 
     $date_value = '2012-12-01';
@@ -397,7 +397,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => $time_value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', format_string('Invalid hour value %time has been caught.', array('%time' => $time_value)));
 
     $date_value = '2012-12-01';
@@ -406,7 +406,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => $time_value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', format_string('Invalid minute value %time has been caught.', array('%time' => $time_value)));
 
     $date_value = '2012-12-01';
@@ -415,7 +415,7 @@ function testInvalidField() {
       "{$field_name}[$langcode][0][value][date]" => $date_value,
       "{$field_name}[$langcode][0][value][time]" => $time_value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('date is invalid', format_string('Invalid second value %time has been caught.', array('%time' => $time_value)));
   }
 
diff --git a/core/modules/dblog/lib/Drupal/dblog/Tests/DbLogTest.php b/core/modules/dblog/lib/Drupal/dblog/Tests/DbLogTest.php
index c9a34bc..24142b9 100644
--- a/core/modules/dblog/lib/Drupal/dblog/Tests/DbLogTest.php
+++ b/core/modules/dblog/lib/Drupal/dblog/Tests/DbLogTest.php
@@ -86,7 +86,7 @@ private function verifyRowLimit($row_limit) {
     // Change the database log row limit.
     $edit = array();
     $edit['dblog_row_limit'] = $row_limit;
-    $this->drupalPost('admin/config/development/logging', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/development/logging', $edit, t('Save configuration'));
     $this->assertResponse(200);
 
     // Check row limit variable.
@@ -227,7 +227,7 @@ private function doUser() {
     $edit['pass[pass1]'] = $pass;
     $edit['pass[pass2]'] = $pass;
     $edit['status'] = 1;
-    $this->drupalPost('admin/people/create', $edit, t('Create new account'));
+    $this->drupalPostForm('admin/people/create', $edit, t('Create new account'));
     $this->assertResponse(200);
     // Retrieve the user object.
     $user = user_load_by_name($name);
@@ -250,7 +250,7 @@ private function doUser() {
     $this->drupalLogin($this->big_user);
     // Delete the user created at the start of this test.
     // We need to POST here to invoke batch_process() in the internal browser.
-    $this->drupalPost('user/' . $user->id() . '/cancel', array('user_cancel_method' => 'user_cancel_reassign'), t('Cancel account'));
+    $this->drupalPostForm('user/' . $user->id() . '/cancel', array('user_cancel_method' => 'user_cancel_reassign'), t('Cancel account'));
 
     // View the database log report.
     $this->drupalGet('admin/reports/dblog');
@@ -314,17 +314,17 @@ private function doNode($type) {
     $edit = $this->getContent($type);
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $title = $edit["title"];
-    $this->drupalPost('node/add/' . $type, $edit, t('Save'));
+    $this->drupalPostForm('node/add/' . $type, $edit, t('Save'));
     $this->assertResponse(200);
     // Retrieve the node object.
     $node = $this->drupalGetNodeByTitle($title);
     $this->assertTrue($node != NULL, format_string('Node @title was loaded', array('@title' => $title)));
     // Edit the node.
     $edit = $this->getContentUpdate($type);
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertResponse(200);
     // Delete the node.
-    $this->drupalPost('node/' . $node->id() . '/delete', array(), t('Delete'));
+    $this->drupalPostForm('node/' . $node->id() . '/delete', array(), t('Delete'));
     $this->assertResponse(200);
     // View the node (to generate page not found event).
     $this->drupalGet('node/' . $node->id());
@@ -437,7 +437,7 @@ protected function testDBLogAddAndClear() {
     // Login the admin user.
     $this->drupalLogin($this->big_user);
     // Post in order to clear the database table.
-    $this->drupalPost('admin/reports/dblog', array(), t('Clear log messages'));
+    $this->drupalPostForm('admin/reports/dblog', array(), t('Clear log messages'));
     // Count the rows in watchdog that previously related to the deleted user.
     $count = db_query('SELECT COUNT(*) FROM {watchdog}')->fetchField();
     $this->assertEqual($count, 0, format_string('DBLog contains :count records after a clear.', array(':count' => $count)));
@@ -483,7 +483,7 @@ protected function testFilter() {
       $edit = array(
         'type[]' => array($type_name),
       );
-      $this->drupalPost(NULL, $edit, t('Filter'));
+      $this->drupalPostForm(NULL, $edit, t('Filter'));
 
       // Count the number of entries of this type.
       $type_count = 0;
@@ -504,7 +504,7 @@ protected function testFilter() {
         'type[]' => array($type['type']),
         'severity[]' => array($type['severity']),
       );
-      $this->drupalPost(NULL, $edit, t('Filter'));
+      $this->drupalPostForm(NULL, $edit, t('Filter'));
 
       $count = $this->getTypeCount($types);
       $this->assertEqual(array_sum($count), $type['count'], 'Count matched');
@@ -515,7 +515,7 @@ protected function testFilter() {
     $this->assertText(t('Operations'), 'Operations text found');
 
     // Clear all logs and make sure the confirmation message is found.
-    $this->drupalPost('admin/reports/dblog', array(), t('Clear log messages'));
+    $this->drupalPostForm('admin/reports/dblog', array(), t('Clear log messages'));
     $this->assertText(t('Database log cleared.'), 'Confirmation message found');
   }
 
diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php b/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php
index d3e474c..b9d1386 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php
@@ -86,18 +86,21 @@ function testUserWithoutPermission() {
     $this->assertRaw('data-edit-id="node/1/body/und/full"');
 
     // Retrieving the metadata should result in an empty 403 response.
-    $response = $this->retrieveMetadata(array('node/1/body/und/full'));
+    $post = array('fields[0]' => 'node/1/body/und/full');
+    $response = $this->drupalPost('edit/metadata', 'application/json', $post);
     $this->assertIdentical('{}', $response);
     $this->assertResponse(403);
 
     // Edit's JavaScript would never hit these endpoints if the metadata was
     // empty as above, but we need to make sure that malicious users aren't able
     // to use any of the other endpoints either.
-    $response = $this->retrieveAttachments(array('form'));
+    $post = array('editors[0]' => 'form') + $this->getAjaxPageStatePostData();
+    $response = $this->drupalPost('edit/attachments', 'application/vnd.drupal-ajax', $post);
     // @todo Uncomment the below once https://drupal.org/node/2063303 is fixed.
     // $this->assertIdentical('[]', $response);
     $this->assertResponse(403);
-    $response = $this->retrieveFieldForm('node/1/body/und/full');
+    $post = array('nocssjs' => 'true') + $this->getAjaxPageStatePostData();
+    $response = $this->drupalPost('edit/form/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', $post);
     // @todo Uncomment the below once https://drupal.org/node/2063303 is fixed.
     // $this->assertIdentical('[]', $response);
     $this->assertResponse(403);
@@ -109,11 +112,12 @@ function testUserWithoutPermission() {
     $edit['body[und][0][value]'] = '<p>Malicious content.</p>';
     $edit['body[und][0][format]'] = 'filtered_html';
     $edit['op'] = t('Save');
-    $response = $this->submitFieldForm('node/1/body/und/full', $edit);
+    $response = $this->drupalPost('edit/form/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', $post);
     // @todo Uncomment the below once https://drupal.org/node/2063303 is fixed.
     // $this->assertIdentical('[]', $response);
     $this->assertResponse(403);
-    $response = $this->saveEntity('node/1');
+    $post = array('nocssjs' => 'true');
+    $response = $this->drupalPost('edit/entity/' . 'node/1', 'application/json', $post);
     // @todo Uncomment the below once https://drupal.org/node/2063303 is fixed.
     // $this->assertIdentical('[]', $response);
     $this->assertResponse(403);
@@ -140,7 +144,8 @@ function testUserWithPermission() {
 
     // Retrieving the metadata should result in a 200 JSON response.
     $htmlPageDrupalSettings = $this->drupalSettings;
-    $response = $this->retrieveMetadata(array('node/1/body/und/full'));
+    $post = array('fields[0]' => 'node/1/body/und/full');
+    $response = $this->drupalPost('edit/metadata', 'application/json', $post);
     $this->assertResponse(200);
     $expected = array(
       'node/1/body/und/full' => array(
@@ -158,7 +163,8 @@ function testUserWithPermission() {
     // Retrieving the attachments should result in a 200 response, containing:
     //  1. a settings command with useless metadata: AjaxController is dumb
     //  2. an insert command that loads the required in-place editors
-    $response = $this->retrieveAttachments(array('form'));
+    $post = array('editors[0]' => 'form') + $this->getAjaxPageStatePostData();
+    $response = $this->drupalPost('edit/attachments', 'application/vnd.drupal-ajax', $post);
     $ajax_commands = drupal_json_decode($response);
     $this->assertIdentical(2, count($ajax_commands), 'The attachments HTTP request results in two AJAX commands.');
     // First command: settings.
@@ -170,32 +176,35 @@ function testUserWithPermission() {
 
     // Retrieving the form for this field should result in a 200 response,
     // containing only an editFieldForm command.
-    $response = $this->retrieveFieldForm('node/1/body/und/full');
+    $post = array('nocssjs' => 'true') + $this->getAjaxPageStatePostData();
+    $response = $this->drupalPost('edit/form/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', $post);
     $this->assertResponse(200);
     $ajax_commands = drupal_json_decode($response);
     $this->assertIdentical(1, count($ajax_commands), 'The field form HTTP request results in one AJAX command.');
     $this->assertIdentical('editFieldForm', $ajax_commands[0]['command'], 'The first AJAX command is an editFieldForm command.');
     $this->assertIdentical('<form ', Unicode::substr($ajax_commands[0]['data'], 0, 6), 'The editFieldForm command contains a form.');
 
-    // Prepare form values for submission. drupalPostAJAX() is not suitable
+    // Prepare form values for submission. drupalPostAjaxForm() is not suitable
     // for handling pages with JSON responses, so we need our own solution
     // here.
     $form_tokens_found = preg_match('/\sname="form_token" value="([^"]+)"/', $ajax_commands[0]['data'], $token_match) && preg_match('/\sname="form_build_id" value="([^"]+)"/', $ajax_commands[0]['data'], $build_id_match);
     $this->assertTrue($form_tokens_found, 'Form tokens found in output.');
 
     if ($form_tokens_found) {
-      $edit = array();
-      $edit['form_id'] = 'edit_field_form';
-      $edit['form_token'] = $token_match[1];
-      $edit['form_build_id'] = $build_id_match[1];
-      $edit['body[und][0][summary]'] = '';
-      $edit['body[und][0][value]'] = '<p>Fine thanks.</p>';
-      $edit['body[und][0][format]'] = 'filtered_html';
-      $edit['op'] = t('Save');
+      $post = array(
+        'form_id' => 'edit_field_form',
+        'form_token' => $token_match[1],
+        'form_build_id' => $build_id_match[1],
+        'body[und][0][summary]' => '',
+        'body[und][0][value]' => '<p>Fine thanks.</p>',
+        'body[und][0][format]' => 'filtered_html',
+        'op' => t('Save'),
+      );
+      $post += $this->getAjaxPageStatePostData();
 
       // Submit field form and check response. This should store the
       // updated entity in TempStore on the server.
-      $response = $this->submitFieldForm('node/1/body/und/full', $edit);
+      $response = $this->drupalPost('edit/form/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', $post);
       $this->assertResponse(200);
       $ajax_commands = drupal_json_decode($response);
       $this->assertIdentical(1, count($ajax_commands), 'The field form HTTP request results in one AJAX command.');
@@ -207,7 +216,8 @@ function testUserWithPermission() {
       $this->assertText('How are you?');
 
       // Save the entity by moving the TempStore values to entity storage.
-      $response = $this->saveEntity('node/1');
+      $post = array('nocssjs' => 'true');
+      $response = $this->drupalPost('edit/entity/' . 'node/1', 'application/json', $post);
       $this->assertResponse(200);
       $ajax_commands = drupal_json_decode($response);
       $this->assertIdentical(1, count($ajax_commands), 'The entity submission HTTP request results in one AJAX command.');
@@ -221,185 +231,4 @@ function testUserWithPermission() {
     }
   }
 
-  /**
-   * Retrieve Edit metadata from the server. May also result in additional
-   * JavaScript settings and CSS/JS being loaded.
-   *
-   * @param array $ids
-   *   An array of edit ids.
-   *
-   * @return string
-   *   The response body.
-   */
-  protected function retrieveMetadata($ids) {
-    // Build POST values.
-    $post = array();
-    for ($i = 0; $i < count($ids); $i++) {
-      $post['fields[' . $i . ']'] = $ids[$i];
-    }
-
-    // Serialize POST values.
-    foreach ($post as $key => $value) {
-      // Encode according to application/x-www-form-urlencoded
-      // Both names and values needs to be urlencoded, according to
-      // http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
-      $post[$key] = urlencode($key) . '=' . urlencode($value);
-    }
-    $post = implode('&', $post);
-
-    // Perform HTTP request.
-    return $this->curlExec(array(
-      CURLOPT_URL => url('edit/metadata', array('absolute' => TRUE)),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post . $this->getAjaxPageStatePostData(),
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
-  }
-
-  /**
-   * Retrieves AJAX commands to load attachments for the given in-place editors.
-   *
-   * @param array $editors
-   *   An array of in-place editor ids.
-   *
-   * @return string
-   *   The response body.
-   */
-  protected function retrieveAttachments($editors) {
-    // Build POST values.
-    $post = array();
-    for ($i = 0; $i < count($editors); $i++) {
-      $post['editors[' . $i . ']'] = $editors[$i];
-    }
-
-    // Serialize POST values.
-    foreach ($post as $key => $value) {
-      // Encode according to application/x-www-form-urlencoded
-      // Both names and values needs to be urlencoded, according to
-      // http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
-      $post[$key] = urlencode($key) . '=' . urlencode($value);
-    }
-    $post = implode('&', $post);
-
-    // Perform HTTP request.
-    return $this->curlExec(array(
-      CURLOPT_URL => url('edit/attachments', array('absolute' => TRUE)),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post . $this->getAjaxPageStatePostData(),
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/vnd.drupal-ajax',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
-  }
-
-  /**
-   * Submit field form data to the server.
-   *
-   * @param string $field_id
-   *   An Edit field ID.
-   * @param array $post
-   *   An array of post data to send.
-   *
-   * @return string
-   *   The response body.
-   */
-  protected function submitFieldForm($field_id, $post) {
-    // Serialize POST values.
-    foreach ($post as $key => $value) {
-      // Encode according to application/x-www-form-urlencoded
-      // Both names and values needs to be urlencoded, according to
-      // http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
-      $post[$key] = urlencode($key) . '=' . urlencode($value);
-    }
-    $post = implode('&', $post);
-
-    // Perform HTTP request.
-    return $this->curlExec(array(
-      CURLOPT_URL => url('edit/form/' . $field_id, array('absolute' => TRUE)),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post . $this->getAjaxPageStatePostData(),
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
-  }
-
-  /**
-   * Retrieve field form from the server. May also result in additional
-   * JavaScript settings and CSS/JS being loaded.
-   *
-   * @param string $field_id
-   *   An Edit field ID.
-   *
-   * @return string
-   *   The response body.
-   */
-  protected function retrieveFieldForm($field_id) {
-    // Build & serialize POST value.
-    $post = urlencode('nocssjs') . '=' . urlencode('true');
-
-    // Perform HTTP request.
-    return $this->curlExec(array(
-      CURLOPT_URL => url('edit/form/' . $field_id, array('absolute' => TRUE)),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post . $this->getAjaxPageStatePostData(),
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/vnd.drupal-ajax',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
-  }
-
-  /**
-   * Save entity edits on the server.
-   *
-   * @param string $entity_type_id
-   *   The edit type and ID URI portion.
-   *
-   * @return string
-   *   The response body.
-   */
-  protected function saveEntity($entity_type_id) {
-    // Build & serialize POST value.
-    $post = urlencode('nocssjs') . '=' . urlencode('true');
-
-    // Perform HTTP request.
-    return $this->curlExec(array(
-      CURLOPT_URL => url('edit/entity/' . $entity_type_id, array('absolute' => TRUE)),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post . $this->getAjaxPageStatePostData(),
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
-  }
-
-  /**
-   * Get extra information to the POST data as ajax.js does.
-   *
-   * @return string
-   *   Additional post data.
-   */
-  protected function getAjaxPageStatePostData() {
-    $extra_post = '';
-    $drupal_settings = $this->drupalSettings;
-    if (isset($drupal_settings['ajaxPageState'])) {
-      $extra_post .= '&' . urlencode('ajax_page_state[theme]') . '=' . urlencode($drupal_settings['ajaxPageState']['theme']);
-      $extra_post .= '&' . urlencode('ajax_page_state[theme_token]') . '=' . urlencode($drupal_settings['ajaxPageState']['theme_token']);
-      foreach ($drupal_settings['ajaxPageState']['css'] as $key => $value) {
-        $extra_post .= '&' . urlencode("ajax_page_state[css][$key]") . '=1';
-      }
-      foreach ($drupal_settings['ajaxPageState']['js'] as $key => $value) {
-        $extra_post .= '&' . urlencode("ajax_page_state[js][$key]") . '=1';
-      }
-    }
-    return $extra_post;
-  }
-
 }
diff --git a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationLoadingTest.php b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationLoadingTest.php
index 247678e..edd74bc 100644
--- a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationLoadingTest.php
+++ b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationLoadingTest.php
@@ -93,7 +93,7 @@ function testUsersWithoutPermission() {
       $this->assertRaw('<p>Do you also love Drupal?</p><figure class="caption caption-img"><img src="druplicon.png" /><figcaption>Druplicon</figcaption></figure>');
 
       // Retrieving the untransformed text should result in an empty 403 response.
-      $response = $this->retrieveUntransformedText('node/1/body/und/full');
+      $response = $this->drupalPost('editor/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', array());
       $this->assertResponse(403);
       // @todo Uncomment the below once https://drupal.org/node/2063303 is fixed.
       // $this->assertIdentical('[]', $response);
@@ -111,7 +111,7 @@ function testUserWithPermission() {
     // Ensure the text is transformed.
     $this->assertRaw('<p>Do you also love Drupal?</p><figure class="caption caption-img"><img src="druplicon.png" /><figcaption>Druplicon</figcaption></figure>');
 
-    $response = $this->retrieveUntransformedText('node/1/body/und/full');
+    $response = $this->drupalPost('editor/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', array());
     $this->assertResponse(200);
     $ajax_commands = drupal_json_decode($response);
     $this->assertIdentical(1, count($ajax_commands), 'The untransformed text POST request results in one AJAX command.');
@@ -119,47 +119,4 @@ function testUserWithPermission() {
     $this->assertIdentical('<p>Do you also love Drupal?</p><img src="druplicon.png" data-caption="Druplicon" />', $ajax_commands[0]['data'], 'The editorGetUntransformedText command contains the expected data.');
   }
 
-  /**
-   * Retrieve untransformed text from the server.
-   *
-   * @param string $field_id
-   *   An Edit field ID.
-   *
-   * @return string
-   *   The response body.
-   */
-  protected function retrieveUntransformedText($field_id) {
-    return $this->curlExec(array(
-      CURLOPT_URL => url('editor/' . $field_id, array('absolute' => TRUE)),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $this->getAjaxPageStatePostData(),
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/vnd.drupal-ajax',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
-  }
-
-  /**
-   * Get extra information to the POST data as ajax.js does.
-   *
-   * @return string
-   *   Additional post data.
-   */
-  protected function getAjaxPageStatePostData() {
-    $extra_post = '';
-    $drupal_settings = $this->drupalSettings;
-    if (isset($drupal_settings['ajaxPageState'])) {
-      $extra_post .= '&' . urlencode('ajax_page_state[theme]') . '=' . urlencode($drupal_settings['ajaxPageState']['theme']);
-      $extra_post .= '&' . urlencode('ajax_page_state[theme_token]') . '=' . urlencode($drupal_settings['ajaxPageState']['theme_token']);
-      foreach ($drupal_settings['ajaxPageState']['css'] as $key => $value) {
-        $extra_post .= '&' . urlencode("ajax_page_state[css][$key]") . '=1';
-      }
-      foreach ($drupal_settings['ajaxPageState']['js'] as $key => $value) {
-        $extra_post .= '&' . urlencode("ajax_page_state[js][$key]") . '=1';
-      }
-    }
-    return $extra_post;
-  }
-
 }
diff --git a/core/modules/editor/lib/Drupal/editor/Tests/EditorAdminTest.php b/core/modules/editor/lib/Drupal/editor/Tests/EditorAdminTest.php
index 0bc89e1..f988cf7 100644
--- a/core/modules/editor/lib/Drupal/editor/Tests/EditorAdminTest.php
+++ b/core/modules/editor/lib/Drupal/editor/Tests/EditorAdminTest.php
@@ -79,7 +79,7 @@ function testAddEditorToExistingFormat() {
     $edit = $this->selectUnicornEditor();
     // Configure Unicorn Editor's setting to another value.
     $edit['editor[settings][foo]'] = 'baz';
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->verifyUnicornEditorConfiguration('filtered_html', 'baz');
   }
 
@@ -96,7 +96,7 @@ function testAddEditorToNewFormat() {
       'format' => 'monocerus',
     );
     $edit += $this->selectUnicornEditor();
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->verifyUnicornEditorConfiguration($edit['format']);
   }
 
@@ -133,7 +133,7 @@ protected function selectUnicornEditor() {
     $edit = array(
       'editor[editor]' => 'unicorn',
     );
-    $this->drupalPostAjax(NULL, $edit, 'editor_configure');
+    $this->drupalPostAjaxForm(NULL, $edit, 'editor_configure');
     $unicorn_setting_foo = $this->xpath('//input[@name="editor[settings][foo]" and @type="text" and @value="bar"]');
     $this->assertTrue(count($unicorn_setting_foo), "Unicorn Editor's settings form is present.");
 
diff --git a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php b/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
index d051ba2..587135d 100644
--- a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
+++ b/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
@@ -103,7 +103,7 @@ function testEmailField() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php
index ba73fdb..74625e1 100644
--- a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php
+++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php
@@ -52,16 +52,16 @@ public function testEntityViewModeUI() {
       'id' => strtolower($this->randomName()),
       'label' => $this->randomString(),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('Saved the %label view mode.', array('%label' => $edit['label'])));
 
     // Test editing the view mode.
     $this->drupalGet('admin/structure/display-modes/view/manage/entity_test_render.' . $edit['id']);
 
     // Test deleting the view mode.
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
     $this->assertRaw(t('Are you sure you want to delete the %label view mode?', array('%label' => $edit['label'])));
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
     $this->assertRaw(t('Deleted the %label view mode.', array('%label' => $edit['label'])));
   }
 
@@ -88,16 +88,16 @@ public function testEntityFormModeUI() {
       'id' => strtolower($this->randomName()),
       'label' => $this->randomString(),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('Saved the %label form mode.', array('%label' => $edit['label'])));
 
     // Test editing the form mode.
     $this->drupalGet('admin/structure/display-modes/form/manage/entity_test.' . $edit['id']);
 
     // Test deleting the form mode.
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
     $this->assertRaw(t('Are you sure you want to delete the %label form mode?', array('%label' => $edit['label'])));
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
     $this->assertRaw(t('Deleted the %label form mode.', array('%label' => $edit['label'])));
   }
 
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAdminTest.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAdminTest.php
index bdf0b3e..acef71e 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAdminTest.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAdminTest.php
@@ -66,7 +66,7 @@ public function testFieldAdminHandler() {
     $bundle_path = 'admin/structure/types/manage/' . $this->type;
 
     // First step: 'Add new field' on the 'Manage fields' page.
-    $this->drupalPost($bundle_path . '/fields', array(
+    $this->drupalPostForm($bundle_path . '/fields', array(
       'fields[_add_new_field][label]' => 'Test label',
       'fields[_add_new_field][field_name]' => 'test',
       'fields[_add_new_field][type]' => 'entity_reference',
@@ -76,7 +76,7 @@ public function testFieldAdminHandler() {
     $this->assertFieldByName('field[settings][target_type]', 'node');
 
     // Second step: 'Instance settings' form.
-    $this->drupalPost(NULL, array(), t('Save field settings'));
+    $this->drupalPostForm(NULL, array(), t('Save field settings'));
 
     // The base handler should be selected by default.
     $this->assertFieldByName('instance[settings][handler]', 'default');
@@ -95,13 +95,13 @@ public function testFieldAdminHandler() {
     $this->assertFieldByName('instance[settings][handler_settings][sort][field]', '_none');
     $this->assertNoFieldByName('instance[settings][handler_settings][sort][direction]');
     // Option 1: sort by field.
-    $this->drupalPostAJAX(NULL, array('instance[settings][handler_settings][sort][field]' => 'nid'), 'instance[settings][handler_settings][sort][field]');
+    $this->drupalPostAjaxForm(NULL, array('instance[settings][handler_settings][sort][field]' => 'nid'), 'instance[settings][handler_settings][sort][field]');
     $this->assertFieldByName('instance[settings][handler_settings][sort][direction]', 'ASC');
     // Set back to no sort.
-    $this->drupalPostAJAX(NULL, array('instance[settings][handler_settings][sort][field]' => '_none'), 'instance[settings][handler_settings][sort][field]');
+    $this->drupalPostAjaxForm(NULL, array('instance[settings][handler_settings][sort][field]' => '_none'), 'instance[settings][handler_settings][sort][field]');
 
     // Third step: confirm.
-    $this->drupalPost(NULL, array(
+    $this->drupalPostForm(NULL, array(
       'instance[settings][handler_settings][target_bundles][' . key($bundles) . ']' => key($bundles),
     ), t('Save settings'));
 
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php
index d81dc5e..ba5d779 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php
@@ -98,7 +98,7 @@ public function testAutoCreate() {
       'title' => $this->randomName(),
       'test_field[und][0][target_id]' => $new_title,
     );
-    $this->drupalPost("node/add/$this->referencing_type", $edit, 'Save');
+    $this->drupalPostForm("node/add/$this->referencing_type", $edit, 'Save');
 
     // Assert referenced node was created.
     $query = clone $base_query;
diff --git a/core/modules/field/lib/Drupal/field/Tests/FormTest.php b/core/modules/field/lib/Drupal/field/Tests/FormTest.php
index 2a8f43c..716b412 100644
--- a/core/modules/field/lib/Drupal/field/Tests/FormTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/FormTest.php
@@ -121,7 +121,7 @@ function testFieldFormSingle() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => -1
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('%name does not accept the value -1.', array('%name' => $this->instance['label'])), 'Field validation fails with invalid input.');
     // TODO : check that the correct field is flagged for error.
 
@@ -132,7 +132,7 @@ function testFieldFormSingle() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created');
@@ -151,7 +151,7 @@ function testFieldFormSingle() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText(t('entity_test @id has been updated.', array('@id' => $id)), 'Entity was updated');
     $this->container->get('entity.manager')->getStorageController('entity_test')->resetCache(array($id));
     $entity = entity_load('entity_test', $id);
@@ -164,7 +164,7 @@ function testFieldFormSingle() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => $value
     );
-    $this->drupalPost('entity_test/manage/' . $id . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/manage/' . $id . '/edit', $edit, t('Save'));
     $this->assertText(t('entity_test @id has been updated.', array('@id' => $id)), 'Entity was updated');
     $this->container->get('entity.manager')->getStorageController('entity_test')->resetCache(array($id));
     $entity = entity_load('entity_test', $id);
@@ -198,7 +198,7 @@ function testFieldFormDefaultValue() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => '',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created.');
@@ -220,7 +220,7 @@ function testFieldFormSingleRequired() {
 
     // Submit with missing required value.
     $edit = array();
-    $this->drupalPost('entity_test/add', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/add', $edit, t('Save'));
     $this->assertRaw(t('!name field is required.', array('!name' => $this->instance['label'])), 'Required field with no value fails validation');
 
     // Create an entity
@@ -230,7 +230,7 @@ function testFieldFormSingleRequired() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created');
@@ -244,7 +244,7 @@ function testFieldFormSingleRequired() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost('entity_test/manage/' . $id . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/manage/' . $id . '/edit', $edit, t('Save'));
     $this->assertRaw(t('!name field is required.', array('!name' => $this->instance['label'])), 'Required field with no value fails validation');
   }
 
@@ -273,14 +273,14 @@ function testFieldFormUnlimited() {
     $this->assertNoField("{$field_name}[$langcode][1][value]", 'No extraneous widget is displayed');
 
     // Press 'add more' button -> 2 widgets.
-    $this->drupalPost(NULL, array(), t('Add another item'));
+    $this->drupalPostForm(NULL, array(), t('Add another item'));
     $this->assertFieldByName("{$field_name}[$langcode][0][value]", '', 'Widget 1 is displayed');
     $this->assertFieldByName("{$field_name}[$langcode][1][value]", '', 'New widget is displayed');
     $this->assertNoField("{$field_name}[$langcode][2][value]", 'No extraneous widget is displayed');
     // TODO : check that non-field inpurs are preserved ('title')...
 
     // Yet another time so that we can play with more values -> 3 widgets.
-    $this->drupalPost(NULL, array(), t('Add another item'));
+    $this->drupalPostForm(NULL, array(), t('Add another item'));
 
     // Prepare values and weights.
     $count = 3;
@@ -308,7 +308,7 @@ function testFieldFormUnlimited() {
     }
 
     // Press 'add more' button -> 4 widgets
-    $this->drupalPost(NULL, $edit, t('Add another item'));
+    $this->drupalPostForm(NULL, $edit, t('Add another item'));
     for ($delta = 0; $delta <= $delta_range; $delta++) {
       $this->assertFieldByName("{$field_name}[$langcode][$delta][value]", $values[$delta], "Widget $delta is displayed and has the right value");
       $this->assertFieldByName("{$field_name}[$langcode][$delta][_weight]", $weights[$delta], "Widget $delta has the right weight");
@@ -321,7 +321,7 @@ function testFieldFormUnlimited() {
     $this->assertNoField("{$field_name}[$langcode][" . ($delta + 1) . '][value]', 'No extraneous widget is displayed');
 
     // Submit the form and create the entity.
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created');
@@ -380,7 +380,7 @@ function testFieldFormMultivalueWithRequiredRadio() {
     $this->drupalGet('entity_test/add');
 
     // Press the 'Add more' button.
-    $this->drupalPost(NULL, array(), t('Add another item'));
+    $this->drupalPostForm(NULL, array(), t('Add another item'));
 
     // Verify that no error is thrown by the radio element.
     $this->assertNoFieldByXpath('//div[contains(@class, "error")]', FALSE, 'No error message is displayed.');
@@ -406,10 +406,10 @@ function testFieldFormJSAddMore() {
     $this->drupalGet('entity_test/add');
 
     // Press 'add more' button a couple times -> 3 widgets.
-    // drupalPostAJAX() will not work iteratively, so we add those through
+    // drupalPostAjaxForm() will not work iteratively, so we add those through
     // non-JS submission.
-    $this->drupalPost(NULL, array(), t('Add another item'));
-    $this->drupalPost(NULL, array(), t('Add another item'));
+    $this->drupalPostForm(NULL, array(), t('Add another item'));
+    $this->drupalPostForm(NULL, array(), t('Add another item'));
 
     // Prepare values and weights.
     $count = 3;
@@ -433,7 +433,7 @@ function testFieldFormJSAddMore() {
     }
     // Press 'add more' button through Ajax, and place the expected HTML result
     // as the tested content.
-    $commands = $this->drupalPostAJAX(NULL, $edit, $field_name . '_add_more');
+    $commands = $this->drupalPostAjaxForm(NULL, $edit, $field_name . '_add_more');
     $this->content = $commands[1]['data'];
 
     for ($delta = 0; $delta <= $delta_range; $delta++) {
@@ -476,7 +476,7 @@ function testFieldFormMultipleWidget() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode]" => '1, 2, 3',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
 
@@ -490,7 +490,7 @@ function testFieldFormMultipleWidget() {
 
     // Submit the form with more values than the field accepts.
     $edit = array("{$field_name}[$langcode]" => '1, 2, 3, 4, 5');
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw('this field cannot hold more than 4 values', 'Form validation failed.');
     // Check that the field values were not submitted.
     $this->assertFieldValues($entity_init, $field_name, $langcode, array(1, 2, 3));
@@ -558,7 +558,7 @@ function testFieldFormAccess() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][value]" => 1,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match("|$entity_type/manage/(\d+)/edit|", $this->url, $match);
     $id = $match[1];
 
@@ -574,7 +574,7 @@ function testFieldFormAccess() {
       "{$field_name}[$langcode][0][value]" => 2,
       'revision' => TRUE,
     );
-    $this->drupalPost($entity_type . '/manage/' . $id . '/edit', $edit, t('Save'));
+    $this->drupalPostForm($entity_type . '/manage/' . $id . '/edit', $edit, t('Save'));
 
     // Check that the new revision has the expected values.
     $this->container->get('entity.manager')->getStorageController($entity_type)->resetCache(array($id));
@@ -616,7 +616,7 @@ function testFieldFormHiddenWidget() {
     // Create an entity and test that the default value is assigned correctly to
     // the field that uses the hidden widget.
     $this->assertNoField("{$field_name}[$langcode][0][value]", 'The hidden widget is not displayed');
-    $this->drupalPost(NULL, array('user_id' => 1, 'name' => $this->randomName()), t('Save'));
+    $this->drupalPostForm(NULL, array('user_id' => 1, 'name' => $this->randomName()), t('Save'));
     preg_match('|' . $entity_type . '/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test_rev @id has been created.', array('@id' => $id)), 'Entity was created');
@@ -640,7 +640,7 @@ function testFieldFormHiddenWidget() {
     // Update the entity.
     $value = mt_rand(1, 127);
     $edit = array("{$field_name}[$langcode][0][value]" => $value);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText(t('entity_test_rev @id has been updated.', array('@id' => $id)), 'Entity was updated');
     entity_get_controller($entity_type)->resetCache(array($id));
     $entity = entity_load($entity_type, $id);
@@ -655,7 +655,7 @@ function testFieldFormHiddenWidget() {
 
     // Create a new revision.
     $edit = array('revision' => TRUE);
-    $this->drupalPost($entity_type . '/manage/' . $id . '/edit', $edit, t('Save'));
+    $this->drupalPostForm($entity_type . '/manage/' . $id . '/edit', $edit, t('Save'));
 
     // Check that the expected value has been carried over to the new revision.
     entity_get_controller($entity_type)->resetCache(array($id));
diff --git a/core/modules/field/lib/Drupal/field/Tests/NestedFormTest.php b/core/modules/field/lib/Drupal/field/Tests/NestedFormTest.php
index e812ff5..0a8b0f0 100644
--- a/core/modules/field/lib/Drupal/field/Tests/NestedFormTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/NestedFormTest.php
@@ -107,7 +107,7 @@ function testNestedFieldForm() {
       'entity_2[field_unlimited][und][0][value]' => 12,
       'entity_2[field_unlimited][und][1][value]' => 13,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     field_cache_clear();
     $entity_1 = entity_load($entity_type, 1);
     $entity_2 = entity_load($entity_type, 2);
@@ -121,14 +121,14 @@ function testNestedFieldForm() {
     $edit = array(
       'field_unlimited[und][1][value]' => -1,
     );
-    $this->drupalPost('test-entity/nested/1/2', $edit, t('Save'));
+    $this->drupalPostForm('test-entity/nested/1/2', $edit, t('Save'));
     $this->assertRaw(t('%label does not accept the value -1', array('%label' => 'Unlimited field')), 'Entity 1: the field validation error was reported.');
     $error_field = $this->xpath('//input[@id=:id and contains(@class, "error")]', array(':id' => 'edit-field-unlimited-und-1-value'));
     $this->assertTrue($error_field, 'Entity 1: the error was flagged on the correct element.');
     $edit = array(
       'entity_2[field_unlimited][und][1][value]' => -1,
     );
-    $this->drupalPost('test-entity/nested/1/2', $edit, t('Save'));
+    $this->drupalPostForm('test-entity/nested/1/2', $edit, t('Save'));
     $this->assertRaw(t('%label does not accept the value -1', array('%label' => 'Unlimited field')), 'Entity 2: the field validation error was reported.');
     $error_field = $this->xpath('//input[@id=:id and contains(@class, "error")]', array(':id' => 'edit-entity-2-field-unlimited-und-1-value'));
     $this->assertTrue($error_field, 'Entity 2: the error was flagged on the correct element.');
@@ -140,17 +140,17 @@ function testNestedFieldForm() {
       'entity_2[field_unlimited][und][0][_weight]' => 0,
       'entity_2[field_unlimited][und][1][_weight]' => -1,
     );
-    $this->drupalPost('test-entity/nested/1/2', $edit, t('Save'));
+    $this->drupalPostForm('test-entity/nested/1/2', $edit, t('Save'));
     field_cache_clear();
     $this->assertFieldValues($entity_1, 'field_unlimited', Language::LANGCODE_NOT_SPECIFIED, array(3, 2));
     $this->assertFieldValues($entity_2, 'field_unlimited', Language::LANGCODE_NOT_SPECIFIED, array(13, 12));
 
     // Test the 'add more' buttons. Only Ajax submission is tested, because
     // the two 'add more' buttons present in the form have the same #value,
-    // which confuses drupalPost().
+    // which confuses drupalPostForm().
     // 'Add more' button in the first entity:
     $this->drupalGet('test-entity/nested/1/2');
-    $this->drupalPostAJAX(NULL, array(), 'field_unlimited_add_more');
+    $this->drupalPostAjaxForm(NULL, array(), 'field_unlimited_add_more');
     $this->assertFieldByName('field_unlimited[und][0][value]', 3, 'Entity 1: field_unlimited value 0 appears correctly is the form.');
     $this->assertFieldByName('field_unlimited[und][1][value]', 2, 'Entity 1: field_unlimited value 1 appears correctly is the form.');
     $this->assertFieldByName('field_unlimited[und][2][value]', '', 'Entity 1: field_unlimited value 2 appears correctly is the form.');
@@ -161,13 +161,13 @@ function testNestedFieldForm() {
       'entity_2[field_unlimited][und][1][value]' => 14,
       'entity_2[field_unlimited][und][2][value]' => 15,
     );
-    $this->drupalPostAJAX(NULL, $edit, 'entity_2_field_unlimited_add_more');
+    $this->drupalPostAjaxForm(NULL, $edit, 'entity_2_field_unlimited_add_more');
     $this->assertFieldByName('entity_2[field_unlimited][und][0][value]', 13, 'Entity 2: field_unlimited value 0 appears correctly is the form.');
     $this->assertFieldByName('entity_2[field_unlimited][und][1][value]', 14, 'Entity 2: field_unlimited value 1 appears correctly is the form.');
     $this->assertFieldByName('entity_2[field_unlimited][und][2][value]', 15, 'Entity 2: field_unlimited value 2 appears correctly is the form.');
     $this->assertFieldByName('entity_2[field_unlimited][und][3][value]', '', 'Entity 2: an empty widget was added for field_unlimited value 3.');
     // Save the form and check values are saved correctly.
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     field_cache_clear();
     $this->assertFieldValues($entity_1, 'field_unlimited', Language::LANGCODE_NOT_SPECIFIED, array(3, 2));
     $this->assertFieldValues($entity_2, 'field_unlimited', Language::LANGCODE_NOT_SPECIFIED, array(13, 14, 15));
diff --git a/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php b/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php
index d4b95da..5eee2ba 100644
--- a/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/TranslationWebTest.php
@@ -123,7 +123,7 @@ function testFieldFormTranslationRevisions() {
       "{$field_name}[$langcode][0][value]" => $entity->{$field_name}->value,
       'revision' => TRUE,
     );
-    $this->drupalPost($this->entity_type . '/manage/' . $entity->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm($this->entity_type . '/manage/' . $entity->id() . '/edit', $edit, t('Save'));
 
     // Check translation revisions.
     $this->checkTranslationRevisions($entity->id(), $entity->getRevisionId(), $available_langcodes);
diff --git a/core/modules/field/lib/Drupal/field/Tests/Views/FieldUITest.php b/core/modules/field/lib/Drupal/field/Tests/Views/FieldUITest.php
index 5c9b253..f2b577a 100644
--- a/core/modules/field/lib/Drupal/field/Tests/Views/FieldUITest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Views/FieldUITest.php
@@ -58,18 +58,18 @@ public function testHandlerUI() {
     sort($options, SORT_STRING);
     $this->assertEqual($options, array('text_default', 'text_plain', 'text_trimmed'), 'The text formatters for a simple text field appear as expected.');
 
-    $this->drupalPost(NULL, array('options[type]' => 'text_trimmed'), t('Apply'));
+    $this->drupalPostForm(NULL, array('options[type]' => 'text_trimmed'), t('Apply'));
 
     $this->drupalGet($url);
     $this->assertOptionSelected('edit-options-type', 'text_trimmed');
 
     $random_number = rand(100, 400);
-    $this->drupalPost(NULL, array('options[settings][trim_length]' => $random_number), t('Apply'));
+    $this->drupalPostForm(NULL, array('options[settings][trim_length]' => $random_number), t('Apply'));
     $this->drupalGet($url);
     $this->assertFieldByName('options[settings][trim_length]', $random_number, 'The formatter setting got saved.');
 
     // Save the view and test whether the settings are saved.
-    $this->drupalPost('admin/structure/views/view/test_view_fieldapi', array(), t('Save'));
+    $this->drupalPostForm('admin/structure/views/view/test_view_fieldapi', array(), t('Save'));
     $view = views_get_view('test_view_fieldapi');
     $view->initHandlers();
     $this->assertEqual($view->field['field_name_0']->options['type'], 'text_trimmed');
diff --git a/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php b/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php
index 0b5400d..bef1c1d 100644
--- a/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php
@@ -88,7 +88,7 @@ function testReEnabledField() {
       "title" => $this->randomName(),
       "field_telephone[und][0][value]" => "123456789",
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw('<a href="tel:123456789">');
 
     // Disable the telephone module and re-enable it.
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php
index 8d397f1..9116d09 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php
@@ -54,13 +54,13 @@ function setUp() {
    * @param $bundle_path
    *   Admin path of the bundle that the new field is to be attached to.
    * @param $initial_edit
-   *   $edit parameter for drupalPost() on the first step ('Manage fields'
+   *   $edit parameter for drupalPostForm() on the first step ('Manage fields'
    *   screen).
    * @param $field_edit
-   *   $edit parameter for drupalPost() on the second step ('Field settings'
+   *   $edit parameter for drupalPostForm() on the second step ('Field settings'
    *   form).
    * @param $instance_edit
-   *   $edit parameter for drupalPost() on the third step ('Instance settings'
+   *   $edit parameter for drupalPostForm() on the third step ('Instance settings'
    *   form).
    */
   function fieldUIAddNewField($bundle_path, $initial_edit, $field_edit = array(), $instance_edit = array()) {
@@ -71,15 +71,15 @@ function fieldUIAddNewField($bundle_path, $initial_edit, $field_edit = array(),
     $label = $initial_edit['fields[_add_new_field][label]'];
 
     // First step : 'Add new field' on the 'Manage fields' page.
-    $this->drupalPost("$bundle_path/fields",  $initial_edit, t('Save'));
+    $this->drupalPostForm("$bundle_path/fields",  $initial_edit, t('Save'));
     $this->assertRaw(t('These settings apply to the %label field everywhere it is used.', array('%label' => $label)), 'Field settings page was displayed.');
 
     // Second step : 'Field settings' form.
-    $this->drupalPost(NULL, $field_edit, t('Save field settings'));
+    $this->drupalPostForm(NULL, $field_edit, t('Save field settings'));
     $this->assertRaw(t('Updated field %label field settings.', array('%label' => $label)), 'Redirected to instance and widget settings page.');
 
     // Third step : 'Instance settings' form.
-    $this->drupalPost(NULL, $instance_edit, t('Save settings'));
+    $this->drupalPostForm(NULL, $instance_edit, t('Save settings'));
     $this->assertRaw(t('Saved %label configuration.', array('%label' => $label)), 'Redirected to "Manage fields" page.');
 
     // Check that the field appears in the overview form.
@@ -92,20 +92,20 @@ function fieldUIAddNewField($bundle_path, $initial_edit, $field_edit = array(),
    * @param $bundle_path
    *   Admin path of the bundle that the field is to be attached to.
    * @param $initial_edit
-   *   $edit parameter for drupalPost() on the first step ('Manage fields'
+   *   $edit parameter for drupalPostForm() on the first step ('Manage fields'
    *   screen).
    * @param $instance_edit
-   *   $edit parameter for drupalPost() on the second step ('Instance settings'
+   *   $edit parameter for drupalPostForm() on the second step ('Instance settings'
    *   form).
    */
   function fieldUIAddExistingField($bundle_path, $initial_edit, $instance_edit = array()) {
     $label = $initial_edit['fields[_add_existing_field][label]'];
 
     // First step : 'Re-use existing field' on the 'Manage fields' page.
-    $this->drupalPost("$bundle_path/fields", $initial_edit, t('Save'));
+    $this->drupalPostForm("$bundle_path/fields", $initial_edit, t('Save'));
 
     // Second step : 'Instance settings' form.
-    $this->drupalPost(NULL, $instance_edit, t('Save settings'));
+    $this->drupalPostForm(NULL, $instance_edit, t('Save settings'));
     $this->assertRaw(t('Saved %label configuration.', array('%label' => $label)), 'Redirected to "Manage fields" page.');
 
     // Check that the field appears in the overview form.
@@ -130,7 +130,7 @@ function fieldUIDeleteField($bundle_path, $field_name, $label, $bundle_label) {
     $this->assertRaw(t('Are you sure you want to delete the field %label', array('%label' => $label)), 'Delete confirmation was found.');
 
     // Submit confirmation form.
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     $this->assertRaw(t('The field %label has been deleted from the %type content type.', array('%label' => $label, '%type' => $bundle_label)), 'Delete message was found.');
 
     // Check that the field does not appear in the overview form.
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
index d1edd6d..da18637 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
@@ -59,7 +59,7 @@ function testFormatterUI() {
 
     // Change the formatter and check that the summary is updated.
     $edit = array('fields[field_test][type]' => 'field_test_multiple', 'refresh_rows' => 'field_test');
-    $this->drupalPostAJAX(NULL, $edit, array('op' => t('Refresh')));
+    $this->drupalPostAjaxForm(NULL, $edit, array('op' => t('Refresh')));
     $format = 'field_test_multiple';
     $default_settings = \Drupal::service('plugin.manager.field.formatter')->getDefaultSettings($format);
     $setting_name = key($default_settings);
@@ -68,7 +68,7 @@ function testFormatterUI() {
     $this->assertText("$setting_name: $setting_value", 'The expected summary is displayed.');
 
     // Submit the form and check that the display is updated.
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $display = entity_get_display('node', $this->type, 'default');
     $display_options = $display->getComponent('field_test');
     $current_format = $display_options['type'];
@@ -81,17 +81,17 @@ function testFormatterUI() {
 
     // Click on the formatter settings button to open the formatter settings
     // form.
-    $this->drupalPostAJAX(NULL, array(), "field_test_settings_edit");
+    $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit");
 
     // Assert that the field added in
     // field_test_field_formatter_settings_form_alter() is present.
     $fieldname = 'fields[field_test][settings_edit_form][settings][field_test_formatter_settings_form_alter]';
     $this->assertField($fieldname, 'The field added in hook_field_formatter_settings_form_alter() is present on the settings form.');
     $edit = array($fieldname => 'foo');
-    $this->drupalPostAJAX(NULL, $edit, "field_test_plugin_settings_update");
+    $this->drupalPostAjaxForm(NULL, $edit, "field_test_plugin_settings_update");
 
     // Confirm that the settings are updated on the settings form.
-    $this->drupalPostAJAX(NULL, array(), "field_test_settings_edit");
+    $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit");
     $this->assertFieldByName($fieldname, 'foo');
   }
 
@@ -125,7 +125,7 @@ public function testWidgetUI() {
 
     // Change the widget and check that the summary is updated.
     $edit = array('fields[field_test][type]' => 'test_field_widget_multiple', 'refresh_rows' => 'field_test');
-    $this->drupalPostAJAX(NULL, $edit, array('op' => t('Refresh')));
+    $this->drupalPostAjaxForm(NULL, $edit, array('op' => t('Refresh')));
     $widget_type = 'test_field_widget_multiple';
     $default_settings = \Drupal::service('plugin.manager.field.widget')->getDefaultSettings($widget_type);
     $setting_name = key($default_settings);
@@ -134,7 +134,7 @@ public function testWidgetUI() {
     $this->assertText("$setting_name: $setting_value", 'The expected summary is displayed.');
 
     // Submit the form and check that the display is updated.
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $display = entity_get_form_display('node', $this->type, 'default');
     $display_options = $display->getComponent('field_test');
     $current_widget = $display_options['type'];
@@ -146,17 +146,17 @@ public function testWidgetUI() {
     $this->assertText('field_test_field_widget_settings_summary_alter');
 
     // Click on the widget settings button to open the widget settings form.
-    $this->drupalPostAJAX(NULL, array(), "field_test_settings_edit");
+    $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit");
 
     // Assert that the field added in
     // field_test_field_widget_settings_form_alter() is present.
     $fieldname = 'fields[field_test][settings_edit_form][settings][field_test_widget_settings_form_alter]';
     $this->assertField($fieldname, 'The field added in hook_field_widget_settings_form_alter() is present on the settings form.');
     $edit = array($fieldname => 'foo');
-    $this->drupalPostAJAX(NULL, $edit, "field_test_plugin_settings_update");
+    $this->drupalPostAjaxForm(NULL, $edit, "field_test_plugin_settings_update");
 
     // Confirm that the settings are updated on the settings form.
-    $this->drupalPostAJAX(NULL, array(), "field_test_settings_edit");
+    $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit");
     $this->assertFieldByName($fieldname, 'foo');
   }
 
@@ -197,14 +197,14 @@ function testViewModeCustom() {
     $edit = array(
       'fields[field_test][type]' => 'field_test_with_prepare_view',
     );
-    $this->drupalPost('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
     $this->assertNodeViewText($node, 'rss', $output['field_test_with_prepare_view'], "The field is displayed as expected in view modes that use 'default' settings.");
 
     // Specialize the 'rss' mode, check that the field is displayed the same.
     $edit = array(
       "display_modes_custom[rss]" => TRUE,
     );
-    $this->drupalPost('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
     $this->assertNodeViewText($node, 'rss', $output['field_test_with_prepare_view'], "The field is displayed as expected in newly specialized 'rss' mode.");
 
     // Set the field to 'hidden' in the view mode, check that the field is
@@ -212,7 +212,7 @@ function testViewModeCustom() {
     $edit = array(
       'fields[field_test][type]' => 'hidden',
     );
-    $this->drupalPost('admin/structure/types/manage/' . $this->type . '/display/rss', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $this->type . '/display/rss', $edit, t('Save'));
     $this->assertNodeViewNoText($node, 'rss', $value, "The field is hidden in 'rss' mode.");
 
     // Set the view mode back to 'default', check that the field is displayed
@@ -220,14 +220,14 @@ function testViewModeCustom() {
     $edit = array(
       "display_modes_custom[rss]" => FALSE,
     );
-    $this->drupalPost('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
     $this->assertNodeViewText($node, 'rss', $output['field_test_with_prepare_view'], "The field is displayed as expected when 'rss' mode is set back to 'default' settings.");
 
     // Specialize the view mode again.
     $edit = array(
       "display_modes_custom[rss]" => TRUE,
     );
-    $this->drupalPost('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $this->type . '/display', $edit, t('Save'));
     // Check that the previous settings for the view mode have been kept.
     $this->assertNodeViewNoText($node, 'rss', $value, "The previous settings are kept when 'rss' mode is specialized again.");
   }
@@ -261,7 +261,7 @@ function testSingleViewMode() {
     $this->assertNoText('Use custom display settings for the following view modes', 'Custom display settings fieldset found.');
 
     // This may not trigger a notice when 'view_modes_custom' isn't available.
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary . '/display', array(), t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary . '/display', array(), t('Save'));
   }
 
   /**
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php
index 3e09d8f..447d4cf 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php
@@ -132,14 +132,14 @@ function updateField() {
     $edit = array(
       'field[settings][test_field_setting]' => $string,
     );
-    $this->drupalPost(NULL, $edit, t('Save field settings'));
+    $this->drupalPostForm(NULL, $edit, t('Save field settings'));
 
     // Go to the field instance edit page.
     $this->drupalGet('admin/structure/types/manage/' . $this->type . '/fields/' . $instance_id);
     $edit = array(
       'instance[settings][test_instance_setting]' => $string,
     );
-    $this->drupalPost(NULL, $edit, t('Save settings'));
+    $this->drupalPostForm(NULL, $edit, t('Save settings'));
 
     // Assert the field settings are correct.
     $this->assertFieldSettings($this->type, $this->field_name, $string);
@@ -183,7 +183,7 @@ function cardinalitySettings() {
       'field[cardinality]' => 'number',
       'field[cardinality_number]' => '',
     );
-    $this->drupalPost($field_edit_path, $edit, t('Save field settings'));
+    $this->drupalPostForm($field_edit_path, $edit, t('Save field settings'));
     $this->assertText('Number of values is required.');
 
     // Submit a custom number.
@@ -191,7 +191,7 @@ function cardinalitySettings() {
       'field[cardinality]' => 'number',
       'field[cardinality_number]' => 6,
     );
-    $this->drupalPost($field_edit_path, $edit, t('Save field settings'));
+    $this->drupalPostForm($field_edit_path, $edit, t('Save field settings'));
     $this->assertText('Updated field Body field settings.');
     $this->drupalGet($field_edit_path);
     $this->assertFieldByXPath("//select[@name='field[cardinality]']", 'number');
@@ -201,7 +201,7 @@ function cardinalitySettings() {
     $edit = array(
       'field[cardinality]' => FIELD_CARDINALITY_UNLIMITED,
     );
-    $this->drupalPost($field_edit_path, $edit, t('Save field settings'));
+    $this->drupalPostForm($field_edit_path, $edit, t('Save field settings'));
     $this->assertText('Updated field Body field settings.');
     $this->drupalGet($field_edit_path);
     $this->assertFieldByXPath("//select[@name='field[cardinality]']", FIELD_CARDINALITY_UNLIMITED);
@@ -249,7 +249,7 @@ function testFieldPrefix() {
       'fields[_add_new_field][label]' => $field_exceed_max_length_label,
       'fields[_add_new_field][field_name]' => $field_exceed_max_length_input,
     );
-    $this->drupalPost('admin/structure/types/manage/' . $this->type . '/fields', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $this->type . '/fields', $edit, t('Save'));
     $this->assertText('New field name cannot be longer than 22 characters but is currently 23 characters long.');
 
     // Create a valid field.
@@ -293,12 +293,12 @@ function testDefaultValue() {
 
     // Check that invalid default values are rejected.
     $edit = array($element_name => '-1');
-    $this->drupalPost($admin_path, $edit, t('Save settings'));
+    $this->drupalPostForm($admin_path, $edit, t('Save settings'));
     $this->assertText("$field_name does not accept the value -1", 'Form vaildation failed.');
 
     // Check that the default value is saved.
     $edit = array($element_name => '1');
-    $this->drupalPost($admin_path, $edit, t('Save settings'));
+    $this->drupalPostForm($admin_path, $edit, t('Save settings'));
     $this->assertText("Saved $field_name configuration", 'The form was successfully submitted.');
     field_info_cache_clear();
     $instance = field_info_instance('node', $field_name, $this->type);
@@ -310,7 +310,7 @@ function testDefaultValue() {
 
     // Check that the default value can be emptied.
     $edit = array($element_name => '');
-    $this->drupalPost(NULL, $edit, t('Save settings'));
+    $this->drupalPostForm(NULL, $edit, t('Save settings'));
     $this->assertText("Saved $field_name configuration", 'The form was successfully submitted.');
     field_info_cache_clear();
     $instance = field_info_instance('node', $field_name, $this->type);
@@ -454,7 +454,7 @@ function testRenameBundle() {
     $options = array(
       'type' => $type2,
     );
-    $this->drupalPost('admin/structure/types/manage/' . $this->type, $options, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $this->type, $options, t('Save content type'));
     $this->manageFieldsPage($type2);
   }
 
@@ -470,7 +470,7 @@ function testDuplicateFieldName() {
       'fields[_add_new_field][type]' => 'taxonomy_term_reference',
     );
     $url = 'admin/structure/types/manage/' . $this->type . '/fields';
-    $this->drupalPost($url, $edit, t('Save'));
+    $this->drupalPostForm($url, $edit, t('Save'));
 
     $this->assertText(t('The machine-readable name is already in use. It must be unique.'));
     $this->assertUrl($url, array(), 'Stayed on the same page.');
@@ -522,12 +522,12 @@ function testHelpDescriptions() {
     $edit = array(
       'instance[description]' => '<strong>Test with an upload field.',
     );
-    $this->drupalPost('admin/structure/types/manage/article/fields/node.article.field_image', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/article/fields/node.article.field_image', $edit, t('Save settings'));
 
     $edit = array(
       'instance[description]' => '<em>Test with a non upload field.',
     );
-    $this->drupalPost('admin/structure/types/manage/article/fields/node.article.field_tags', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/article/fields/node.article.field_tags', $edit, t('Save settings'));
 
     $this->drupalGet('node/add/article');
     $this->assertRaw('<strong>Test with an upload field.</strong>');
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php
index 11d8322..0773c59 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php
@@ -48,7 +48,7 @@ function testNodeDisplay() {
       $edit = array(
         "fields[$field_name][type]" => $formatter,
       );
-      $this->drupalPost("admin/structure/types/manage/$type_name/display", $edit, t('Save'));
+      $this->drupalPostForm("admin/structure/types/manage/$type_name/display", $edit, t('Save'));
       $this->drupalGet('node/' . $node->id());
       $this->assertNoText($field_name, format_string('Field label is hidden when no file attached for formatter %formatter', array('%formatter' => $formatter)));
     }
@@ -70,7 +70,7 @@ function testNodeDisplay() {
 
     // Turn the "display" option off and check that the file is no longer displayed.
     $edit = array($field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][display]' => FALSE);
-    $this->drupalPost('node/' . $nid . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $nid . '/edit', $edit, t('Save and keep published'));
 
     $this->assertNoRaw($default_output, 'Field is hidden when "display" option is unchecked.');
 
@@ -80,7 +80,7 @@ function testNodeDisplay() {
       $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][description]' => $description,
       $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][display]' => TRUE,
     );
-    $this->drupalPost('node/' . $nid . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $nid . '/edit', $edit, t('Save and keep published'));
     $this->assertText($description);
   }
 }
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php
index 4a94de2..ba46dc6 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php
@@ -50,12 +50,12 @@ function testFileFieldRSSContent() {
     $edit = array(
       "display_modes_custom[rss]" => '1',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Change the format to 'RSS enclosure'.
     $this->drupalGet("admin/structure/types/manage/$type_name/display/rss");
     $edit = array("fields[$field_name][type]" => 'file_rss_enclosure');
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Create a new node with a file field set. Promote to frontpage
     // needs to be set so this node will appear in the RSS feed.
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php
index 987fead..d54e596 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php
@@ -71,7 +71,7 @@ function testRevisions() {
 
     // Save a new version of the node without any changes.
     // Check that the file is still the same as the previous revision.
-    $this->drupalPost('node/' . $nid . '/edit', array('revision' => '1'), t('Save and keep published'));
+    $this->drupalPostForm('node/' . $nid . '/edit', array('revision' => '1'), t('Save and keep published'));
     $node = node_load($nid, TRUE);
     $node_file_r3 = file_load($node->{$field_name}->target_id);
     $node_vid_r3 = $node->getRevisionId();
@@ -79,7 +79,7 @@ function testRevisions() {
     $this->assertFileIsPermanent($node_file_r3, 'New revision file is permanent.');
 
     // Revert to the first revision and check that the original file is active.
-    $this->drupalPost('node/' . $nid . '/revisions/' . $node_vid_r1 . '/revert', array(), t('Revert'));
+    $this->drupalPostForm('node/' . $nid . '/revisions/' . $node_vid_r1 . '/revert', array(), t('Revert'));
     $node = node_load($nid, TRUE);
     $node_file_r4 = file_load($node->{$field_name}->target_id);
     $this->assertEqual($node_file_r1->id(), $node_file_r4->id(), 'Original revision file still in place after reverting to the original revision.');
@@ -87,7 +87,7 @@ function testRevisions() {
 
     // Delete the second revision and check that the file is kept (since it is
     // still being used by the third revision).
-    $this->drupalPost('node/' . $nid . '/revisions/' . $node_vid_r2 . '/delete', array(), t('Delete'));
+    $this->drupalPostForm('node/' . $nid . '/revisions/' . $node_vid_r2 . '/delete', array(), t('Delete'));
     $this->assertFileExists($node_file_r3, 'Second file is still available after deleting second revision, since it is being used by the third revision.');
     $this->assertFileEntryExists($node_file_r3, 'Second file entry is still available after deleting second revision, since it is being used by the third revision.');
     $this->assertFileIsPermanent($node_file_r3, 'Second file entry is still permanent after deleting second revision, since it is being used by the third revision.');
@@ -100,7 +100,7 @@ function testRevisions() {
     $this->drupalGet('user/' . $user->id() . '/edit');
 
     // Delete the third revision and check that the file is not deleted yet.
-    $this->drupalPost('node/' . $nid . '/revisions/' . $node_vid_r3 . '/delete', array(), t('Delete'));
+    $this->drupalPostForm('node/' . $nid . '/revisions/' . $node_vid_r3 . '/delete', array(), t('Delete'));
     $this->assertFileExists($node_file_r3, 'Second file is still available after deleting third revision, since it is being used by the user.');
     $this->assertFileEntryExists($node_file_r3, 'Second file entry is still available after deleting third revision, since it is being used by the user.');
     $this->assertFileIsPermanent($node_file_r3, 'Second file entry is still permanent after deleting third revision, since it is being used by the user.');
@@ -129,7 +129,7 @@ function testRevisions() {
     $this->assertFileEntryNotExists($node_file_r3, 'Second file entry is now deleted after deleting third revision, since it is no longer being used by any other nodes.');
 
     // Delete the entire node and check that the original file is deleted.
-    $this->drupalPost('node/' . $nid . '/delete', array(), t('Delete'));
+    $this->drupalPostForm('node/' . $nid . '/delete', array(), t('Delete'));
     // Call system_cron() to clean up the file. Make sure the timestamp
     // of the file is older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
     db_update('file_managed')
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php
index 866da45..b18ffdf 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php
@@ -168,7 +168,7 @@ function uploadNodeFile($file, $field_name, $nid_or_type, $new_revision = TRUE,
       $name .= '[]';
     }
     $edit[$name] = drupal_realpath($file->getFileUri());
-    $this->drupalPost("node/$nid/edit", $edit, t('Save and keep published'));
+    $this->drupalPostForm("node/$nid/edit", $edit, t('Save and keep published'));
 
     return $nid;
   }
@@ -183,8 +183,8 @@ function removeNodeFile($nid, $new_revision = TRUE) {
       'revision' => (string) (int) $new_revision,
     );
 
-    $this->drupalPost('node/' . $nid . '/edit', array(), t('Remove'));
-    $this->drupalPost(NULL, $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $nid . '/edit', array(), t('Remove'));
+    $this->drupalPostForm(NULL, $edit, t('Save and keep published'));
   }
 
   /**
@@ -196,8 +196,8 @@ function replaceNodeFile($file, $field_name, $nid, $new_revision = TRUE) {
       'revision' => (string) (int) $new_revision,
     );
 
-    $this->drupalPost('node/' . $nid . '/edit', array(), t('Remove'));
-    $this->drupalPost(NULL, $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $nid . '/edit', array(), t('Remove'));
+    $this->drupalPostForm(NULL, $edit, t('Save and keep published'));
   }
 
   /**
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php
index ed9aca1..19a3e31 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php
@@ -37,7 +37,7 @@ function testRequired() {
 
     // Try to post a new node without uploading a file.
     $edit = array("title" => $this->randomName());
-    $this->drupalPost('node/add/' . $type_name, $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/' . $type_name, $edit, t('Save and publish'));
     $this->assertRaw(t('!title field is required.', array('!title' => $instance['label'])), 'Node save failed when required file field was empty.');
 
     // Create a new node with the uploaded file.
@@ -56,7 +56,7 @@ function testRequired() {
 
     // Try to post a new node without uploading a file in the multivalue field.
     $edit = array('title' => $this->randomName());
-    $this->drupalPost('node/add/' . $type_name, $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/' . $type_name, $edit, t('Save and publish'));
     $this->assertRaw(t('!title field is required.', array('!title' => $instance['label'])), 'Node save failed when required multiple value file field was empty.');
 
     // Create a new node with the uploaded file into the multivalue field.
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php
index 3c6aa76..297875c 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php
@@ -42,7 +42,7 @@ function testSingleValuedWidget() {
     foreach (array('nojs', 'js') as $type) {
       // Create a new node with the uploaded file and ensure it got uploaded
       // successfully.
-      // @todo This only tests a 'nojs' submission, because drupalPostAJAX()
+      // @todo This only tests a 'nojs' submission, because drupalPostAjaxForm()
       //   does not yet support file uploads.
       $nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
       $node = node_load($nid, TRUE);
@@ -61,11 +61,11 @@ function testSingleValuedWidget() {
       // "Click" the remove button (emulating either a nojs or js submission).
       switch ($type) {
         case 'nojs':
-          $this->drupalPost(NULL, array(), t('Remove'));
+          $this->drupalPostForm(NULL, array(), t('Remove'));
           break;
         case 'js':
           $button = $this->xpath('//input[@type="submit" and @value="' . t('Remove') . '"]');
-          $this->drupalPostAJAX(NULL, array(), array((string) $button[0]['name'] => (string) $button[0]['value']));
+          $this->drupalPostAjaxForm(NULL, array(), array((string) $button[0]['name'] => (string) $button[0]['value']));
           break;
       }
 
@@ -77,7 +77,7 @@ function testSingleValuedWidget() {
       $this->assertTrue(isset($label[0]), 'Label for upload found.');
 
       // Save the node and ensure it does not have the file.
-      $this->drupalPost(NULL, array(), t('Save and keep published'));
+      $this->drupalPostForm(NULL, array(), t('Save and keep published'));
       $node = node_load($nid, TRUE);
       $this->assertTrue(empty($node->{$field_name}->target_id), 'File was successfully removed from the node.');
     }
@@ -89,7 +89,7 @@ function testSingleValuedWidget() {
   function testMultiValuedWidget() {
     $type_name = 'article';
     // Use explicit names instead of random names for those fields, because of a
-    // bug in drupalPost() with multiple file uploads in one form, where the
+    // bug in drupalPostForm() with multiple file uploads in one form, where the
     // order of uploads depends on the order in which the upload elements are
     // added to the $form (which, in the current implementation of
     // FileStorage::listAll(), comes down to the alphabetical order on field
@@ -107,16 +107,16 @@ function testMultiValuedWidget() {
       // until after the 3rd file, and after that, isn't displayed. Because
       // SimpleTest triggers the last button with a given name, so upload to the
       // second field first.
-      // @todo This is only testing a non-Ajax upload, because drupalPostAJAX()
+      // @todo This is only testing a non-Ajax upload, because drupalPostAjaxForm()
       //   does not yet emulate jQuery's file upload.
       //
       $this->drupalGet("node/add/$type_name");
       foreach (array($field_name2, $field_name) as $each_field_name) {
         for ($delta = 0; $delta < 3; $delta++) {
           $edit = array('files[' . $each_field_name . '_' . Language::LANGCODE_NOT_SPECIFIED . '_' . $delta . '][]' => drupal_realpath($test_file->getFileUri()));
-          // If the Upload button doesn't exist, drupalPost() will automatically
+          // If the Upload button doesn't exist, drupalPostForm() will automatically
           // fail with an assertion message.
-          $this->drupalPost(NULL, $edit, t('Upload'));
+          $this->drupalPostForm(NULL, $edit, t('Upload'));
         }
       }
       $this->assertNoFieldByXpath('//input[@type="submit"]', t('Upload'), 'After uploading 3 files for each field, the "Upload" button is no longer displayed.');
@@ -151,24 +151,24 @@ function testMultiValuedWidget() {
           $button_name = $current_field_name . '_' . Language::LANGCODE_NOT_SPECIFIED . '_' . $delta . '_remove_button';
           switch ($type) {
             case 'nojs':
-              // drupalPost() takes a $submit parameter that is the value of the
+              // drupalPostForm() takes a $submit parameter that is the value of the
               // button whose click we want to emulate. Since we have multiple
               // buttons with the value "Remove", and want to control which one we
               // use, we change the value of the other ones to something else.
               // Since non-clicked buttons aren't included in the submitted POST
-              // data, and since drupalPost() will result in $this being updated
+              // data, and since drupalPostForm() will result in $this being updated
               // with a newly rebuilt form, this doesn't cause problems.
               foreach ($buttons as $button) {
                 if ($button['name'] != $button_name) {
                   $button['value'] = 'DUMMY';
                 }
               }
-              $this->drupalPost(NULL, array(), t('Remove'));
+              $this->drupalPostForm(NULL, array(), t('Remove'));
               break;
             case 'js':
-              // drupalPostAJAX() lets us target the button precisely, so we don't
+              // drupalPostAjaxForm() lets us target the button precisely, so we don't
               // require the workaround used above for nojs.
-              $this->drupalPostAJAX(NULL, array(), array($button_name => t('Remove')));
+              $this->drupalPostAjaxForm(NULL, array(), array($button_name => t('Remove')));
               break;
           }
           $num_expected_remove_buttons--;
@@ -191,7 +191,7 @@ function testMultiValuedWidget() {
       $this->assertNoFieldByXPath('//input[@type="submit"]', t('Remove'), format_string('After removing all files, there is no "Remove" button displayed (JSMode=%type).', array('%type' => $type)));
 
       // Save the node and ensure it does not have any files.
-      $this->drupalPost(NULL, array('title' => $this->randomName()), t('Save and publish'));
+      $this->drupalPostForm(NULL, array('title' => $this->randomName()), t('Save and publish'));
       $matches = array();
       preg_match('/node\/([0-9]+)/', $this->getUrl(), $matches);
       $nid = $matches[1];
@@ -213,7 +213,7 @@ function testPrivateFileSetting() {
 
     // Change the field setting to make its files private, and upload a file.
     $edit = array('field[settings][uri_scheme]' => 'private');
-    $this->drupalPost("admin/structure/types/manage/$type_name/fields/$instance->id/field", $edit, t('Save field settings'));
+    $this->drupalPostForm("admin/structure/types/manage/$type_name/fields/$instance->id/field", $edit, t('Save field settings'));
     $nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
     $node = node_load($nid, TRUE);
     $node_file = file_load($node->{$field_name}->target_id);
@@ -255,10 +255,10 @@ function testPrivateFileComment() {
       'fields[_add_new_field][field_name]' => $name = strtolower($this->randomName()),
       'fields[_add_new_field][type]' => 'file',
     );
-    $this->drupalPost('admin/structure/types/manage/article/comment/fields', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/article/comment/fields', $edit, t('Save'));
     $edit = array('field[settings][uri_scheme]' => 'private');
-    $this->drupalPost(NULL, $edit, t('Save field settings'));
-    $this->drupalPost(NULL, array(), t('Save settings'));
+    $this->drupalPostForm(NULL, $edit, t('Save field settings'));
+    $this->drupalPostForm(NULL, array(), t('Save settings'));
 
     // Manually clear cache on the tester side.
     field_info_cache_clear();
@@ -267,7 +267,7 @@ function testPrivateFileComment() {
     $edit = array(
       'title' => $this->randomName(),
     );
-    $this->drupalPost('node/add/article', $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
     $node = $this->drupalGetNodeByTitle($edit['title']);
 
     // Add a comment with a file.
@@ -276,7 +276,7 @@ function testPrivateFileComment() {
       'files[field_' . $name . '_' . Language::LANGCODE_NOT_SPECIFIED . '_' . 0 . ']' => drupal_realpath($text_file->getFileUri()),
       'comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]' => $comment_body = $this->randomName(),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Get the comment ID.
     preg_match('/comment-([0-9]+)/', $this->getUrl(), $matches);
@@ -301,7 +301,7 @@ function testPrivateFileComment() {
 
     // Unpublishes node.
     $this->drupalLogin($this->admin_user);
-    $this->drupalPost('node/' . $node->id() . '/edit', array(), t('Save and unpublish'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', array(), t('Save and unpublish'));
 
     // Ensures normal user can no longer download the file.
     $this->drupalLogin($user);
@@ -331,11 +331,11 @@ function testWidgetValidation() {
       $edit[$name] = drupal_realpath($test_file_image->getFileUri());
       switch ($type) {
         case 'nojs':
-          $this->drupalPost(NULL, $edit, t('Upload'));
+          $this->drupalPostForm(NULL, $edit, t('Upload'));
           break;
         case 'js':
           $button = $this->xpath('//input[@type="submit" and @value="' . t('Upload') . '"]');
-          $this->drupalPostAJAX(NULL, $edit, array((string) $button[0]['name'] => (string) $button[0]['value']));
+          $this->drupalPostAjaxForm(NULL, $edit, array((string) $button[0]['name'] => (string) $button[0]['value']));
           break;
       }
       $error_message = t('Only files with the following extensions are allowed: %files-allowed.', array('%files-allowed' => 'txt'));
@@ -345,11 +345,11 @@ function testWidgetValidation() {
       $edit[$name] = drupal_realpath($test_file_text->getFileUri());
       switch ($type) {
         case 'nojs':
-          $this->drupalPost(NULL, $edit, t('Upload'));
+          $this->drupalPostForm(NULL, $edit, t('Upload'));
           break;
         case 'js':
           $button = $this->xpath('//input[@type="submit" and @value="' . t('Upload') . '"]');
-          $this->drupalPostAJAX(NULL, $edit, array((string) $button[0]['name'] => (string) $button[0]['value']));
+          $this->drupalPostAjaxForm(NULL, $edit, array((string) $button[0]['name'] => (string) $button[0]['value']));
           break;
       }
       $this->assertNoRaw($error_message, t('Validation error removed when file with correct extension uploaded (JSMode=%type).', array('%type' => $type)));
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileListingTest.php b/core/modules/file/lib/Drupal/file/Tests/FileListingTest.php
index 8321cf1..12177f2 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileListingTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileListingTest.php
@@ -81,7 +81,7 @@ function testFileListingPages() {
       $edit = array(
         'files[file_' . Language::LANGCODE_NOT_SPECIFIED . '_' . 0 . ']' => drupal_realpath($file->getFileUri()),
       );
-      $this->drupalPost(NULL, $edit, t('Save'));
+      $this->drupalPostForm(NULL, $edit, t('Save'));
       $node = entity_load('node', $node->id());
     }
 
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileManagedFileElementTest.php b/core/modules/file/lib/Drupal/file/Tests/FileManagedFileElementTest.php
index bf57606..94b34ee 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileManagedFileElementTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileManagedFileElementTest.php
@@ -41,19 +41,19 @@ function testManagedFile() {
           $file_field_name = $multiple ? 'files[' . $input_base_name . '][]' : 'files[' . $input_base_name . ']';
 
           // Submit without a file.
-          $this->drupalPost($path, array(), t('Save'));
+          $this->drupalPostForm($path, array(), t('Save'));
           $this->assertRaw(t('The file ids are %fids.', array('%fids' => implode(',', array()))), 'Submitted without a file.');
 
           // Submit a new file, without using the Upload button.
           $last_fid_prior = $this->getLastFileId();
           $edit = array($file_field_name => drupal_realpath($test_file->getFileUri()));
-          $this->drupalPost($path, $edit, t('Save'));
+          $this->drupalPostForm($path, $edit, t('Save'));
           $last_fid = $this->getLastFileId();
           $this->assertTrue($last_fid > $last_fid_prior, 'New file got saved.');
           $this->assertRaw(t('The file ids are %fids.', array('%fids' => implode(',', array($last_fid)))), 'Submit handler has correct file info.');
 
           // Submit no new input, but with a default file.
-          $this->drupalPost($path . '/' . $last_fid, array(), t('Save'));
+          $this->drupalPostForm($path . '/' . $last_fid, array(), t('Save'));
           $this->assertRaw(t('The file ids are %fids.', array('%fids' => implode(',', array($last_fid)))), 'Empty submission did not change an existing file.');
 
           // Now, test the Upload and Remove buttons, with and without Ajax.
@@ -63,14 +63,14 @@ function testManagedFile() {
             $this->drupalGet($path);
             $edit = array($file_field_name => drupal_realpath($test_file->getFileUri()));
             if ($ajax) {
-              $this->drupalPostAJAX(NULL, $edit, $input_base_name . '_upload_button');
+              $this->drupalPostAjaxForm(NULL, $edit, $input_base_name . '_upload_button');
             }
             else {
-              $this->drupalPost(NULL, $edit, t('Upload'));
+              $this->drupalPostForm(NULL, $edit, t('Upload'));
             }
             $last_fid = $this->getLastFileId();
             $this->assertTrue($last_fid > $last_fid_prior, 'New file got uploaded.');
-            $this->drupalPost(NULL, array(), t('Save'));
+            $this->drupalPostForm(NULL, array(), t('Save'));
             $this->assertRaw(t('The file ids are %fids.', array('%fids' => implode(',', array($last_fid)))), 'Submit handler has correct file info.');
 
             // Remove, then Submit.
@@ -82,22 +82,22 @@ function testManagedFile() {
             }
             $this->drupalGet($path . '/' . $last_fid);
             if ($ajax) {
-              $this->drupalPostAJAX(NULL, $remove_edit, $input_base_name . '_remove_button');
+              $this->drupalPostAjaxForm(NULL, $remove_edit, $input_base_name . '_remove_button');
             }
             else {
-              $this->drupalPost(NULL, $remove_edit, $remove_button_title);
+              $this->drupalPostForm(NULL, $remove_edit, $remove_button_title);
             }
-            $this->drupalPost(NULL, array(), t('Save'));
+            $this->drupalPostForm(NULL, array(), t('Save'));
             $this->assertRaw(t('The file ids are %fids.', array('%fids' => '')), 'Submission after file removal was successful.');
 
             // Upload, then Remove, then Submit.
             $this->drupalGet($path);
             $edit = array($file_field_name => drupal_realpath($test_file->getFileUri()));
             if ($ajax) {
-              $this->drupalPostAJAX(NULL, $edit, $input_base_name . '_upload_button');
+              $this->drupalPostAjaxForm(NULL, $edit, $input_base_name . '_upload_button');
             }
             else {
-              $this->drupalPost(NULL, $edit, t('Upload'));
+              $this->drupalPostForm(NULL, $edit, t('Upload'));
             }
             $remove_edit = array();
             if ($multiple) {
@@ -105,13 +105,13 @@ function testManagedFile() {
               $remove_edit = array($selected_checkbox => '1');
             }
             if ($ajax) {
-              $this->drupalPostAJAX(NULL, $remove_edit, $input_base_name . '_remove_button');
+              $this->drupalPostAjaxForm(NULL, $remove_edit, $input_base_name . '_remove_button');
             }
             else {
-              $this->drupalPost(NULL, $remove_edit, $remove_button_title);
+              $this->drupalPostForm(NULL, $remove_edit, $remove_button_title);
             }
 
-            $this->drupalPost(NULL, array(), t('Save'));
+            $this->drupalPostForm(NULL, array(), t('Save'));
             $this->assertRaw(t('The file ids are %fids.', array('%fids' => '')), 'Submission after file upload and removal was successful.');
           }
         }
@@ -126,24 +126,24 @@ function testManagedFile() {
     $this->drupalGet($path);
 
     // Add a single file to the upload field.
-    $this->drupalPost(NULL, $edit, t('Upload'));
+    $this->drupalPostForm(NULL, $edit, t('Upload'));
     $fid_list[] = $this->getLastFileId();
     $this->assertFieldByXpath('//input[@name="nested[file][file_' . $fid_list[0] . '][selected]"]', NULL, 'First file successfully uploaded to multiple file element.');
 
     // Add another file to the same upload field.
-    $this->drupalPost(NULL, $edit, t('Upload'));
+    $this->drupalPostForm(NULL, $edit, t('Upload'));
     $fid_list[] = $this->getLastFileId();
     $this->assertFieldByXpath('//input[@name="nested[file][file_' . $fid_list[1] . '][selected]"]', NULL, 'Second file successfully uploaded to multiple file element.');
 
     // Save the entire form.
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $this->assertRaw(t('The file ids are %fids.', array('%fids' => implode(',', $fid_list))), 'Two files saved into a single multiple file element.');
 
     // Delete only the first file.
     $edit = array(
       'nested[file][file_' . $fid_list[0] . '][selected]' => '1',
     );
-    $this->drupalPost($path . '/' . implode(',', $fid_list), $edit, t('Remove selected'));
+    $this->drupalPostForm($path . '/' . implode(',', $fid_list), $edit, t('Remove selected'));
 
     // Check that the first file has been deleted but not the second.
     $this->assertNoFieldByXpath('//input[@name="nested[file][file_' . $fid_list[0] . '][selected]"]', NULL, 'An individual file can be deleted from a multiple file element.');
diff --git a/core/modules/file/lib/Drupal/file/Tests/SaveUploadTest.php b/core/modules/file/lib/Drupal/file/Tests/SaveUploadTest.php
index f600ea4..15e007b 100644
--- a/core/modules/file/lib/Drupal/file/Tests/SaveUploadTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/SaveUploadTest.php
@@ -55,7 +55,7 @@ function setUp() {
       'file_test_replace' => FILE_EXISTS_REPLACE,
       'files[file_test_upload]' => drupal_realpath($this->image->getFileUri()),
     );
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertRaw(t('You WIN!'), 'Found the success message.');
 
@@ -82,7 +82,7 @@ function testNormal() {
     // Upload a second file.
     $image2 = current($this->drupalGetTestFiles('image'));
     $edit = array('files[file_test_upload]' => drupal_realpath($image2->uri));
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertRaw(t('You WIN!'));
     $max_fid_after = db_query('SELECT MAX(fid) AS fid FROM {file_managed}')->fetchField();
@@ -108,7 +108,7 @@ function testNormal() {
       'files[file_test_upload]' => $image3_realpath,
       'file_subdir' => $dir,
     );
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertRaw(t('You WIN!'));
     $this->assertTrue(is_file('temporary://' . $dir . '/' . trim(drupal_basename($image3_realpath))));
@@ -129,7 +129,7 @@ function testHandleExtension() {
       'extensions' => $extensions,
     );
 
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $message = t('Only files with the following extensions are allowed:') . ' <em class="placeholder">' . $extensions . '</em>';
     $this->assertRaw($message, 'Cannot upload a disallowed extension');
@@ -149,7 +149,7 @@ function testHandleExtension() {
       'extensions' => $extensions,
     );
 
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertNoRaw(t('Only files with the following extensions are allowed:'), 'Can upload an allowed extension.');
     $this->assertRaw(t('You WIN!'), 'Found the success message.');
@@ -166,7 +166,7 @@ function testHandleExtension() {
       'files[file_test_upload]' => drupal_realpath($this->image->getFileUri()),
       'allow_all_extensions' => TRUE,
     );
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertNoRaw(t('Only files with the following extensions are allowed:'), 'Can upload any extension.');
     $this->assertRaw(t('You WIN!'), 'Found the success message.');
@@ -189,7 +189,7 @@ function testHandleDangerousFile() {
       'extensions' => 'php',
     );
 
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $message = t('For security reasons, your upload has been renamed to') . ' <em class="placeholder">' . $this->phpfile->filename . '.txt' . '</em>';
     $this->assertRaw($message, 'Dangerous file was renamed.');
@@ -205,7 +205,7 @@ function testHandleDangerousFile() {
     // Reset the hook counters.
     file_test_reset();
 
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertNoRaw(t('For security reasons, your upload has been renamed'), 'Found no security message.');
     $this->assertRaw(t('File name is !filename', array('!filename' => $this->phpfile->filename)), 'Dangerous file was not renamed when insecure uploads is TRUE.');
@@ -239,7 +239,7 @@ function testHandleFileMunge() {
     $munged_filename = substr($munged_filename, 0, strrpos($munged_filename, '.'));
     $munged_filename .= '_.' . $this->image_extension;
 
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertRaw(t('For security reasons, your upload has been renamed'), 'Found security message.');
     $this->assertRaw(t('File name is !filename', array('!filename' => $munged_filename)), 'File was successfully munged.');
@@ -257,7 +257,7 @@ function testHandleFileMunge() {
       'allow_all_extensions' => TRUE,
     );
 
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertNoRaw(t('For security reasons, your upload has been renamed'), 'Found no security message.');
     $this->assertRaw(t('File name is !filename', array('!filename' => $this->image->getFilename())), 'File was not munged when allowing any extension.');
@@ -275,7 +275,7 @@ function testExistingRename() {
       'file_test_replace' => FILE_EXISTS_RENAME,
       'files[file_test_upload]' => drupal_realpath($this->image->getFileUri())
     );
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertRaw(t('You WIN!'), 'Found the success message.');
 
@@ -291,7 +291,7 @@ function testExistingReplace() {
       'file_test_replace' => FILE_EXISTS_REPLACE,
       'files[file_test_upload]' => drupal_realpath($this->image->getFileUri())
     );
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertRaw(t('You WIN!'), 'Found the success message.');
 
@@ -307,7 +307,7 @@ function testExistingError() {
       'file_test_replace' => FILE_EXISTS_ERROR,
       'files[file_test_upload]' => drupal_realpath($this->image->getFileUri())
     );
-    $this->drupalPost('file-test/upload', $edit, t('Submit'));
+    $this->drupalPostForm('file-test/upload', $edit, t('Submit'));
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
     $this->assertRaw(t('Epic upload FAIL!'), 'Found the failure message.');
 
@@ -319,7 +319,7 @@ function testExistingError() {
    * Test for no failures when not uploading a file.
    */
   function testNoUpload() {
-    $this->drupalPost('file-test/upload', array(), t('Submit'));
+    $this->drupalPostForm('file-test/upload', array(), t('Submit'));
     $this->assertNoRaw(t('Epic upload FAIL!'), 'Failure message not found.');
   }
 }
diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterAdminTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterAdminTest.php
index 0788fb5..54338b4 100644
--- a/core/modules/filter/lib/Drupal/filter/Tests/FilterAdminTest.php
+++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterAdminTest.php
@@ -61,7 +61,7 @@ function testFormatAdmin() {
       'format' => $format_id,
       'name' => $name,
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
 
     // Verify default weight of the text format.
     $this->drupalGet('admin/config/content/formats');
@@ -71,7 +71,7 @@ function testFormatAdmin() {
     $edit = array(
       "formats[$format_id][weight]" => 5,
     );
-    $this->drupalPost('admin/config/content/formats', $edit, t('Save changes'));
+    $this->drupalPostForm('admin/config/content/formats', $edit, t('Save changes'));
     $this->assertFieldByName("formats[$format_id][weight]", 5, 'Text format weight was saved.');
 
     // Edit text format.
@@ -87,7 +87,7 @@ function testFormatAdmin() {
       array('%href' => 'admin/config/content/formats/manage/' . $format_id)
     ));
     $this->drupalGet('admin/config/content/formats/manage/' . $format_id);
-    $this->drupalPost(NULL, array(), t('Save configuration'));
+    $this->drupalPostForm(NULL, array(), t('Save configuration'));
 
     // Verify that the custom weight of the text format has been retained.
     $this->drupalGet('admin/config/content/formats');
@@ -96,7 +96,7 @@ function testFormatAdmin() {
     // Disable text format.
     $this->assertLinkByHref('admin/config/content/formats/manage/' . $format_id . '/disable');
     $this->drupalGet('admin/config/content/formats/manage/' . $format_id . '/disable');
-    $this->drupalPost(NULL, array(), t('Disable'));
+    $this->drupalPostForm(NULL, array(), t('Disable'));
 
     // Verify that disabled text format no longer exists.
     $this->drupalGet('admin/config/content/formats/manage/' . $format_id);
@@ -108,7 +108,7 @@ function testFormatAdmin() {
       'format' => $format_id,
       'name' => 'New format',
     );
-    $this->drupalPost('admin/config/content/formats/add', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/add', $edit, t('Save configuration'));
     $this->assertText('The machine-readable name is already in use. It must be unique.');
 
     // Attempt to create a format of the same human readable name as the
@@ -117,7 +117,7 @@ function testFormatAdmin() {
       'format' => 'new_format',
       'name' => $name,
     );
-    $this->drupalPost('admin/config/content/formats/add', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/add', $edit, t('Save configuration'));
     $this->assertRaw(t('Text format names must be unique. A format named %name already exists.', array(
       '%name' => $name,
     )));
@@ -150,7 +150,7 @@ function testFilterAdmin() {
     // Add an additional tag.
     $edit = array();
     $edit['filters[filter_html][settings][allowed_html]'] = '<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <quote>';
-    $this->drupalPost('admin/config/content/formats/manage/' . $restricted, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $restricted, $edit, t('Save configuration'));
     $this->assertUrl('admin/config/content/formats');
     $this->drupalGet('admin/config/content/formats/manage/' . $restricted);
     $this->assertFieldByName('filters[filter_html][settings][allowed_html]', $edit['filters[filter_html][settings][allowed_html]'], 'Allowed HTML tag added.');
@@ -167,7 +167,7 @@ function testFilterAdmin() {
     $edit = array();
     $edit['filters[' . $second_filter . '][weight]'] = 1;
     $edit['filters[' . $first_filter . '][weight]'] = 2;
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertUrl('admin/config/content/formats');
     $this->drupalGet('admin/config/content/formats/manage/' . $restricted);
     $this->assertFieldByName('filters[' . $second_filter . '][weight]', 1, 'Order saved successfully.');
@@ -195,7 +195,7 @@ function testFilterAdmin() {
     $edit['roles[' . DRUPAL_AUTHENTICATED_RID . ']'] = 1;
     $edit['filters[' . $second_filter . '][status]'] = TRUE;
     $edit['filters[' . $first_filter . '][status]'] = TRUE;
-    $this->drupalPost('admin/config/content/formats/add', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/add', $edit, t('Save configuration'));
     $this->assertUrl('admin/config/content/formats');
     $this->assertRaw(t('Added text format %format.', array('%format' => $edit['name'])), 'New filter created.');
 
@@ -208,7 +208,7 @@ function testFilterAdmin() {
     $this->assertFieldByName('filters[' . $first_filter . '][status]', '', 'Url filter found.');
 
     // Disable new filter.
-    $this->drupalPost('admin/config/content/formats/manage/' . $format->format . '/disable', array(), t('Disable'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $format->format . '/disable', array(), t('Disable'));
     $this->assertUrl('admin/config/content/formats');
     $this->assertRaw(t('Disabled text format %format.', array('%format' => $edit['name'])), 'Format successfully disabled.');
 
@@ -217,7 +217,7 @@ function testFilterAdmin() {
     $edit = array();
     $edit['roles[' . DRUPAL_ANONYMOUS_RID . ']'] = 0;
     $edit['roles[' . DRUPAL_AUTHENTICATED_RID . ']'] = 1;
-    $this->drupalPost('admin/config/content/formats/manage/' . $full, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $full, $edit, t('Save configuration'));
     $this->assertUrl('admin/config/content/formats');
     $this->assertRaw(t('The text format %format has been updated.', array('%format' => $format->name)), 'Full HTML format successfully updated.');
 
@@ -237,7 +237,7 @@ function testFilterAdmin() {
     $edit["title"] = $this->randomName();
     $edit["body[$langcode][0][value]"] = $text;
     $edit["body[$langcode][0][format]"] = $basic;
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
     $this->assertRaw(t('Basic page %title has been created.', array('%title' => $edit["title"])), 'Filtered node created.');
 
     $node = $this->drupalGetNodeByTitle($edit["title"]);
@@ -254,7 +254,7 @@ function testFilterAdmin() {
       ->save();
     $edit = array();
     $edit["body[$langcode][0][format]"] = $plain;
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->drupalGet('node/' . $node->id());
     $this->assertText(check_plain($text), 'The "Plain text" text format escapes all HTML tags.');
     \Drupal::config('filter.settings')
@@ -268,7 +268,7 @@ function testFilterAdmin() {
     // Allowed tags.
     $edit = array();
     $edit['filters[filter_html][settings][allowed_html]'] = '<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>';
-    $this->drupalPost('admin/config/content/formats/manage/' . $basic, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $basic, $edit, t('Save configuration'));
     $this->assertUrl('admin/config/content/formats');
     $this->drupalGet('admin/config/content/formats/manage/' . $basic);
     $this->assertFieldByName('filters[filter_html][settings][allowed_html]', $edit['filters[filter_html][settings][allowed_html]'], 'Changes reverted.');
@@ -276,7 +276,7 @@ function testFilterAdmin() {
     // Full HTML.
     $edit = array();
     $edit['roles[' . DRUPAL_AUTHENTICATED_RID . ']'] = FALSE;
-    $this->drupalPost('admin/config/content/formats/manage/' . $full, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $full, $edit, t('Save configuration'));
     $this->assertUrl('admin/config/content/formats');
     $this->assertRaw(t('The text format %format has been updated.', array('%format' => $format->name)), 'Full HTML format successfully reverted.');
     $this->drupalGet('admin/config/content/formats/manage/' . $full);
@@ -286,7 +286,7 @@ function testFilterAdmin() {
     $edit = array();
     $edit['filters[' . $second_filter . '][weight]'] = 2;
     $edit['filters[' . $first_filter . '][weight]'] = 1;
-    $this->drupalPost('admin/config/content/formats/manage/' . $basic, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $basic, $edit, t('Save configuration'));
     $this->assertUrl('admin/config/content/formats');
     $this->drupalGet('admin/config/content/formats/manage/' . $basic);
     $this->assertFieldByName('filters[' . $second_filter . '][weight]', $edit['filters[' . $second_filter . '][weight]'], 'Changes reverted.');
@@ -301,7 +301,7 @@ function testUrlFilterAdmin() {
     $edit = array(
       'filters[filter_url][settings][filter_url_length]' => $this->randomName(4),
     );
-    $this->drupalPost('admin/config/content/formats/manage/basic_html', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/basic_html', $edit, t('Save configuration'));
     $this->assertNoRaw(t('The text format %format has been updated.', array('%format' => 'Basic HTML')));
   }
 }
diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterDefaultFormatTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterDefaultFormatTest.php
index fbf1a78..ae74dc1 100644
--- a/core/modules/filter/lib/Drupal/filter/Tests/FilterDefaultFormatTest.php
+++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterDefaultFormatTest.php
@@ -35,7 +35,7 @@ function testDefaultTextFormats() {
         'format' => drupal_strtolower($this->randomName()),
         'name' => $this->randomName(),
       );
-      $this->drupalPost('admin/config/content/formats/add', $edit, t('Save configuration'));
+      $this->drupalPostForm('admin/config/content/formats/add', $edit, t('Save configuration'));
       $this->resetFilterCaches();
       $formats[] = entity_load('filter_format', $edit['format']);
     }
@@ -49,7 +49,7 @@ function testDefaultTextFormats() {
     $edit = array();
     $edit['formats[' . $first_format->format . '][weight]'] = -2;
     $edit['formats[' . $second_format->format . '][weight]'] = -1;
-    $this->drupalPost('admin/config/content/formats', $edit, t('Save changes'));
+    $this->drupalPostForm('admin/config/content/formats', $edit, t('Save changes'));
     $this->resetFilterCaches();
 
     // Check that each user's default format is the lowest weighted format that
@@ -65,7 +65,7 @@ function testDefaultTextFormats() {
     // default.
     $edit = array();
     $edit['formats[' . $second_format->format . '][weight]'] = -3;
-    $this->drupalPost('admin/config/content/formats', $edit, t('Save changes'));
+    $this->drupalPostForm('admin/config/content/formats', $edit, t('Save changes'));
     $this->resetFilterCaches();
     $this->assertEqual(filter_default_format($first_user), filter_default_format($second_user), 'After the formats are reordered, both users have the same default format.');
   }
diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterFormatAccessTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterFormatAccessTest.php
index b99b8ce..ab2220c 100644
--- a/core/modules/filter/lib/Drupal/filter/Tests/FilterFormatAccessTest.php
+++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterFormatAccessTest.php
@@ -86,7 +86,7 @@ function setUp() {
         'format' => drupal_strtolower($this->randomName()),
         'name' => $this->randomName(),
       );
-      $this->drupalPost('admin/config/content/formats/add', $edit, t('Save configuration'));
+      $this->drupalPostForm('admin/config/content/formats/add', $edit, t('Save configuration'));
       $this->resetFilterCaches();
       $formats[] = entity_load('filter_format', $edit['format']);
     }
@@ -218,7 +218,7 @@ function testFormatWidgetPermissions() {
     $edit['title'] = $this->randomName(8);
     $edit[$body_value_key] = $this->randomName(16);
     $edit[$body_format_key] = $this->disallowed_format->format;
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
     $node = $this->drupalGetNodeByTitle($edit['title']);
 
     // Try to edit with a less privileged user.
@@ -232,11 +232,11 @@ function testFormatWidgetPermissions() {
     // Verify that title can be changed, but preview displays original body.
     $new_edit = array();
     $new_edit['title'] = $this->randomName(8);
-    $this->drupalPost(NULL, $new_edit, t('Preview'));
+    $this->drupalPostForm(NULL, $new_edit, t('Preview'));
     $this->assertText($edit[$body_value_key], 'Old body found in preview.');
 
     // Save and verify that only the title was changed.
-    $this->drupalPost(NULL, $new_edit, t('Save'));
+    $this->drupalPostForm(NULL, $new_edit, t('Save'));
     $this->assertNoText($edit['title'], 'Old title not found.');
     $this->assertText($new_edit['title'], 'New title found.');
     $this->assertText($edit[$body_value_key], 'Old body found.');
@@ -273,7 +273,7 @@ function testFormatWidgetPermissions() {
     $old_title = $new_edit['title'];
     $new_title = $this->randomName(8);
     $edit = array('title' => $new_title);
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertText(t('!name field is required.', array('!name' => t('Text format'))), 'Error message is displayed.');
     $this->drupalGet('node/' . $node->id());
     $this->assertText($old_title, 'Old title found.');
@@ -281,7 +281,7 @@ function testFormatWidgetPermissions() {
 
     // Now select a new text format and make sure the node can be saved.
     $edit[$body_format_key] = filter_fallback_format();
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertUrl('node/' . $node->id());
     $this->assertText($new_title, 'New title found.');
     $this->assertNoText($old_title, 'Old title not found.');
@@ -290,7 +290,7 @@ function testFormatWidgetPermissions() {
     // other formats on the site (leaving only the fallback format).
     $this->drupalLogin($this->admin_user);
     $edit = array($body_format_key => $this->allowed_format->format);
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertUrl('node/' . $node->id());
     foreach (filter_formats() as $format) {
       if (!$format->isFallbackFormat()) {
@@ -307,13 +307,13 @@ function testFormatWidgetPermissions() {
     $old_title = $new_title;
     $new_title = $this->randomName(8);
     $edit = array('title' => $new_title);
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertText(t('!name field is required.', array('!name' => t('Text format'))), 'Error message is displayed.');
     $this->drupalGet('node/' . $node->id());
     $this->assertText($old_title, 'Old title found.');
     $this->assertNoText($new_title, 'New title not found.');
     $edit[$body_format_key] = filter_fallback_format();
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertUrl('node/' . $node->id());
     $this->assertText($new_title, 'New title found.');
     $this->assertNoText($old_title, 'Old title not found.');
diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterHooksTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterHooksTest.php
index 3d86beb..74bab3f 100644
--- a/core/modules/filter/lib/Drupal/filter/Tests/FilterHooksTest.php
+++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterHooksTest.php
@@ -51,7 +51,7 @@ function testFilterHooks() {
     $edit['format'] = drupal_strtolower($this->randomName());
     $edit['name'] = $name;
     $edit['roles[' . DRUPAL_ANONYMOUS_RID . ']'] = 1;
-    $this->drupalPost('admin/config/content/formats/add', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/add', $edit, t('Save configuration'));
     $this->assertRaw(t('Added text format %format.', array('%format' => $name)));
     $this->assertText('hook_filter_format_insert invoked.');
 
@@ -60,7 +60,7 @@ function testFilterHooks() {
     // Update text format.
     $edit = array();
     $edit['roles[' . DRUPAL_AUTHENTICATED_RID . ']'] = 1;
-    $this->drupalPost('admin/config/content/formats/manage/' . $format_id, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $format_id, $edit, t('Save configuration'));
     $this->assertRaw(t('The text format %format has been updated.', array('%format' => $name)));
     $this->assertText('hook_filter_format_update invoked.');
 
@@ -72,11 +72,11 @@ function testFilterHooks() {
       "body[$language_not_specified][0][value]" => $this->randomName(32),
       "body[$language_not_specified][0][format]" => $format_id,
     );
-    $this->drupalPost("node/add/{$type->type}", $edit, t('Save and publish'));
+    $this->drupalPostForm("node/add/{$type->type}", $edit, t('Save and publish'));
     $this->assertText(t('@type @title has been created.', array('@type' => $type_name, '@title' => $title)));
 
     // Disable the text format.
-    $this->drupalPost('admin/config/content/formats/manage/' . $format_id . '/disable', array(), t('Disable'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $format_id . '/disable', array(), t('Disable'));
     $this->assertRaw(t('Disabled text format %format.', array('%format' => $name)));
     $this->assertText('hook_filter_format_disable invoked.');
   }
diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterHtmlImageSecureTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterHtmlImageSecureTest.php
index 90aaf1c..ff88fb2 100644
--- a/core/modules/filter/lib/Drupal/filter/Tests/FilterHtmlImageSecureTest.php
+++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterHtmlImageSecureTest.php
@@ -119,7 +119,7 @@ function testImageSource() {
     $edit = array(
       'comment_body[und][0][value]' => implode("\n", $comment),
     );
-    $this->drupalPost('node/' . $this->node->id(), $edit, t('Save'));
+    $this->drupalPostForm('node/' . $this->node->id(), $edit, t('Save'));
     foreach ($images as $image => $converted) {
       $found = FALSE;
       foreach ($this->xpath('//img[@testattribute="' . hash('sha256', $image) . '"]') as $element) {
diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterSecurityTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterSecurityTest.php
index 7c8fd39..24d3aa0 100644
--- a/core/modules/filter/lib/Drupal/filter/Tests/FilterSecurityTest.php
+++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterSecurityTest.php
@@ -81,7 +81,7 @@ function testDisableFilterModule() {
     $edit = array(
       'filters[filter_test_replace][status]' => 1,
     );
-    $this->drupalPost('admin/config/content/formats/manage/' . $format_id, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $format_id, $edit, t('Save configuration'));
 
     // Verify that filter_test_replace filter replaced the content.
     $this->drupalGet('node/' . $node->id());
@@ -89,7 +89,7 @@ function testDisableFilterModule() {
     $this->assertText('Filter: Testing filter', 'Testing filter output found.');
 
     // Disable the text format entirely.
-    $this->drupalPost('admin/config/content/formats/manage/' . $format_id . '/disable', array(), t('Disable'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $format_id . '/disable', array(), t('Disable'));
 
     // Verify that the content is empty, because the text format does not exist.
     $this->drupalGet('node/' . $node->id());
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumBlockTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumBlockTest.php
index 2ba2d86..264533e 100644
--- a/core/modules/forum/lib/Drupal/forum/Tests/ForumBlockTest.php
+++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumBlockTest.php
@@ -180,7 +180,7 @@ protected function createForumTopics($count = 5) {
       );
 
       // Create the forum topic, preselecting the forum ID via a URL parameter.
-      $this->drupalPost('node/add/forum/1', $edit, t('Save and publish'));
+      $this->drupalPostForm('node/add/forum/1', $edit, t('Save and publish'));
       $topics[] = $title;
     }
 
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumIndexTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumIndexTest.php
index d772adb..f18ef7f 100644
--- a/core/modules/forum/lib/Drupal/forum/Tests/ForumIndexTest.php
+++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumIndexTest.php
@@ -56,7 +56,7 @@ function testForumIndexStatus() {
     );
 
     // Create the forum topic, preselecting the forum ID via a URL parameter.
-    $this->drupalPost('node/add/forum/' . $tid, $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/forum/' . $tid, $edit, t('Save and publish'));
 
     // Check that the node exists in the database.
     $node = $this->drupalGetNodeByTitle($title);
@@ -67,7 +67,7 @@ function testForumIndexStatus() {
     $this->assertText($title, 'Published forum topic appears on index.');
 
     // Unpublish the node.
-    $this->drupalPost('node/' . $node->id() . '/edit', array(), t('Save and unpublish'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', array(), t('Save and unpublish'));
     $this->drupalGet('node/' . $node->id());
     $this->assertText(t('Access denied'), 'Unpublished node is no longer accessible.');
 
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php
index dde4701..c7de8ce 100644
--- a/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php
+++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php
@@ -58,7 +58,7 @@ function testForumNodeAccess() {
       "body[$langcode][0][value]" => $this->randomName(200),
       'private' => TRUE,
     );
-    $this->drupalPost('node/add/forum/1', $edit, t('Save'));
+    $this->drupalPostForm('node/add/forum/1', $edit, t('Save'));
     $private_node = $this->drupalGetNodeByTitle($private_node_title);
     $this->assertTrue(!empty($private_node), 'New private forum node found in database.');
 
@@ -68,7 +68,7 @@ function testForumNodeAccess() {
       'title' => $public_node_title,
       "body[$langcode][0][value]" => $this->randomName(200),
     );
-    $this->drupalPost('node/add/forum/1', $edit, t('Save'));
+    $this->drupalPostForm('node/add/forum/1', $edit, t('Save'));
     $public_node = $this->drupalGetNodeByTitle($public_node_title);
     $this->assertTrue(!empty($public_node), 'New public forum node found in database.');
 
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
index ff4d712..57f9580 100644
--- a/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
+++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
@@ -115,7 +115,7 @@ function testEnableForumField() {
     // Disable the Forum module.
     $edit = array();
     $edit['modules[Core][forum][enable]'] = FALSE;
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
     $this->rebuildContainer();
     $this->assertFalse(module_exists('forum'), 'Forum module is not enabled.');
@@ -124,7 +124,7 @@ function testEnableForumField() {
     // recreate the taxonomy_forums field.
     $edit = array();
     $edit['modules[Core][forum][enable]'] = 'forum';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
     $this->rebuildContainer();
     $this->assertTrue(module_exists('forum'), 'Forum module is enabled.');
@@ -204,7 +204,7 @@ function testForum() {
 
     // Test loading multiple forum nodes on the front page.
     $this->drupalLogin($this->drupalCreateUser(array('administer content types', 'create forum content', 'post comments')));
-    $this->drupalPost('admin/structure/types/manage/forum', array('settings[node][options][promote]' => 'promote'), t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/forum', array('settings[node][options][promote]' => 'promote'), t('Save content type'));
     $this->createForumTopic($this->forum, FALSE);
     $this->createForumTopic($this->forum, FALSE);
     $this->drupalGet('node');
@@ -213,13 +213,13 @@ function testForum() {
     $node = $this->createForumTopic($this->forum, FALSE);
     $edit = array();
     $edit['comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]'] = $this->randomName();
-    $this->drupalPost('node/' . $node->id(), $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id(), $edit, t('Save'));
     $this->assertResponse(200);
 
     // Test editing a forum topic that has a comment.
     $this->drupalLogin($this->edit_any_topics_user);
     $this->drupalGet('forum/' . $this->forum['tid']);
-    $this->drupalPost('node/' . $node->id() . '/edit', array(), t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', array(), t('Save'));
     $this->assertResponse(200);
 
     // Test the root forum page title change.
@@ -248,7 +248,7 @@ function testAddOrphanTopic() {
 
     // Create an orphan forum item.
     $this->drupalLogin($this->admin_user);
-    $this->drupalPost('node/add/forum', array('title' => $this->randomName(10), 'body[' . Language::LANGCODE_NOT_SPECIFIED .'][0][value]' => $this->randomName(120)), t('Save'));
+    $this->drupalPostForm('node/add/forum', array('title' => $this->randomName(10), 'body[' . Language::LANGCODE_NOT_SPECIFIED .'][0][value]' => $this->randomName(120)), t('Save'));
 
     $nid_count = db_query('SELECT COUNT(nid) FROM {node}')->fetchField();
     $this->assertEqual(0, $nid_count, 'A forum node was not created when missing a forum vocabulary.');
@@ -272,7 +272,7 @@ private function doAdminTests($user) {
 
     // Add forum to the Tools menu.
     $edit = array();
-    $this->drupalPost('admin/structure/menu/manage/tools', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/manage/tools', $edit, t('Save'));
     $this->assertResponse(200);
 
     // Edit forum taxonomy.
@@ -298,7 +298,7 @@ private function doAdminTests($user) {
     // Create second forum in container.
     $this->delete_forum = $this->createForum('forum', $this->forumContainer['tid']);
     // Save forum overview.
-    $this->drupalPost('admin/structure/forum/', array(), t('Save'));
+    $this->drupalPostForm('admin/structure/forum/', array(), t('Save'));
     $this->assertRaw(t('The configuration options have been saved.'));
     // Delete this second forum.
     $this->deleteForum($this->delete_forum['tid']);
@@ -353,7 +353,7 @@ function editForumVocabulary() {
     );
 
     // Edit the vocabulary.
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $original_vocabulary->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $original_vocabulary->id() . '/edit', $edit, t('Save'));
     $this->assertResponse(200);
     $this->assertRaw(t('Updated vocabulary %name.', array('%name' => $edit['name'])), 'Vocabulary was edited');
 
@@ -397,7 +397,7 @@ function createForum($type, $parent = 0) {
     );
 
     // Create forum.
-    $this->drupalPost('admin/structure/forum/add/' . $type, $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/forum/add/' . $type, $edit, t('Save'));
     $this->assertResponse(200);
     $type = ($type == 'container') ? 'forum container' : 'forum';
     $this->assertRaw(
@@ -430,11 +430,11 @@ function createForum($type, $parent = 0) {
    */
   function deleteForum($tid) {
     // Delete the forum.
-    $this->drupalPost('admin/structure/forum/edit/forum/' . $tid, array(), t('Delete'));
+    $this->drupalPostForm('admin/structure/forum/edit/forum/' . $tid, array(), t('Delete'));
     $this->assertText('Are you sure you want to delete the forum');
     $this->assertNoText('Add forum');
     $this->assertNoText('Add forum container');
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
 
     // Assert that the forum no longer exists.
     $this->drupalGet('forum/' . $tid);
@@ -479,7 +479,7 @@ function testForumWithNewPost() {
     $edit = array();
     $edit['subject'] = $this->randomName();
     $edit['comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]'] = $this->randomName();
-    $this->drupalPost('node/' . $node->id(), $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id(), $edit, t('Save'));
     $this->assertResponse(200);
 
     // Login as the first user.
@@ -513,7 +513,7 @@ function createForumTopic($forum, $container = FALSE) {
     $tid = $forum['tid'];
 
     // Create the forum topic, preselecting the forum ID via a URL parameter.
-    $this->drupalPost('node/add/forum/' . $tid, $edit, t('Save'));
+    $this->drupalPostForm('node/add/forum/' . $tid, $edit, t('Save'));
 
     $type = t('Forum topic');
     if ($container) {
@@ -601,7 +601,7 @@ private function verifyForums($node_user, EntityInterface $node, $admin, $respon
       // Assume the topic is initially associated with $forum.
       $edit["taxonomy_forums[$langcode]"] = $this->root_forum['tid'];
       $edit['shadow'] = TRUE;
-      $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+      $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
       $this->assertRaw(t('Forum topic %title has been updated.', array('%title' => $edit["title"])), 'Forum node was edited');
 
       // Verify topic was moved to a different forum.
@@ -612,7 +612,7 @@ private function verifyForums($node_user, EntityInterface $node, $admin, $respon
       $this->assertTrue($forum_tid == $this->root_forum['tid'], 'The forum topic is linked to a different forum');
 
       // Delete forum node.
-      $this->drupalPost('node/' . $node->id() . '/delete', array(), t('Delete'));
+      $this->drupalPostForm('node/' . $node->id() . '/delete', array(), t('Delete'));
       $this->assertResponse($response);
       $this->assertRaw(t('Forum topic %title has been deleted.', array('%title' => $edit['title'])), 'Forum node was deleted');
     }
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php
index 6bcf733..316b750 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php
@@ -57,7 +57,7 @@ function testNumericStyleName() {
       'name' => $style_name,
       'label' => $style_label,
     );
-    $this->drupalPost('admin/config/media/image-styles/add', $edit, t('Create new style'));
+    $this->drupalPostForm('admin/config/media/image-styles/add', $edit, t('Create new style'));
     $this->assertRaw(t('Style %name was created.', array('%name' => $style_label)));
     $options = image_style_options();
     $this->assertTrue(array_key_exists($style_name, $options), format_string('Array key %key exists.', array('%key' => $style_name)));
@@ -106,7 +106,7 @@ function testStyle() {
       'name' => $style_name,
       'label' => $style_label,
     );
-    $this->drupalPost('admin/config/media/image-styles/add', $edit, t('Create new style'));
+    $this->drupalPostForm('admin/config/media/image-styles/add', $edit, t('Create new style'));
     $this->assertRaw(t('Style %name was created.', array('%name' => $style_label)));
 
     // Add effect form.
@@ -114,9 +114,9 @@ function testStyle() {
     // Add each sample effect to the style.
     foreach ($effect_edits as $effect => $edit) {
       // Add the effect.
-      $this->drupalPost($style_path, array('new' => $effect), t('Add'));
+      $this->drupalPostForm($style_path, array('new' => $effect), t('Add'));
       if (!empty($edit)) {
-        $this->drupalPost(NULL, $edit, t('Add effect'));
+        $this->drupalPostForm(NULL, $edit, t('Add effect'));
       }
     }
 
@@ -182,7 +182,7 @@ function testStyle() {
     $image_path = $this->createSampleImage($style);
     $this->assertEqual($this->getImageCount($style), 1, format_string('Image style %style image %file successfully generated.', array('%style' => $style->label(), '%file' => $image_path)));
 
-    $this->drupalPost($style_path, $edit, t('Update style'));
+    $this->drupalPostForm($style_path, $edit, t('Update style'));
 
     // Note that after changing the style name, the style path is changed.
     $style_path = 'admin/config/media/image-styles/manage/' . $style_name;
@@ -218,7 +218,7 @@ function testStyle() {
     $this->assertEqual($this->getImageCount($style), 1, format_string('Image style %style image %file successfully generated.', array('%style' => $style->label(), '%file' => $image_path)));
 
     // Delete the 'image_crop' effect from the style.
-    $this->drupalPost($style_path . '/effects/' . $uuids['image_crop'] . '/delete', array(), t('Delete'));
+    $this->drupalPostForm($style_path . '/effects/' . $uuids['image_crop'] . '/delete', array(), t('Delete'));
     // Confirm that the form submission was successful.
     $this->assertResponse(200);
     $image_crop_effect = $style->getEffect($uuids['image_crop']);
@@ -238,7 +238,7 @@ function testStyle() {
     // Style deletion form.
 
     // Delete the style.
-    $this->drupalPost($style_path . '/delete', array(), t('Delete'));
+    $this->drupalPostForm($style_path . '/delete', array(), t('Delete'));
 
     // Confirm the style directory has been removed.
     $directory = file_default_scheme() . '://styles/' . $style_name;
@@ -289,7 +289,7 @@ function testStyleReplacement() {
       'name' => $new_style_name,
       'label' => $new_style_label,
     );
-    $this->drupalPost($style_path . $style_name, $edit, t('Update style'));
+    $this->drupalPostForm($style_path . $style_name, $edit, t('Update style'));
     $this->assertText(t('Changes to the style have been saved.'), format_string('Style %name was renamed to %new_name.', array('%name' => $style_name, '%new_name' => $new_style_name)));
     $this->drupalGet('node/' . $nid);
 
@@ -301,7 +301,7 @@ function testStyleReplacement() {
     $edit = array(
       'replacement' => 'thumbnail',
     );
-    $this->drupalPost($style_path . $new_style_name . '/delete', $edit, t('Delete'));
+    $this->drupalPostForm($style_path . $new_style_name . '/delete', $edit, t('Delete'));
     $message = t('Style %name was deleted.', array('%name' => $new_style_label));
     $this->assertRaw($message);
 
@@ -316,14 +316,14 @@ function testStyleReplacement() {
   function testEditEffect() {
     // Add a scale effect.
     $this->drupalGet('admin/config/media/image-styles/add');
-    $this->drupalPost(NULL, array('label' => 'Test style effect edit', 'name' => 'test_style_effect_edit'), t('Create new style'));
-    $this->drupalPost(NULL, array('new' => 'image_scale_and_crop'), t('Add'));
-    $this->drupalPost(NULL, array('data[width]' => '300', 'data[height]' => '200'), t('Add effect'));
+    $this->drupalPostForm(NULL, array('label' => 'Test style effect edit', 'name' => 'test_style_effect_edit'), t('Create new style'));
+    $this->drupalPostForm(NULL, array('new' => 'image_scale_and_crop'), t('Add'));
+    $this->drupalPostForm(NULL, array('data[width]' => '300', 'data[height]' => '200'), t('Add effect'));
     $this->assertText(t('Scale and crop 300x200'));
 
     // There should normally be only one edit link on this page initially.
     $this->clickLink(t('edit'));
-    $this->drupalPost(NULL, array('data[width]' => '360', 'data[height]' => '240'), t('Update effect'));
+    $this->drupalPostForm(NULL, array('data[width]' => '360', 'data[height]' => '240'), t('Update effect'));
     $this->assertText(t('Scale and crop 360x240'));
 
     // Check that the previous effect is replaced.
@@ -331,17 +331,17 @@ function testEditEffect() {
 
     // Add another scale effect.
     $this->drupalGet('admin/config/media/image-styles/add');
-    $this->drupalPost(NULL, array('label' => 'Test style scale edit scale', 'name' => 'test_style_scale_edit_scale'), t('Create new style'));
-    $this->drupalPost(NULL, array('new' => 'image_scale'), t('Add'));
-    $this->drupalPost(NULL, array('data[width]' => '12', 'data[height]' => '19'), t('Add effect'));
+    $this->drupalPostForm(NULL, array('label' => 'Test style scale edit scale', 'name' => 'test_style_scale_edit_scale'), t('Create new style'));
+    $this->drupalPostForm(NULL, array('new' => 'image_scale'), t('Add'));
+    $this->drupalPostForm(NULL, array('data[width]' => '12', 'data[height]' => '19'), t('Add effect'));
 
     // Edit the scale effect that was just added.
     $this->clickLink(t('edit'));
-    $this->drupalPost(NULL, array('data[width]' => '24', 'data[height]' => '19'), t('Update effect'));
-    $this->drupalPost(NULL, array('new' => 'image_scale'), t('Add'));
+    $this->drupalPostForm(NULL, array('data[width]' => '24', 'data[height]' => '19'), t('Update effect'));
+    $this->drupalPostForm(NULL, array('new' => 'image_scale'), t('Add'));
 
     // Add another scale effect and make sure both exist.
-    $this->drupalPost(NULL, array('data[width]' => '12', 'data[height]' => '19'), t('Add effect'));
+    $this->drupalPostForm(NULL, array('data[width]' => '12', 'data[height]' => '19'), t('Add effect'));
     $this->assertText(t('Scale 24x19'));
     $this->assertText(t('Scale 12x19'));
   }
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
index 221c01e..b72e047 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
@@ -203,7 +203,7 @@ function testImageFieldSettings() {
       $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][alt]' => $image['#alt'],
       $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][title]' => $image['#title'],
     );
-    $this->drupalPost('node/' . $nid . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $nid . '/edit', $edit, t('Save and keep published'));
     $default_output = drupal_render($image);
     $this->assertRaw($default_output, 'Image displayed using user supplied alt and title attributes.');
 
@@ -213,7 +213,7 @@ function testImageFieldSettings() {
       $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][alt]' => $this->randomName($test_size),
       $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][title]' => $this->randomName($test_size),
     );
-    $this->drupalPost('node/' . $nid . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $nid . '/edit', $edit, t('Save and keep published'));
     $schema = $instance->getField()->getSchema();
     $this->assertRaw(t('Alternate text cannot be longer than %max characters but is currently %length characters long.', array(
       '%max' => $schema['columns']['alt']['length'],
@@ -246,7 +246,7 @@ function testImageFieldDefaultImage() {
     $edit = array(
       'files[field_settings_default_image]' => drupal_realpath($images[0]->uri),
     );
-    $this->drupalPost("admin/structure/types/manage/article/fields/node.article.$field_name/field", $edit, t('Save field settings'));
+    $this->drupalPostForm("admin/structure/types/manage/article/fields/node.article.$field_name/field", $edit, t('Save field settings'));
     // Clear field info cache so the new default image is detected.
     field_info_cache_clear();
     $field = field_info_field('node', $field_name);
@@ -279,7 +279,7 @@ function testImageFieldDefaultImage() {
     $edit = array(
       'field[settings][default_image][fids]' => 0,
     );
-    $this->drupalPost("admin/structure/types/manage/article/fields/node.article.$field_name/field", $edit, t('Save field settings'));
+    $this->drupalPostForm("admin/structure/types/manage/article/fields/node.article.$field_name/field", $edit, t('Save field settings'));
     // Clear field info cache so the new default image is detected.
     field_info_cache_clear();
     $field = field_info_field('node', $field_name);
@@ -292,7 +292,7 @@ function testImageFieldDefaultImage() {
     $edit = array(
       'files[field_settings_default_image]' => drupal_realpath($images[1]->uri),
     );
-    $this->drupalPost('admin/structure/types/manage/article/fields/node.article.' . $private_field_name . '/field', $edit, t('Save field settings'));
+    $this->drupalPostForm('admin/structure/types/manage/article/fields/node.article.' . $private_field_name . '/field', $edit, t('Save field settings'));
     // Clear field info cache so the new default image is detected.
     field_info_cache_clear();
 
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php
index 5dc38f3..ddbc50b 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php
@@ -118,7 +118,7 @@ function uploadNodeImage($image, $field_name, $type) {
       'title' => $this->randomName(),
     );
     $edit['files[' . $field_name . '_' . Language::LANGCODE_NOT_SPECIFIED . '_0]'] = drupal_realpath($image->uri);
-    $this->drupalPost('node/add/' . $type, $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/' . $type, $edit, t('Save and publish'));
 
     // Retrieve ID of the newly created node from the current URL.
     $matches = array();
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageStyleFlushTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageStyleFlushTest.php
index b5c3776..1cbe4e8 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageStyleFlushTest.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageStyleFlushTest.php
@@ -73,14 +73,14 @@ function testFlush() {
       'name' => $style_name,
       'label' => $style_label,
     );
-    $this->drupalPost('admin/config/media/image-styles/add', $edit, t('Create new style'));
+    $this->drupalPostForm('admin/config/media/image-styles/add', $edit, t('Create new style'));
 
     // Add each sample effect to the style.
     foreach ($effect_edits as $effect => $edit) {
       // Add the effect.
-      $this->drupalPost($style_path, array('new' => $effect), t('Add'));
+      $this->drupalPostForm($style_path, array('new' => $effect), t('Add'));
       if (!empty($edit)) {
-        $this->drupalPost(NULL, $edit, t('Add effect'));
+        $this->drupalPostForm(NULL, $edit, t('Add effect'));
       }
     }
 
@@ -104,9 +104,9 @@ function testFlush() {
     foreach ($style->getEffects() as $uuid => $effect) {
       $uuids[$effect->getPluginId()] = $uuid;
     }
-    $this->drupalPost($style_path . '/effects/' . $uuids['image_scale'] . '/delete', array(), t('Delete'));
+    $this->drupalPostForm($style_path . '/effects/' . $uuids['image_scale'] . '/delete', array(), t('Delete'));
     $this->assertResponse(200);
-    $this->drupalPost($style_path, array(), t('Update style'));
+    $this->drupalPostForm($style_path, array(), t('Update style'));
     $this->assertResponse(200);
 
     // Post flush, expected 1 image in the 'public' wrapper (sample.png).
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
index 07ea3d5..a369484 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
@@ -188,7 +188,7 @@ function testUIBrowserLanguageMappings() {
 
     // Confirm the delete.
     $edit = array();
-    $this->drupalPost('admin/config/regional/language/detection/browser/delete/' . $browser_langcode, $edit, t('Confirm'));
+    $this->drupalPostForm('admin/config/regional/language/detection/browser/delete/' . $browser_langcode, $edit, t('Confirm'));
 
     // Check that ch-zn no longer exists.
     $this->assertNoField('edit-mappings-zh-cn-browser-langcode', 'Chinese browser language code no longer exists.');
@@ -198,13 +198,13 @@ function testUIBrowserLanguageMappings() {
       'new_mapping[browser_langcode]' => 'xx',
       'new_mapping[drupal_langcode]' => 'en',
     );
-    $this->drupalPost('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
     $this->drupalGet('admin/config/regional/language/detection/browser');
     $this->assertField('edit-mappings-xx-browser-langcode', 'xx', 'Browser language code found.');
     $this->assertField('edit-mappings-xx-drupal-langcode', 'en', 'Drupal language code found.');
 
     // Add the same custom mapping again.
-    $this->drupalPost('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
     $this->assertText('Browser language codes must be unique.');
 
     // Change browser language code of our custom mapping to zh-sg.
@@ -212,7 +212,7 @@ function testUIBrowserLanguageMappings() {
       'mappings[xx][browser_langcode]' => 'zh-sg',
       'mappings[xx][drupal_langcode]' => 'en',
     );
-    $this->drupalPost('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
     $this->assertText(t('Browser language codes must be unique.'));
 
     // Change Drupal language code of our custom mapping to zh-hans.
@@ -220,7 +220,7 @@ function testUIBrowserLanguageMappings() {
       'mappings[xx][browser_langcode]' => 'xx',
       'mappings[xx][drupal_langcode]' => 'zh-hans',
     );
-    $this->drupalPost('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/browser', $edit, t('Save configuration'));
     $this->drupalGet('admin/config/regional/language/detection/browser');
     $this->assertField('edit-mappings-xx-browser-langcode', 'xx', 'Browser language code found.');
     $this->assertField('edit-mappings-xx-drupal-langcode', 'zh-hans', 'Drupal language code found.');
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationElementTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationElementTest.php
index fcec194..d5a3c02 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationElementTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationElementTest.php
@@ -37,7 +37,7 @@ public function testLanguageConfigurationElement() {
     $this->drupalGet('language-tests/language_configuration_element');
     $edit['lang_configuration[langcode]'] = 'current_interface';
     $edit['lang_configuration[language_show]'] = FALSE;
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
     $lang_conf = language_get_default_configuration('some_custom_type', 'some_bundle');
 
     // Check that the settings have been saved.
@@ -51,7 +51,7 @@ public function testLanguageConfigurationElement() {
     $this->drupalGet('language-tests/language_configuration_element');
     $edit['lang_configuration[langcode]'] = 'authors_default';
     $edit['lang_configuration[language_show]'] = TRUE;
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
     $lang_conf = language_get_default_configuration('some_custom_type', 'some_bundle');
 
     // Check that the settings have been saved.
@@ -124,7 +124,7 @@ public function testNodeTypeUpdate() {
       'language_configuration[langcode]' => 'current_interface',
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
     // Check the language default configuration for the articles.
     $configuration = language_get_default_configuration('node', 'article');
     $this->assertEqual($configuration, array('langcode' => 'current_interface', 'language_show' => TRUE), 'The default language configuration has been saved on the Article content type.');
@@ -132,7 +132,7 @@ public function testNodeTypeUpdate() {
     $edit = array(
       'type' => 'article_2'
     );
-    $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
     // Check that we still have the settings for the new node type.
     $configuration = language_get_default_configuration('node', 'article_2');
     $this->assertEqual($configuration, array('langcode' => 'current_interface', 'language_show' => TRUE), 'The default language configuration has been kept on the new Article content type.');
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php
index f970bdd..1fb8c85 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php
@@ -48,7 +48,7 @@ function testLanguageConfiguration() {
     $edit = array(
       'predefined_langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, 'Add language');
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, 'Add language');
     $this->assertText('French');
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
     // Langcode for Languages is always 'en'.
@@ -70,7 +70,7 @@ function testLanguageConfiguration() {
     $edit = array(
       'site_default_language' => 'fr',
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertOptionSelected('edit-site-default-language', 'fr', 'Default language updated.');
     $this->assertEqual($this->getUrl(), url('admin/config/regional/settings', array('absolute' => TRUE)), 'Correct page redirection.');
 
@@ -86,7 +86,7 @@ function testLanguageConfiguration() {
     $edit = array(
       'prefix[fr]' => 'french',
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertFieldByXPath('//input[@name="prefix[fr]"]', 'french', 'French path prefix has changed.');
 
     // Check that prefix of non default language cannot be changed to
@@ -94,14 +94,14 @@ function testLanguageConfiguration() {
     $edit = array(
       'prefix[en]' => '',
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertText(t('The prefix may only be left blank for the default language.'), 'English prefix cannot be changed to empty string.');
 
     //  Check that prefix cannot be changed to contain a slash.
     $edit = array(
       'prefix[en]' => 'foo/bar',
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertText(t('The prefix may not contain a slash.'), 'English prefix cannot be changed to contain a slash.');
 
     // Remove English language and add a new Language to check if langcode of
@@ -110,7 +110,7 @@ function testLanguageConfiguration() {
     $edit = array(
       'predefined_langcode' => 'de',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, 'Add language');
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, 'Add language');
     $language = $this->container->get('config.factory')->get('language.entity.de')->get();
     $this->assertEqual($language['langcode'], 'en');
   }
@@ -128,21 +128,21 @@ function testLanguageConfigurationWeight() {
     $edit = array(
       'predefined_langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, 'Add language');
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, 'Add language');
     $this->checkConfigurableLanguageWeight('after adding new language');
 
     // Re-ordering languages.
     $edit = array(
       'languages[en][weight]' => $this->getHighestConfigurableLanguageWeight() + 1,
     );
-    $this->drupalPost('admin/config/regional/language', $edit, 'Save configuration');
+    $this->drupalPostForm('admin/config/regional/language', $edit, 'Save configuration');
     $this->checkConfigurableLanguageWeight('after re-ordering');
 
     // Remove predefined language.
     $edit = array(
       'confirm' => 1,
     );
-    $this->drupalPost('admin/config/regional/language/delete/fr', $edit, 'Delete');
+    $this->drupalPostForm('admin/config/regional/language/delete/fr', $edit, 'Delete');
     $this->checkConfigurableLanguageWeight('after deleting a language');
   }
 
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageCustomLanguageConfigurationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageCustomLanguageConfigurationTest.php
index ff8086b..9554dd8 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageCustomLanguageConfigurationTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageCustomLanguageConfigurationTest.php
@@ -44,7 +44,7 @@ public function testLanguageConfiguration() {
     $edit = array(
       'predefined_langcode' => 'custom',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     // Test validation on missing values.
     $this->assertText(t('!name field is required.', array('!name' => t('Language code'))));
     $this->assertText(t('!name field is required.', array('!name' => t('Language name in English'))));
@@ -59,7 +59,7 @@ public function testLanguageConfiguration() {
       'name' => '<strong>evil markup</strong>',
       'direction' => Language::DIRECTION_LTR,
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     $this->assertRaw(t('%field may only contain characters a-z, underscores, or hyphens.', array('%field' => t('Language code'))));
     $this->assertRaw(t('%field cannot contain any markup.', array('%field' => t('Language name in English'))));
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language/add', array('absolute' => TRUE)), 'Correct page redirection.');
@@ -73,7 +73,7 @@ public function testLanguageConfiguration() {
     );
 
     // Add the language the first time.
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     $this->assertRaw(t(
       'The language %language has been created and can now be used.',
       array('%language' => $edit['name'])
@@ -81,7 +81,7 @@ public function testLanguageConfiguration() {
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
 
     // Add the language a second time and confirm that this is not allowed.
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     $this->assertRaw(t(
       'The language %language (%langcode) already exists.',
       array('%language' => $edit['name'], '%langcode' => $edit['langcode'])
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
index 4870f57..8b2190d 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php
@@ -44,7 +44,7 @@ function testLanguageList() {
     $edit = array(
       'predefined_langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     $this->assertText('French', 'Language added successfully.');
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
 
@@ -57,7 +57,7 @@ function testLanguageList() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
     $this->assertRaw('"edit-languages-' . $langcode .'-weight"', 'Language code found.');
     $this->assertText(t($name), 'Test language added.');
@@ -70,7 +70,7 @@ function testLanguageList() {
     $edit = array(
       'site_default_language' => $langcode,
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertNoOptionSelected('edit-site-default-language', 'en', 'Default language updated.');
     $this->assertEqual($this->getUrl(), url($path, array('absolute' => TRUE)), 'Correct page redirection.');
 
@@ -87,7 +87,7 @@ function testLanguageList() {
     $edit = array(
       'name' => $name,
     );
-    $this->drupalPost('admin/config/regional/language/edit/' . $langcode, $edit, t('Save language'));
+    $this->drupalPostForm('admin/config/regional/language/edit/' . $langcode, $edit, t('Save language'));
     $this->assertRaw($name, 'The language has been updated.');
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
 
@@ -95,7 +95,7 @@ function testLanguageList() {
     $edit = array(
       'site_default_language' => 'en',
     );
-    $this->drupalPost($path, $edit, t('Save configuration'));
+    $this->drupalPostForm($path, $edit, t('Save configuration'));
     // Ensure 'delete' link works.
     $this->drupalGet('admin/config/regional/language');
     $this->clickLink(t('Delete'));
@@ -108,7 +108,7 @@ function testLanguageList() {
     $this->assertRaw($name, 'The language was not deleted.');
     // Delete the language for real. This a confirm form, we do not need any
     // fields changed.
-    $this->drupalPost('admin/config/regional/language/delete/' . $langcode, array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/' . $langcode, array(), t('Delete'));
     // We need raw here because %language and %langcode will add HTML.
     $t_args = array('%language' => $name, '%langcode' => $langcode);
     $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), 'The test language has been removed.');
@@ -122,7 +122,7 @@ function testLanguageList() {
     $language_count =  $this->container->get('state')->get('language_count') ?: 1;
     $this->assertEqual($language_count, count($languages), 'Language count is correct.');
     // Delete French.
-    $this->drupalPost('admin/config/regional/language/delete/fr', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/fr', array(), t('Delete'));
     // Get the count of languages.
     drupal_static_reset('language_list');
     $languages = language_list();
@@ -148,7 +148,7 @@ function testLanguageList() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.');
     $this->assertText($name, 'Name found.');
 
@@ -160,11 +160,11 @@ function testLanguageList() {
     $edit = array(
       'site_default_language' => $langcode,
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
     $this->assertNoOptionSelected('edit-site-default-language', 'en', 'Default language updated.');
     $this->assertEqual($this->getUrl(), url($path, array('absolute' => TRUE)), 'Correct page redirection.');
 
-    $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/en', array(), t('Delete'));
     // We need raw here because %language and %langcode will add HTML.
     $t_args = array('%language' => 'English', '%langcode' => 'en');
     $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), 'The English language has been removed.');
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageNegotiationInfoTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageNegotiationInfoTest.php
index 6ab71ba..f17e159 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageNegotiationInfoTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageNegotiationInfoTest.php
@@ -35,7 +35,7 @@ function setUp() {
     require_once DRUPAL_ROOT .'/core/includes/language.inc';
     $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages', 'view the administration theme'));
     $this->drupalLogin($admin_user);
-    $this->drupalPost('admin/config/regional/language/add', array('predefined_langcode' => 'it'), t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', array('predefined_langcode' => 'it'), t('Add language'));
   }
 
   /**
@@ -71,7 +71,7 @@ function testInfoAlterations() {
       $test_type . '[enabled][' . $test_method_id . ']' => TRUE,
       $test_type . '[configurable]' => TRUE,
     );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Remove the interface language negotiation method by updating the language
     // negotiation settings with the proper flag enabled.
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php
index d7f0306..731ccf0 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguagePathMonolingualTest.php
@@ -39,16 +39,16 @@ function setUp() {
     // Enable French language.
     $edit = array();
     $edit['predefined_langcode'] = 'fr';
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Make French the default language.
     $edit = array(
       'site_default_language' => 'fr',
     );
-    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Delete English.
-    $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/en', array(), t('Delete'));
 
     // Verify that French is the only language.
     $this->assertFalse(language_multilingual(), 'Site is mono-lingual');
@@ -56,7 +56,7 @@ function setUp() {
 
     // Set language detection to URL.
     $edit = array('language_interface[enabled][language-url]' => TRUE);
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Force languages to be initialized.
     drupal_language_initialize();
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php
index 6265660..3d4e251 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php
@@ -49,11 +49,11 @@ function testLanguageBlock() {
     $edit = array(
       'predefined_langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Enable URL language detection and selection.
     $edit = array('language_interface[enabled][language-url]' => '1');
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Assert that the language switching block is displayed on the frontpage.
     $this->drupalGet('');
@@ -98,11 +98,11 @@ function testLanguageLinkActiveClass() {
     $edit = array(
       'predefined_langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Enable URL language detection and selection.
     $edit = array('language_interface[enabled][language-url]' => '1');
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     $function_name = '#type link';
 
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
index 5298c35..e9a5767 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
@@ -122,32 +122,32 @@ function testUILanguageNegotiation() {
       'string' => $default_string,
       'langcode' => $langcode_browser_fallback,
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $textarea = current($this->xpath('//textarea'));
     $lid = (string) $textarea[0]['name'];
     $edit = array(
       $lid => $language_browser_fallback_string,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     $search = array(
       'string' => $default_string,
       'langcode' => $langcode,
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $textarea = current($this->xpath('//textarea'));
     $lid = (string) $textarea[0]['name'];
     $edit = array(
       $lid => $language_string,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     // Configure URL language rewrite.
     variable_set('language_negotiation_url_type', Language::TYPE_INTERFACE);
 
     // Configure selected language negotiation to use zh-hans.
     $edit = array('selected_langcode' => $langcode);
-    $this->drupalPost('admin/config/regional/language/detection/selected', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/selected', $edit, t('Save configuration'));
     $test = array(
       'language_negotiation' => array(LANGUAGE_NEGOTIATION_SELECTED),
       'path' => 'admin/config',
@@ -328,7 +328,7 @@ function testUILanguageNegotiation() {
     // Setup for domain negotiation, first configure the language to have domain
     // URL.
     $edit = array("domain[$langcode]" => $language_domain);
-    $this->drupalPost("admin/config/regional/language/detection/url", $edit, t('Save configuration'));
+    $this->drupalPostForm("admin/config/regional/language/detection/url", $edit, t('Save configuration'));
     // Set the site to use domain language negotiation.
 
     $tests = array(
@@ -395,7 +395,7 @@ function testUrlLanguageFallback() {
     // Enable the path prefix for the default language: this way any unprefixed
     // URL must have a valid fallback value.
     $edit = array('prefix[en]' => 'en');
-    $this->drupalPost('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
 
     // Enable browser and URL language detection.
     $edit = array(
@@ -404,7 +404,7 @@ function testUrlLanguageFallback() {
       'language_interface[weight][language-browser]' => -8,
       'language_interface[weight][language-url]' => -10,
     );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
     $this->drupalGet('admin/config/regional/language/detection');
 
     // Enable the language switcher block.
@@ -444,14 +444,14 @@ function testLanguageDomain() {
       'language_interface[enabled][language-url]' => TRUE,
       'language_interface[weight][language-url]' => -10,
     );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Change the domain for the Italian language.
     $edit = array(
       'language_negotiation_url_part' => LANGUAGE_NEGOTIATION_URL_DOMAIN,
       'domain[it]' => 'it.example.com',
     );
-    $this->drupalPost('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
     $this->rebuildContainer();
 
     // Build the link we're going to test.
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageUrlRewritingTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageUrlRewritingTest.php
index 5266fd1..07ee9a9 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageUrlRewritingTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageUrlRewritingTest.php
@@ -40,11 +40,11 @@ function setUp() {
     // Install French language.
     $edit = array();
     $edit['predefined_langcode'] = 'fr';
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Enable URL language detection and selection.
     $edit = array('language_interface[enabled][language-url]' => 1);
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Reset static caching.
     drupal_static_reset('language_list');
@@ -108,7 +108,7 @@ function testDomainNameNegotiationPort() {
       'language_negotiation_url_part' => LANGUAGE_NEGOTIATION_URL_DOMAIN,
       'domain[fr]' => $language_domain
     );
-    $this->drupalPost('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
     // Rebuild the container so that the new language gets picked up by services
     // that hold the list of languages.
     $this->rebuildContainer();
diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php b/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
index 8b61f63..7c6355d 100644
--- a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
+++ b/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
@@ -109,7 +109,7 @@ function testURLValidation() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][url]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
@@ -131,7 +131,7 @@ function testURLValidation() {
         'name' => $this->randomName(),
         "{$field_name}[$langcode][0][url]" => $invalid_value,
       );
-      $this->drupalPost(NULL, $edit, t('Save'));
+      $this->drupalPostForm(NULL, $edit, t('Save'));
       $this->assertText(t('The URL @url is not valid.', array('@url' => $invalid_value)));
     }
   }
@@ -202,14 +202,14 @@ function testLinkTitle() {
           $edit = array(
             "{$field_name}[$langcode][0][url]" => 'http://www.example.com',
           );
-          $this->drupalPost(NULL, $edit, t('Save'));
+          $this->drupalPostForm(NULL, $edit, t('Save'));
           $this->assertText(t('!name field is required.', array('!name' => t('Link text'))));
 
           // Verify that the link text is not required, if the URL is empty.
           $edit = array(
             "{$field_name}[$langcode][0][url]" => '',
           );
-          $this->drupalPost(NULL, $edit, t('Save'));
+          $this->drupalPostForm(NULL, $edit, t('Save'));
           $this->assertNoText(t('!name field is required.', array('!name' => t('Link text'))));
 
           // Verify that a URL and link text meets requirements.
@@ -218,7 +218,7 @@ function testLinkTitle() {
             "{$field_name}[$langcode][0][url]" => 'http://www.example.com',
             "{$field_name}[$langcode][0][title]" => 'Example',
           );
-          $this->drupalPost(NULL, $edit, t('Save'));
+          $this->drupalPostForm(NULL, $edit, t('Save'));
           $this->assertNoText(t('!name field is required.', array('!name' => t('Link text'))));
         }
       }
@@ -232,7 +232,7 @@ function testLinkTitle() {
       "{$field_name}[$langcode][0][url]" => $value,
       "{$field_name}[$langcode][0][title]" => '',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
@@ -248,7 +248,7 @@ function testLinkTitle() {
       'name' => $this->randomName(),
       "{$field_name}[$langcode][0][title]" => $title,
     );
-    $this->drupalPost("entity_test/manage/$id/edit", $edit, t('Save'));
+    $this->drupalPostForm("entity_test/manage/$id/edit", $edit, t('Save'));
     $this->assertText(t('entity_test @id has been updated.', array('@id' => $id)));
 
     $this->renderTestEntity($id);
@@ -315,7 +315,7 @@ function testLinkFormatter() {
     );
     // Assert label is shown.
     $this->assertText('Read more about this entity');
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
@@ -453,7 +453,7 @@ function testLinkSeparateFormatter() {
       "{$field_name}[$langcode][1][url]" => $url2,
       "{$field_name}[$langcode][1][title]" => $title2,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkFieldUITest.php b/core/modules/link/lib/Drupal/link/Tests/LinkFieldUITest.php
index 910ff14..97fda35 100644
--- a/core/modules/link/lib/Drupal/link/Tests/LinkFieldUITest.php
+++ b/core/modules/link/lib/Drupal/link/Tests/LinkFieldUITest.php
@@ -52,11 +52,11 @@ function testFieldUI() {
       'fields[_add_new_field][field_name]' => $field_name,
       'fields[_add_new_field][type]' => 'link',
     );
-    $this->drupalPost("$type_path/fields", $edit, t('Save'));
+    $this->drupalPostForm("$type_path/fields", $edit, t('Save'));
     // Proceed to the Edit (field instance settings) page.
-    $this->drupalPost(NULL, array(), t('Save field settings'));
+    $this->drupalPostForm(NULL, array(), t('Save field settings'));
     // Proceed to the Manage fields overview page.
-    $this->drupalPost(NULL, array(), t('Save settings'));
+    $this->drupalPostForm(NULL, array(), t('Save settings'));
 
     // Load the formatter page to check that the settings summary does not
     // generate warnings.
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleConfigTranslationTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleConfigTranslationTest.php
index 8b825d0..6a7ee1c 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleConfigTranslationTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleConfigTranslationTest.php
@@ -52,11 +52,11 @@ function testConfigTranslation() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     $language = new Language(array('id' => $langcode));
     // Set path prefix.
     $edit = array( "prefix[$langcode]" => $langcode );
-    $this->drupalPost('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
 
     // Check site name string exists and create translation for it.
     $string = $this->storage->findString(array('source' => 'Drupal', 'context' => '', 'type' => 'configuration'));
@@ -69,14 +69,14 @@ function testConfigTranslation() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $textareas = $this->xpath('//textarea');
     $textarea = current($textareas);
     $lid = (string) $textarea[0]['name'];
     $edit = array(
       $lid => $site_name,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     $wrapper = $this->container->get('locale.config.typed')->get('system.site');
 
@@ -95,7 +95,7 @@ function testConfigTranslation() {
     $this->assertFalse($string, 'Configuration strings have been created upon installation.');
 
     // Enable the image module.
-    $this->drupalPost('admin/modules', array('modules[Core][image][enable]' => "1"), t('Save configuration'));
+    $this->drupalPostForm('admin/modules', array('modules[Core][image][enable]' => "1"), t('Save configuration'));
     $this->resetAll();
 
     $string = $this->storage->findString(array('source' => 'Medium (220x220)', 'context' => '', 'type' => 'configuration'));
@@ -115,13 +115,13 @@ function testConfigTranslation() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $textarea = current($this->xpath('//textarea'));
     $lid = (string) $textarea[0]['name'];
     $edit = array(
       $lid => $image_style_label,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     // Check the right single translation has been created.
     $translations = $this->storage->getTranslations(array('language' => $langcode, 'type' => 'configuration', 'name' => 'image.style.medium'));
@@ -139,9 +139,9 @@ function testConfigTranslation() {
     $this->assertEqual(\Drupal::config('locale.config.xx.image.style.medium')->get('label'), $image_style_label);
 
     // Disable and uninstall the module.
-    $this->drupalPost('admin/modules', array('modules[Core][image][enable]' => FALSE), t('Save configuration'));
-    $this->drupalPost('admin/modules/uninstall', array('uninstall[image]' => "image"), t('Uninstall'));
-    $this->drupalPost(NULL, array(), t('Uninstall'));
+    $this->drupalPostForm('admin/modules', array('modules[Core][image][enable]' => FALSE), t('Save configuration'));
+    $this->drupalPostForm('admin/modules/uninstall', array('uninstall[image]' => "image"), t('Uninstall'));
+    $this->drupalPostForm(NULL, array(), t('Uninstall'));
 
     // Ensure that the translated configuration has been removed.
     $this->assertFalse(\Drupal::config('locale.config.xx.image.style.medium')->get('label'), 'Translated configuration for image module removed.');
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php
index dc990e8..9e7a15a 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php
@@ -46,13 +46,13 @@ function testMachineNameLTR() {
     // Install the Arabic language (which is RTL) and configure as the default.
     $edit = array();
     $edit['predefined_langcode'] = 'ar';
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     drupal_static_reset('language_list');
 
     $edit = array(
       'site_default_language' => 'ar',
     );
-    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Verify that the machine name field is still LTR for a new content type.
     $this->drupalGet('admin/structure/types/add');
@@ -85,7 +85,7 @@ function testContentTypeLanguageConfiguration() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     drupal_static_reset('language_list');
 
     // Set the content type to use multilingual support.
@@ -94,7 +94,7 @@ function testContentTypeLanguageConfiguration() {
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPost("admin/structure/types/manage/{$type2->type}", $edit, t('Save content type'));
+    $this->drupalPostForm("admin/structure/types/manage/{$type2->type}", $edit, t('Save content type'));
     $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type2->name)));
     $this->drupalLogout();
     drupal_static_reset('language_list');
@@ -130,7 +130,7 @@ function testContentTypeLanguageConfiguration() {
     $edit = array(
       'langcode' => 'en',
     );
-    $this->drupalPost($path, $edit, t('Save'));
+    $this->drupalPostForm($path, $edit, t('Save'));
     $this->assertRaw(t('%title has been updated.', array('%title' => $node_title)));
 
     $this->drupalLogout();
@@ -153,13 +153,13 @@ function testContentTypeDirLang() {
     // Install Arabic language.
     $edit = array();
     $edit['predefined_langcode'] = 'ar';
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     drupal_static_reset('language_list');
 
     // Install Spanish language.
     $edit = array();
     $edit['predefined_langcode'] = 'es';
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     drupal_static_reset('language_list');
 
     // Set the content type to use multilingual support.
@@ -167,7 +167,7 @@ function testContentTypeDirLang() {
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPost("admin/structure/types/manage/{$type->type}", $edit, t('Save content type'));
+    $this->drupalPostForm("admin/structure/types/manage/{$type->type}", $edit, t('Save content type'));
     $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type->name)));
     $this->drupalLogout();
 
@@ -222,8 +222,8 @@ function testNodeAdminLanguageFilter() {
     $this->drupalLogin($admin_user);
 
     // Enable multiple languages.
-    $this->drupalPost('admin/config/regional/language/edit/en', array('locale_translate_english' => TRUE), t('Save language'));
-    $this->drupalPost('admin/config/regional/language/add', array('predefined_langcode' => 'zh-hant'), t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/edit/en', array('locale_translate_english' => TRUE), t('Save language'));
+    $this->drupalPostForm('admin/config/regional/language/add', array('predefined_langcode' => 'zh-hant'), t('Add language'));
     drupal_static_reset('language_list');
 
     // Create two nodes: English and Chinese.
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleExportTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleExportTest.php
index 66fd590..d77fdc2 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleExportTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleExportTest.php
@@ -53,14 +53,14 @@ function testExportTranslation() {
     // This will also automatically enable the 'fr' language.
     $name = tempnam('temporary://', "po_") . '.po';
     file_put_contents($name, $this->getPoFile());
-    $this->drupalPost('admin/config/regional/translate/import', array(
+    $this->drupalPostForm('admin/config/regional/translate/import', array(
       'langcode' => 'fr',
       'files[file]' => $name,
     ), t('Import'));
     drupal_unlink($name);
 
     // Get the French translations.
-    $this->drupalPost('admin/config/regional/translate/export', array(
+    $this->drupalPostForm('admin/config/regional/translate/export', array(
       'langcode' => 'fr',
     ), t('Export'));
 
@@ -72,7 +72,7 @@ function testExportTranslation() {
     // Import some more French translations which will be marked as customized.
     $name = tempnam('temporary://', "po2_") . '.po';
     file_put_contents($name, $this->getCustomPoFile());
-    $this->drupalPost('admin/config/regional/translate/import', array(
+    $this->drupalPostForm('admin/config/regional/translate/import', array(
       'langcode' => 'fr',
       'files[file]' => $name,
       'customized' => 1,
@@ -87,7 +87,7 @@ function testExportTranslation() {
       ->save();
 
     // Export only customized French translations.
-    $this->drupalPost('admin/config/regional/translate/export', array(
+    $this->drupalPostForm('admin/config/regional/translate/export', array(
       'langcode' => 'fr',
       'content_options[not_customized]' => FALSE,
       'content_options[customized]' => TRUE,
@@ -102,7 +102,7 @@ function testExportTranslation() {
     $this->assertNoRaw('msgid "February"', 'Untranslated string not present in exported file.');
 
     // Export only untranslated French translations.
-    $this->drupalPost('admin/config/regional/translate/export', array(
+    $this->drupalPostForm('admin/config/regional/translate/export', array(
       'langcode' => 'fr',
       'content_options[not_customized]' => FALSE,
       'content_options[customized]' => FALSE,
@@ -126,7 +126,7 @@ function testExportTranslationTemplateFile() {
     // locales_source table gets populated with something.
     $this->drupalGet('admin/config/regional/language');
     // Get the translation template file.
-    $this->drupalPost('admin/config/regional/translate/export', array(), t('Export'));
+    $this->drupalPostForm('admin/config/regional/translate/export', array(), t('Export'));
     // Ensure we have a translation file.
     $this->assertRaw('# LANGUAGE translation of PROJECT', 'Exported translation template file.');
   }
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php
index c301fef..8cd217b 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php
@@ -89,7 +89,7 @@ function testStandalonePoFile() {
 
     // Try importing a .po file which doesn't exist.
     $name = $this->randomName(16);
-    $this->drupalPost('admin/config/regional/translate/import', array(
+    $this->drupalPostForm('admin/config/regional/translate/import', array(
       'langcode' => 'fr',
       'files[file]' => $name,
     ), t('Import'));
@@ -111,7 +111,7 @@ function testStandalonePoFile() {
       'langcode' => 'fr',
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), 'String not overwritten by imported string.');
 
     // This import should not have changed number of plural forms.
@@ -133,7 +133,7 @@ function testStandalonePoFile() {
       'langcode' => 'fr',
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), 'String overwritten by imported string.');
     // This import should have changed number of plural forms.
     $locale_plurals = \Drupal::state()->get('locale.translation.plurals') ?: array();
@@ -169,7 +169,7 @@ function testStandalonePoFile() {
       'langcode' => 'fr',
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), 'Customized string not overwritten by imported string.');
 
     // Try importing a .po file with overriding strings, and ensure existing
@@ -188,7 +188,7 @@ function testStandalonePoFile() {
       'langcode' => 'fr',
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), 'Customized string overwritten by imported string.');
 
   }
@@ -233,7 +233,7 @@ function testEmptyMsgstr() {
       'langcode' => $langcode,
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText($str, 'Search found the string as untranslated.');
   }
 
@@ -264,7 +264,7 @@ function testConfigPoFile() {
       'name' => $this->randomName(16),
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Check for the source strings we are going to translate. Adding the
     // custom language should have made the process to export configuration
@@ -287,7 +287,7 @@ function testConfigPoFile() {
         'langcode' => $langcode,
         'translation' => 'all',
       );
-      $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+      $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
       $this->assertText($config_string[1], format_string('Translation of @string found.', array('@string' => $config_string[0])));
     }
 
@@ -314,7 +314,7 @@ function importPoFile($contents, array $options = array()) {
     $name = tempnam('temporary://', "po_") . '.po';
     file_put_contents($name, $contents);
     $options['files[file]'] = $name;
-    $this->drupalPost('admin/config/regional/translate/import', $options, t('Import'));
+    $this->drupalPostForm('admin/config/regional/translate/import', $options, t('Import'));
     drupal_unlink($name);
   }
 
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php
index 878444d..931212d 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocalePathTest.php
@@ -60,11 +60,11 @@ function testPathLanguageConfiguration() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Set path prefix.
     $edit = array( "prefix[$langcode]" => $prefix );
-    $this->drupalPost('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
 
     // Check that the "xx" front page is readily available because path prefix
     // negotiation is pre-configured.
@@ -82,7 +82,7 @@ function testPathLanguageConfiguration() {
       'alias'    => $english_path,
       'langcode' => 'en',
     );
-    $this->drupalPost($path, $edit, t('Save'));
+    $this->drupalPostForm($path, $edit, t('Save'));
 
     // Create a path alias in new custom language.
     $custom_language_path = $this->randomName(8);
@@ -91,7 +91,7 @@ function testPathLanguageConfiguration() {
       'alias'    => $custom_language_path,
       'langcode' => $langcode,
     );
-    $this->drupalPost($path, $edit, t('Save'));
+    $this->drupalPostForm($path, $edit, t('Save'));
 
     // Confirm English language path alias works.
     $this->drupalGet($english_path);
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocalePluralFormatTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocalePluralFormatTest.php
index 25b6922..195453a 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocalePluralFormatTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocalePluralFormatTest.php
@@ -145,7 +145,7 @@ function testPluralEditExport() {
     ));
 
     // Get the French translations.
-    $this->drupalPost('admin/config/regional/translate/export', array(
+    $this->drupalPostForm('admin/config/regional/translate/export', array(
       'langcode' => 'fr',
     ), t('Export'));
     // Ensure we have a translation file.
@@ -156,7 +156,7 @@ function testPluralEditExport() {
     $this->assertRaw("msgid \"1 hour\"\nmsgid_plural \"@count hours\"\nmsgstr[0] \"@count heure\"\nmsgstr[1] \"@count heures\"", 'Plural translations exported properly.');
 
     // Get the Croatian translations.
-    $this->drupalPost('admin/config/regional/translate/export', array(
+    $this->drupalPostForm('admin/config/regional/translate/export', array(
       'langcode' => 'hr',
     ), t('Export'));
     // Ensure we have a translation file.
@@ -176,7 +176,7 @@ function testPluralEditExport() {
     $search = array(
       'langcode' => 'hr',
     );
-    $this->drupalPost($path, $search, t('Filter'));
+    $this->drupalPostForm($path, $search, t('Filter'));
     // Labels for plural editing elements.
     $this->assertText('Singular form');
     $this->assertText('First plural form');
@@ -193,12 +193,12 @@ function testPluralEditExport() {
     $edit = array(
       "strings[$lid][translations][1]" => '@count sata edited',
     );
-    $this->drupalPost($path, $edit, t('Save translations'));
+    $this->drupalPostForm($path, $edit, t('Save translations'));
 
     $search = array(
       'langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     // Plural values for the langcode fr.
     $this->assertText('@count heure');
     $this->assertText('@count heures');
@@ -208,7 +208,7 @@ function testPluralEditExport() {
     $edit = array(
       "strings[$lid][translations][0]" => '@count heure edited',
     );
-    $this->drupalPost($path, $edit, t('Save translations'));
+    $this->drupalPostForm($path, $edit, t('Save translations'));
 
     // Inject a plural source string to the database. We need to use a specific
     // langcode here because the language will be English by default and will
@@ -221,31 +221,31 @@ function testPluralEditExport() {
       'string' => '1 day',
       'langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
 
     // Save complete translations for the string in langcode fr.
     $edit = array(
       "strings[$lid][translations][0]" => '1 jour',
       "strings[$lid][translations][1]" => '@count jours',
     );
-    $this->drupalPost($path, $edit, t('Save translations'));
+    $this->drupalPostForm($path, $edit, t('Save translations'));
 
     // Save complete translations for the string in langcode hr.
     $search = array(
       'string' => '1 day',
       'langcode' => 'hr',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
 
     $edit = array(
       "strings[$lid][translations][0]" => '@count dan',
       "strings[$lid][translations][1]" => '@count dana',
       "strings[$lid][translations][2]" => '@count dana',
     );
-    $this->drupalPost($path, $edit, t('Save translations'));
+    $this->drupalPostForm($path, $edit, t('Save translations'));
 
    // Get the French translations.
-    $this->drupalPost('admin/config/regional/translate/export', array(
+    $this->drupalPostForm('admin/config/regional/translate/export', array(
       'langcode' => 'fr',
     ), t('Export'));
     // Check for plural export specifically.
@@ -253,7 +253,7 @@ function testPluralEditExport() {
     $this->assertRaw("msgid \"1 day\"\nmsgid_plural \"@count days\"\nmsgstr[0] \"1 jour\"\nmsgstr[1] \"@count jours\"", 'Added French plural translations for days exported properly.');
 
     // Get the Croatian translations.
-    $this->drupalPost('admin/config/regional/translate/export', array(
+    $this->drupalPostForm('admin/config/regional/translate/export', array(
       'langcode' => 'hr',
     ), t('Export'));
     // Check for plural export specifically.
@@ -273,7 +273,7 @@ function importPoFile($contents, array $options = array()) {
     $name = tempnam('temporary://', "po_") . '.po';
     file_put_contents($name, $contents);
     $options['files[file]'] = $name;
-    $this->drupalPost('admin/config/regional/translate/import', $options, t('Import'));
+    $this->drupalPostForm('admin/config/regional/translate/import', $options, t('Import'));
     drupal_unlink($name);
   }
 
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationUiTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationUiTest.php
index 9527adc..06b6ed4 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationUiTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleTranslationUiTest.php
@@ -38,7 +38,7 @@ function testEnglishTranslation() {
     $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages'));
     $this->drupalLogin($admin_user);
 
-    $this->drupalPost('admin/config/regional/language/edit/en', array('locale_translate_english' => TRUE), t('Save language'));
+    $this->drupalPostForm('admin/config/regional/language/edit/en', array('locale_translate_english' => TRUE), t('Save language'));
     $this->assertLinkByHref('/admin/config/regional/translate?langcode=en', 0, 'Enabled interface translation to English.');
   }
 
@@ -71,7 +71,7 @@ function testStringTranslation() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     // Add string.
     t($name, array(), array('langcode' => $langcode));
     // Reset locale cache.
@@ -87,7 +87,7 @@ function testStringTranslation() {
       'langcode' => $langcode,
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText($name, 'Search found the string as untranslated.');
 
     // Assume this is the only result, given the random name.
@@ -102,10 +102,10 @@ function testStringTranslation() {
     $this->assertNoOption('edit-langcode', 'en', 'No way to translate the string to English.');
     $this->drupalLogout();
     $this->drupalLogin($admin_user);
-    $this->drupalPost('admin/config/regional/language/edit/en', array('locale_translate_english' => TRUE), t('Save language'));
+    $this->drupalPostForm('admin/config/regional/language/edit/en', array('locale_translate_english' => TRUE), t('Save language'));
     $this->drupalLogout();
     $this->drupalLogin($translate_user);
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText($name, 'Search found the string as untranslated.');
 
     // Assume this is the only result, given the random name.
@@ -114,7 +114,7 @@ function testStringTranslation() {
     $edit = array(
       $lid => $translation,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
     $this->assertText(t('The strings have been saved.'), 'The strings have been saved.');
     $this->assertEqual($this->getUrl(), url('admin/config/regional/translate', array('absolute' => TRUE)), 'Correct page redirection.');
     $search = array(
@@ -122,7 +122,7 @@ function testStringTranslation() {
       'langcode' => $langcode,
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertRaw($translation, 'Non-English translation properly saved.');
 
 
@@ -131,19 +131,19 @@ function testStringTranslation() {
       'langcode' => 'en',
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $textarea = current($this->xpath('//textarea'));
     $lid = (string) $textarea[0]['name'];
     $edit = array(
       $lid => $translation_to_en,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
     $search = array(
       'string' => $name,
       'langcode' => 'en',
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertRaw($translation_to_en, 'English translation properly saved.');
 
     // Reset the tag cache on the tester side in order to pick up the call to
@@ -164,7 +164,7 @@ function testStringTranslation() {
       'langcode' => 'en',
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), 'String is translated.');
 
     $this->drupalLogout();
@@ -173,7 +173,7 @@ function testStringTranslation() {
     $this->drupalLogin($admin_user);
     $path = 'admin/config/regional/language/delete/' . $langcode;
     // This a confirm form, we do not need any fields changed.
-    $this->drupalPost($path, array(), t('Delete'));
+    $this->drupalPostForm($path, array(), t('Delete'));
     // We need raw here because %language and %langcode will add HTML.
     $t_args = array('%language' => $name, '%langcode' => $langcode);
     $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), 'The test language has been removed.');
@@ -190,14 +190,14 @@ function testStringTranslation() {
       'langcode' => 'en',
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     // Assume this is the only result, given the random name.
     $textarea = current($this->xpath('//textarea'));
     $lid = (string) $textarea[0]['name'];
     $edit = array(
       $lid => '',
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
     $this->assertRaw($name, 'The strings have been saved.');
     $this->drupalLogin($translate_user);
     $search = array(
@@ -205,7 +205,7 @@ function testStringTranslation() {
       'langcode' => 'en',
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), 'The translation has been removed');
   }
 
@@ -229,7 +229,7 @@ function testJavaScriptTranslation() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     drupal_static_reset('language_list');
 
     // Build the JavaScript translation file.
@@ -248,14 +248,14 @@ function testJavaScriptTranslation() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
 
     $textarea = current($this->xpath('//textarea'));
     $lid = (string) $textarea[0]['name'];
     $edit = array(
       $lid => $this->randomName(),
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     // Trigger JavaScript translation parsing and building.
     _locale_rebuild_js($langcode);
@@ -302,7 +302,7 @@ function testStringValidation() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     // Add string.
     t($name, array(), array('langcode' => $langcode));
     // Reset locale cache.
@@ -311,7 +311,7 @@ function testStringValidation() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     // Find the edit path.
 
     $textarea = current($this->xpath('//textarea'));
@@ -320,7 +320,7 @@ function testStringValidation() {
       $edit = array(
         $lid => $translation,
       );
-      $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+      $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
       // Check for a form error on the textarea.
       $form_class = $this->xpath('//form[@id="locale-translate-edit-form"]//textarea/@class');
       $this->assertNotIdentical(FALSE, strpos($form_class[0], 'error'), 'The string was rejected as unsafe.');
@@ -357,7 +357,7 @@ function testStringSearch() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     $edit = array(
       'predefined_langcode' => 'custom',
@@ -365,7 +365,7 @@ function testStringSearch() {
       'name' => $this->randomName(16),
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Add string.
     t($name, array(), array('langcode' => $langcode));
@@ -380,7 +380,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     // assertText() seems to remove the input field where $name always could be
     // found, so this is not a false assert. See how assertNoText succeeds
     // later.
@@ -393,7 +393,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), "Search didn't find the string.");
 
     // Ensure untranslated string appears if searching on 'only untranslated
@@ -403,7 +403,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), 'Search found the string.');
 
     // Add translation.
@@ -414,7 +414,7 @@ function testStringSearch() {
     $edit = array(
       $lid => $translation,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     // Ensure translated string does appear if searching on 'only
     // translated strings'.
@@ -423,7 +423,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), 'Search found the translation.');
 
     // Ensure translated source string doesn't appear if searching on 'only
@@ -433,7 +433,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), "Search didn't find the source string.");
 
     // Ensure translated string doesn't appear if searching on 'only
@@ -443,7 +443,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), "Search didn't find the translation.");
 
     // Ensure translated string does appear if searching on the custom language.
@@ -452,7 +452,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), 'Search found the translation.');
 
     // Ensure translated string doesn't appear if searching in System (English).
@@ -461,7 +461,7 @@ function testStringSearch() {
       'langcode' => 'yy',
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), "Search didn't find the translation.");
 
     // Search for a string that isn't in the system.
@@ -471,7 +471,7 @@ function testStringSearch() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), "Search didn't find the invalid string.");
   }
 
@@ -508,7 +508,7 @@ function testUICustomizedStrings(){
       'translation' => 'translated',
       'customized' => '0',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
 
     $source = $this->assertText($translation->getString(), 'Translation is found in search result.');
 
@@ -518,7 +518,7 @@ function testUICustomizedStrings(){
     $edit = array(
       $lid => $translation->getString(),
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     // Ensure unchanged translation string does appear if searching non-customized translation.
     $search = array(
@@ -527,7 +527,7 @@ function testUICustomizedStrings(){
       'translation' => 'translated',
       'customized' => '0',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $source = $this->assertText($string->getString(), 'Translation is not marked as customized.');
 
     // Submit the translations with a new translation.
@@ -536,7 +536,7 @@ function testUICustomizedStrings(){
     $edit = array(
       $lid => $this->randomName(100),
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     // Ensure changed translation string does appear if searching customized translation.
     $search = array(
@@ -545,7 +545,7 @@ function testUICustomizedStrings(){
       'translation' => 'translated',
       'customized' => '1',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText($string->getString(), "Translation is marked as customized.");
   }
 }
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
index cf36a06..85b7450 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
@@ -83,9 +83,9 @@ function testUninstallProcess() {
     $js_strings = $this->container->get('locale.storage')->getStrings(array('type' => 'javascript'));
     $string = reset($js_strings);
     $edit = array('string' => $string->source);
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Filter'));
     $edit = array('strings[' . $string->lid . '][translations][0]' => 'french translation');
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
     _locale_rebuild_js('fr');
     $config = \Drupal::config('locale.settings');
     $locale_javascripts = $this->container->get('state')->get('locale.translation.javascript') ?: array();
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateBase.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateBase.php
index 3e185df..d61128d 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateBase.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateBase.php
@@ -81,7 +81,7 @@ protected function setTranslationsDirectory($path) {
    */
   protected function addLanguage($langcode) {
     $edit = array('predefined_langcode' => $langcode);
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     drupal_static_reset('language_list');
     $this->assertTrue(language_load($langcode), String::format('Language %langcode added.', array('%langcode' => $langcode)));
   }
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateCronTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateCronTest.php
index 90a914f..d5fe228 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateCronTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateCronTest.php
@@ -50,7 +50,7 @@ function testUpdateCron() {
 
     // Update translations using batch to ensure a clean test starting point.
     $this->drupalGet('admin/reports/translations/check');
-    $this->drupalPost('admin/reports/translations', array(), t('Update translations'));
+    $this->drupalPostForm('admin/reports/translations', array(), t('Update translations'));
 
     // Store translation status for comparison.
     $initial_history = locale_translation_get_file_history();
@@ -73,7 +73,7 @@ function testUpdateCron() {
     $edit = array(
       'update_interval_days' => 0,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Execute locale cron taks to add tasks to the queue.
     locale_cron();
@@ -88,7 +88,7 @@ function testUpdateCron() {
     $edit = array(
       'update_interval_days' => 7,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Execute locale cron taks to add tasks to the queue.
     locale_cron();
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateTest.php
index 6c7e7a3..08c7a9a 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUpdateTest.php
@@ -75,7 +75,7 @@ function testUpdateProjectsHidden() {
     $edit = array(
       'check_disabled_modules' => TRUE,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     $projects = locale_translation_project_list();
     $this->assertTrue(isset($projects['locale_test_translate']), 'Disabled module found');
@@ -110,7 +110,7 @@ function testUpdateCheckStatus() {
     $edit = array(
       'use_source' => LOCALE_TRANSLATION_USE_SOURCE_LOCAL,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Get status of translation sources at local file system.
     $this->drupalGet('admin/reports/translations/check');
@@ -126,7 +126,7 @@ function testUpdateCheckStatus() {
     $edit = array(
       'use_source' => LOCALE_TRANSLATION_USE_SOURCE_REMOTE_AND_LOCAL,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Get status of translation sources at both local and remote locations.
     $this->drupalGet('admin/reports/translations/check');
@@ -161,7 +161,7 @@ function testUpdateImportSourceRemote() {
       'use_source' => LOCALE_TRANSLATION_USE_SOURCE_REMOTE_AND_LOCAL,
       'overwrite' => LOCALE_TRANSLATION_OVERWRITE_ALL,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Get the translation status.
     $this->drupalGet('admin/reports/translations/check');
@@ -173,7 +173,7 @@ function testUpdateImportSourceRemote() {
     $this->assertText('Contributed module two (' . format_date($this->timestamp_new, 'html_date') . ')', 'Updates for Contrib module two');
 
     // Execute the translation update.
-    $this->drupalPost('admin/reports/translations', array(), t('Update translations'));
+    $this->drupalPostForm('admin/reports/translations', array(), t('Update translations'));
 
     // Check if the translation has been updated, using the status cache.
     $status = locale_translation_get_status();
@@ -223,11 +223,11 @@ function testUpdateImportSourceLocal() {
       'use_source' => LOCALE_TRANSLATION_USE_SOURCE_LOCAL,
       'overwrite' => LOCALE_TRANSLATION_OVERWRITE_ALL,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Execute the translation update.
     $this->drupalGet('admin/reports/translations/check');
-    $this->drupalPost('admin/reports/translations', array(), t('Update translations'));
+    $this->drupalPostForm('admin/reports/translations', array(), t('Update translations'));
 
     // Check if the translation has been updated, using the status cache.
     $status = locale_translation_get_status();
@@ -277,11 +277,11 @@ function testUpdateImportModeNonCustomized() {
       'use_source' => LOCALE_TRANSLATION_USE_SOURCE_REMOTE_AND_LOCAL,
       'overwrite' => LOCALE_TRANSLATION_OVERWRITE_NON_CUSTOMIZED,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Execute translation update.
     $this->drupalGet('admin/reports/translations/check');
-    $this->drupalPost('admin/reports/translations', array(), t('Update translations'));
+    $this->drupalPostForm('admin/reports/translations', array(), t('Update translations'));
 
     // Check whether existing translations have (not) been overwritten.
     $this->assertEqual(t('January', array(), array('langcode' => 'de')), 'Januar_customized', 'Translation of January');
@@ -313,11 +313,11 @@ function testUpdateImportModeNone() {
       'use_source' => LOCALE_TRANSLATION_USE_SOURCE_REMOTE_AND_LOCAL,
       'overwrite' => LOCALE_TRANSLATION_OVERWRITE_NONE,
     );
-    $this->drupalPost('admin/config/regional/translate/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/translate/settings', $edit, t('Save configuration'));
 
     // Execute translation update.
     $this->drupalGet('admin/reports/translations/check');
-    $this->drupalPost('admin/reports/translations', array(), t('Update translations'));
+    $this->drupalPostForm('admin/reports/translations', array(), t('Update translations'));
 
     // Check whether existing translations have (not) been overwritten.
     $this->assertTranslation('January', 'Januar_customized', 'de');
@@ -343,7 +343,7 @@ function testEnableDisableModule() {
     $edit = array(
       'modules[Testing][locale_test_translate][enable]' => 'locale_test_translate',
     );
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
 
     // Check if translations have been imported.
     $this->assertRaw(t('One translation file imported. %number translations were added, %update translations were updated and %delete translations were removed.',
@@ -354,12 +354,12 @@ function testEnableDisableModule() {
     $edit = array(
       'modules[Testing][locale_test_translate][enable]' => FALSE,
     );
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $edit = array(
       'uninstall[locale_test_translate]' => 1,
     );
-    $this->drupalPost('admin/modules/uninstall', $edit, t('Uninstall'));
-    $this->drupalPost(NULL, array(), t('Uninstall'));
+    $this->drupalPostForm('admin/modules/uninstall', $edit, t('Uninstall'));
+    $this->drupalPostForm(NULL, array(), t('Uninstall'));
 
     // Check if the file data is removed from the database.
     $history = locale_translation_get_file_history();
@@ -383,7 +383,7 @@ function testEnableDisableLanguage() {
     $edit = array(
       'modules[Testing][locale_test_translate][enable]' => 'locale_test_translate',
     );
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
 
     // Check if there is no Dutch translation yet.
     $this->assertTranslation('Extraday', '', 'nl');
@@ -393,7 +393,7 @@ function testEnableDisableLanguage() {
     $edit = array(
       'predefined_langcode' => 'nl',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Check if the right number of translations are added.
     $this->assertRaw(t('One translation file imported. %number translations were added, %update translations were updated and %delete translations were removed.',
@@ -405,7 +405,7 @@ function testEnableDisableLanguage() {
     $this->assertTrue((boolean) $result, 'Files removed from file history');
 
     // Remove a language.
-    $this->drupalPost('admin/config/regional/language/delete/nl', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/nl', array(), t('Delete'));
 
     // Check if the language data is removed from the database.
     $result = db_query("SELECT project FROM {locale_file} WHERE langcode='nl'")->fetchField();
@@ -427,7 +427,7 @@ function testEnableCustomLanguage() {
     $edit = array(
       'modules[Testing][locale_test_translate][enable]' => 'locale_test_translate',
     );
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
 
     // Create and enable a custom language with language code 'xx' and a random
     // name.
@@ -439,7 +439,7 @@ function testEnableCustomLanguage() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Ensure the translation file is automatically imported when the language
     // was added.
@@ -452,7 +452,7 @@ function testEnableCustomLanguage() {
       'langcode' => $langcode,
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), 'String successfully imported.');
 
     // Ensure the multiline string was imported.
@@ -461,7 +461,7 @@ function testEnableCustomLanguage() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText('Multiline translation string to make sure that import works with it.', 'String successfully imported.');
 
     // Ensure 'Allowed HTML source string' was imported but the translation for
@@ -472,7 +472,7 @@ function testEnableCustomLanguage() {
       'langcode' => $langcode,
       'translation' => 'all',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     $this->assertText('Allowed HTML source string', 'String successfully imported.');
     $this->assertNoText('Another allowed HTML source string', 'String with disallowed translation not imported.');
   }
diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php
index 19abf0b..d2d3b48 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php
@@ -65,7 +65,7 @@ function testMenuLanguage() {
       'default_language[langcode]' => 'bb',
       'default_language[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/menu/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/add', $edit, t('Save'));
 
     // Check that the language settings were saved.
     $this->assertEqual(entity_load('menu', $menu_name)->langcode, $edit['langcode']);
@@ -87,7 +87,7 @@ function testMenuLanguage() {
       'link_title' => $link_title,
       'link_path' => $link_path,
     );
-    $this->drupalPost("admin/structure/menu/manage/$menu_name/add", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu_name/add", $edit, t('Save'));
     // Check the link was added with the correct menu link default language.
     $menu_links = entity_load_multiple_by_properties('menu_link', array('link_title' => $link_title));
     $menu_link = reset($menu_links);
@@ -101,7 +101,7 @@ function testMenuLanguage() {
     $edit = array(
       'default_language[langcode]' => 'cc',
     );
-    $this->drupalPost("admin/structure/menu/manage/$menu_name", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu_name", $edit, t('Save'));
 
     // Check cc is the menu link default.
     $this->assertOptionSelected('edit-default-language-langcode', $edit['default_language[langcode]'], 'The menu link default language was correctly selected.');
@@ -112,7 +112,7 @@ function testMenuLanguage() {
       'link_title' => $link_title,
       'link_path' => $link_path,
     );
-    $this->drupalPost("admin/structure/menu/manage/$menu_name/add", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu_name/add", $edit, t('Save'));
     // Check the link was added with the correct new menu link default language.
     $menu_links = entity_load_multiple_by_properties('menu_link', array('link_title' => $link_title));
     $menu_link = reset($menu_links);
@@ -126,7 +126,7 @@ function testMenuLanguage() {
     $edit = array(
       'langcode' => 'bb',
     );
-    $this->drupalPost('admin/structure/menu/item/' . $menu_link->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/item/' . $menu_link->id() . '/edit', $edit, t('Save'));
     $this->assertMenuLink($menu_link->id(), array(
       'menu_name' => $menu_name,
       'link_path' => $link_path,
@@ -144,7 +144,7 @@ function testMenuLanguage() {
     $edit = array(
       'default_language[language_show]' => FALSE,
     );
-    $this->drupalPost("admin/structure/menu/manage/$menu_name", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu_name", $edit, t('Save'));
     $this->assertNoFieldChecked('edit-default-language-language-show');
 
     // Check that the language settings were saved.
diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php
index 29d0223..857d45d 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php
@@ -54,11 +54,11 @@ function testMenuNodeFormWidget() {
     $edit = array(
       'menu_options[tools]' => 1,
     );
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     $edit = array(
       'menu_parent' => 'main:0',
     );
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
 
     // Create a node.
     $node_title = $this->randomName();
@@ -67,7 +67,7 @@ function testMenuNodeFormWidget() {
       "title" => $node_title,
       "body[$langcode][0][value]" => $this->randomString(),
     );
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
     $node = $this->drupalGetNodeByTitle($node_title);
     // Assert that there is no link for the node.
     $this->drupalGet('test-page');
@@ -77,7 +77,7 @@ function testMenuNodeFormWidget() {
     $edit = array(
       'menu[enabled]' => 1,
     );
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     // Assert that there is no link for the node.
     $this->drupalGet('test-page');
     $this->assertNoLink($node_title);
@@ -88,7 +88,7 @@ function testMenuNodeFormWidget() {
       'menu[link_title]' => $node_title,
       'menu[weight]' => 17,
     );
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     // Assert that the link exists.
     $this->drupalGet('test-page');
     $this->assertLink($node_title);
@@ -100,7 +100,7 @@ function testMenuNodeFormWidget() {
     $edit = array(
       'menu[enabled]' => FALSE,
     );
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     // Assert that there is no link for the node.
     $this->drupalGet('test-page');
     $this->assertNoLink($node_title);
@@ -118,7 +118,7 @@ function testMenuNodeFormWidget() {
     $this->drupalGet('node/' . $node->id() . '/edit');
     $this->assertText('Provide a menu link', 'Link in not allowed menu not shown in node edit form');
     // Assert that the link is still in the Administration menu after save.
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $link = menu_link_load($item['mlid']);
     $this->assertTrue($link, 'Link in not allowed menu still exists after saving node');
 
diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
index 9e7dcdc..f7e0690 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
@@ -133,7 +133,7 @@ function addCustomMenu() {
       'description' => '',
       'label' =>  $label,
     );
-    $this->drupalPost('admin/structure/menu/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/add', $edit, t('Save'));
 
     // Verify that using a menu_name that is too long results in a validation message.
     $this->assertRaw(t('!name cannot be longer than %max characters but is currently %length characters long.', array(
@@ -145,7 +145,7 @@ function addCustomMenu() {
     // Change the menu_name so it no longer exceeds the maximum length.
     $menu_name = substr(hash('sha256', $this->randomName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI);
     $edit['id'] = $menu_name;
-    $this->drupalPost('admin/structure/menu/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/add', $edit, t('Save'));
 
     // Verify that no validation error is given for menu_name length.
     $this->assertNoRaw(t('!name cannot be longer than %max characters but is currently %length characters long.', array(
@@ -177,7 +177,7 @@ function deleteCustomMenu($menu) {
     $label = $this->menu->label();
 
     // Delete custom menu.
-    $this->drupalPost("admin/structure/menu/manage/$menu_name/delete", array(), t('Delete'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu_name/delete", array(), t('Delete'));
     $this->assertResponse(200);
     $this->assertRaw(t('The custom menu %title has been deleted.', array('%title' => $label)), 'Custom menu was deleted');
     $this->assertFalse(menu_load($menu_name), 'Custom menu was deleted');
@@ -353,7 +353,7 @@ function doMenuTests($menu_name) {
     // Note in the UI the 'links[mlid:x][hidden]' form element maps to enabled,
     // or NOT hidden.
     $edit['links[mlid:' . $item1['mlid'] . '][hidden]'] = TRUE;
-    $this->drupalPost('admin/structure/menu/manage/' . $item1['menu_name'], $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/manage/' . $item1['menu_name'], $edit, t('Save'));
 
     // Verify in the database.
     $this->assertMenuLink($item1['mlid'], array('hidden' => 0));
@@ -378,7 +378,7 @@ function testMenuQueryAndFragment() {
 
     // Now change the path to something without query and fragment.
     $path = 'test-page';
-    $this->drupalPost('admin/structure/menu/item/' . $item['mlid'] . '/edit', array('link_path' => $path), t('Save'));
+    $this->drupalPostForm('admin/structure/menu/item/' . $item['mlid'] . '/edit', array('link_path' => $path), t('Save'));
     $this->drupalGet('admin/structure/menu/item/' . $item['mlid'] . '/edit');
     $this->assertFieldByName('link_path', $path, 'Path no longer has query or fragment.');
   }
@@ -391,7 +391,7 @@ function testSystemMenuRename() {
     $edit = array(
       'label' => $this->randomName(16),
     );
-    $this->drupalPost('admin/structure/menu/manage/main', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/manage/main', $edit, t('Save'));
 
     // Make sure menu shows up with new name in block addition.
     $default_theme = variable_get('theme_default', 'stark');
@@ -414,16 +414,8 @@ public function testBlockContextualLinks() {
 
     // Get server-rendered contextual links.
     // @see \Drupal\contextual\Tests\ContextualDynamicContextTest:renderContextualLinks()
-    $post = urlencode('ids[0]') . '=' . urlencode($id);
-    $response = $this->curlExec(array(
-      CURLOPT_URL => url('contextual/render', array('absolute' => TRUE, 'query' => array('destination' => 'test-page'))),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post,
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
+    $post = array('ids[0]' => $id);
+    $response =  $this->drupalPost('contextual/render', 'application/json', $post, array('query' => array('destination' => 'test-page')));
     $this->assertResponse(200);
     $json = drupal_json_decode($response);
     $this->assertIdentical($json[$id], '<ul class="contextual-links"><li class="block-configure odd first"><a href="' . base_path() . 'admin/structure/block/manage/' . $block->id() . '?destination=test-page">Configure block</a></li><li class="menu-edit even last"><a href="' . base_path() . 'admin/structure/menu/manage/tools?destination=test-page">Edit menu</a></li></ul>');
@@ -493,7 +485,7 @@ function addMenuLink($plid = 0, $link = '<front>', $menu_name = 'tools', $expand
       $actual_link = $link;
     }
     // Add menu link.
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertResponse(200);
     $this->assertText('The menu link has been saved.');
 
@@ -516,7 +508,7 @@ function addInvalidMenuLink($menu_name = 'tools') {
         'link_path' => $link_path,
         'link_title' => 'title',
       );
-      $this->drupalPost("admin/structure/menu/manage/$menu_name/add", $edit, t('Save'));
+      $this->drupalPostForm("admin/structure/menu/manage/$menu_name/add", $edit, t('Save'));
       $this->assertRaw(t("The path '@path' is either invalid or you do not have access to it.", array('@path' => $link_path)), 'Menu link was not created');
     }
   }
@@ -565,7 +557,7 @@ function moveMenuLink($item, $plid, $menu_name) {
     $edit = array(
       'parent' => $menu_name . ':' . $plid,
     );
-    $this->drupalPost("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
     $this->assertResponse(200);
   }
 
@@ -583,7 +575,7 @@ function modifyMenuLink(&$item) {
     // Edit menu link.
     $edit = array();
     $edit['link_title'] = $title;
-    $this->drupalPost("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
     $this->assertResponse(200);
     $this->assertText('The menu link has been saved.');
     // Verify menu link.
@@ -602,7 +594,7 @@ function resetMenuLink($item, $old_title) {
     $title = $item['link_title'];
 
     // Reset menu link.
-    $this->drupalPost("admin/structure/menu/item/$mlid/reset", array(), t('Reset'));
+    $this->drupalPostForm("admin/structure/menu/item/$mlid/reset", array(), t('Reset'));
     $this->assertResponse(200);
     $this->assertRaw(t('The menu link was reset to its default settings.'), 'Menu link was reset');
 
@@ -622,7 +614,7 @@ function deleteMenuLink($item) {
     $title = $item['link_title'];
 
     // Delete menu link.
-    $this->drupalPost("admin/structure/menu/item/$mlid/delete", array(), t('Confirm'));
+    $this->drupalPostForm("admin/structure/menu/item/$mlid/delete", array(), t('Confirm'));
     $this->assertResponse(200);
     $this->assertRaw(t('The menu link %title has been deleted.', array('%title' => $title)), 'Menu link was deleted');
 
@@ -659,7 +651,7 @@ function toggleMenuLink($item) {
   function disableMenuLink($item) {
     $mlid = $item['mlid'];
     $edit['enabled'] = FALSE;
-    $this->drupalPost("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
 
     // Unlike most other modules, there is no confirmation message displayed.
     // Verify in the database.
@@ -675,7 +667,7 @@ function disableMenuLink($item) {
   function enableMenuLink($item) {
     $mlid = $item['mlid'];
     $edit['enabled'] = TRUE;
-    $this->drupalPost("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/item/$mlid/edit", $edit, t('Save'));
 
     // Verify in the database.
     $this->assertMenuLink($mlid, array('hidden' => 0));
diff --git a/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php b/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php
index 4fc3f7b..f6b665e 100644
--- a/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php
@@ -71,7 +71,7 @@ function testMultiStepNodeFormBasicOptions() {
       'sticky' => 1,
       "{$this->field_name}[$langcode][0][value]" => $this->randomString(32),
     );
-    $this->drupalPost('node/add/page', $edit, t('Add another item'));
+    $this->drupalPostForm('node/add/page', $edit, t('Add another item'));
     $this->assertNoFieldChecked('edit-promote', 'promote stayed unchecked');
     $this->assertFieldChecked('edit-sticky', 'sticky stayed checked');
   }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeAccessBaseTableTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeAccessBaseTableTest.php
index ee55eb9..e673559 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeAccessBaseTableTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeAccessBaseTableTest.php
@@ -84,7 +84,7 @@ function testNodeAccessBasic() {
           $edit['field_tags[und]'] = 'public';
         }
 
-        $this->drupalPost('node/add/article', $edit, t('Save'));
+        $this->drupalPostForm('node/add/article', $edit, t('Save'));
         $nid = db_query('SELECT nid FROM {node_field_data} WHERE title = :title', array(':title' => $edit['title']))->fetchField();
         $private_status = db_query('SELECT private FROM {node_access_test} where nid = :nid', array(':nid' => $nid))->fetchField();
         $this->assertTrue($is_private == $private_status, 'The private status of the node was properly set in the node_access_test table.');
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeAccessFieldTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeAccessFieldTest.php
index 5b67854..2f1ce3d 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeAccessFieldTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeAccessFieldTest.php
@@ -103,7 +103,7 @@ function testNodeAccessAdministerField() {
     $edit = array();
     $default = 'Sometimes words have two meanings';
     $edit["default_value_input[{$this->field_name}][$langcode][0][value]"] = $default;
-    $this->drupalPost(
+    $this->drupalPostForm(
       "admin/structure/types/manage/page/fields/node.page.{$this->field_name}",
       $edit,
       t('Save settings')
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeAccessRebuildTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeAccessRebuildTest.php
index 379397e..dc2e015 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeAccessRebuildTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeAccessRebuildTest.php
@@ -33,7 +33,7 @@ function setUp() {
   function testNodeAccessRebuild() {
     $this->drupalGet('admin/reports/status');
     $this->clickLink(t('Rebuild permissions'));
-    $this->drupalPost(NULL, array(), t('Rebuild permissions'));
+    $this->drupalPostForm(NULL, array(), t('Rebuild permissions'));
     $this->assertText(t('Content permissions have been rebuilt.'));
   }
 }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
index 09e78a2..38e1c73 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
@@ -48,7 +48,7 @@ function testNodeCreation() {
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit["title"] = $this->randomName(8);
     $edit["body[$langcode][0][value]"] = $this->randomName(16);
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the Basic page has been created.
     $this->assertRaw(t('!post %title has been created.', array('!post' => 'Basic page', '%title' => $edit["title"])), 'Basic page created.');
@@ -113,7 +113,7 @@ function testUnpublishedNodeCreation() {
     $edit = array();
     $edit["title"] = $this->randomName(8);
     $edit["body[" . Language::LANGCODE_NOT_SPECIFIED . "][0][value]"] = $this->randomName(16);
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the user was redirected to the home page.
     $this->assertUrl('');
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeEntityViewModeAlterTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeEntityViewModeAlterTest.php
index 6494b40..fb8b9f5 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeEntityViewModeAlterTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeEntityViewModeAlterTest.php
@@ -40,7 +40,7 @@ function testNodeViewModeChange() {
     $edit["title"] = $this->randomName(8);
     $edit["body[$langcode][0][value]"] = t('Data that should appear only in the body for the node.');
     $edit["body[$langcode][0][summary]"] = t('Extra data that should appear only in the teaser for the node.');
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     $node = $this->drupalGetNodeByTitle($edit["title"]);
 
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php b/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php
index e1a64a6..108fe7a 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php
@@ -49,13 +49,13 @@ function setUp() {
 
     // Enable URL language detection and selection.
     $edit = array('language_interface[enabled][language-url]' => '1');
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Set "Basic page" content type to use multilingual support.
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')), 'Basic page content type has been updated.');
 
     // Make node body translatable.
@@ -79,7 +79,7 @@ function testMultilingualNodeForm() {
     $edit = array();
     $edit[$title_key] = $title_value;
     $edit[$body_key] = $body_value;
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the node exists in the database.
     $node = $this->drupalGetNodeByTitle($edit[$title_key]);
@@ -93,7 +93,7 @@ function testMultilingualNodeForm() {
       $title_key => $this->randomName(8),
       'langcode' => $langcode,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $node = $this->drupalGetNodeByTitle($edit[$title_key], TRUE);
     $this->assertTrue($node, 'Node found in database.');
     $this->assertTrue($node->language()->id == $langcode && $node->body->value == $body_value, 'Field language correctly changed.');
@@ -124,7 +124,7 @@ function testMultilingualDisplaySettings() {
     $edit = array();
     $edit[$title_key] = $title_value;
     $edit[$body_key] = $body_value;
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the node exists in the database.
     $node = $this->drupalGetNodeByTitle($edit[$title_key]);
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeFormButtonsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeFormButtonsTest.php
index 6a0902f..d7e25d7 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeFormButtonsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeFormButtonsTest.php
@@ -48,7 +48,7 @@ function testNodeFormButtons() {
     // Save the node and assert it's published after clicking
     // 'Save and publish'.
     $edit = array('title' => $this->randomString());
-    $this->drupalPost('node/add/article', $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
 
     // Get the node.
     $node_1 = node_load(1);
@@ -60,13 +60,13 @@ function testNodeFormButtons() {
 
     // Save the node and verify it's still published after clicking
     // 'Save and keep published'.
-    $this->drupalPost(NULL, $edit, t('Save and keep published'));
+    $this->drupalPostForm(NULL, $edit, t('Save and keep published'));
     $node = node_load(1, TRUE);
     $this->assertTrue($node_1->isPublished(), 'Node is published');
 
     // Save the node and verify it's unpublished after clicking
     // 'Save and unpublish'.
-    $this->drupalPost('node/' . $node_1->id() . '/edit', $edit, t('Save and unpublish'));
+    $this->drupalPostForm('node/' . $node_1->id() . '/edit', $edit, t('Save and unpublish'));
     $node_1 = node_load(1, TRUE);
     $this->assertFalse($node_1->isPublished(), 'Node is unpublished');
 
@@ -84,7 +84,7 @@ function testNodeFormButtons() {
 
     // Create the node.
     $edit = array('title' => $this->randomString());
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
     $node_2 = node_load(2);
     $this->assertTrue($node_2->isPublished(), 'Node is published');
 
@@ -92,7 +92,7 @@ function testNodeFormButtons() {
     // was created by the normal user.
     $this->drupalLogout();
     $this->drupalLogin($this->admin_user);
-    $this->drupalPost('node/' . $node_2->id() . '/edit', array(), t('Save and unpublish'));
+    $this->drupalPostForm('node/' . $node_2->id() . '/edit', array(), t('Save and unpublish'));
     $node_2 = node_load(2, TRUE);
     $this->assertFalse($node_2->isPublished(), 'Node is unpublished');
 
@@ -100,7 +100,7 @@ function testNodeFormButtons() {
     // it's still unpublished.
     $this->drupalLogout();
     $this->drupalLogin($this->web_user);
-    $this->drupalPost('node/' . $node_2->id() . '/edit', array(), t('Save'));
+    $this->drupalPostForm('node/' . $node_2->id() . '/edit', array(), t('Save'));
     $node_2 = node_load(2, TRUE);
     $this->assertFalse($node_2->isPublished(), 'Node is still unpublished');
     $this->drupalLogout();
@@ -120,7 +120,7 @@ function testNodeFormButtons() {
     $this->drupalLogout();
     $this->drupalLogin($this->web_user);
     $edit = array('title' => $this->randomString());
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
     $node_3 = node_load(3);
     $this->assertFalse($node_3->isPublished(), 'Node is unpublished');
   }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php
index 035c083..beb330d 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php
@@ -37,14 +37,14 @@ function testPagePostInfo() {
     // Set "Basic page" content type to display post information.
     $edit = array();
     $edit['settings[node][submitted]'] = TRUE;
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
 
     // Create a node.
     $edit = array();
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit["title"] = $this->randomName(8);
     $edit["body[$langcode][0][value]"] = $this->randomName(16);
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the post information is displayed.
     $node = $this->drupalGetNodeByTitle($edit["title"]);
@@ -55,14 +55,14 @@ function testPagePostInfo() {
     // Set "Basic page" content type to display post information.
     $edit = array();
     $edit['settings[node][submitted]'] = FALSE;
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
 
     // Create a node.
     $edit = array();
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit["title"] = $this->randomName(8);
     $edit["body[$langcode][0][value]"] = $this->randomName(16);
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the post information is displayed.
     $this->assertNoRaw('<span class="submitted">', 'Post information is not displayed.');
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsAllTestCase.php b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsAllTestCase.php
index c98515f..13e48d1 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsAllTestCase.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsAllTestCase.php
@@ -110,7 +110,7 @@ function testRevisions() {
     $this->assertTrue($node->isDefaultRevision(), 'Third node revision is the current one.');
 
     // Confirm that revisions revert properly.
-    $this->drupalPost("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionId() . "/revert", array(), t('Revert'));
+    $this->drupalPostForm("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionId() . "/revert", array(), t('Revert'));
     $this->assertRaw(t('@type %title has been reverted back to the revision from %revision-date.',
       array(
         '@type' => 'Basic page',
@@ -126,7 +126,7 @@ function testRevisions() {
     $this->assertFalse($node->isDefaultRevision(), 'Third node revision is not the current one.');
 
     // Confirm revisions delete properly.
-    $this->drupalPost("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionId() . "/delete", array(), t('Delete'));
+    $this->drupalPostForm("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionId() . "/delete", array(), t('Delete'));
     $this->assertRaw(t('Revision from %revision-date of @type %title has been deleted.',
       array(
         '%revision-date' => format_date($nodes[1]->getRevisionCreationTime()),
@@ -147,7 +147,7 @@ function testRevisions() {
         'revision_timestamp' => $old_revision_date,
       ))
       ->execute();
-    $this->drupalPost("node/" . $node->id() . "/revisions/" . $nodes[2]->getRevisionId() . "/revert", array(), t('Revert'));
+    $this->drupalPostForm("node/" . $node->id() . "/revisions/" . $nodes[2]->getRevisionId() . "/revert", array(), t('Revert'));
     $this->assertRaw(t('@type %title has been reverted back to the revision from %revision-date.', array(
       '@type' => 'Basic page',
       '%title' => $nodes[2]->getTitle(),
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
index 7a58fed..ff31662 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
@@ -98,7 +98,7 @@ function testRevisions() {
     $this->assertTrue($node->isDefaultRevision(), 'Third node revision is the default one.');
 
     // Confirm that revisions revert properly.
-    $this->drupalPost("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionid() . "/revert", array(), t('Revert'));
+    $this->drupalPostForm("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionid() . "/revert", array(), t('Revert'));
     $this->assertRaw(t('@type %title has been reverted back to the revision from %revision-date.',
                         array('@type' => 'Basic page', '%title' => $nodes[1]->label(),
                               '%revision-date' => format_date($nodes[1]->getRevisionCreationTime()))), 'Revision reverted.');
@@ -110,7 +110,7 @@ function testRevisions() {
     $this->assertFalse($node->isDefaultRevision(), 'Third node revision is not the default one.');
 
     // Confirm revisions delete properly.
-    $this->drupalPost("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionId() . "/delete", array(), t('Delete'));
+    $this->drupalPostForm("node/" . $node->id() . "/revisions/" . $nodes[1]->getRevisionId() . "/delete", array(), t('Delete'));
     $this->assertRaw(t('Revision from %revision-date of @type %title has been deleted.',
                         array('%revision-date' => format_date($nodes[1]->getRevisionCreationTime()),
                               '@type' => 'Basic page', '%title' => $nodes[1]->label())), 'Revision deleted.');
@@ -125,7 +125,7 @@ function testRevisions() {
         'revision_timestamp' => $old_revision_date,
       ))
       ->execute();
-    $this->drupalPost("node/" . $node->id() . "/revisions/" . $nodes[2]->getRevisionId() . "/revert", array(), t('Revert'));
+    $this->drupalPostForm("node/" . $node->id() . "/revisions/" . $nodes[2]->getRevisionId() . "/revert", array(), t('Revert'));
     $this->assertRaw(t('@type %title has been reverted back to the revision from %revision-date.', array(
       '@type' => 'Basic page',
       '%title' => $nodes[2]->label(),
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTitleXSSTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTitleXSSTest.php
index c173adc..3ec53b1 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTitleXSSTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTitleXSSTest.php
@@ -31,7 +31,7 @@ function testNodeTitleXSS() {
     $title = $xss . $this->randomName();
     $edit = array("title" => $title);
 
-    $this->drupalPost('node/add/page', $edit, t('Preview'));
+    $this->drupalPostForm('node/add/page', $edit, t('Preview'));
     $this->assertNoRaw($xss, 'Harmful tags are escaped when previewing a node.');
 
     $settings = array('title' => $title);
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
index 04caedf..c8be00b 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
@@ -95,7 +95,7 @@ protected function assertPublishedStatus() {
         if (!empty($status_actions)) {
           $action = array_shift($status_actions);
         }
-        $this->drupalPost($path, array(), $action, array('language' => $languages[$langcode]));
+        $this->drupalPostForm($path, array(), $action, array('language' => $languages[$langcode]));
       }
       $entity = entity_load($this->entityType, $this->entityId, TRUE);
       foreach ($this->langcodes as $langcode) {
@@ -128,7 +128,7 @@ protected function assertAuthoringInfo() {
         'date[date]' => format_date($values[$langcode]['created'], 'custom', 'Y-m-d'),
         'date[time]' => format_date($values[$langcode]['created'], 'custom', 'H:i:s'),
       );
-      $this->drupalPost($path, $edit, $this->getFormSubmitAction($entity), array('language' => $languages[$langcode]));
+      $this->drupalPostForm($path, $edit, $this->getFormSubmitAction($entity), array('language' => $languages[$langcode]));
     }
 
     $entity = entity_load($this->entityType, $this->entityId, TRUE);
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php
index b54aef0..2ebddbe 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php
@@ -59,18 +59,18 @@ function testNodeTypeInitialLanguageDefaults() {
     $edit = array(
       'predefined_langcode' => 'hu',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     $edit = array(
       'site_default_language' => 'hu',
     );
-    $this->drupalpost('admin/config/regional/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Tests the initial language after changing the site default language.
     // First unhide the language selector.
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
     $this->drupalGet('node/add/article');
     $this->assertField('langcode', 'Language is selectable on node add/edit page when language not hidden.');
     $this->assertOptionSelected('edit-langcode', 'hu', 'The initial language is the site default on the node add page after the site default language is changed.');
@@ -92,7 +92,7 @@ function testNodeTypeInitialLanguageDefaults() {
     $edit = array(
       'language_configuration[langcode]' => 'en',
     );
-    $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
     $this->drupalGet('node/add/article');
     $this->assertOptionSelected('edit-langcode', 'en', 'The initial language is the defined language.');
   }
@@ -108,7 +108,7 @@ function testLanguageFieldVisibility() {
       'title' => $this->randomName(8),
       "body[$langcode][0][value]" => $this->randomName(16),
     );
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
     $node = $this->drupalGetNodeByTitle($edit['title']);
     $this->assertTrue($node, 'Node found in database.');
 
@@ -123,7 +123,7 @@ function testLanguageFieldVisibility() {
     $edit = array(
       'fields[language][type]' => 'visible',
     );
-    $this->drupalPost('admin/structure/types/manage/article/display', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/types/manage/article/display', $edit, t('Save'));
     $this->drupalGet('admin/structure/types/manage/article/display');
     $this->assertOptionSelected('edit-fields-language-type', 'visible', 'Language field has been set to visible.');
 
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTypePersistenceTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTypePersistenceTest.php
index 22aedb4..fbad8e0 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTypePersistenceTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTypePersistenceTest.php
@@ -32,7 +32,7 @@ function testNodeTypeCustomizationPersistence() {
     $forum_disable = array($forum_key => FALSE);
 
     // Enable forum and verify that the node type exists and is not disabled.
-    $this->drupalPost('admin/modules', $forum_enable, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $forum_enable, t('Save configuration'));
     $forum = entity_load('node_type', 'forum');
     $this->assertTrue($forum->id(), 'Forum node type found.');
     $this->assertTrue($forum->isLocked(), 'Forum node type is locked');
@@ -44,14 +44,14 @@ function testNodeTypeCustomizationPersistence() {
     // Customize forum description.
     $description = $this->randomName();
     $edit = array('description' => $description);
-    $this->drupalPost('admin/structure/types/manage/forum', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/forum', $edit, t('Save content type'));
 
     // Check that forum node type customization shows up.
     $this->drupalGet('node/add');
     $this->assertText($description, 'Customized description found');
 
     // Disable forum and check that the node type gets disabled.
-    $this->drupalPost('admin/modules', $forum_disable, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $forum_disable, t('Save configuration'));
     $forum = entity_load('node_type', 'forum');
     $this->assertTrue($forum->isLocked(), 'Forum node type is node locked');
     $this->drupalGet('node/add');
@@ -59,7 +59,7 @@ function testNodeTypeCustomizationPersistence() {
 
     // Reenable forum and check that the customization survived the module
     // disable.
-    $this->drupalPost('admin/modules', $forum_enable, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $forum_enable, t('Save configuration'));
     $forum = entity_load('node_type', 'forum');
     $this->assertTrue($forum->id(), 'Forum node type found.');
     $this->assertTrue($forum->isLocked(), 'Forum node type is locked');
@@ -67,10 +67,10 @@ function testNodeTypeCustomizationPersistence() {
     $this->assertText($description, 'Customized description found');
 
     // Disable and uninstall forum.
-    $this->drupalPost('admin/modules', $forum_disable, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $forum_disable, t('Save configuration'));
     $edit = array('uninstall[forum]' => 'forum');
-    $this->drupalPost('admin/modules/uninstall', $edit, t('Uninstall'));
-    $this->drupalPost(NULL, array(), t('Uninstall'));
+    $this->drupalPostForm('admin/modules/uninstall', $edit, t('Uninstall'));
+    $this->drupalPostForm(NULL, array(), t('Uninstall'));
     $forum = entity_load('node_type', 'forum');
     $this->assertFalse($forum->isLocked(), 'Forum node type is not locked');
     $this->drupalGet('node/add');
@@ -78,7 +78,7 @@ function testNodeTypeCustomizationPersistence() {
 
     // Reenable forum and check that the customization survived the module
     // uninstall.
-    $this->drupalPost('admin/modules', $forum_enable, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $forum_enable, t('Save configuration'));
     $this->drupalGet('node/add');
     $this->assertText($description, 'Customized description is found even after uninstall and reenable.');
   }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php
index c9e8345..2fbef04 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTypeTest.php
@@ -71,7 +71,7 @@ function testNodeTypeCreation() {
       'title_label' => 'title for foo',
       'type' => 'foo',
     );
-    $this->drupalPost('admin/structure/types/add', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/add', $edit, t('Save content type'));
     $type_exists = (bool) entity_load('node_type', 'foo');
     $this->assertTrue($type_exists, 'The new content type has been created in the database.');
   }
@@ -95,7 +95,7 @@ function testNodeTypeEditing() {
     $edit = array(
       'title_label' => 'Foo',
     );
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     // Refresh the field information for the rest of the test.
     field_info_cache_clear();
 
@@ -109,7 +109,7 @@ function testNodeTypeEditing() {
       'type' => 'bar',
       'description' => 'Lorem ipsum.',
     );
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     field_info_cache_clear();
 
     $this->drupalGet('node/add');
@@ -121,9 +121,9 @@ function testNodeTypeEditing() {
     $this->assertRaw('Body', 'Body field was found.');
 
     // Remove the body field.
-    $this->drupalPost('admin/structure/types/manage/bar/fields/node.bar.body/delete', array(), t('Delete'));
+    $this->drupalPostForm('admin/structure/types/manage/bar/fields/node.bar.body/delete', array(), t('Delete'));
     // Resave the settings for this type.
-    $this->drupalPost('admin/structure/types/manage/bar', array(), t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/bar', array(), t('Save content type'));
     // Check that the body field doesn't exist.
     $this->drupalGet('node/add/bar');
     $this->assertNoRaw('Body', 'Body field was not found.');
diff --git a/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php b/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php
index 43704b0..481cc69 100644
--- a/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php
@@ -44,7 +44,7 @@ function testPageEdit() {
     $edit = array();
     $edit[$title_key] = $this->randomName(8);
     $edit[$body_key] = $this->randomName(16);
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the node exists in the database.
     $node = $this->drupalGetNodeByTitle($edit[$title_key]);
@@ -68,7 +68,7 @@ function testPageEdit() {
     $edit[$title_key] = $this->randomName(8);
     $edit[$body_key] = $this->randomName(16);
     // Stay on the current page, without reloading.
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Check that the title and body fields are displayed with the updated values.
     $this->assertText($edit[$title_key], 'Title displayed.');
@@ -83,7 +83,7 @@ function testPageEdit() {
     $edit['title'] = $this->randomName(8);
     $edit[$body_key] = $this->randomName(16);
     $edit['revision'] = TRUE;
-    $this->drupalPost(NULL, $edit, t('Save and keep published'));
+    $this->drupalPostForm(NULL, $edit, t('Save and keep published'));
 
     // Ensure that the node revision has been created.
     $revised_node = $this->drupalGetNodeByTitle($edit['title'], TRUE);
@@ -110,7 +110,7 @@ function testPageAuthoredBy() {
     $edit = array();
     $edit['title'] = $this->randomName(8);
     $edit[$body_key] = $this->randomName(16);
-    $this->drupalPost('node/add/page', $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save and publish'));
 
     // Check that the node was authored by the currently logged in user.
     $node = $this->drupalGetNodeByTitle($edit['title']);
@@ -120,20 +120,20 @@ function testPageAuthoredBy() {
     $edit = array(
       'name' => 'invalid-name',
     );
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
     $this->assertText('The username invalid-name does not exist.');
 
     // Change the authored by field to an empty string, which should assign
     // authorship to the anonymous user (uid 0).
     $edit['name'] = '';
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
     $node = node_load($node->id(), TRUE);
     $this->assertIdentical($node->getAuthorId(), '0', 'Node authored by anonymous user.');
 
     // Change the authored by field to another user's name (that is not
     // logged in).
     $edit['name'] = $this->web_user->getUsername();
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
     $node = node_load($node->id(), TRUE);
     $this->assertIdentical($node->getAuthorId(), $this->web_user->id(), 'Node authored by normal user.');
 
diff --git a/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php b/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php
index f9e3670..46d7ad2 100644
--- a/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php
@@ -120,7 +120,7 @@ function testPagePreview() {
     $edit[$title_key] = $this->randomName(8);
     $edit[$body_key] = $this->randomName(16);
     $edit[$term_key] = $this->term->label();
-    $this->drupalPost('node/add/page', $edit, t('Preview'));
+    $this->drupalPostForm('node/add/page', $edit, t('Preview'));
 
     // Check that the preview is displaying the title, body and term.
     $this->assertTitle(t('Preview | Drupal'), 'Basic page title is preview.');
@@ -135,7 +135,7 @@ function testPagePreview() {
     $this->assertFieldByName($term_key, $edit[$term_key], 'Term field displayed.');
 
     // Save the node.
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
     $node = $this->drupalGetNodeByTitle($edit[$title_key]);
 
     // Check the term was displayed on the saved node.
@@ -152,7 +152,7 @@ function testPagePreview() {
     $newterm1 = $this->randomName(8);
     $newterm2 = $this->randomName(8);
     $edit[$term_key] = $this->term->label() . ', ' . $newterm1 . ', ' . $newterm2;
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Preview'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Preview'));
     $this->assertRaw('>' . $newterm1 . '<', 'First new term displayed.');
     $this->assertRaw('>' . $newterm2 . '<', 'Second new term displayed.');
     // The first term should be displayed as link, the others not.
@@ -160,14 +160,14 @@ function testPagePreview() {
     $this->assertNoLink($newterm1);
     $this->assertNoLink($newterm2);
 
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check with one more new term, keeping old terms, removing the existing
     // one.
     $edit = array();
     $newterm3 = $this->randomName(8);
     $edit[$term_key] = $newterm1 . ', ' . $newterm3 . ', ' . $newterm2;
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Preview'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Preview'));
     $this->assertRaw('>' . $newterm1 . '<', 'First existing term displayed.');
     $this->assertRaw('>' . $newterm2 . '<', 'Second existing term displayed.');
     $this->assertRaw('>' . $newterm3 . '<', 'Third new term displayed.');
@@ -175,7 +175,7 @@ function testPagePreview() {
     $this->assertNoLink($newterm1);
     $this->assertNoLink($newterm2);
     $this->assertNoLink($newterm3);
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
   }
 
   /**
@@ -195,7 +195,7 @@ function testPagePreviewWithRevisions() {
     $edit[$body_key] = $this->randomName(16);
     $edit[$term_key] = $this->term->id();
     $edit['log'] = $this->randomName(32);
-    $this->drupalPost('node/add/page', $edit, t('Preview'));
+    $this->drupalPostForm('node/add/page', $edit, t('Preview'));
 
     // Check that the preview is displaying the title, body and term.
     $this->assertTitle(t('Preview | Drupal'), 'Basic page title is preview.');
diff --git a/core/modules/node/lib/Drupal/node/Tests/Views/BulkFormTest.php b/core/modules/node/lib/Drupal/node/Tests/Views/BulkFormTest.php
index 09f9c93..af0b2d1 100644
--- a/core/modules/node/lib/Drupal/node/Tests/Views/BulkFormTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/Views/BulkFormTest.php
@@ -46,7 +46,7 @@ public function testBulkForm() {
       'node_bulk_form[0]' => TRUE,
       'action' => 'node_unpublish_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the node and check the status.
     $node = entity_load('node', $node->id(), TRUE);
     $this->assertFalse($node->isPublished(), 'Node has been unpublished');
@@ -56,7 +56,7 @@ public function testBulkForm() {
       'node_bulk_form[0]' => TRUE,
       'action' => 'node_publish_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the node and check the status.
     $node = entity_load('node', $node->id(), TRUE);
     $this->assertTrue($node->isPublished(), 'Node has been published');
@@ -69,7 +69,7 @@ public function testBulkForm() {
       'node_bulk_form[0]' => TRUE,
       'action' => 'node_make_sticky_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the node and check the status and sticky flag.
     $node = entity_load('node', $node->id(), TRUE);
     $this->assertTrue($node->isPublished(), 'Node has been published');
@@ -80,7 +80,7 @@ public function testBulkForm() {
       'node_bulk_form[0]' => TRUE,
       'action' => 'node_make_unsticky_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the node and check the sticky flag.
     $node = entity_load('node', $node->id(), TRUE);
     $this->assertFalse($node->isSticky(), 'Node is not sticky anymore');
@@ -93,7 +93,7 @@ public function testBulkForm() {
       'node_bulk_form[0]' => TRUE,
       'action' => 'node_promote_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the node and check the status and promoted flag.
     $node = entity_load('node', $node->id(), TRUE);
     $this->assertTrue($node->isPublished(), 'Node has been published');
@@ -104,7 +104,7 @@ public function testBulkForm() {
       'node_bulk_form[0]' => TRUE,
       'action' => 'node_unpromote_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the node and check the promoted flag.
     $node = entity_load('node', $node->id(), TRUE);
     $this->assertFalse($node->isPromoted(), 'Node has been demoted');
@@ -114,8 +114,8 @@ public function testBulkForm() {
       'node_bulk_form[0]' => TRUE,
       'action' => 'node_delete_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     // Re-load the node and check if it has been deleted.
     $node = entity_load('node', $node->id(), TRUE);
     $this->assertNull($node, 'Node has been deleted');
diff --git a/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php b/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php
index f777f36..9bade4c 100644
--- a/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php
+++ b/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php
@@ -105,7 +105,7 @@ function testNumberDecimalField() {
       'name' => $this->randomName(),
       "{$this->field['field_name']}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created');
@@ -125,7 +125,7 @@ function testNumberDecimalField() {
       $edit = array(
         "{$this->field['field_name']}[$langcode][0][value]" => $wrong_entry,
       );
-      $this->drupalPost(NULL, $edit, t('Save'));
+      $this->drupalPostForm(NULL, $edit, t('Save'));
       $this->assertRaw(t('%name must be a number.', array('%name' => $this->field['field_name'])), 'Correctly failed to save decimal value with more than one decimal point.');
     }
 
@@ -143,7 +143,7 @@ function testNumberDecimalField() {
       $edit = array(
         "{$this->field['field_name']}[$langcode][0][value]" => $wrong_entry,
       );
-      $this->drupalPost(NULL, $edit, t('Save'));
+      $this->drupalPostForm(NULL, $edit, t('Save'));
       $this->assertRaw(t('%name must be a number.', array('%name' => $this->field['field_name'])), 'Correctly failed to save decimal value with minus sign in the wrong position.');
     }
   }
@@ -159,7 +159,7 @@ function testNumberIntegerField() {
     $name = $this->randomName();
     $type = drupal_strtolower($name);
     $edit = array('name' => $name, 'type' => $type);
-    $this->drupalPost(NULL, $edit, t('Save and manage fields'));
+    $this->drupalPostForm(NULL, $edit, t('Save and manage fields'));
 
     // Add an integer field to the newly-created type.
     $label = $this->randomName();
@@ -169,7 +169,7 @@ function testNumberIntegerField() {
       'fields[_add_new_field][field_name]' => $field_name,
       'fields[_add_new_field][type]' => 'number_integer',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Add prefix and suffix for the newly-created field.
     $prefix = $this->randomName();
@@ -178,7 +178,7 @@ function testNumberIntegerField() {
       'instance[settings][prefix]' => $prefix,
       'instance[settings][suffix]' => $suffix,
     );
-    $this->drupalPost("admin/structure/types/manage/$type/fields/node.$type.field_$field_name", $edit, t('Save settings'));
+    $this->drupalPostForm("admin/structure/types/manage/$type/fields/node.$type.field_$field_name", $edit, t('Save settings'));
 
     // Set the formatter to "unformatted" and to "number_integer", and just
     // check that the settings summary does not generate warnings.
@@ -186,17 +186,17 @@ function testNumberIntegerField() {
     $edit = array(
       "fields[field_$field_name][type]" => 'number_unformatted',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $edit = array(
       "fields[field_$field_name][type]" => 'number_integer',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Configure the formatter to display the prefix and suffix.
-    $this->drupalPostAJAX(NULL, array(), "field_${field_name}_settings_edit");
+    $this->drupalPostAjaxForm(NULL, array(), "field_${field_name}_settings_edit");
     $edit = array("fields[field_${field_name}][settings_edit_form][settings][prefix_suffix]" => TRUE);
-    $this->drupalPostAJAX(NULL, $edit, "field_${field_name}_plugin_settings_update");
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostAjaxForm(NULL, $edit, "field_${field_name}_plugin_settings_update");
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     // Create new content and check that prefix and suffix are shown.
     $rand_number = rand();
@@ -204,7 +204,7 @@ function testNumberIntegerField() {
       'title' => $this->randomName(),
       'field_' .$field_name . '[und][0][value]' => $rand_number,
     );
-    $this->drupalPost("node/add/$type", $edit, t('Save'));
+    $this->drupalPostForm("node/add/$type", $edit, t('Save'));
 
     $this->assertRaw("$prefix$rand_number$suffix", 'Prefix and suffix added');
   }
diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUITest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUITest.php
index 34f0a87..084b292 100644
--- a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUITest.php
+++ b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUITest.php
@@ -221,7 +221,7 @@ function testOptionsAllowedValuesBoolean() {
       'on' => $on,
       'off' => $off,
     );
-    $this->drupalPost($this->admin_path, $edit, t('Save field settings'));
+    $this->drupalPostForm($this->admin_path, $edit, t('Save field settings'));
     $this->assertRaw(t('Updated field %label field settings.', array('%label' => $this->field_name)));
 
     // Clear field cache.
@@ -288,7 +288,7 @@ protected function createOptionsField($type) {
    */
   function assertAllowedValuesInput($input_string, $result, $message) {
     $edit = array('field[settings][allowed_values]' => $input_string);
-    $this->drupalPost($this->admin_path, $edit, t('Save field settings'));
+    $this->drupalPostForm($this->admin_path, $edit, t('Save field settings'));
 
     if (is_string($result)) {
       $this->assertText($result, $message);
@@ -316,14 +316,14 @@ function testNodeDisplay() {
       'off' => $off,
     );
 
-    $this->drupalPost($this->admin_path, $edit, t('Save field settings'));
+    $this->drupalPostForm($this->admin_path, $edit, t('Save field settings'));
     $this->assertText(format_string('Updated field !field_name field settings.', array('!field_name' => $this->field_name)), "The 'On' and 'Off' form fields work for boolean fields.");
 
     // Select a default value.
     $edit = array(
       $this->field_name . '[und]' => '1',
     );
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
 
     // Check the node page and see if the values are correct.
     $file_formatters = array('list_default', 'list_key');
@@ -331,7 +331,7 @@ function testNodeDisplay() {
       $edit = array(
         "fields[$this->field_name][type]" => $formatter,
       );
-      $this->drupalPost('admin/structure/types/manage/' . $this->type_name . '/display', $edit, t('Save'));
+      $this->drupalPostForm('admin/structure/types/manage/' . $this->type_name . '/display', $edit, t('Save'));
       $this->drupalGet('node/' . $node->id());
 
       if ($formatter == 'list_default') {
diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php
index bf76dc7..ddb8d6a 100644
--- a/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php
+++ b/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php
@@ -141,7 +141,7 @@ function testRadioButtons() {
 
     // Select first option.
     $edit = array("card_1[$langcode]" => 0);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_1', $langcode, array(0));
 
     // Check that the selected button is checked.
@@ -152,7 +152,7 @@ function testRadioButtons() {
 
     // Unselect option.
     $edit = array("card_1[$langcode]" => '_none');
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_1', $langcode, array());
 
     // Check that required radios with one option is auto-selected.
@@ -204,7 +204,7 @@ function testCheckBoxes() {
       "card_2[$langcode][1]" => FALSE,
       "card_2[$langcode][2]" => TRUE,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array(0, 2));
 
     // Display form: check that the right options are selected.
@@ -219,7 +219,7 @@ function testCheckBoxes() {
       "card_2[$langcode][1]" => FALSE,
       "card_2[$langcode][2]" => FALSE,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array(0));
 
     // Display form: check that the right options are selected.
@@ -234,7 +234,7 @@ function testCheckBoxes() {
       "card_2[$langcode][1]" => TRUE,
       "card_2[$langcode][2]" => TRUE,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('this field cannot hold more than 2 values', 'Validation error was displayed.');
 
     // Submit form: uncheck all options.
@@ -243,7 +243,7 @@ function testCheckBoxes() {
       "card_2[$langcode][1]" => FALSE,
       "card_2[$langcode][2]" => FALSE,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     // Check that the value was saved.
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array());
 
@@ -298,12 +298,12 @@ function testSelectListSingle() {
 
     // Submit form: select invalid 'none' option.
     $edit = array("card_1[$langcode]" => '_none');
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('!title field is required.', array('!title' => $instance['field_name'])), 'Cannot save a required field when selecting "none" from the select list.');
 
     // Submit form: select first option.
     $edit = array("card_1[$langcode]" => 0);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_1', $langcode, array(0));
 
     // Display form: check that the right options are selected.
@@ -324,7 +324,7 @@ function testSelectListSingle() {
     $this->assertTrue($this->xpath('//select[@id=:id]//option[@value="_none" and text()=:label]', array(':id' => 'edit-card-1-' . $langcode, ':label' => t('- None -'))), 'A non-required select list has a "None" choice.');
     // Submit form: Unselect the option.
     $edit = array("card_1[$langcode]" => '_none');
-    $this->drupalPost('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_1', $langcode, array());
 
     // Test optgroups.
@@ -343,7 +343,7 @@ function testSelectListSingle() {
 
     // Submit form: select first option.
     $edit = array("card_1[$langcode]" => 0);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_1', $langcode, array(0));
 
     // Display form: check that the right options are selected.
@@ -354,7 +354,7 @@ function testSelectListSingle() {
 
     // Submit form: Unselect the option.
     $edit = array("card_1[$langcode]" => '_none');
-    $this->drupalPost('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_1', $langcode, array());
   }
 
@@ -394,7 +394,7 @@ function testSelectListMultiple() {
 
     // Submit form: select first and third options.
     $edit = array("card_2[$langcode][]" => array(0 => 0, 2 => 2));
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array(0, 2));
 
     // Display form: check that the right options are selected.
@@ -405,7 +405,7 @@ function testSelectListMultiple() {
 
     // Submit form: select only first option.
     $edit = array("card_2[$langcode][]" => array(0 => 0));
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array(0));
 
     // Display form: check that the right options are selected.
@@ -416,12 +416,12 @@ function testSelectListMultiple() {
 
     // Submit form: select the three options while the field accepts only 2.
     $edit = array("card_2[$langcode][]" => array(0 => 0, 1 => 1, 2 => 2));
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText('this field cannot hold more than 2 values', 'Validation error was displayed.');
 
     // Submit form: uncheck all options.
     $edit = array("card_2[$langcode][]" => array());
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array());
 
     // Test the 'None' option.
@@ -429,12 +429,12 @@ function testSelectListMultiple() {
     // Check that the 'none' option has no efect if actual options are selected
     // as well.
     $edit = array("card_2[$langcode][]" => array('_none' => '_none', 0 => 0));
-    $this->drupalPost('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array(0));
 
     // Check that selecting the 'none' option empties the field.
     $edit = array("card_2[$langcode][]" => array('_none' => '_none'));
-    $this->drupalPost('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array());
 
     // A required select list does not have an empty key.
@@ -465,7 +465,7 @@ function testSelectListMultiple() {
 
     // Submit form: select first option.
     $edit = array("card_2[$langcode][]" => array(0 => 0));
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array(0));
 
     // Display form: check that the right options are selected.
@@ -476,7 +476,7 @@ function testSelectListMultiple() {
 
     // Submit form: Unselect the option.
     $edit = array("card_2[$langcode][]" => array('_none' => '_none'));
-    $this->drupalPost('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('entity_test/manage/' . $entity->id() . '/edit', $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array());
   }
 
@@ -513,7 +513,7 @@ function testOnOffCheckbox() {
 
     // Submit form: check the option.
     $edit = array("bool[$langcode]" => TRUE);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'bool', $langcode, array(1));
 
     // Display form: check that the right options are selected.
@@ -522,7 +522,7 @@ function testOnOffCheckbox() {
 
     // Submit form: uncheck the option.
     $edit = array("bool[$langcode]" => FALSE);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldValues($entity_init, 'bool', $langcode, array(0));
 
     // Display form: with 'off' value, option is unchecked.
@@ -570,7 +570,7 @@ function testOnOffCheckboxLabelSetting() {
 
     $field_name = $this->bool['field_name'];
     // Click on the widget settings button to open the widget settings form.
-    $this->drupalPostAJAX(NULL, array(), $field_name . "_settings_edit");
+    $this->drupalPostAjaxForm(NULL, array(), $field_name . "_settings_edit");
 
     $this->assertText(
       'Use field label instead of the "On value" as label',
@@ -579,15 +579,15 @@ function testOnOffCheckboxLabelSetting() {
 
     // Enable setting.
     $edit = array('fields[' . $field_name . '][settings_edit_form][settings][display_label]' => 1);
-    $this->drupalPostAJAX(NULL, $edit, $field_name . "_plugin_settings_update");
-    $this->drupalPost(NULL, NULL, 'Save');
+    $this->drupalPostAjaxForm(NULL, $edit, $field_name . "_plugin_settings_update");
+    $this->drupalPostForm(NULL, NULL, 'Save');
 
     // Go again to the form display page and check if the setting
     // is stored and has the expected effect.
     $this->drupalGet($fieldEditUrl);
     $this->assertText('Use field label: Yes', 'Checking the display settings checkbox updated the value.');
 
-    $this->drupalPostAJAX(NULL, array(), $field_name . "_settings_edit");
+    $this->drupalPostAjaxForm(NULL, array(), $field_name . "_settings_edit");
     $this->assertText(
       'Use field label instead of the "On value" as label',
       t('Display setting checkbox is available')
diff --git a/core/modules/overlay/lib/Drupal/overlay/Tests/OverlayCloseTest.php b/core/modules/overlay/lib/Drupal/overlay/Tests/OverlayCloseTest.php
index a16c720..406755c 100644
--- a/core/modules/overlay/lib/Drupal/overlay/Tests/OverlayCloseTest.php
+++ b/core/modules/overlay/lib/Drupal/overlay/Tests/OverlayCloseTest.php
@@ -45,7 +45,7 @@ function testNodeCreation() {
 
     // Create a new node, with ?render=overlay in the query parameter to
     // simulate creating it inside the overlay.
-    $this->drupalPost('node/add/test', array('title' => 'Test node title'), t('Save'), array('query' => array('render' => 'overlay')));
+    $this->drupalPostForm('node/add/test', array('title' => 'Test node title'), t('Save'), array('query' => array('render' => 'overlay')));
 
     // Make sure a bare minimum HTML page is displayed that contains the
     // JavaScript necessary to close the overlay.
diff --git a/core/modules/overlay/lib/Drupal/overlay/Tests/OverlaySettingTest.php b/core/modules/overlay/lib/Drupal/overlay/Tests/OverlaySettingTest.php
index ea07a1f..7ae4b1f 100644
--- a/core/modules/overlay/lib/Drupal/overlay/Tests/OverlaySettingTest.php
+++ b/core/modules/overlay/lib/Drupal/overlay/Tests/OverlaySettingTest.php
@@ -38,7 +38,7 @@ function testNodeCreation() {
 
     $this->drupalGet('user/' . $user->id() . '/edit');
     $this->assertFieldChecked('edit-overlay');
-    $this->drupalPost(NULL, array('overlay' => FALSE), t('Save'));
+    $this->drupalPostForm(NULL, array('overlay' => FALSE), t('Save'));
     $this->assertNoFieldChecked('edit-overlay');
     $this->assertFalse(\Drupal::service('user.data')->get('overlay', $user->id(), 'enabled'), 'Overlay disabled');
 
diff --git a/core/modules/path/lib/Drupal/path/Tests/PathAliasTest.php b/core/modules/path/lib/Drupal/path/Tests/PathAliasTest.php
index 87ca4be..37012e2 100644
--- a/core/modules/path/lib/Drupal/path/Tests/PathAliasTest.php
+++ b/core/modules/path/lib/Drupal/path/Tests/PathAliasTest.php
@@ -46,7 +46,7 @@ function testPathCache() {
     $edit = array();
     $edit['source'] = 'node/' . $node1->id();
     $edit['alias'] = $this->randomName(8);
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
 
     // Check the path alias whitelist cache.
     $whitelist = cache()->get('path_alias_whitelist');
@@ -77,7 +77,7 @@ function testAdminAlias() {
     $edit = array();
     $edit['source'] = 'node/' . $node1->id();
     $edit['alias'] = $this->randomName(8);
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
 
     // Confirm that the alias works.
     $this->drupalGet($edit['alias']);
@@ -91,7 +91,7 @@ function testAdminAlias() {
     $edit['alias'] = "- ._~!$'\"()*@[]?&+%#,;=:" . // "Special" ASCII characters.
       "%23%25%26%2B%2F%3F" . // Characters that look like a percent-escaped string.
       "éøïвβ中國書۞"; // Characters from various non-ASCII alphabets.
-    $this->drupalPost('admin/config/search/path/edit/' . $pid, $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/edit/' . $pid, $edit, t('Save'));
 
     // Confirm that the alias works.
     $this->drupalGet($edit['alias']);
@@ -110,14 +110,14 @@ function testAdminAlias() {
     // Set alias to second test node.
     $edit['source'] = 'node/' . $node2->id();
     // leave $edit['alias'] the same
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
 
     // Confirm no duplicate was created.
     $this->assertRaw(t('The alias %alias is already in use in this language.', array('%alias' => $edit['alias'])), 'Attempt to move alias was rejected.');
 
     // Delete alias.
-    $this->drupalPost('admin/config/search/path/edit/' . $pid, array(), t('Delete'));
-    $this->drupalPost(NULL, array(), t('Confirm'));
+    $this->drupalPostForm('admin/config/search/path/edit/' . $pid, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Confirm'));
 
     // Confirm that the alias no longer works.
     $this->drupalGet($edit['alias']);
@@ -131,7 +131,7 @@ function testAdminAlias() {
     $edit['alias'] = $alias;
     // The alias is shortened to 50 characters counting the elipsis.
     $truncated_alias = substr($alias, 0, 47);
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
     $this->assertNoText($alias, 'The untruncated alias was not found.');
     // The 'truncated' alias will always be found.
     $this->assertText($truncated_alias, 'The truncated alias was found.');
@@ -147,7 +147,7 @@ function testNodeAlias() {
     // Create alias.
     $edit = array();
     $edit['path[alias]'] = $this->randomName(8);
-    $this->drupalPost('node/' . $node1->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node1->id() . '/edit', $edit, t('Save'));
 
     // Confirm that the alias works.
     $this->drupalGet($edit['path[alias]']);
@@ -159,7 +159,7 @@ function testNodeAlias() {
     $edit['path[alias]'] = "- ._~!$'\"()*@[]?&+%#,;=:" . // "Special" ASCII characters.
       "%23%25%26%2B%2F%3F" . // Characters that look like a percent-escaped string.
       "éøïвβ中國書۞"; // Characters from various non-ASCII alphabets.
-    $this->drupalPost('node/' . $node1->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node1->id() . '/edit', $edit, t('Save'));
 
     // Confirm that the alias works.
     $this->drupalGet($edit['path[alias]']);
@@ -176,13 +176,13 @@ function testNodeAlias() {
 
     // Set alias to second test node.
     // Leave $edit['path[alias]'] the same.
-    $this->drupalPost('node/' . $node2->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node2->id() . '/edit', $edit, t('Save'));
 
     // Confirm that the alias didn't make a duplicate.
     $this->assertText(t('The alias is already in use.'), 'Attempt to moved alias was rejected.');
 
     // Delete alias.
-    $this->drupalPost('node/' . $node1->id() . '/edit', array('path[alias]' => ''), t('Save'));
+    $this->drupalPostForm('node/' . $node1->id() . '/edit', array('path[alias]' => ''), t('Save'));
 
     // Confirm that the alias no longer works.
     $this->drupalGet($edit['path[alias]']);
@@ -211,11 +211,11 @@ function testDuplicateNodeAlias() {
     $node_one = $this->drupalCreateNode();
     $edit = array();
     $edit['path[alias]'] = $this->randomName();
-    $this->drupalPost('node/' . $node_one->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node_one->id() . '/edit', $edit, t('Save'));
 
     // Now create another node and try to set the same alias.
     $node_two = $this->drupalCreateNode();
-    $this->drupalPost('node/' . $node_two->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node_two->id() . '/edit', $edit, t('Save'));
     $this->assertText(t('The alias is already in use.'));
     $this->assertFieldByXPath("//input[@name='path[alias]' and contains(@class, 'error')]", $edit['path[alias]'], 'Textfield exists and has the error class.');
   }
diff --git a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php
index 1724a4a..f5186e6 100644
--- a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php
+++ b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php
@@ -40,11 +40,11 @@ function setUp() {
     $edit = array();
     $edit['predefined_langcode'] = 'fr';
 
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Enable URL language detection and selection.
     $edit = array('language_interface[enabled][language-url]' => 1);
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
   }
 
   /**
@@ -55,7 +55,7 @@ function testAliasTranslation() {
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')), 'Basic page content type has been updated.');
     variable_set('node_type_language_translation_enabled_page', TRUE);
 
@@ -66,7 +66,7 @@ function testAliasTranslation() {
     $edit = array();
     $edit['langcode'] = 'en';
     $edit['path[alias]'] = $english_alias;
-    $this->drupalPost('node/' . $english_node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $english_node->id() . '/edit', $edit, t('Save'));
 
     // Confirm that the alias works.
     $this->drupalGet($english_alias);
@@ -81,7 +81,7 @@ function testAliasTranslation() {
     $edit["body[$langcode][0][value]"] = $this->randomName();
     $french_alias = $this->randomName();
     $edit['path[alias]'] = $french_alias;
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Clear the path lookup cache.
     $this->container->get('path.alias_manager')->cacheClear();
@@ -112,11 +112,11 @@ function testAliasTranslation() {
       'language_interface[enabled][language-url]' => 1,
       'language_interface[weight][language-url]' => -8,
     );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Change user language preference.
     $edit = array('preferred_langcode' => 'fr');
-    $this->drupalPost("user/" . $this->web_user->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $this->web_user->id() . "/edit", $edit, t('Save'));
 
     // Check that the English alias works. In this situation French is the
     // current UI and content language, while URL language is English (since we
@@ -135,7 +135,7 @@ function testAliasTranslation() {
 
     // Disable URL language negotiation.
     $edit = array('language_interface[enabled][language-url]' => FALSE);
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Check that the English alias still works.
     $this->drupalGet($english_alias);
diff --git a/core/modules/path/lib/Drupal/path/Tests/PathLanguageUiTest.php b/core/modules/path/lib/Drupal/path/Tests/PathLanguageUiTest.php
index bd0d279..5c97eff 100644
--- a/core/modules/path/lib/Drupal/path/Tests/PathLanguageUiTest.php
+++ b/core/modules/path/lib/Drupal/path/Tests/PathLanguageUiTest.php
@@ -38,11 +38,11 @@ function setUp() {
     $edit = array();
     $edit['predefined_langcode'] = 'fr';
 
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Enable URL language detection and selection.
     $edit = array('language_interface[enabled][language-url]' => 1);
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
   }
 
   /**
@@ -53,7 +53,7 @@ function testLanguageNeutralUrl() {
     $edit = array();
     $edit['source'] = 'admin/config/search/path';
     $edit['alias'] = $name;
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
 
     $this->drupalGet($name);
     $this->assertText(t('Filter aliases'), 'Language-neutral URL alias works');
@@ -68,7 +68,7 @@ function testDefaultLanguageUrl() {
     $edit['source'] = 'admin/config/search/path';
     $edit['alias'] = $name;
     $edit['langcode'] = 'en';
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
 
     $this->drupalGet($name);
     $this->assertText(t('Filter aliases'), 'English URL alias works');
@@ -83,7 +83,7 @@ function testNonDefaultUrl() {
     $edit['source'] = 'admin/config/search/path';
     $edit['alias'] = $name;
     $edit['langcode'] = 'fr';
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
 
     $this->drupalGet('fr/' . $name);
     $this->assertText(t('Filter aliases'), 'Foreign URL alias works');
diff --git a/core/modules/path/lib/Drupal/path/Tests/PathTaxonomyTermTest.php b/core/modules/path/lib/Drupal/path/Tests/PathTaxonomyTermTest.php
index 7409784..99c6fc2 100644
--- a/core/modules/path/lib/Drupal/path/Tests/PathTaxonomyTermTest.php
+++ b/core/modules/path/lib/Drupal/path/Tests/PathTaxonomyTermTest.php
@@ -54,7 +54,7 @@ function testTermAlias() {
       'description[value]' => $description,
       'path[alias]' => $this->randomName(),
     );
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/add', $edit, t('Save'));
 
     // Confirm that the alias works.
     $this->drupalGet($edit['path[alias]']);
@@ -64,7 +64,7 @@ function testTermAlias() {
     $tid = db_query("SELECT tid FROM {taxonomy_term_data} WHERE name = :name", array(':name' => $edit['name']))->fetchField();
     $edit2 = array();
     $edit2['path[alias]'] = $this->randomName();
-    $this->drupalPost('taxonomy/term/' . $tid . '/edit', $edit2, t('Save'));
+    $this->drupalPostForm('taxonomy/term/' . $tid . '/edit', $edit2, t('Save'));
 
     // Confirm that the changed alias works.
     $this->drupalGet($edit2['path[alias]']);
@@ -78,7 +78,7 @@ function testTermAlias() {
     // Remove the term's URL alias.
     $edit3 = array();
     $edit3['path[alias]'] = '';
-    $this->drupalPost('taxonomy/term/' . $tid . '/edit', $edit3, t('Save'));
+    $this->drupalPostForm('taxonomy/term/' . $tid . '/edit', $edit3, t('Save'));
 
     // Confirm that the alias no longer works.
     $this->drupalGet($edit2['path[alias]']);
diff --git a/core/modules/php/lib/Drupal/php/Tests/PhpFilterTest.php b/core/modules/php/lib/Drupal/php/Tests/PhpFilterTest.php
index 49e03b2..547e943 100644
--- a/core/modules/php/lib/Drupal/php/Tests/PhpFilterTest.php
+++ b/core/modules/php/lib/Drupal/php/Tests/PhpFilterTest.php
@@ -41,7 +41,7 @@ function testPhpFilter() {
     $edit = array();
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit["body[$langcode][0][format]"] = $this->php_code_format->format;
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertRaw(t('Basic page %title has been updated.', array('%title' => $node->label())), 'PHP code filter turned on.');
 
     // Make sure that the PHP code shows up as text.
diff --git a/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php b/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php
index 286372c..e33d755 100644
--- a/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php
+++ b/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php
@@ -92,7 +92,7 @@ public function testPictureAdmin() {
       'id' => 'mapping_one',
       'breakpointGroup' => 'atestset',
     );
-    $this->drupalPost('admin/config/media/picturemapping/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/media/picturemapping/add', $edit, t('Save'));
 
     // Check if the new group is created.
     $this->assertResponse(200);
@@ -122,7 +122,7 @@ public function testPictureAdmin() {
       'mappings[custom.user.medium][1x]' => 'medium',
       'mappings[custom.user.large][1x]' => 'large',
     );
-    $this->drupalPost('admin/config/media/picturemapping/mapping_one', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/media/picturemapping/mapping_one', $edit, t('Save'));
     $this->drupalGet('admin/config/media/picturemapping/mapping_one');
     $this->assertFieldByName('mappings[custom.user.small][1x]', 'thumbnail');
     $this->assertFieldByName('mappings[custom.user.small][2x]', '');
@@ -133,7 +133,7 @@ public function testPictureAdmin() {
 
     // Delete the mapping.
     $this->drupalGet('admin/config/media/picturemapping/mapping_one/delete');
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     $this->drupalGet('admin/config/media/picturemapping');
     $this->assertText('There is no Picture mapping yet.');
   }
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php
index 072fcc5..afd174b 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php
@@ -170,7 +170,7 @@ function _testBasicTrackerRdfaMarkup(EntityInterface $node) {
       'subject' => $this->randomName(),
       'comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]' => $this->randomName(),
     );
-    $this->drupalPost('comment/reply/' . $node->id(), $comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $node->id(), $comment, t('Save'));
 
     // Parses tracker page where the nodes are displayed in a table.
     $parser = new \EasyRdf_Parser_Rdfa();
diff --git a/core/modules/rest/lib/Drupal/rest/Tests/Views/StyleSerializerTest.php b/core/modules/rest/lib/Drupal/rest/Tests/Views/StyleSerializerTest.php
index 48bf955..dcc4ac6 100644
--- a/core/modules/rest/lib/Drupal/rest/Tests/Views/StyleSerializerTest.php
+++ b/core/modules/rest/lib/Drupal/rest/Tests/Views/StyleSerializerTest.php
@@ -136,8 +136,8 @@ public function testReponseFormatConfiguration() {
     $style_options = 'admin/structure/views/nojs/display/test_serializer_display_field/rest_export_1/style_options';
 
     // Select only 'xml' as an accepted format.
-    $this->drupalPost($style_options, array('style_options[formats][xml]' => 'xml'), t('Apply'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm($style_options, array('style_options[formats][xml]' => 'xml'), t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     // Should return a 406.
     $this->drupalGet('test/serialize/field', array(), array('Accept: application/json'));
@@ -147,8 +147,8 @@ public function testReponseFormatConfiguration() {
     $this->assertResponse(200, 'A 200 response was returned when XML was requested.');
 
     // Add 'json' as an accepted format, so we have multiple.
-    $this->drupalPost($style_options, array('style_options[formats][json]' => 'json'), t('Apply'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm($style_options, array('style_options[formats][json]' => 'json'), t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     // Should return a 200.
     // @todo This should be fixed when we have better content negotiation.
@@ -183,8 +183,8 @@ public function testUIFieldAlias() {
 
     // Test an empty string for an alias, this should not be used. This also
     // tests that the form can be submitted with no aliases.
-    $this->drupalPost($row_options, array('row_options[field_options][name][alias]' => ''), t('Apply'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm($row_options, array('row_options[field_options][name][alias]' => ''), t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = views_get_view('test_serializer_display_field');
     $view->setDisplay('rest_export_1');
@@ -210,16 +210,16 @@ public function testUIFieldAlias() {
     );
 
     $edit = array('row_options[field_options][name][alias]' => $alias_map['name'], 'row_options[field_options][nothing][alias]' => $alias_map['nothing']);
-    $this->drupalPost($row_options, $edit, t('Apply'));
+    $this->drupalPostForm($row_options, $edit, t('Apply'));
     $this->assertText(t('The machine-readable name must contain only letters, numbers, dashes and underscores.'));
 
     // Change the map alias value to a valid one.
     $alias_map['nothing'] = $this->randomName();
 
     $edit = array('row_options[field_options][name][alias]' => $alias_map['name'], 'row_options[field_options][nothing][alias]' => $alias_map['nothing']);
-    $this->drupalPost($row_options, $edit, t('Apply'));
+    $this->drupalPostForm($row_options, $edit, t('Apply'));
 
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = views_get_view('test_serializer_display_field');
     $view->setDisplay('rest_export_1');
@@ -250,8 +250,8 @@ public function testFieldRawOutput() {
 
     // Test an empty string for an alias, this should not be used. This also
     // tests that the form can be submitted with no aliases.
-    $this->drupalPost($row_options, array('row_options[field_options][created][raw_output]' => '1'), t('Apply'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm($row_options, array('row_options[field_options][created][raw_output]' => '1'), t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = views_get_view('test_serializer_display_field');
     $view->setDisplay('rest_export_1');
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchAdvancedSearchFormTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchAdvancedSearchFormTest.php
index 9992424..d1c4dfd 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchAdvancedSearchFormTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchAdvancedSearchFormTest.php
@@ -58,14 +58,14 @@ function testNodeType() {
 
     // Search for the title of the node with a POST query.
     $edit = array('or' => $this->node->label());
-    $this->drupalPost('search/node', $edit, t('Advanced search'));
+    $this->drupalPostForm('search/node', $edit, t('Advanced search'));
     $this->assertText($this->node->label(), 'Basic page node is found with POST query.');
 
     // Advanced search type option.
-    $this->drupalPost('search/node', array_merge($edit, array('type[page]' => 'page')), t('Advanced search'));
+    $this->drupalPostForm('search/node', array_merge($edit, array('type[page]' => 'page')), t('Advanced search'));
     $this->assertText($this->node->label(), 'Basic page node is found with POST query and type:page.');
 
-    $this->drupalPost('search/node', array_merge($edit, array('type[article]' => 'article')), t('Advanced search'));
+    $this->drupalPostForm('search/node', array_merge($edit, array('type[article]' => 'article')), t('Advanced search'));
     $this->assertText('bike shed', 'Article node is not found with POST query and type:article.');
   }
 }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchBlockTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchBlockTest.php
index 0f25b8d..1a52877 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchBlockTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchBlockTest.php
@@ -52,13 +52,13 @@ protected function testSearchFormBlock() {
 
     // Test a normal search via the block form, from the front page.
     $terms = array('search_block_form' => 'test');
-    $this->drupalPost('node', $terms, t('Search'));
+    $this->drupalPostForm('node', $terms, t('Search'));
     $this->assertText('Your search yielded no results');
 
     // Test a search from the block on a 404 page.
     $this->drupalGet('foo');
     $this->assertResponse(404);
-    $this->drupalPost(NULL, $terms, t('Search'));
+    $this->drupalPostForm(NULL, $terms, t('Search'));
     $this->assertResponse(200);
     $this->assertText('Your search yielded no results');
 
@@ -66,7 +66,7 @@ protected function testSearchFormBlock() {
     $visibility['path']['pages'] = 'search';
     $block->set('visibility', $visibility);
 
-    $this->drupalPost('node', $terms, t('Search'));
+    $this->drupalPostForm('node', $terms, t('Search'));
     $this->assertText('Your search yielded no results');
 
     // Confirm that the user is redirected to the search page.
@@ -78,7 +78,7 @@ protected function testSearchFormBlock() {
 
     // Test an empty search via the block form, from the front page.
     $terms = array('search_block_form' => '');
-    $this->drupalPost('node', $terms, t('Search'));
+    $this->drupalPostForm('node', $terms, t('Search'));
     $this->assertText('Please enter some keywords');
 
     // Confirm that the user is redirected to the search page, when form is
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchCommentCountToggleTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchCommentCountToggleTest.php
index aab4c13..c5f0208 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchCommentCountToggleTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchCommentCountToggleTest.php
@@ -63,7 +63,7 @@ function setUp() {
     $edit_comment['comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]'] = $this->randomName();
 
     // Post comment to the test node with comment
-    $this->drupalPost('comment/reply/' . $this->searchable_nodes['1 comment']->id(), $edit_comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $this->searchable_nodes['1 comment']->id(), $edit_comment, t('Save'));
 
     // First update the index. This does the initial processing.
     $this->container->get('plugin.manager.search')->createInstance('node_search')->updateIndex();
@@ -84,7 +84,7 @@ function testSearchCommentCountToggle() {
     );
 
     // Test comment count display for nodes with comment status set to Open
-    $this->drupalPost('', $edit, t('Search'));
+    $this->drupalPostForm('', $edit, t('Search'));
     $this->assertText(t('0 comments'), 'Empty comment count displays for nodes with comment status set to Open');
     $this->assertText(t('1 comment'), 'Non-empty comment count displays for nodes with comment status set to Open');
 
@@ -94,7 +94,7 @@ function testSearchCommentCountToggle() {
     $this->searchable_nodes['1 comment']->comment = COMMENT_NODE_CLOSED;
     $this->searchable_nodes['1 comment']->save();
 
-    $this->drupalPost('', $edit, t('Search'));
+    $this->drupalPostForm('', $edit, t('Search'));
     $this->assertNoText(t('0 comments'), 'Empty comment count does not display for nodes with comment status set to Closed');
     $this->assertText(t('1 comment'), 'Non-empty comment count displays for nodes with comment status set to Closed');
 
@@ -104,7 +104,7 @@ function testSearchCommentCountToggle() {
     $this->searchable_nodes['1 comment']->comment = COMMENT_NODE_HIDDEN;
     $this->searchable_nodes['1 comment']->save();
 
-    $this->drupalPost('', $edit, t('Search'));
+    $this->drupalPostForm('', $edit, t('Search'));
     $this->assertNoText(t('0 comments'), 'Empty comment count does not display for nodes with comment status set to Hidden');
     $this->assertNoText(t('1 comment'), 'Non-empty comment count does not display for nodes with comment status set to Hidden');
   }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchCommentTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchCommentTest.php
index 2b256a2..68b89c6 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchCommentTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchCommentTest.php
@@ -63,14 +63,14 @@ function testSearchResultsComment() {
     $edit = array(
       'filters[filter_html_escape][status]' => TRUE,
     );
-    $this->drupalPost('admin/config/content/formats/manage/' . $basic_html_format_id, $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/manage/' . $basic_html_format_id, $edit, t('Save configuration'));
     // Allow anonymous users to search content.
     $edit = array(
       DRUPAL_ANONYMOUS_RID . '[search content]' => 1,
       DRUPAL_ANONYMOUS_RID . '[access comments]' => 1,
       DRUPAL_ANONYMOUS_RID . '[post comments]' => 1,
     );
-    $this->drupalPost('admin/people/permissions', $edit, t('Save permissions'));
+    $this->drupalPostForm('admin/people/permissions', $edit, t('Save permissions'));
 
     // Create a node.
     $node = $this->drupalCreateNode(array('type' => 'article'));
@@ -80,7 +80,7 @@ function testSearchResultsComment() {
     $edit_comment['comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]'] = '<h1>' . $comment_body . '</h1>';
     $full_html_format_id = 'full_html';
     $edit_comment['comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][format]'] = $full_html_format_id;
-    $this->drupalPost('comment/reply/' . $node->id(), $edit_comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $node->id(), $edit_comment, t('Save'));
 
     // Invoke search index update.
     $this->drupalLogout();
@@ -90,7 +90,7 @@ function testSearchResultsComment() {
     $edit = array(
       'search_block_form' => "'" . $edit_comment['subject'] . "'",
     );
-    $this->drupalPost('', $edit, t('Search'));
+    $this->drupalPostForm('', $edit, t('Search'));
     $node2 = node_load($node->id(), TRUE);
     $this->assertText($node2->label(), 'Node found in search results.');
     $this->assertText($edit_comment['subject'], 'Comment subject found in search results.');
@@ -99,7 +99,7 @@ function testSearchResultsComment() {
     $edit = array(
       'search_block_form' => "'" . $comment_body . "'",
     );
-    $this->drupalPost('', $edit, t('Search'));
+    $this->drupalPostForm('', $edit, t('Search'));
     $this->assertText($node2->label(), 'Node found in search results.');
 
     // Verify that comment is rendered using proper format.
@@ -117,7 +117,7 @@ function testSearchResultsComment() {
     $this->cronRun();
 
     // Search for $title.
-    $this->drupalPost('', $edit, t('Search'));
+    $this->drupalPostForm('', $edit, t('Search'));
     $this->assertNoText($comment_body, 'Comment body text not found in search results.');
   }
 
@@ -138,7 +138,7 @@ function testSearchResultsCommentAccess() {
     $edit_comment = array();
     $edit_comment['subject'] = $this->comment_subject;
     $edit_comment['comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]'] = '<h1>' . $comment_body . '</h1>';
-    $this->drupalPost('comment/reply/' . $this->node->id(), $edit_comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $this->node->id(), $edit_comment, t('Save'));
 
     $this->drupalLogout();
     $this->setRolePermissions(DRUPAL_ANONYMOUS_RID);
@@ -201,7 +201,7 @@ function assertCommentAccess($assume_access, $message) {
     $edit = array(
       'search_block_form' => "'" . $this->comment_subject . "'",
     );
-    $this->drupalPost('', $edit, t('Search'));
+    $this->drupalPostForm('', $edit, t('Search'));
 
     if ($assume_access) {
       $expected_node_result = $this->assertText($this->node->label());
@@ -240,12 +240,12 @@ function testAddNewComment() {
 
     // Search for 'comment'. Should be no results.
     $this->drupalLogin($user);
-    $this->drupalPost('search/node', array('keys' => 'comment'), t('Search'));
+    $this->drupalPostForm('search/node', array('keys' => 'comment'), t('Search'));
     $this->assertText(t('Your search yielded no results'), 'No results searching for the word comment');
 
     // Search for the node title. Should be found, and 'Add new comment' should
     // not be part of the search snippet.
-    $this->drupalPost('search/node', array('keys' => 'short'), t('Search'));
+    $this->drupalPostForm('search/node', array('keys' => 'short'), t('Search'));
     $this->assertText($node->label(), 'Search for keyword worked');
     $this->assertNoText(t('Add new comment'), 'Add new comment does not appear on search results page');
   }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php
index 7142b08..84cad1a 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php
@@ -47,7 +47,7 @@ function setUp() {
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $body_key = "body[$langcode][0][value]";
     $edit[$body_key] = l($node->label(), 'node/' . $node->id()) . ' pizza sandwich';
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
 
     $this->container->get('plugin.manager.search')->createInstance('node_search')->updateIndex();
     search_update_totals();
@@ -66,22 +66,22 @@ function testSearchSettingsPage() {
     $this->assertText(t('There are @count items left to index.', array('@count' => 0)));
 
     // Test the re-index button.
-    $this->drupalPost('admin/config/search/settings', array(), t('Re-index site'));
+    $this->drupalPostForm('admin/config/search/settings', array(), t('Re-index site'));
     $this->assertText(t('Are you sure you want to re-index the site'));
-    $this->drupalPost('admin/config/search/settings/reindex', array(), t('Re-index site'));
+    $this->drupalPostForm('admin/config/search/settings/reindex', array(), t('Re-index site'));
     $this->assertText(t('The index will be rebuilt'));
     $this->drupalGet('admin/config/search/settings');
     $this->assertText(t('There is 1 item left to index.'));
 
     // Test that the form saves with the default values.
-    $this->drupalPost('admin/config/search/settings', array(), t('Save configuration'));
+    $this->drupalPostForm('admin/config/search/settings', array(), t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Form saves with the default values.');
 
     // Test that the form does not save with an invalid word length.
     $edit = array(
       'minimum_word_size' => $this->randomName(3),
     );
-    $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/search/settings', $edit, t('Save configuration'));
     $this->assertNoText(t('The configuration options have been saved.'), 'Form does not save with an invalid word length.');
   }
 
@@ -105,7 +105,7 @@ function testSearchModuleSettingsPage() {
     // Enable search for the test plugin
     $edit['active_plugins[search_extra_type_search]'] = 'search_extra_type_search';
     $edit['default_plugin'] = 'search_extra_type_search';
-    $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/search/settings', $edit, t('Save configuration'));
 
     // Ensure that the settings fieldset is visible after enabling search for
     // the test plugin
@@ -120,7 +120,7 @@ function testSearchModuleSettingsPage() {
       'extra_type_settings[boost]' => 'ii',
       'minimum_word_size' => 5,
     );
-    $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/search/settings', $edit, t('Save configuration'));
 
     // Ensure that the modifications took effect.
     $this->assertText(t('The configuration options have been saved.'));
@@ -166,7 +166,7 @@ function testSearchModuleDisabling() {
         $edit['active_plugins[' . $other . ']'] = (($other == $plugin) ? $plugin : FALSE);
       }
       $edit['default_plugin'] = $plugin;
-      $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
+      $this->drupalPostForm('admin/config/search/settings', $edit, t('Save configuration'));
 
       // Run a search from the correct search URL.
       $this->drupalGet('search/' . $info['path'] . '/' . $info['keys']);
@@ -184,7 +184,7 @@ function testSearchModuleDisabling() {
       // Run a search from the search block on the node page. Verify you get
       // to this plugin's search results page.
       $terms = array('search_block_form' => $info['keys']);
-      $this->drupalPost('node', $terms, t('Search'));
+      $this->drupalPostForm('node', $terms, t('Search'));
       $this->assertEqual(
         $this->getURL(),
         url('search/' . $info['path'] . '/' . $info['keys'], array('absolute' => TRUE)),
@@ -206,7 +206,7 @@ function testSearchModuleDisabling() {
     }
     $edit['default_plugin'] = 'node_search';
 
-    $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/search/settings', $edit, t('Save configuration'));
 
     foreach (array('search/node/pizza', 'search/node') as $path) {
       $this->drupalGet($path);
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php
index 2d0e2d4..3cb0971 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php
@@ -59,7 +59,7 @@ function setUp() {
    */
   function testEmbeddedForm() {
     // First verify we can submit the form from the module's page.
-    $this->drupalPost('search_embedded_form',
+    $this->drupalPostForm('search_embedded_form',
       array('name' => 'John'),
       t('Send away'));
     $this->assertText(t('Test form was submitted'), 'Form message appears');
@@ -70,7 +70,7 @@ function testEmbeddedForm() {
     // Now verify that we can see and submit the form from the search results.
     $this->drupalGet('search/node/' . $this->node->label());
     $this->assertText(t('Your name'), 'Form is visible');
-    $this->drupalPost('search/node/' . $this->node->label(),
+    $this->drupalPostForm('search/node/' . $this->node->label(),
       array('name' => 'John'),
       t('Send away'));
     $this->assertText(t('Test form was submitted'), 'Form message appears');
@@ -80,7 +80,7 @@ function testEmbeddedForm() {
 
     // Now verify that if we submit the search form, it doesn't count as
     // our form being submitted.
-    $this->drupalPost('search',
+    $this->drupalPostForm('search',
       array('keys' => 'foo'),
       t('Search'));
     $this->assertNoText(t('Test form was submitted'), 'Form message does not appear');
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchExactTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchExactTest.php
index 587d773..12d1b12 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchExactTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchExactTest.php
@@ -50,7 +50,7 @@ function testExactQuery() {
 
     // Test that the correct number of pager links are found for keyword search.
     $edit = array('keys' => 'love pizza');
-    $this->drupalPost('search/node', $edit, t('Search'));
+    $this->drupalPostForm('search/node', $edit, t('Search'));
     $this->assertLinkByHref('page=1', 0, '2nd page link is found for keyword search.');
     $this->assertLinkByHref('page=2', 0, '3rd page link is found for keyword search.');
     $this->assertLinkByHref('page=3', 0, '4th page link is found for keyword search.');
@@ -58,7 +58,7 @@ function testExactQuery() {
 
     // Test that the correct number of pager links are found for exact phrase search.
     $edit = array('keys' => '"love pizza"');
-    $this->drupalPost('search/node', $edit, t('Search'));
+    $this->drupalPostForm('search/node', $edit, t('Search'));
     $this->assertLinkByHref('page=1', 0, '2nd page link is found for exact phrase search.');
     $this->assertNoLinkByHref('page=2', '3rd page link is not found for exact phrase search.');
   }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php
index 19bbb37..0ef0af6 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchLanguageTest.php
@@ -38,7 +38,7 @@ function setUp() {
   function testLanguages() {
     // Add predefined language.
     $edit = array('predefined_langcode' => 'fr');
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
     $this->assertText('French', 'Language added successfully.');
 
     // Now we should have languages displayed.
@@ -48,12 +48,12 @@ function testLanguages() {
     $this->assertText(t('French'), 'French is a possible choice.');
 
     // Ensure selecting no language does not make the query different.
-    $this->drupalPost('search/node', array(), t('Advanced search'));
+    $this->drupalPostForm('search/node', array(), t('Advanced search'));
     $this->assertEqual($this->getUrl(), url('search/node/', array('absolute' => TRUE)), 'Correct page redirection, no language filtering.');
 
     // Pick French and ensure it is selected.
     $edit = array('language[fr]' => TRUE);
-    $this->drupalPost('search/node', $edit, t('Advanced search'));
+    $this->drupalPostForm('search/node', $edit, t('Advanced search'));
     // Get the redirected URL.
     $url = $this->getUrl();
     $parts = parse_url($url);
@@ -67,8 +67,8 @@ function testLanguages() {
     $edit = array(
       'site_default_language' => 'fr',
     );
-    $this->drupalpost($path, $edit, t('Save configuration'));
+    $this->drupalPostForm($path, $edit, t('Save configuration'));
     $this->assertNoOptionSelected('edit-site-default-language', 'en', 'Default language updated.');
-    $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/en', array(), t('Delete'));
   }
 }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchNodeAccessTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchNodeAccessTest.php
index 8f067f6..94719fe 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchNodeAccessTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchNodeAccessTest.php
@@ -53,7 +53,7 @@ function testPhraseSearchPunctuation() {
 
     // Submit a phrase wrapped in double quotes to include the punctuation.
     $edit = array('keys' => '"bunny\'s"');
-    $this->drupalPost('search/node', $edit, t('Search'));
+    $this->drupalPostForm('search/node', $edit, t('Search'));
     $this->assertText($node->label());
   }
 }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchNumberMatchingTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchNumberMatchingTest.php
index 119bd4c..7aaff00 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchNumberMatchingTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchNumberMatchingTest.php
@@ -69,7 +69,7 @@ function testNumberSearching() {
 
       // Verify that the node title does not appear on the search page
       // with a dummy search.
-      $this->drupalPost('search/node',
+      $this->drupalPostForm('search/node',
         array('keys' => 'foo'),
         t('Search'));
       $this->assertNoText($node->label(), format_string('%number: node title not shown in dummy search', array('%number' => $i)));
@@ -82,7 +82,7 @@ function testNumberSearching() {
         // "not keyword" when searching.
         $number = ltrim($number, '-');
 
-        $this->drupalPost('search/node',
+        $this->drupalPostForm('search/node',
           array('keys' => $number),
           t('Search'));
         $this->assertText($node->label(), format_string('%i: node title shown (search found the node) in search for number %number', array('%i' => $i, '%number' => $number)));
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchNumbersTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchNumbersTest.php
index e52dfd4..eeabefd 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchNumbersTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchNumbersTest.php
@@ -82,14 +82,14 @@ function testNumberSearching() {
 
       // Verify that the node title does not appear on the search page
       // with a dummy search.
-      $this->drupalPost('search/node',
+      $this->drupalPostForm('search/node',
         array('keys' => 'foo'),
         t('Search'));
       $this->assertNoText($node->label(), $type . ': node title not shown in dummy search');
 
       // Verify that the node title does appear as a link on the search page
       // when searching for the number.
-      $this->drupalPost('search/node',
+      $this->drupalPostForm('search/node',
         array('keys' => $number),
         t('Search'));
       $this->assertText($node->label(), format_string('%type: node title shown (search found the node) in search for number %number.', array('%type' => $type, '%number' => $number)));
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php
index 247096c..817f109 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php
@@ -41,13 +41,13 @@ function testSearchText() {
 
     $edit = array();
     $edit['keys'] = 'bike shed ' . $this->randomName();
-    $this->drupalPost('search/node', $edit, t('Search'));
+    $this->drupalPostForm('search/node', $edit, t('Search'));
     $this->assertText(t('Consider loosening your query with OR. bike OR shed will often show more results than bike shed.'), 'Help text is displayed when search returns no results.');
     $this->assertText(t('Search'));
     $this->assertTitle($title, 'Search page title is correct');
 
     $edit['keys'] = $this->searching_user->getUsername();
-    $this->drupalPost('search/user', $edit, t('Search'));
+    $this->drupalPostForm('search/user', $edit, t('Search'));
     $this->assertText(t('Search'));
     $this->assertTitle($title, 'Search page title is correct');
 
@@ -69,7 +69,7 @@ function testSearchText() {
       }
     }
     $edit['keys'] = implode(' ', $keys);
-    $this->drupalPost('search/node', $edit, t('Search'));
+    $this->drupalPostForm('search/node', $edit, t('Search'));
     $this->assertRaw(t('Your search used too many AND/OR expressions. Only the first @count terms were included in this search.', array('@count' => $limit)));
   }
 }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchPreprocessLangcodeTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchPreprocessLangcodeTest.php
index 8792596..6ae7e88 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchPreprocessLangcodeTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchPreprocessLangcodeTest.php
@@ -55,7 +55,7 @@ function testPreprocessLangcode() {
 
     // Search for the title of the node with a POST query.
     $edit = array('or' => $node->label());
-    $this->drupalPost('search/node', $edit, t('Advanced search'));
+    $this->drupalPostForm('search/node', $edit, t('Advanced search'));
 
     // Checks if the langcode has been passed by hook_search_preprocess().
     $this->assertText('Langcode Preprocess Test: en');
@@ -82,7 +82,7 @@ function testPreprocessStemming() {
 
     // Search for the title of the node with a POST query.
     $edit = array('or' => 'testing');
-    $this->drupalPost('search/node', $edit, t('Advanced search'));
+    $this->drupalPostForm('search/node', $edit, t('Advanced search'));
 
     // Check if the node has been found.
     $this->assertText('Search results');
@@ -90,7 +90,7 @@ function testPreprocessStemming() {
 
     // Search for the same node using a different query.
     $edit = array('or' => 'test');
-    $this->drupalPost('search/node', $edit, t('Advanced search'));
+    $this->drupalPostForm('search/node', $edit, t('Advanced search'));
 
     // Check if the node has been found.
     $this->assertText('Search results');
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchRankingTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchRankingTest.php
index c7055f3..40e8cec 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchRankingTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchRankingTest.php
@@ -88,8 +88,8 @@ public function testRankings() {
     $edit['subject'] = 'my comment title';
     $edit['comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]'] = 'some random comment';
     $this->drupalGet('comment/reply/' . $nodes['comments'][1]->id());
-    $this->drupalPost(NULL, $edit, t('Preview'));
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Preview'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Enable counting of statistics.
     \Drupal::config('statistics.settings')->set('count_content_views', 1)->save();
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php
index 1ee28c2..bd2d194 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php
@@ -58,7 +58,7 @@ function testShortcutLinkAdd() {
         'shortcut_link[link_title]' => $title,
         'shortcut_link[link_path]'  => $test['path'],
       );
-      $this->drupalPost('admin/config/user-interface/shortcut/manage/' . $set->id() . '/add-link', $form_data, t('Save'));
+      $this->drupalPostForm('admin/config/user-interface/shortcut/manage/' . $set->id() . '/add-link', $form_data, t('Save'));
       $this->assertResponse(200);
       $saved_set = shortcut_set_load($set->id());
       $paths = $this->getShortcutInformation($saved_set, 'link_path');
@@ -92,7 +92,7 @@ function testShortcutLinkRename() {
     $new_link_name = $this->randomName();
 
     $link = reset($set->links);
-    $this->drupalPost('admin/config/user-interface/shortcut/link/' . $link->mlid, array('shortcut_link[link_title]' => $new_link_name, 'shortcut_link[link_path]' => $link->link_path), t('Save'));
+    $this->drupalPostForm('admin/config/user-interface/shortcut/link/' . $link->mlid, array('shortcut_link[link_title]' => $new_link_name, 'shortcut_link[link_path]' => $link->link_path), t('Save'));
     $saved_set = shortcut_set_load($set->id());
     $titles = $this->getShortcutInformation($saved_set, 'link_title');
     $this->assertTrue(in_array($new_link_name, $titles), 'Shortcut renamed: ' . $new_link_name);
@@ -109,7 +109,7 @@ function testShortcutLinkChangePath() {
     $new_link_path = 'admin/config';
 
     $link = reset($set->links);
-    $this->drupalPost('admin/config/user-interface/shortcut/link/' . $link->mlid, array('shortcut_link[link_title]' => $link->link_title, 'shortcut_link[link_path]' => $new_link_path), t('Save'));
+    $this->drupalPostForm('admin/config/user-interface/shortcut/link/' . $link->mlid, array('shortcut_link[link_title]' => $link->link_title, 'shortcut_link[link_path]' => $new_link_path), t('Save'));
     $saved_set = shortcut_set_load($set->id());
     $paths = $this->getShortcutInformation($saved_set, 'link_path');
     $this->assertTrue(in_array($new_link_path, $paths), 'Shortcut path changed: ' . $new_link_path);
@@ -123,7 +123,7 @@ function testShortcutLinkDelete() {
     $set = $this->set;
 
     $link = reset($set->links);
-    $this->drupalPost('admin/config/user-interface/shortcut/link/' . $link->mlid . '/delete', array(), 'Delete');
+    $this->drupalPostForm('admin/config/user-interface/shortcut/link/' . $link->mlid . '/delete', array(), 'Delete');
     $saved_set = shortcut_set_load($set->id());
     $mlids = $this->getShortcutInformation($saved_set, 'mlid');
     $this->assertFalse(in_array($link->mlid, $mlids), 'Successfully deleted a shortcut.');
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php
index 4e4959c..470227a 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php
@@ -30,7 +30,7 @@ function testShortcutSetAdd() {
       'label' => $this->randomName(),
       'id' => strtolower($this->randomName()),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $new_set = $this->container->get('entity.manager')->getStorageController('shortcut_set')->load($edit['id']);
     $this->assertIdentical($new_set->id(), $edit['id'], 'Successfully created a shortcut set.');
     $this->drupalGet('user/' . $this->admin_user->id() . '/shortcuts');
@@ -45,7 +45,7 @@ function testShortcutSetSwitchOwn() {
 
     // Attempt to switch the default shortcut set to the newly created shortcut
     // set.
-    $this->drupalPost('user/' . $this->admin_user->id() . '/shortcuts', array('set' => $new_set->id()), t('Change set'));
+    $this->drupalPostForm('user/' . $this->admin_user->id() . '/shortcuts', array('set' => $new_set->id()), t('Change set'));
     $this->assertResponse(200);
     $current_set = shortcut_current_displayed_set($this->admin_user);
     $this->assertTrue($new_set->id() == $current_set->id(), 'Successfully switched own shortcut set.');
@@ -71,7 +71,7 @@ function testShortcutSetSwitchCreate() {
       'id' => strtolower($this->randomName()),
       'label' => $this->randomString(),
     );
-    $this->drupalPost('user/' . $this->admin_user->id() . '/shortcuts', $edit, t('Change set'));
+    $this->drupalPostForm('user/' . $this->admin_user->id() . '/shortcuts', $edit, t('Change set'));
     $current_set = shortcut_current_displayed_set($this->admin_user);
     $this->assertNotEqual($current_set->id(), $this->set->id(), 'A shortcut set can be switched to at the same time as it is created.');
     $this->assertEqual($current_set->label(), $edit['label'], 'The new set is correctly assigned to the user.');
@@ -82,7 +82,7 @@ function testShortcutSetSwitchCreate() {
    */
   function testShortcutSetSwitchNoSetName() {
     $edit = array('set' => 'new');
-    $this->drupalPost('user/' . $this->admin_user->id() . '/shortcuts', $edit, t('Change set'));
+    $this->drupalPostForm('user/' . $this->admin_user->id() . '/shortcuts', $edit, t('Change set'));
     $this->assertText(t('The new set label is required.'));
     $current_set = shortcut_current_displayed_set($this->admin_user);
     $this->assertEqual($current_set->id(), $this->set->id(), 'Attempting to switch to a new shortcut set without providing a set name does not succeed.');
@@ -114,7 +114,7 @@ function testShortcutSetRename() {
     $new_label = $this->randomName();
     $this->drupalGet('admin/config/user-interface/shortcut');
     $this->clickLink(t('Edit menu'));
-    $this->drupalPost(NULL, array('label' => $new_label), t('Save'));
+    $this->drupalPostForm(NULL, array('label' => $new_label), t('Save'));
     $set = shortcut_set_load($set->id());
     $this->assertTrue($set->label() == $new_label, 'Shortcut set has been successfully renamed.');
   }
@@ -125,7 +125,7 @@ function testShortcutSetRename() {
   function testShortcutSetRenameAlreadyExists() {
     $set = $this->generateShortcutSet($this->randomName());
     $existing_label = $this->set->label();
-    $this->drupalPost('admin/config/user-interface/shortcut/manage/' . $set->id() . '/edit', array('label' => $existing_label), t('Save'));
+    $this->drupalPostForm('admin/config/user-interface/shortcut/manage/' . $set->id() . '/edit', array('label' => $existing_label), t('Save'));
     $this->assertRaw(t('The shortcut set %name already exists. Choose another name.', array('%name' => $existing_label)));
     $set = shortcut_set_load($set->id());
     $this->assertNotEqual($set->label(), $existing_label, format_string('The shortcut set %title cannot be renamed to %new-title because a shortcut set with that title already exists.', array('%title' => $set->label(), '%new-title' => $existing_label)));
@@ -150,7 +150,7 @@ function testShortcutSetUnassign() {
   function testShortcutSetDelete() {
     $new_set = $this->generateShortcutSet($this->randomName());
 
-    $this->drupalPost('admin/config/user-interface/shortcut/manage/' . $new_set->id() . '/delete', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/user-interface/shortcut/manage/' . $new_set->id() . '/delete', array(), t('Delete'));
     $sets = entity_load_multiple('shortcut_set');
     $this->assertFalse(isset($sets[$new_set->id()]), 'Successfully deleted a shortcut set.');
   }
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrokenSetUpTest.php b/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrokenSetUpTest.php
index b2ba376..19efd76 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrokenSetUpTest.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrokenSetUpTest.php
@@ -70,7 +70,7 @@ function testBreakSetUp() {
     // interface within the simpletest child site.
     if (!drupal_valid_test_ua()) {
       $edit['Drupal\simpletest\Tests\BrokenSetUpTest'] = TRUE;
-      $this->drupalPost('admin/config/development/testing', $edit, t('Run tests'));
+      $this->drupalPostForm('admin/config/development/testing', $edit, t('Run tests'));
 
       // Verify that the broken test and its tearDown() method are skipped.
       $this->assertRaw(t('The test setUp() method has been run.'));
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php b/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php
index 41c166c..ef484a8 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php
@@ -32,7 +32,7 @@ function testGetAbsoluteUrl() {
     $this->assertEqual($absolute, $this->url, 'Passed and requested URL are equal.');
     $this->assertEqual($this->url, $this->getAbsoluteUrl($this->url), 'Requested and returned absolute URL are equal.');
 
-    $this->drupalPost(NULL, array(), t('Log in'));
+    $this->drupalPostForm(NULL, array(), t('Log in'));
     $this->assertEqual($absolute, $this->url, 'Passed and requested URL are equal.');
     $this->assertEqual($this->url, $this->getAbsoluteUrl($this->url), 'Requested and returned absolute URL are equal.');
 
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Tests/InstallationProfileModuleTestsTest.php b/core/modules/simpletest/lib/Drupal/simpletest/Tests/InstallationProfileModuleTestsTest.php
index f1e7fa8..911c824 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Tests/InstallationProfileModuleTestsTest.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Tests/InstallationProfileModuleTestsTest.php
@@ -59,7 +59,7 @@ function testInstallationProfileTests() {
     $edit = array(
       'Drupal\drupal_system_listing_compatible_test\Tests\SystemListingCompatibleTest' => TRUE,
     );
-    $this->drupalPost(NULL, $edit, t('Run tests'));
+    $this->drupalPostForm(NULL, $edit, t('Run tests'));
     $this->assertText('SystemListingCompatibleTest test executed.');
   }
 }
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Tests/MissingCheckedRequirementsTest.php b/core/modules/simpletest/lib/Drupal/simpletest/Tests/MissingCheckedRequirementsTest.php
index db1928d..61d6401 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Tests/MissingCheckedRequirementsTest.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Tests/MissingCheckedRequirementsTest.php
@@ -56,7 +56,7 @@ protected function testCheckRequirements() {
     if (!drupal_valid_test_ua()) {
       // Run this test from web interface.
       $edit['Drupal\simpletest\Tests\MissingCheckedRequirementsTest'] = TRUE;
-      $this->drupalPost('admin/config/development/testing', $edit, t('Run tests'));
+      $this->drupalPostForm('admin/config/development/testing', $edit, t('Run tests'));
       $this->assertRaw('Test is not allowed to run.', 'Test check for requirements came up.');
       $this->assertNoText('Test ran when it failed requirements check.', 'Test requirements stopped test from running.');
     }
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php b/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php
index 645fd54..1588b64 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php
@@ -82,7 +82,7 @@ function testInternalBrowser() {
         'pass' => $user->pass_raw
       );
       $this->maximumRedirects = 1;
-      $this->drupalPost('user', $edit, t('Log in'), array(
+      $this->drupalPostForm('user', $edit, t('Log in'), array(
         'query' => array('destination' => 'user/logout'),
       ));
       $headers = $this->drupalGetHeaders(TRUE);
@@ -159,7 +159,7 @@ function testWebTestRunner() {
 
         $edit = array();
         $edit['Drupal\simpletest\Tests\SimpleTestTest'] = TRUE;
-        $this->drupalPost(NULL, $edit, t('Run tests'));
+        $this->drupalPostForm(NULL, $edit, t('Run tests'));
 
         // Parse results and confirm that they are correct.
         $this->getTestResults();
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index 8db9e18..00ba41a 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -62,7 +62,7 @@
    * Indicates that headers should be dumped if verbose output is enabled.
    *
    * Headers are dumped to verbose by drupalGet(), drupalHead(), and
-   * drupalPost().
+   * drupalPostForm().
    *
    * @var bool
    */
@@ -642,7 +642,7 @@ protected function drupalLogin(AccountInterface $account) {
       'name' => $account->getUsername(),
       'pass' => $account->pass_raw
     );
-    $this->drupalPost('user', $edit, t('Log in'));
+    $this->drupalPostForm('user', $edit, t('Log in'));
 
     // @see WebTestBase::drupalUserIsLoggedIn()
     if (isset($this->session_id)) {
@@ -960,7 +960,7 @@ protected function resetAll() {
    * Useful after a page request is made that changes a variable in a different
    * thread.
    *
-   * In other words calling a settings page with $this->drupalPost() with a
+   * In other words calling a settings page with $this->drupalPostForm() with a
    * changed value would update a variable to reflect that change, but in the
    * thread that made the call (thread running the test) the changed variable
    * would not be picked up.
@@ -1316,7 +1316,7 @@ protected function drupalGetAJAX($path, array $options = array(), array $headers
   }
 
   /**
-   * Executes a POST request on a Drupal page.
+   * Executes a form submission.
    *
    * It will be done as usual POST request with SimpleBrowser.
    *
@@ -1328,11 +1328,11 @@ protected function drupalGetAJAX($path, array $options = array(), array $headers
    *   @code
    *   // First step in form.
    *   $edit = array(...);
-   *   $this->drupalPost('some_url', $edit, t('Save'));
+   *   $this->drupalPostForm('some_url', $edit, t('Save'));
    *
    *   // Second step in form.
    *   $edit = array(...);
-   *   $this->drupalPost(NULL, $edit, t('Save'));
+   *   $this->drupalPostForm(NULL, $edit, t('Save'));
    *   @endcode
    * @param  $edit
    *   Field data in an associative array. Changes the current input fields
@@ -1401,11 +1401,11 @@ protected function drupalGetAJAX($path, array $options = array(), array $headers
    * @param $extra_post
    *   (optional) A string of additional data to append to the POST submission.
    *   This can be used to add POST data for which there are no HTML fields, as
-   *   is done by drupalPostAJAX(). This string is literally appended to the
+   *   is done by drupalPostAjaxForm(). This string is literally appended to the
    *   POST data, so it must already be urlencoded and contain a leading "&"
    *   (e.g., "&extra_var1=hello+world&extra_var2=you%26me").
    */
-  protected function drupalPost($path, $edit, $submit, array $options = array(), array $headers = array(), $form_html_id = NULL, $extra_post = NULL) {
+  protected function drupalPostForm($path, $edit, $submit, array $options = array(), array $headers = array(), $form_html_id = NULL, $extra_post = NULL) {
     $submit_matches = FALSE;
     $ajax = is_array($submit);
     if (isset($path)) {
@@ -1454,13 +1454,7 @@ protected function drupalPost($path, $edit, $submit, array $options = array(), a
             }
           }
           else {
-            foreach ($post as $key => $value) {
-              // Encode according to application/x-www-form-urlencoded
-              // Both names and values needs to be urlencoded, according to
-              // http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
-              $post[$key] = urlencode($key) . '=' . urlencode($value);
-            }
-            $post = implode('&', $post) . $extra_post;
+            $post = $this->serializePostValues($post) . $extra_post;
           }
           $out = $this->curlExec(array(CURLOPT_URL => $action, CURLOPT_POST => TRUE, CURLOPT_POSTFIELDS => $post, CURLOPT_HTTPHEADER => $headers));
           // Ensure that any changes to variables in the other thread are picked
@@ -1497,11 +1491,13 @@ protected function drupalPost($path, $edit, $submit, array $options = array(), a
   }
 
   /**
-   * Execute an Ajax submission.
+   * Executes an Ajax form submission.
    *
    * This executes a POST as ajax.js does. It uses the returned JSON data, an
    * array of commands, to update $this->content using equivalent DOM
    * manipulation as is used by ajax.js. It also returns the array of commands.
+   * It does not apply custom AJAX commands though, because emulation is only
+   * implemented for the AJAX commands that ship with Drupal core.
    *
    * @param $path
    *   Location of the form containing the Ajax enabled element to test. Can be
@@ -1522,7 +1518,7 @@ protected function drupalPost($path, $edit, $submit, array $options = array(), a
    *   (optional) Options to be forwarded to the url generator.
    * @param $headers
    *   (optional) An array containing additional HTTP request headers, each
-   *   formatted as "name: value". Forwarded to drupalPost().
+   *   formatted as "name: value". Forwarded to drupalPostForm().
    * @param $form_html_id
    *   (optional) HTML ID of the form to be submitted, use when there is more
    *   than one identical form on the same page and the value of the triggering
@@ -1535,12 +1531,12 @@ protected function drupalPost($path, $edit, $submit, array $options = array(), a
    * @return
    *   An array of Ajax commands.
    *
-   * @see drupalPost()
+   * @see drupalPostForm()
    * @see ajax.js
    */
-  protected function drupalPostAJAX($path, $edit, $triggering_element, $ajax_path = NULL, array $options = array(), array $headers = array(), $form_html_id = NULL, $ajax_settings = NULL) {
-    // Get the content of the initial page prior to calling drupalPost(), since
-    // drupalPost() replaces $this->content.
+  protected function drupalPostAjaxForm($path, $edit, $triggering_element, $ajax_path = NULL, array $options = array(), array $headers = array(), $form_html_id = NULL, $ajax_settings = NULL) {
+    // Get the content of the initial page prior to calling drupalPostForm(),
+    // since drupalPostForm() replaces $this->content.
     if (isset($path)) {
       $this->drupalGet($path, $options);
     }
@@ -1566,10 +1562,10 @@ protected function drupalPostAJAX($path, $edit, $triggering_element, $ajax_path
     }
 
     // Add extra information to the POST data as ajax.js does.
-    $extra_post = '';
+    $extra_post = array();
     if (isset($ajax_settings['submit'])) {
       foreach ($ajax_settings['submit'] as $key => $value) {
-        $extra_post .= '&' . urlencode($key) . '=' . urlencode($value);
+        $extra_post[$key] = $value;
       }
     }
     $ajax_html_ids = array();
@@ -1577,18 +1573,11 @@ protected function drupalPostAJAX($path, $edit, $triggering_element, $ajax_path
       $ajax_html_ids[] = (string) $element['id'];
     }
     if (!empty($ajax_html_ids)) {
-      $extra_post .= '&' . urlencode('ajax_html_ids') . '=' . urlencode(implode(' ', $ajax_html_ids));
-    }
-    if (isset($drupal_settings['ajaxPageState'])) {
-      $extra_post .= '&' . urlencode('ajax_page_state[theme]') . '=' . urlencode($drupal_settings['ajaxPageState']['theme']);
-      $extra_post .= '&' . urlencode('ajax_page_state[theme_token]') . '=' . urlencode($drupal_settings['ajaxPageState']['theme_token']);
-      foreach ($drupal_settings['ajaxPageState']['css'] as $key => $value) {
-        $extra_post .= '&' . urlencode("ajax_page_state[css][$key]") . '=1';
-      }
-      foreach ($drupal_settings['ajaxPageState']['js'] as $key => $value) {
-        $extra_post .= '&' . urlencode("ajax_page_state[js][$key]") . '=1';
-      }
+      $extra_post['ajax_html_ids'] = implode(' ', $ajax_html_ids);
     }
+    $extra_post += $this->getAjaxPageStatePostData();
+    // Now serialize all the $extra_post values, and prepend it with an '&'.
+    $extra_post = '&' . $this->serializePostValues($extra_post);
 
     // Unless a particular path is specified, use the one specified by the
     // Ajax settings, or else 'system/ajax'.
@@ -1597,7 +1586,7 @@ protected function drupalPostAJAX($path, $edit, $triggering_element, $ajax_path
     }
 
     // Submit the POST request.
-    $return = drupal_json_decode($this->drupalPost(NULL, $edit, array('path' => $ajax_path, 'triggering_element' => $triggering_element), $options, $headers, $form_html_id, $extra_post));
+    $return = drupal_json_decode($this->drupalPostForm(NULL, $edit, array('path' => $ajax_path, 'triggering_element' => $triggering_element), $options, $headers, $form_html_id, $extra_post));
 
     // Change the page content by applying the returned commands.
     if (!empty($ajax_settings) && !empty($return)) {
@@ -1693,6 +1682,84 @@ protected function drupalPostAJAX($path, $edit, $triggering_element, $ajax_path
   }
 
   /**
+   * Perform a POST HTTP request.
+   *
+   * @param string $path
+   *   Drupal path where the request should be POSTed to. Will be transformed
+   *   into an absolute path automatically.
+   * @param string $accept
+   *   The value for the "Accept" header. Usually either 'application/json' or
+   *   'application/vnd.drupal-ajax'.
+   * @param array $post
+   *   The POST data. When making a 'application/vnd.drupal-ajax' request, the
+   *   Ajax page state data should be included. Use getAjaxPageStatePostData()
+   *   for that.
+   * @param array $options
+   *   (optional) Options to be forwarded to the url generator. The 'absolute'
+   *   option will automatically be enabled.
+   *
+   * @return
+   *   The content returned from the call to curl_exec().
+   *
+   * @see WebTestBase::getAjaxPageStatePostData()
+   * @see WebTestBase::curlExec()
+   * @see url()
+   */
+  protected function drupalPost($path, $accept, array $post, $options = array()) {
+    return $this->curlExec(array(
+      CURLOPT_URL => url($path, $options + array('absolute' => TRUE)),
+      CURLOPT_POST => TRUE,
+      CURLOPT_POSTFIELDS => $this->serializePostValues($post),
+      CURLOPT_HTTPHEADER => array(
+        'Accept: ' . $accept,
+        'Content-Type: application/x-www-form-urlencoded',
+      ),
+    ));
+  }
+
+  /**
+   * Get the Ajax page state from drupalSettings and prepare it for POSTing.
+   *
+   * @return array
+   *   The Ajax page state POST data.
+   */
+  protected function getAjaxPageStatePostData() {
+    $post = array();
+    $drupal_settings = $this->drupalSettings;
+    if (isset($drupal_settings['ajaxPageState'])) {
+      $post['ajax_page_state[theme]'] = $drupal_settings['ajaxPageState']['theme'];
+      $post['ajax_page_state[theme_token]'] = $drupal_settings['ajaxPageState']['theme_token'];
+      foreach ($drupal_settings['ajaxPageState']['css'] as $key => $value) {
+        $post["ajax_page_state[css][$key]"] = 1;
+      }
+      foreach ($drupal_settings['ajaxPageState']['js'] as $key => $value) {
+        $post["ajax_page_state[js][$key]"] = 1;
+      }
+    }
+    return $post;
+  }
+
+  /**
+   * Serialize POST HTTP request values.
+   *
+   * Encode according to application/x-www-form-urlencoded. Both names and
+   * values needs to be urlencoded, according to
+   * http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
+   *
+   * @param array $post
+   *   The array of values to be POSTed.
+   *
+   * @return string
+   *   The serialized result.
+   */
+  protected function serializePostValues($post = array()) {
+    foreach ($post as $key => $value) {
+      $post[$key] = urlencode($key) . '=' . urlencode($value);
+    }
+    return implode('&', $post);
+  }
+
+  /**
    * Runs cron in the Drupal installed by Simpletest.
    */
   protected function cronRun() {
@@ -1753,7 +1820,7 @@ protected function drupalHead($path, array $options = array(), array $headers =
   }
 
   /**
-   * Handles form input related to drupalPost().
+   * Handles form input related to drupalPostForm().
    *
    * Ensure that the specified fields exist and attempt to create POST data in
    * the correct manner for the particular field type.
diff --git a/core/modules/statistics/lib/Drupal/statistics/Tests/StatisticsAdminTest.php b/core/modules/statistics/lib/Drupal/statistics/Tests/StatisticsAdminTest.php
index 6c70985..e8abd34 100644
--- a/core/modules/statistics/lib/Drupal/statistics/Tests/StatisticsAdminTest.php
+++ b/core/modules/statistics/lib/Drupal/statistics/Tests/StatisticsAdminTest.php
@@ -75,7 +75,7 @@ function testStatisticsSettings() {
 
     // Enable counter on content view.
     $edit['statistics_count_content_views'] = 1;
-    $this->drupalPost('admin/config/system/statistics', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/statistics', $edit, t('Save configuration'));
     $config = \Drupal::config('statistics.settings');
     $this->assertTrue($config->get('count_content_views'), 'Count content view log is enabled.');
 
diff --git a/core/modules/syslog/lib/Drupal/syslog/Tests/SyslogTest.php b/core/modules/syslog/lib/Drupal/syslog/Tests/SyslogTest.php
index d4bccaa..bba8706 100644
--- a/core/modules/syslog/lib/Drupal/syslog/Tests/SyslogTest.php
+++ b/core/modules/syslog/lib/Drupal/syslog/Tests/SyslogTest.php
@@ -39,7 +39,7 @@ function testSettings() {
     $edit = array();
     // If we're on Windows, there is no configuration form.
     if (defined('LOG_LOCAL6')) {
-      $this->drupalPost('admin/config/development/logging', array('syslog_facility' => LOG_LOCAL6), t('Save configuration'));
+      $this->drupalPostForm('admin/config/development/logging', array('syslog_facility' => LOG_LOCAL6), t('Save configuration'));
       $this->assertText(t('The configuration options have been saved.'));
 
       $this->drupalGet('admin/config/development/logging');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Ajax/CommandsTest.php b/core/modules/system/lib/Drupal/system/Tests/Ajax/CommandsTest.php
index 0883cb2..eed4a5f 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Ajax/CommandsTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Ajax/CommandsTest.php
@@ -46,87 +46,87 @@ function testAjaxCommands() {
     $edit = array();
 
     // Tests the 'add_css' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'add_css' command")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'add_css' command")));
     $expected = new AddCssCommand('my/file.css');
     $this->assertCommand($commands, $expected->render(), "'add_css' AJAX command issued with correct data.");
 
     // Tests the 'after' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'After': Click to put something after the div")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'After': Click to put something after the div")));
     $expected = new AfterCommand('#after_div', 'This will be placed after');
     $this->assertCommand($commands, $expected->render(), "'after' AJAX command issued with correct data.");
 
     // Tests the 'alert' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'Alert': Click to alert")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'Alert': Click to alert")));
     $expected = new AlertCommand(t('Alert'));
     $this->assertCommand($commands, $expected->render(), "'alert' AJAX Command issued with correct text.");
 
     // Tests the 'append' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'Append': Click to append something")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'Append': Click to append something")));
     $expected = new AppendCommand('#append_div', 'Appended text');
     $this->assertCommand($commands, $expected->render(), "'append' AJAX command issued with correct data.");
 
     // Tests the 'before' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'before': Click to put something before the div")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'before': Click to put something before the div")));
     $expected = new BeforeCommand('#before_div', 'Before text');
     $this->assertCommand($commands, $expected->render(), "'before' AJAX command issued with correct data.");
 
     // Tests the 'changed' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX changed: Click to mark div changed.")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX changed: Click to mark div changed.")));
     $expected = new ChangedCommand('#changed_div');
     $this->assertCommand($commands, $expected->render(), "'changed' AJAX command issued with correct selector.");
 
     // Tests the 'changed' command using the second argument.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX changed: Click to mark div changed with asterisk.")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX changed: Click to mark div changed with asterisk.")));
     $expected = new ChangedCommand('#changed_div', '#changed_div_mark_this');
     $this->assertCommand($commands, $expected->render(), "'changed' AJAX command (with asterisk) issued with correct selector.");
 
     // Tests the 'css' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("Set the the '#box' div to be blue.")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("Set the the '#box' div to be blue.")));
     $expected = new CssCommand('#css_div', array('background-color' => 'blue'));
     $this->assertCommand($commands, $expected->render(), "'css' AJAX command issued with correct selector.");
 
     // Tests the 'data' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX data command: Issue command.")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX data command: Issue command.")));
     $expected = new DataCommand('#data_div', 'testkey', 'testvalue');
     $this->assertCommand($commands, $expected->render(), "'data' AJAX command issued with correct key and value.");
 
     // Tests the 'html' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX html: Replace the HTML in a selector.")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX html: Replace the HTML in a selector.")));
     $expected = new HtmlCommand('#html_div', 'replacement text');
     $this->assertCommand($commands, $expected->render(), "'html' AJAX command issued with correct data.");
 
     // Tests the 'insert' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX insert: Let client insert based on #ajax['method'].")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX insert: Let client insert based on #ajax['method'].")));
     $expected = new InsertCommand('#insert_div', 'insert replacement text');
     $this->assertCommand($commands, $expected->render(), "'insert' AJAX command issued with correct data.");
 
     // Tests the 'invoke' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX invoke command: Invoke addClass() method.")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX invoke command: Invoke addClass() method.")));
     $expected = new InvokeCommand('#invoke_div', 'addClass', array('error'));
     $this->assertCommand($commands, $expected->render(), "'invoke' AJAX command issued with correct method and argument.");
 
     // Tests the 'prepend' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'prepend': Click to prepend something")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'prepend': Click to prepend something")));
     $expected = new PrependCommand('#prepend_div', 'prepended text');
     $this->assertCommand($commands, $expected->render(), "'prepend' AJAX command issued with correct data.");
 
     // Tests the 'remove' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'remove': Click to remove text")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'remove': Click to remove text")));
     $expected = new RemoveCommand('#remove_text');
     $this->assertCommand($commands, $expected->render(), "'remove' AJAX command issued with correct command and selector.");
 
     // Tests the 'restripe' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'restripe' command")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'restripe' command")));
     $expected = new RestripeCommand('#restripe_table');
     $this->assertCommand($commands, $expected->render(), "'restripe' AJAX command issued with correct selector.");
 
     // Tests the 'settings' command.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'settings' command")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'settings' command")));
     $expected = new SettingsCommand(array('ajax_forms_test' => array('foo' => 42)));
     $this->assertCommand($commands, $expected->render(), "'settings' AJAX command issued with correct data.");
 
     // Test that the settings command merges settings properly.
-    $commands = $this->drupalPostAJAX($form_path, $edit, array('op' => t("AJAX 'settings' command with setting merging")));
+    $commands = $this->drupalPostAjaxForm($form_path, $edit, array('op' => t("AJAX 'settings' command with setting merging")));
     $expected = new SettingsCommand(array('ajax_forms_test' => array('foo' => 9001)), TRUE);
     $this->assertCommand($commands, $expected->render(), "'settings' AJAX command with setting merging.");
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Ajax/DialogTest.php b/core/modules/system/lib/Drupal/system/Tests/Ajax/DialogTest.php
index 5af8337..346b932 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Ajax/DialogTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Ajax/DialogTest.php
@@ -109,9 +109,9 @@ public function testDialog() {
     $this->assertRaw($dialog_contents, 'Non-JS normal dialog page present.');
 
     // Emulate going to the JS version of the page and check the JSON response.
-    // This needs to use WebTestBase::drupalPostAJAX() so that the correct
+    // This needs to use WebTestBase::drupalPostAjaxForm() so that the correct
     // dialog options are sent.
-    $ajax_result = $this->drupalPostAJAX('ajax-test/dialog', array(
+    $ajax_result = $this->drupalPostAjaxForm('ajax-test/dialog', array(
         // We have to mock a form element to make drupalPost submit from a link.
         'textfield' => 'test',
       ), array(), 'ajax-test/dialog-contents', array(), array('Accept: application/vnd.drupal-dialog'), NULL, array(
@@ -122,9 +122,9 @@ public function testDialog() {
     $this->assertEqual($normal_expected_response, $ajax_result[3], 'Normal dialog JSON response matches.');
 
     // Emulate going to the JS version of the page and check the JSON response.
-    // This needs to use WebTestBase::drupalPostAJAX() so that the correct
+    // This needs to use WebTestBase::drupalPostAjaxForm() so that the correct
     // dialog options are sent.
-    $ajax_result = $this->drupalPostAJAX('ajax-test/dialog', array(
+    $ajax_result = $this->drupalPostAjaxForm('ajax-test/dialog', array(
         // We have to mock a form element to make drupalPost submit from a link.
         'textfield' => 'test',
       ), array(), 'ajax-test/dialog-contents', array(), array('Accept: application/vnd.drupal-dialog'), NULL, array(
@@ -141,7 +141,7 @@ public function testDialog() {
     // Test submitting via a POST request through the button for modals. This
     // approach more accurately reflects the real responses by Drupal because
     // all of the necessary page variables are emulated.
-    $ajax_result = $this->drupalPostAJAX('ajax-test/dialog', array(), 'button1');
+    $ajax_result = $this->drupalPostAjaxForm('ajax-test/dialog', array(), 'button1');
 
     // Check that CSS and JavaScript are "added" to the page dynamically.
     $dialog_css_exists = strpos($ajax_result[1]['data'], 'jquery.ui.dialog.css') !== FALSE;
@@ -155,7 +155,7 @@ public function testDialog() {
     $this->assertEqual($modal_expected_response, $ajax_result[3], 'POST request modal dialog JSON response matches.');
 
     // Abbreviated test for "normal" dialogs, testing only the difference.
-    $ajax_result = $this->drupalPostAJAX('ajax-test/dialog', array(), 'button2');
+    $ajax_result = $this->drupalPostAjaxForm('ajax-test/dialog', array(), 'button2');
     $this->assertEqual($normal_expected_response, $ajax_result[3], 'POST request normal dialog JSON response matches.');
 
     // Check that requesting a form dialog without JS goes to a page.
diff --git a/core/modules/system/lib/Drupal/system/Tests/Ajax/ElementValidationTest.php b/core/modules/system/lib/Drupal/system/Tests/Ajax/ElementValidationTest.php
index eeed092..81ed62d 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Ajax/ElementValidationTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Ajax/ElementValidationTest.php
@@ -32,7 +32,7 @@ function testAjaxElementValidation() {
     $edit = array('drivertext' => t('some dumb text'));
 
     // Post with 'drivertext' as the triggering element.
-    $post_result = $this->drupalPostAJAX('ajax_validation_test', $edit, 'drivertext');
+    $post_result = $this->drupalPostAjaxForm('ajax_validation_test', $edit, 'drivertext');
     // Look for a validation failure in the resultant JSON.
     $this->assertNoText(t('Error message'), 'No error message in resultant JSON');
     $this->assertText('ajax_forms_test_validation_form_callback invoked', 'The correct callback was invoked');
@@ -41,7 +41,7 @@ function testAjaxElementValidation() {
     $edit = array('drivernumber' => 12345);
 
     // Post with 'drivernumber' as the triggering element.
-    $post_result = $this->drupalPostAJAX('ajax_validation_test', $edit, 'drivernumber');
+    $post_result = $this->drupalPostAjaxForm('ajax_validation_test', $edit, 'drivernumber');
     // Look for a validation failure in the resultant JSON.
     $this->assertNoText(t('Error message'), 'No error message in resultant JSON');
     $this->assertText('ajax_forms_test_validation_number_form_callback invoked', 'The correct callback was invoked');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Ajax/FormValuesTest.php b/core/modules/system/lib/Drupal/system/Tests/Ajax/FormValuesTest.php
index 9b1781f..d75db82 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Ajax/FormValuesTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Ajax/FormValuesTest.php
@@ -37,7 +37,7 @@ function testSimpleAjaxFormValue() {
       $edit = array(
         'select' => $item,
       );
-      $commands = $this->drupalPostAJAX('ajax_forms_test_get_form', $edit, 'select');
+      $commands = $this->drupalPostAjaxForm('ajax_forms_test_get_form', $edit, 'select');
       $expected = new DataCommand('#ajax_selected_color', 'form_state_value_select', $item);
       $this->assertCommand($commands, $expected->render(), 'Verification of AJAX form values from a selectbox issued with a correct value.');
     }
@@ -47,7 +47,7 @@ function testSimpleAjaxFormValue() {
       $edit = array(
         'checkbox' => $item,
       );
-      $commands = $this->drupalPostAJAX('ajax_forms_test_get_form', $edit, 'checkbox');
+      $commands = $this->drupalPostAjaxForm('ajax_forms_test_get_form', $edit, 'checkbox');
       $expected = new DataCommand('#ajax_checkbox_value', 'form_state_value_select', (int) $item);
       $this->assertCommand($commands, $expected->render(), 'Verification of AJAX form values from a checkbox issued with a correct value.');
     }
@@ -58,7 +58,7 @@ function testSimpleAjaxFormValue() {
       $edit = array(
         $element_name => 'red',
       );
-      $commands = $this->drupalPostAJAX('ajax_forms_test_get_form', $edit, $element_name);
+      $commands = $this->drupalPostAjaxForm('ajax_forms_test_get_form', $edit, $element_name);
       $this->assertResponse(500);
     }
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Ajax/FrameworkTest.php b/core/modules/system/lib/Drupal/system/Tests/Ajax/FrameworkTest.php
index 119fc9a..eb570ee 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Ajax/FrameworkTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Ajax/FrameworkTest.php
@@ -60,7 +60,7 @@ public function testOrder() {
 
     // Load any page with at least one CSS file, at least one JavaScript file
     // and at least one #ajax-powered element. The latter is an assumption of
-    // drupalPostAJAX(), the two former are assumptions of
+    // drupalPostAjaxForm(), the two former are assumptions of
     // AjaxReponse::ajaxRender().
     // @todo refactor AJAX Framework + tests to make less assumptions.
     $this->drupalGet('ajax_forms_test_lazy_load_form');
@@ -71,7 +71,7 @@ public function testOrder() {
     // 3. JavaScript files in the header
     // 4. JavaScript files in the footer
     // 5. Any other AJAX commands, in whatever order they were added.
-    $commands = $this->drupalPostAJAX(NULL, array(), NULL, 'ajax-test/order', array(), array(), NULL, array());
+    $commands = $this->drupalPostAjaxForm(NULL, array(), NULL, 'ajax-test/order', array(), array(), NULL, array());
     $this->assertCommand(array_slice($commands, 0, 1), $expected_commands[0]->render(), 'Settings command is first.');
     $this->assertCommand(array_slice($commands, 1, 1), $expected_commands[1]->render(), 'CSS command is second (and CSS files are ordered correctly).');
     $this->assertCommand(array_slice($commands, 2, 1), $expected_commands[2]->render(), 'Header JS command is third.');
@@ -131,7 +131,7 @@ public function testLazyLoad() {
     $this->assertTrue(!isset($original_js[$expected['js']]), format_string('Page originally lacks the %js file, as expected.', array('%js' => $expected['js'])));
 
     // Submit the AJAX request without triggering files getting added.
-    $commands = $this->drupalPostAJAX(NULL, array('add_files' => FALSE), array('op' => t('Submit')));
+    $commands = $this->drupalPostAjaxForm(NULL, array('add_files' => FALSE), array('op' => t('Submit')));
     $new_settings = $this->drupalGetSettings();
     $new_css = $new_settings['ajaxPageState']['css'];
     $new_js = $new_settings['ajaxPageState']['js'];
@@ -156,7 +156,7 @@ public function testLazyLoad() {
     $this->assertFalse($found_markup_command, format_string('Page still lacks the %css and %js files, as expected.', array('%css' => $expected['css'], '%js' => $expected['js'])));
 
     // Submit the AJAX request and trigger adding files.
-    $commands = $this->drupalPostAJAX(NULL, array('add_files' => TRUE), array('op' => t('Submit')));
+    $commands = $this->drupalPostAjaxForm(NULL, array('add_files' => TRUE), array('op' => t('Submit')));
     $new_settings = $this->drupalGetSettings();
     $new_css = $new_settings['ajaxPageState']['css'];
     $new_js = $new_settings['ajaxPageState']['js'];
@@ -186,7 +186,7 @@ public function testLazyLoad() {
    * Tests that drupalSettings.currentPath is not updated on AJAX requests.
    */
   public function testCurrentPathChange() {
-    $commands = $this->drupalPostAJAX('ajax_forms_test_lazy_load_form', array('add_files' => FALSE), array('op' => t('Submit')));
+    $commands = $this->drupalPostAjaxForm('ajax_forms_test_lazy_load_form', array('add_files' => FALSE), array('op' => t('Submit')));
     foreach ($commands as $command) {
       if ($command['command'] == 'settings') {
         $this->assertFalse(isset($command['settings']['currentPath']), 'Value of drupalSettings.currentPath is not updated after an AJAX request.');
@@ -207,7 +207,7 @@ public function testLazyLoadOverriddenCSS() {
 
     // This gets the form, and emulates an Ajax submission on it, including
     // adding markup to the HEAD and BODY for any lazy loaded JS/CSS files.
-    $this->drupalPostAJAX('ajax_forms_test_lazy_load_form', array('add_files' => TRUE), array('op' => t('Submit')));
+    $this->drupalPostAjaxForm('ajax_forms_test_lazy_load_form', array('add_files' => TRUE), array('op' => t('Submit')));
 
     // Verify that the resulting HTML does not load the overridden CSS file.
     // We add a "?" to the assertion, because Drupal.settings may include
diff --git a/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php b/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php
index 5051384..5182df3 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php
@@ -85,7 +85,7 @@ function testMultiForm() {
     // page update, ensure the same as above.
     foreach ($field_xpaths as $form_html_id => $field_xpath) {
       for ($i = 0; $i < 2; $i++) {
-        $this->drupalPostAJAX(NULL, array(), array($button_name => $button_value), 'system/ajax', array(), array(), $form_html_id);
+        $this->drupalPostAjaxForm(NULL, array(), array($button_name => $button_value), 'system/ajax', array(), array(), $form_html_id);
         $this->assert(count($this->xpath($field_xpath . $field_items_xpath_suffix)) == $i+2, 'Found the correct number of field items after an AJAX submission.');
         $this->assertFieldByXPath($field_xpath . $button_xpath_suffix, NULL, 'Found the "add more" button after an AJAX submission.');
         $this->assertNoDuplicateIds(t('Updated page contains unique IDs'), 'Other');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Batch/ProcessingTest.php b/core/modules/system/lib/Drupal/system/Tests/Batch/ProcessingTest.php
index 9bd0c61..b452e69 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Batch/ProcessingTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Batch/ProcessingTest.php
@@ -46,34 +46,34 @@ function testBatchNoForm() {
   function testBatchForm() {
     // Batch 0: no operation.
     $edit = array('batch' => 'batch_0');
-    $this->drupalPost('batch-test/simple', $edit, 'Submit');
+    $this->drupalPostForm('batch-test/simple', $edit, 'Submit');
     $this->assertBatchMessages($this->_resultMessages('batch_0'), 'Batch with no operation performed successfully.');
     $this->assertText('Redirection successful.', 'Redirection after batch execution is correct.');
 
     // Batch 1: several simple operations.
     $edit = array('batch' => 'batch_1');
-    $this->drupalPost('batch-test/simple', $edit, 'Submit');
+    $this->drupalPostForm('batch-test/simple', $edit, 'Submit');
     $this->assertBatchMessages($this->_resultMessages('batch_1'), 'Batch with simple operations performed successfully.');
     $this->assertEqual(batch_test_stack(), $this->_resultStack('batch_1'), 'Execution order was correct.');
     $this->assertText('Redirection successful.', 'Redirection after batch execution is correct.');
 
     // Batch 2: one multistep operation.
     $edit = array('batch' => 'batch_2');
-    $this->drupalPost('batch-test/simple', $edit, 'Submit');
+    $this->drupalPostForm('batch-test/simple', $edit, 'Submit');
     $this->assertBatchMessages($this->_resultMessages('batch_2'), 'Batch with multistep operation performed successfully.');
     $this->assertEqual(batch_test_stack(), $this->_resultStack('batch_2'), 'Execution order was correct.');
     $this->assertText('Redirection successful.', 'Redirection after batch execution is correct.');
 
     // Batch 3: simple + multistep combined.
     $edit = array('batch' => 'batch_3');
-    $this->drupalPost('batch-test/simple', $edit, 'Submit');
+    $this->drupalPostForm('batch-test/simple', $edit, 'Submit');
     $this->assertBatchMessages($this->_resultMessages('batch_3'), 'Batch with simple and multistep operations performed successfully.');
     $this->assertEqual(batch_test_stack(), $this->_resultStack('batch_3'), 'Execution order was correct.');
     $this->assertText('Redirection successful.', 'Redirection after batch execution is correct.');
 
     // Batch 4: nested batch.
     $edit = array('batch' => 'batch_4');
-    $this->drupalPost('batch-test/simple', $edit, 'Submit');
+    $this->drupalPostForm('batch-test/simple', $edit, 'Submit');
     $this->assertBatchMessages($this->_resultMessages('batch_4'), 'Nested batch performed successfully.');
     $this->assertEqual(batch_test_stack(), $this->_resultStack('batch_4'), 'Execution order was correct.');
     $this->assertText('Redirection successful.', 'Redirection after batch execution is correct.');
@@ -87,13 +87,13 @@ function testBatchFormMultistep() {
     $this->assertText('step 1', 'Form is displayed in step 1.');
 
     // First step triggers batch 1.
-    $this->drupalPost(NULL, array(), 'Submit');
+    $this->drupalPostForm(NULL, array(), 'Submit');
     $this->assertBatchMessages($this->_resultMessages('batch_1'), 'Batch for step 1 performed successfully.');
     $this->assertEqual(batch_test_stack(), $this->_resultStack('batch_1'), 'Execution order was correct.');
     $this->assertText('step 2', 'Form is displayed in step 2.');
 
     // Second step triggers batch 2.
-    $this->drupalPost(NULL, array(), 'Submit');
+    $this->drupalPostForm(NULL, array(), 'Submit');
     $this->assertBatchMessages($this->_resultMessages('batch_2'), 'Batch for step 2 performed successfully.');
     $this->assertEqual(batch_test_stack(), $this->_resultStack('batch_2'), 'Execution order was correct.');
     $this->assertText('Redirection successful.', 'Redirection after batch execution is correct.');
@@ -107,7 +107,7 @@ function testBatchFormMultipleBatches() {
     // handlers. Each submit handler modify the submitted 'value'.
     $value = rand(0, 255);
     $edit = array('value' => $value);
-    $this->drupalPost('batch-test/chained', $edit, 'Submit');
+    $this->drupalPostForm('batch-test/chained', $edit, 'Submit');
     // Check that result messages are present and in the correct order.
     $this->assertBatchMessages($this->_resultMessages('chained'), 'Batches defined in separate submit handlers performed successfully.');
     // The stack contains execution order of batch callbacks and submit
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php
index 168f059..0fb2212 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php
@@ -73,7 +73,7 @@ function testAdminDefinedFormatDate() {
       'label' => 'Example Style',
       'date_format_pattern' => 'j M y',
     );
-    $this->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
+    $this->drupalPostForm('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
 
     // Add a second date format with a different case than the first.
     $edit = array(
@@ -81,7 +81,7 @@ function testAdminDefinedFormatDate() {
       'label' => 'Example Style Uppercase',
       'date_format_pattern' => 'j M Y',
     );
-    $this->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
+    $this->drupalPostForm('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
     $this->assertText(t('Custom date format added.'));
 
     $timestamp = strtotime('2007-03-10T00:00:00+00:00');
@@ -115,17 +115,17 @@ function testFormatDate() {
       'name' => self::LANGCODE,
       'direction' => Language::DIRECTION_LTR,
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Set language prefix.
     $edit = array('prefix[' . self::LANGCODE . ']' => self::LANGCODE);
-    $this->drupalPost('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/language/detection/url', $edit, t('Save configuration'));
 
     // Create a test user to carry out the tests.
     $test_user = $this->drupalCreateUser();
     $this->drupalLogin($test_user);
     $edit = array('preferred_langcode' => self::LANGCODE, 'mail' => $test_user->getEmail(), 'timezone' => 'America/Los_Angeles');
-    $this->drupalPost('user/' . $test_user->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('user/' . $test_user->id() . '/edit', $edit, t('Save'));
 
     // Disable session saving as we are about to modify the global $user.
     drupal_save_session(FALSE);
diff --git a/core/modules/system/lib/Drupal/system/Tests/Condition/ConditionFormTest.php b/core/modules/system/lib/Drupal/system/Tests/Condition/ConditionFormTest.php
index 26ee375..2ad0d06 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Condition/ConditionFormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Condition/ConditionFormTest.php
@@ -39,7 +39,7 @@ function testConfigForm() {
     $this->drupalGet('condition_test');
     $this->assertField('bundles[article]', 'There is an article bundle selector.');
     $this->assertField('bundles[page]', 'There is a page bundle selector.');
-    $this->drupalPost(NULL, array('bundles[page]' => 'page', 'bundles[article]' => 'article'), t('Submit'));
+    $this->drupalPostForm(NULL, array('bundles[page]' => 'page', 'bundles[article]' => 'article'), t('Submit'));
     $this->assertText('The bundles are article and page', 'The form component appropriately saved the bundles.');
     $this->assertText('Executed successfully.', 'The form configured condition executed properly.');
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php b/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
index 027d866..9673c9c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
@@ -83,7 +83,7 @@ public function testDateTimezone() {
 
     // Set up the user with a different timezone than the site.
     $edit = array('mail' => $test_user->getEmail(), 'timezone' => 'Asia/Manila');
-    $this->drupalPost('user/' . $test_user->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('user/' . $test_user->id() . '/edit', $edit, t('Save'));
 
     // Disable session saving as we are about to modify the global $user.
     drupal_save_session(FALSE);
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFormTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFormTest.php
index 3180909..93f5521 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFormTest.php
@@ -74,19 +74,19 @@ protected function assertFormCRUD($entity_type) {
       "field_test_text[$langcode][0][value]" => $this->randomName(16),
     );
 
-    $this->drupalPost($entity_type . '/add', $edit, t('Save'));
+    $this->drupalPostForm($entity_type . '/add', $edit, t('Save'));
     $entity = $this->loadEntityByName($entity_type, $name1);
     $this->assertTrue($entity, format_string('%entity_type: Entity found in the database.', array('%entity_type' => $entity_type)));
 
     $edit['name'] = $name2;
-    $this->drupalPost($entity_type . '/manage/' . $entity->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm($entity_type . '/manage/' . $entity->id() . '/edit', $edit, t('Save'));
     $entity = $this->loadEntityByName($entity_type, $name1);
     $this->assertFalse($entity, format_string('%entity_type: The entity has been modified.', array('%entity_type' => $entity_type)));
     $entity = $this->loadEntityByName($entity_type, $name2);
     $this->assertTrue($entity, format_string('%entity_type: Modified entity found in the database.', array('%entity_type' => $entity_type)));
     $this->assertNotEqual($entity->name->value, $name1, format_string('%entity_type: The entity name has been modified.', array('%entity_type' => $entity_type)));
 
-    $this->drupalPost($entity_type . '/manage/' . $entity->id() . '/edit', array(), t('Delete'));
+    $this->drupalPostForm($entity_type . '/manage/' . $entity->id() . '/edit', array(), t('Delete'));
     $entity = $this->loadEntityByName($entity_type, $name2);
     $this->assertFalse($entity, format_string('%entity_type: Entity not found in the database.', array('%entity_type' => $entity_type)));
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationFormTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationFormTest.php
index 68206a7..fdf0be3 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationFormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationFormTest.php
@@ -66,7 +66,7 @@ function testEntityFormLanguage() {
 
     $this->drupalGet('node/add/page');
     $form_langcode = \Drupal::state()->get('entity_test.form_langcode') ?: FALSE;
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     $node = $this->drupalGetNodeByTitle($edit["title"]);
     $this->assertTrue($node->language()->id == $form_langcode, 'Form language is the same as the entity language.');
@@ -86,7 +86,7 @@ function testEntityFormLanguage() {
     // Enable language selector.
     $this->drupalGet('admin/structure/types/manage/page');
     $edit = array('language_configuration[language_show]' => TRUE, 'language_configuration[langcode]' => Language::LANGCODE_NOT_SPECIFIED);
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')), 'Basic page content type has been updated.');
 
     // Create a node with language.
@@ -96,7 +96,7 @@ function testEntityFormLanguage() {
     $edit["title"] = $this->randomName(8);
     $edit["body[$field_langcode][0][value]"] = $this->randomName(16);
     $edit['langcode'] = $langcode;
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
     $this->assertRaw(t('Basic page %title has been created.', array('%title' => $edit["title"])), 'Basic page created.');
 
     // Check to make sure the node was created.
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/ConfigTest.php b/core/modules/system/lib/Drupal/system/Tests/File/ConfigTest.php
index 36de9d9..ce48dfd 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/ConfigTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/ConfigTest.php
@@ -47,7 +47,7 @@ function testFileConfigurationPage() {
       $this->assertFieldByName($field);
     }
 
-    $this->drupalPost(NULL, $fields, t('Save configuration'));
+    $this->drupalPostForm(NULL, $fields, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'));
     foreach ($fields as $field => $value) {
       $this->assertFieldByName($field, $value);
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php
index 193c2d2..b09fc9b 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php
@@ -62,7 +62,7 @@ function testUserRegistrationRebuild() {
       'name' => 'foo',
       'mail' => 'bar@example.com',
     );
-    $this->drupalPost('user/register', $edit, 'Rebuild');
+    $this->drupalPostForm('user/register', $edit, 'Rebuild');
     $this->assertText('Form rebuilt.');
     $this->assertFieldByName('name', 'foo', 'Entered user name has been kept.');
     $this->assertFieldByName('mail', 'bar@example.com', 'Entered mail address has been kept.');
@@ -76,7 +76,7 @@ function testUserRegistrationMultipleField() {
       'name' => 'foo',
       'mail' => 'bar@example.com',
     );
-    $this->drupalPost('user/register', $edit, t('Add another item'), array('query' => array('field' => TRUE)));
+    $this->drupalPostForm('user/register', $edit, t('Add another item'), array('query' => array('field' => TRUE)));
     $this->assertText('Test a multiple valued field', 'Form has been rebuilt.');
     $this->assertFieldByName('name', 'foo', 'Entered user name has been kept.');
     $this->assertFieldByName('mail', 'bar@example.com', 'Entered mail address has been kept.');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/CheckboxTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/CheckboxTest.php
index 45959f1..228c576 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/CheckboxTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/CheckboxTest.php
@@ -65,17 +65,17 @@ function testFormCheckbox() {
 
     // Ensure that $form_state['values'] is populated correctly for a checkboxes
     // group that includes a 0-indexed array of options.
-    $results = json_decode($this->drupalPost('form-test/checkboxes-zero', array(), 'Save'));
+    $results = json_decode($this->drupalPostForm('form-test/checkboxes-zero', array(), 'Save'));
     $this->assertIdentical($results->checkbox_off, array(0, 0, 0), 'All three in checkbox_off are zeroes: off.');
     $this->assertIdentical($results->checkbox_zero_default, array('0', 0, 0), 'The first choice is on in checkbox_zero_default');
     $this->assertIdentical($results->checkbox_string_zero_default, array('0', 0, 0), 'The first choice is on in checkbox_string_zero_default');
     $edit = array('checkbox_off[0]' => '0');
-    $results = json_decode($this->drupalPost('form-test/checkboxes-zero', $edit, 'Save'));
+    $results = json_decode($this->drupalPostForm('form-test/checkboxes-zero', $edit, 'Save'));
     $this->assertIdentical($results->checkbox_off, array('0', 0, 0), 'The first choice is on in checkbox_off but the rest is not');
 
     // Ensure that each checkbox is rendered correctly for a checkboxes group
     // that includes a 0-indexed array of options.
-    $this->drupalPost('form-test/checkboxes-zero/0', array(), 'Save');
+    $this->drupalPostForm('form-test/checkboxes-zero/0', array(), 'Save');
     $checkboxes = $this->xpath('//input[@type="checkbox"]');
     foreach ($checkboxes as $checkbox) {
       $checked = isset($checkbox['checked']);
@@ -83,7 +83,7 @@ function testFormCheckbox() {
       $this->assertIdentical($checked, $name == 'checkbox_zero_default[0]' || $name == 'checkbox_string_zero_default[0]', format_string('Checkbox %name correctly checked', array('%name' => $name)));
     }
     $edit = array('checkbox_off[0]' => '0');
-    $this->drupalPost('form-test/checkboxes-zero/0', $edit, 'Save');
+    $this->drupalPostForm('form-test/checkboxes-zero/0', $edit, 'Save');
     $checkboxes = $this->xpath('//input[@type="checkbox"]');
     foreach ($checkboxes as $checkbox) {
       $checked = isset($checkbox['checked']);
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/ConfirmFormTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/ConfirmFormTest.php
index 71e23f1..fcaf881 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/ConfirmFormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/ConfirmFormTest.php
@@ -42,12 +42,12 @@ function testConfirmForm() {
     $this->assertUrl('admin', array(), "The form's cancel link was followed.");
 
     // Test submitting the form.
-    $this->drupalPost('form-test/confirm-form', NULL, t('ConfirmFormTestForm::getConfirmText().'));
+    $this->drupalPostForm('form-test/confirm-form', NULL, t('ConfirmFormTestForm::getConfirmText().'));
     $this->assertText('The ConfirmFormTestForm::submitForm() method was used for this form.');
     $this->assertUrl('', array(), "The form's redirect was followed.");
 
     // Test submitting the form with a destination.
-    $this->drupalPost('form-test/confirm-form', NULL, t('ConfirmFormTestForm::getConfirmText().'), array('query' => array('destination' => 'admin/config')));
+    $this->drupalPostForm('form-test/confirm-form', NULL, t('ConfirmFormTestForm::getConfirmText().'), array('query' => array('destination' => 'admin/config')));
     $this->assertUrl('admin/config', array(), "The form's redirect was not followed, the destination query string was followed.");
 
     // Test cancelling the form with a complex destination.
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/ElementsTableSelectTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/ElementsTableSelectTest.php
index d778669..0936151 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/ElementsTableSelectTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/ElementsTableSelectTest.php
@@ -105,7 +105,7 @@ function testMultipleTrueSubmit() {
     // Test a submission with one checkbox checked.
     $edit = array();
     $edit['tableselect[row1]'] = TRUE;
-    $this->drupalPost('form_test/tableselect/multiple-true', $edit, 'Submit');
+    $this->drupalPostForm('form_test/tableselect/multiple-true', $edit, 'Submit');
 
     $this->assertText(t('Submitted: row1 = row1'), 'Checked checkbox row1');
     $this->assertText(t('Submitted: row2 = 0'), 'Unchecked checkbox row2.');
@@ -114,7 +114,7 @@ function testMultipleTrueSubmit() {
     // Test a submission with multiple checkboxes checked.
     $edit['tableselect[row1]'] = TRUE;
     $edit['tableselect[row3]'] = TRUE;
-    $this->drupalPost('form_test/tableselect/multiple-true', $edit, 'Submit');
+    $this->drupalPostForm('form_test/tableselect/multiple-true', $edit, 'Submit');
 
     $this->assertText(t('Submitted: row1 = row1'), 'Checked checkbox row1.');
     $this->assertText(t('Submitted: row2 = 0'), 'Unchecked checkbox row2.');
@@ -127,7 +127,7 @@ function testMultipleTrueSubmit() {
    */
   function testMultipleFalseSubmit() {
     $edit['tableselect'] = 'row1';
-    $this->drupalPost('form_test/tableselect/multiple-false', $edit, 'Submit');
+    $this->drupalPostForm('form_test/tableselect/multiple-false', $edit, 'Submit');
     $this->assertText(t('Submitted: row1'), 'Selected radio button');
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/EmailTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/EmailTest.php
index f0dcd99..3ed7c05 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/EmailTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/EmailTest.php
@@ -38,20 +38,20 @@ function testFormEmail() {
     $edit = array();
     $edit['email'] = 'invalid';
     $edit['email_required'] = ' ';
-    $this->drupalPost('form-test/email', $edit, 'Submit');
+    $this->drupalPostForm('form-test/email', $edit, 'Submit');
     $this->assertRaw(t('The e-mail address %mail is not valid.', array('%mail' => 'invalid')));
     $this->assertRaw(t('!name field is required.', array('!name' => 'Address')));
 
     $edit = array();
     $edit['email_required'] = '  foo.bar@example.com ';
-    $values = drupal_json_decode($this->drupalPost('form-test/email', $edit, 'Submit'));
+    $values = drupal_json_decode($this->drupalPostForm('form-test/email', $edit, 'Submit'));
     $this->assertIdentical($values['email'], '');
     $this->assertEqual($values['email_required'], 'foo.bar@example.com');
 
     $edit = array();
     $edit['email'] = 'foo@example.com';
     $edit['email_required'] = 'example@drupal.org';
-    $values = drupal_json_decode($this->drupalPost('form-test/email', $edit, 'Submit'));
+    $values = drupal_json_decode($this->drupalPostForm('form-test/email', $edit, 'Submit'));
     $this->assertEqual($values['email'], 'foo@example.com');
     $this->assertEqual($values['email_required'], 'example@drupal.org');
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/FileInclusionTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/FileInclusionTest.php
index 1a499d3..3698067 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/FileInclusionTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/FileInclusionTest.php
@@ -33,7 +33,7 @@ public static function getInfo() {
    * Tests loading an include specified in hook_menu().
    */
   function testLoadMenuInclude() {
-    $this->drupalPostAJAX('form-test/load-include-menu', array(), array('op' => t('Save')), 'system/ajax', array(), array(), 'form-test-load-include-menu');
+    $this->drupalPostAjaxForm('form-test/load-include-menu', array(), array('op' => t('Save')), 'system/ajax', array(), array(), 'form-test-load-include-menu');
     $this->assertText('Submit callback called.');
   }
 
@@ -41,7 +41,7 @@ function testLoadMenuInclude() {
    * Tests loading a custom specified include.
    */
   function testLoadCustomInclude() {
-    $this->drupalPost('form-test/load-include-custom', array(), t('Save'));
+    $this->drupalPostForm('form-test/load-include-custom', array(), t('Save'));
     $this->assertText('Submit callback called.');
   }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/FormObjectTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/FormObjectTest.php
index 13b54c8..993552d 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/FormObjectTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/FormObjectTest.php
@@ -55,7 +55,7 @@ function testObjectFormCallback() {
     $this->assertText('The FormTestObject::buildForm() method was used for this form.');
     $elements = $this->xpath('//form[@id="form-test-form-test-object"]');
     $this->assertTrue(!empty($elements), 'The correct form ID was used.');
-    $this->drupalPost(NULL, array('bananas' => 'green'), t('Save'));
+    $this->drupalPostForm(NULL, array('bananas' => 'green'), t('Save'));
     $this->assertText('The FormTestObject::validateForm() method was used for this form.');
     $this->assertText('The FormTestObject::submitForm() method was used for this form.');
     $value = $config_factory->get('form_test.object')->get('bananas');
@@ -65,7 +65,7 @@ function testObjectFormCallback() {
     $this->assertText('The FormTestArgumentsObject::buildForm() method was used for this form.');
     $elements = $this->xpath('//form[@id="form-test-form-test-arguments-object"]');
     $this->assertTrue(!empty($elements), 'The correct form ID was used.');
-    $this->drupalPost(NULL, NULL, t('Save'));
+    $this->drupalPostForm(NULL, NULL, t('Save'));
     $this->assertText('The FormTestArgumentsObject::validateForm() method was used for this form.');
     $this->assertText('The FormTestArgumentsObject::submitForm() method was used for this form.');
     $value = $config_factory->get('form_test.object')->get('bananas');
@@ -75,7 +75,7 @@ function testObjectFormCallback() {
     $this->assertText('The FormTestServiceObject::buildForm() method was used for this form.');
     $elements = $this->xpath('//form[@id="form-test-form-test-service-object"]');
     $this->assertTrue(!empty($elements), 'The correct form ID was used.');
-    $this->drupalPost(NULL, array('bananas' => 'brown'), t('Save'));
+    $this->drupalPostForm(NULL, array('bananas' => 'brown'), t('Save'));
     $this->assertText('The FormTestServiceObject::validateForm() method was used for this form.');
     $this->assertText('The FormTestServiceObject::submitForm() method was used for this form.');
     $value = $config_factory->get('form_test.object')->get('bananas');
@@ -88,7 +88,7 @@ function testObjectFormCallback() {
     $this->assertTrue(!empty($elements), 'The correct form ID was used.');
     $this->assertText('custom_value', 'Ensure parameters are injected from request attributes.');
     $this->assertText('request_value', 'Ensure the request object is injected.');
-    $this->drupalPost(NULL, array('bananas' => 'black'), t('Save'));
+    $this->drupalPostForm(NULL, array('bananas' => 'black'), t('Save'));
     $this->assertText('The FormTestControllerObject::validateForm() method was used for this form.');
     $this->assertText('The FormTestControllerObject::submitForm() method was used for this form.');
     $value = $config_factory->get('form_test.object')->get('bananas');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php
index ba1383f..0f5609b 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php
@@ -165,7 +165,7 @@ function testRequiredCheckboxesRadio() {
 
     // Attempt to submit the form with no required fields set.
     $edit = array();
-    $this->drupalPost('form-test/validate-required', $edit, 'Submit');
+    $this->drupalPostForm('form-test/validate-required', $edit, 'Submit');
 
     // The only error messages that should appear are the relevant 'required'
     // messages for each field.
@@ -221,7 +221,7 @@ function testRequiredCheckboxesRadio() {
       'select' => 'foo',
       'radios' => 'bar',
     );
-    $this->drupalPost(NULL, $edit, 'Submit');
+    $this->drupalPostForm(NULL, $edit, 'Submit');
     $this->assertNoFieldByXpath('//div[contains(@class, "error")]', FALSE, 'No error message is displayed when all required fields are filled.');
     $this->assertRaw("The form_test_validate_required_form form was submitted successfully.", 'Validation form submitted successfully.');
   }
@@ -242,7 +242,7 @@ function testRequiredTextfieldNoTitle() {
 
     // Attempt to submit the form with no required field set.
     $edit = array();
-    $this->drupalPost('form-test/validate-required-no-title', $edit, 'Submit');
+    $this->drupalPostForm('form-test/validate-required-no-title', $edit, 'Submit');
     $this->assertNoRaw("The form_test_validate_required_form_no_title form was submitted successfully.", 'Validation form submitted successfully.');
 
     // Check the page for the error class on the textfield.
@@ -256,7 +256,7 @@ function testRequiredTextfieldNoTitle() {
     $edit = array(
       'textfield' => $this->randomString(),
     );
-    $this->drupalPost(NULL, $edit, 'Submit');
+    $this->drupalPostForm(NULL, $edit, 'Submit');
     $this->assertNoFieldByXpath('//input[contains(@class, "error")]', FALSE, 'No error input form element class found.');
     $this->assertRaw("The form_test_validate_required_form_no_title form was submitted successfully.", 'Validation form submitted successfully.');
   }
@@ -269,11 +269,11 @@ function testRequiredTextfieldNoTitle() {
   function testCheckboxProcessing() {
     // First, try to submit without the required checkbox.
     $edit = array();
-    $this->drupalPost('form-test/checkbox', $edit, t('Submit'));
+    $this->drupalPostForm('form-test/checkbox', $edit, t('Submit'));
     $this->assertRaw(t('!name field is required.', array('!name' => 'required_checkbox')), 'A required checkbox is actually mandatory');
 
     // Now try to submit the form correctly.
-    $values = drupal_json_decode($this->drupalPost(NULL, array('required_checkbox' => 1), t('Submit')));
+    $values = drupal_json_decode($this->drupalPostForm(NULL, array('required_checkbox' => 1), t('Submit')));
     $expected_values = array(
       'disabled_checkbox_on' => 'disabled_checkbox_on',
       'disabled_checkbox_off' => '',
@@ -301,7 +301,7 @@ function testSelect() {
     $this->drupalGet('form-test/select');
 
     // Posting without any values should throw validation errors.
-    $this->drupalPost(NULL, array(), 'Submit');
+    $this->drupalPostForm(NULL, array(), 'Submit');
     $this->assertNoText(t($error, array('!name' => $form['select']['#title'])));
     $this->assertNoText(t($error, array('!name' => $form['select_required']['#title'])));
     $this->assertNoText(t($error, array('!name' => $form['select_optional']['#title'])));
@@ -326,7 +326,7 @@ function testSelect() {
       'no_default_empty_value_one' => 'three',
       'multiple_no_default_required[]' => 'three',
     );
-    $this->drupalPost(NULL, $edit, 'Submit');
+    $this->drupalPostForm(NULL, $edit, 'Submit');
     $values = drupal_json_decode($this->drupalGetContent());
 
     // Verify expected values.
@@ -405,7 +405,7 @@ function testNumber() {
     // First test the number element type, then range.
     foreach (array('form-test/number', 'form-test/number/range') as $path) {
       // Post form and show errors.
-      $this->drupalPost($path, array(), 'Submit');
+      $this->drupalPostForm($path, array(), 'Submit');
 
       foreach ($expected as $element => $error) {
         // Create placeholder array.
@@ -433,13 +433,13 @@ function testNumber() {
    * Tests default value handling of #type 'range' elements.
    */
   function testRange() {
-    $values = json_decode($this->drupalPost('form-test/range', array(), 'Submit'));
+    $values = json_decode($this->drupalPostForm('form-test/range', array(), 'Submit'));
     $this->assertEqual($values->with_default_value, 18);
     $this->assertEqual($values->float, 10.5);
     $this->assertEqual($values->integer, 6);
     $this->assertEqual($values->offset, 6.9);
 
-    $this->drupalPost('form-test/range/invalid', array(), 'Submit');
+    $this->drupalPostForm('form-test/range/invalid', array(), 'Submit');
     $this->assertFieldByXPath('//input[@type="range" and contains(@class, "error")]', NULL, 'Range element has the error class.');
   }
 
@@ -463,7 +463,7 @@ function testColorValidation() {
       $edit = array(
         'color' => $input,
       );
-      $result = json_decode($this->drupalPost('form-test/color', $edit, 'Submit'));
+      $result = json_decode($this->drupalPostForm('form-test/color', $edit, 'Submit'));
       $this->assertEqual($result->color, $expected);
     }
 
@@ -473,7 +473,7 @@ function testColorValidation() {
       $edit = array(
         'color' => $input,
       );
-      $this->drupalPost('form-test/color', $edit, 'Submit');
+      $this->drupalPostForm('form-test/color', $edit, 'Submit');
       $this->assertRaw(t('%name must be a valid color.', array('%name' => 'Color')));
     }
   }
@@ -506,11 +506,11 @@ function testDisabledElements() {
 
     // Submit the form with no input, as the browser does for disabled elements,
     // and fetch the $form_state['values'] that is passed to the submit handler.
-    $this->drupalPost('form-test/disabled-elements', array(), t('Submit'));
+    $this->drupalPostForm('form-test/disabled-elements', array(), t('Submit'));
     $returned_values['normal'] = drupal_json_decode($this->content);
 
     // Do the same with input, as could happen if JavaScript un-disables an
-    // element. drupalPost() emulates a browser by not submitting input for
+    // element. drupalPostForm() emulates a browser by not submitting input for
     // disabled elements, so we need to un-disable those elements first.
     $this->drupalGet('form-test/disabled-elements');
     $disabled_elements = array();
@@ -523,7 +523,7 @@ function testDisabledElements() {
     // the disabled container.
     $this->assertEqual(count($disabled_elements), 39, 'The correct elements have the disabled property in the HTML code.');
 
-    $this->drupalPost(NULL, $edit, t('Submit'));
+    $this->drupalPostForm(NULL, $edit, t('Submit'));
     $returned_values['hijacked'] = drupal_json_decode($this->content);
 
     // Ensure that the returned values match the form's default values in both
@@ -630,7 +630,7 @@ function testInputForgery() {
     $this->drupalGet('form-test/input-forgery');
     $checkbox = $this->xpath('//input[@name="checkboxes[two]"]');
     $checkbox[0]['value'] = 'FORGERY';
-    $this->drupalPost(NULL, array('checkboxes[one]' => TRUE, 'checkboxes[two]' => TRUE), t('Submit'));
+    $this->drupalPostForm(NULL, array('checkboxes[one]' => TRUE, 'checkboxes[two]' => TRUE), t('Submit'));
     $this->assertText('An illegal choice has been detected.', 'Input forgery was detected.');
   }
 
@@ -663,7 +663,7 @@ function testRequiredAttribute() {
   function testMultiFormSameNameErrorClass() {
     $this->drupalGet('form-test/double-form');
     $edit = array();
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertFieldByXpath('//input[@id="edit-name" and contains(@class, "error")]', NULL, 'Error input form element class found for first element.');
     $this->assertNoFieldByXpath('//input[@id="edit-name--2" and contains(@class, "error")]', NULL, 'No error input form element class found for second element.');
   }
@@ -673,7 +673,7 @@ function testMultiFormSameNameErrorClass() {
    */
   public function testFormStateDatabaseConnection() {
     $this->assertNoText('Database connection found');
-    $this->drupalPost('form-test/form_state-database', array(), t('Submit'));
+    $this->drupalPostForm('form-test/form_state-database', array(), t('Submit'));
     $this->assertText('Database connection found');
   }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/HTMLIdTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/HTMLIdTest.php
index 2b888c4..3d85f7b 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/HTMLIdTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/HTMLIdTest.php
@@ -38,7 +38,7 @@ function testHTMLId() {
 
     // Submit second form with empty title.
     $edit = array();
-    $this->drupalPost(NULL, $edit, 'Save', array(), array(), 'form-test-html-id--2');
+    $this->drupalPostForm(NULL, $edit, 'Save', array(), array(), 'form-test-html-id--2');
     $this->assertNoDuplicateIds('There are no duplicate IDs');
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
index 2705aed..5979848 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
@@ -86,7 +86,7 @@ function testHiddenLanguageSelectElement() {
     // Check that the submitted values were the default values of the language
     // field elements.
     $edit = array();
-    $this->drupalPost(NULL, $edit, t('Submit'));
+    $this->drupalPostForm(NULL, $edit, t('Submit'));
     $values = drupal_json_decode($this->drupalGetContent());
     $this->assertEqual($values['languages_all'], 'xx');
     $this->assertEqual($values['languages_configurable'], 'en');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php
index 460e0ca..163e5df 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php
@@ -49,7 +49,7 @@ function testRebuildPreservesValues() {
       'checkbox_1_default_on' => FALSE,
       'text_1' => 'foo',
     );
-    $this->drupalPost('form-test/form-rebuild-preserve-values', $edit, 'Add more');
+    $this->drupalPostForm('form-test/form-rebuild-preserve-values', $edit, 'Add more');
 
     // Verify that initial elements retained their submitted values.
     $this->assertFieldChecked('edit-checkbox-1-default-off', 'A submitted checked checkbox retained its checked state during a rebuild.');
@@ -96,7 +96,7 @@ function testPreserveFormActionAfterAJAX() {
     // submission and verify it worked by ensuring the updated page has two text
     // field items in the field for which we just added an item.
     $this->drupalGet('node/add/page');
-    $this->drupalPostAJAX(NULL, array(), array('field_ajax_test_add_more' => t('Add another item')), 'system/ajax', array(), array(), 'page-node-form');
+    $this->drupalPostAjaxForm(NULL, array(), array('field_ajax_test_add_more' => t('Add another item')), 'system/ajax', array(), array(), 'page-node-form');
     $this->assert(count($this->xpath('//div[contains(@class, "field-name-field-ajax-test")]//input[@type="text"]')) == 2, 'AJAX submission succeeded.');
 
     // Submit the form with the non-Ajax "Save" button, leaving the title field
@@ -104,7 +104,7 @@ function testPreserveFormActionAfterAJAX() {
     // occurred, because this test is for testing what happens when a form is
     // re-rendered without being re-built, which is what happens when there's
     // a validation error.
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $this->assertText('Title field is required.', 'Non-AJAX submission correctly triggered a validation error.');
 
     // Ensure that the form contains two items in the multi-valued field, so we
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/RedirectTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/RedirectTest.php
index f11291b..52f71d4 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/RedirectTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/RedirectTest.php
@@ -42,7 +42,7 @@ function testRedirect() {
       'redirection' => TRUE,
       'destination' => $this->randomName(),
     );
-    $this->drupalPost($path, $edit, t('Submit'));
+    $this->drupalPostForm($path, $edit, t('Submit'));
     $this->assertUrl($edit['destination'], array(), 'Basic redirection works.');
 
 
@@ -50,7 +50,7 @@ function testRedirect() {
     $edit = array(
       'redirection' => FALSE,
     );
-    $this->drupalPost($path, $edit, t('Submit'));
+    $this->drupalPostForm($path, $edit, t('Submit'));
     $this->assertUrl($path, array(), 'When redirect is set to FALSE, there should be no redirection.');
 
     // Test redirection with query parameters.
@@ -58,14 +58,14 @@ function testRedirect() {
       'redirection' => TRUE,
       'destination' => $this->randomName(),
     );
-    $this->drupalPost($path, $edit, t('Submit'), $options);
+    $this->drupalPostForm($path, $edit, t('Submit'), $options);
     $this->assertUrl($edit['destination'], array(), 'Redirection with query parameters works.');
 
     // Test without redirection but with query parameters.
     $edit = array(
       'redirection' => FALSE,
     );
-    $this->drupalPost($path, $edit, t('Submit'), $options);
+    $this->drupalPostForm($path, $edit, t('Submit'), $options);
     $this->assertUrl($path, $options, 'When redirect is set to FALSE, there should be no redirection, and the query parameters should be passed along.');
 
     // Test redirection back to the original path.
@@ -73,7 +73,7 @@ function testRedirect() {
       'redirection' => TRUE,
       'destination' => '',
     );
-    $this->drupalPost($path, $edit, t('Submit'));
+    $this->drupalPostForm($path, $edit, t('Submit'));
     $this->assertUrl($path, array(), 'When using an empty redirection string, there should be no redirection.');
 
     // Test redirection back to the original path with query parameters.
@@ -81,7 +81,7 @@ function testRedirect() {
       'redirection' => TRUE,
       'destination' => '',
     );
-    $this->drupalPost($path, $edit, t('Submit'), $options);
+    $this->drupalPostForm($path, $edit, t('Submit'), $options);
     $this->assertUrl($path, $options, 'When using an empty redirection string, there should be no redirection, and the query parameters should be passed along.');
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanAdvancedTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanAdvancedTest.php
index ceae2af..0157e7a 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanAdvancedTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanAdvancedTest.php
@@ -50,7 +50,7 @@ function testFormStateValuesCleanAdvanced() {
     $edit = array('files[image]' => drupal_realpath($this->image->uri));
 
     // Post the form.
-    $this->drupalPost('form_test/form-state-values-clean-advanced', $edit, t('Submit'));
+    $this->drupalPostForm('form_test/form-state-values-clean-advanced', $edit, t('Submit'));
 
     // Expecting a 200 HTTP code.
     $this->assertResponse(200, 'Received a 200 response for posted test file.');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanTest.php
index 02ec53a..b7ae222 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/StateValuesCleanTest.php
@@ -33,7 +33,7 @@ public static function getInfo() {
    * Tests form_state_values_clean().
    */
   function testFormStateValuesClean() {
-    $values = drupal_json_decode($this->drupalPost('form_test/form-state-values-clean', array(), t('Submit')));
+    $values = drupal_json_decode($this->drupalPostForm('form_test/form-state-values-clean', array(), t('Submit')));
 
     // Setup the expected result.
     $result = array(
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/StorageTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/StorageTest.php
index 07e902e..766878e 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/StorageTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/StorageTest.php
@@ -52,18 +52,18 @@ function testForm() {
     $edit = array('title' => 'new', 'value' => 'value_is_set');
 
     // Use form rebuilding triggered by a submit button.
-    $this->drupalPost(NULL, $edit, 'Continue submit');
+    $this->drupalPostForm(NULL, $edit, 'Continue submit');
     $this->assertText('Form constructions: 2');
     $this->assertText('Form constructions: 3');
 
     // Reset the form to the values of the storage, using a form rebuild
     // triggered by button of type button.
-    $this->drupalPost(NULL, array('title' => 'changed'), 'Reset');
+    $this->drupalPostForm(NULL, array('title' => 'changed'), 'Reset');
     $this->assertFieldByName('title', 'new', 'Values have been resetted.');
     // After rebuilding, the form has been cached.
     $this->assertText('Form constructions: 4');
 
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
     $this->assertText('Form constructions: 4');
     $this->assertText('Title: new', 'The form storage has stored the values.');
   }
@@ -78,16 +78,16 @@ function testFormCached() {
     $edit = array('title' => 'new', 'value' => 'value_is_set');
 
     // Use form rebuilding triggered by a submit button.
-    $this->drupalPost(NULL, $edit, 'Continue submit');
+    $this->drupalPostForm(NULL, $edit, 'Continue submit');
     $this->assertText('Form constructions: 2');
 
     // Reset the form to the values of the storage, using a form rebuild
     // triggered by button of type button.
-    $this->drupalPost(NULL, array('title' => 'changed'), 'Reset');
+    $this->drupalPostForm(NULL, array('title' => 'changed'), 'Reset');
     $this->assertFieldByName('title', 'new', 'Values have been resetted.');
     $this->assertText('Form constructions: 3');
 
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
     $this->assertText('Form constructions: 3');
     $this->assertText('Title: new', 'The form storage has stored the values.');
   }
@@ -96,7 +96,7 @@ function testFormCached() {
    * Tests validation when form storage is used.
    */
   function testValidation() {
-    $this->drupalPost('form_test/form-storage', array('title' => '', 'value' => 'value_is_set'), 'Continue submit');
+    $this->drupalPostForm('form_test/form-storage', array('title' => '', 'value' => 'value_is_set'), 'Continue submit');
     $this->assertPattern('/value_is_set/', 'The input values have been kept.');
   }
 
@@ -118,20 +118,20 @@ function testCachedFormStorageValidation() {
     // 'title' into form storage, but we want to verify that changes in the form
     // storage are updated in the cache during form validation.
     $edit = array('title' => 'foo');
-    $this->drupalPost(NULL, $edit, 'Continue submit');
+    $this->drupalPostForm(NULL, $edit, 'Continue submit');
 
     // In step 2, trigger a validation error for the required 'title' field, and
     // post the special 'change_title' value for the 'value' field, which
     // conditionally invokes the #element_validate handler to update the form
     // storage.
     $edit = array('title' => '', 'value' => 'change_title');
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
 
     // At this point, the form storage should contain updated values, but we do
     // not see them, because the form has not been rebuilt yet due to the
     // validation error. Post again and verify that the rebuilt form contains
     // the values of the updated form storage.
-    $this->drupalPost(NULL, array('title' => 'foo', 'value' => 'bar'), 'Save');
+    $this->drupalPostForm(NULL, array('title' => 'foo', 'value' => 'bar'), 'Save');
     $this->assertText("The thing has been changed.", 'The altered form storage value was updated in cache and taken over.');
   }
 
@@ -148,19 +148,19 @@ function testFormStatePersist() {
       array('query' => array('cache' => 1)),
     );
     foreach ($run_options as $options) {
-      $this->drupalPost('form-test/state-persist', array(), t('Submit'), $options);
+      $this->drupalPostForm('form-test/state-persist', array(), t('Submit'), $options);
       // The submit handler outputs the value in $form_state, assert it's there.
       $this->assertText('State persisted.');
 
       // Test it again, but first trigger a validation error, then test.
-      $this->drupalPost('form-test/state-persist', array('title' => ''), t('Submit'), $options);
+      $this->drupalPostForm('form-test/state-persist', array('title' => ''), t('Submit'), $options);
       $this->assertText(t('!name field is required.', array('!name' => 'title')));
       // Submit the form again triggering no validation error.
-      $this->drupalPost(NULL, array('title' => 'foo'), t('Submit'), $options);
+      $this->drupalPostForm(NULL, array('title' => 'foo'), t('Submit'), $options);
       $this->assertText('State persisted.');
 
       // Now post to the rebuilt form and verify it's still there afterwards.
-      $this->drupalPost(NULL, array('title' => 'bar'), t('Submit'), $options);
+      $this->drupalPostForm(NULL, array('title' => 'bar'), t('Submit'), $options);
       $this->assertText('State persisted.');
     }
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/SystemConfigFormTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/SystemConfigFormTest.php
index 56a24c0..a672360 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/SystemConfigFormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/SystemConfigFormTest.php
@@ -37,7 +37,7 @@ function testSystemConfigForm() {
     $this->drupalGet('form-test/system-config-form');
     $element = $this->xpath('//div[@id = :id]/input[contains(@class, :class)]', array(':id' => 'edit-actions', ':class' => 'button-primary'));
     $this->assertTrue($element, 'The primary action submit button was found.');
-    $this->drupalPost(NULL, array(), t('Save configuration'));
+    $this->drupalPostForm(NULL, array(), t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'));
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/TriggeringElementTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/TriggeringElementTest.php
index 72079ef..2ca12a1 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/TriggeringElementTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/TriggeringElementTest.php
@@ -42,7 +42,7 @@ function testNoButtonInfoInPost() {
     // Ensure submitting a form with no buttons results in no
     // $form_state['triggering_element'] and the form submit handler not
     // running.
-    $this->drupalPost($path, $edit, NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm($path, $edit, NULL, array(), array(), $form_html_id);
     $this->assertText('There is no clicked button.', '$form_state[\'triggering_element\'] set to NULL.');
     $this->assertNoText('Submit handler for form_test_clicked_button executed.', 'Form submit handler did not execute.');
 
@@ -50,15 +50,15 @@ function testNoButtonInfoInPost() {
     // $form_state['triggering_element'] being set to the first one the user has
     // access to. An argument with 'r' in it indicates a restricted
     // (#access=FALSE) button.
-    $this->drupalPost($path . '/s', $edit, NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm($path . '/s', $edit, NULL, array(), array(), $form_html_id);
     $this->assertText('The clicked button is button1.', '$form_state[\'triggering_element\'] set to only button.');
     $this->assertText('Submit handler for form_test_clicked_button executed.', 'Form submit handler executed.');
 
-    $this->drupalPost($path . '/s/s', $edit, NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm($path . '/s/s', $edit, NULL, array(), array(), $form_html_id);
     $this->assertText('The clicked button is button1.', '$form_state[\'triggering_element\'] set to first button.');
     $this->assertText('Submit handler for form_test_clicked_button executed.', 'Form submit handler executed.');
 
-    $this->drupalPost($path . '/rs/s', $edit, NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm($path . '/rs/s', $edit, NULL, array(), array(), $form_html_id);
     $this->assertText('The clicked button is button2.', '$form_state[\'triggering_element\'] set to first available button.');
     $this->assertText('Submit handler for form_test_clicked_button executed.', 'Form submit handler executed.');
 
@@ -67,15 +67,15 @@ function testNoButtonInfoInPost() {
     // regardless of type. For the FAPI 'button' type, this should result in the
     // submit handler not executing. The types are 's'(ubmit), 'b'(utton), and
     // 'i'(mage_button).
-    $this->drupalPost($path . '/s/b/i', $edit, NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm($path . '/s/b/i', $edit, NULL, array(), array(), $form_html_id);
     $this->assertText('The clicked button is button1.', '$form_state[\'triggering_element\'] set to first button.');
     $this->assertText('Submit handler for form_test_clicked_button executed.', 'Form submit handler executed.');
 
-    $this->drupalPost($path . '/b/s/i', $edit, NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm($path . '/b/s/i', $edit, NULL, array(), array(), $form_html_id);
     $this->assertText('The clicked button is button1.', '$form_state[\'triggering_element\'] set to first button.');
     $this->assertNoText('Submit handler for form_test_clicked_button executed.', 'Form submit handler did not execute.');
 
-    $this->drupalPost($path . '/i/s/b', $edit, NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm($path . '/i/s/b', $edit, NULL, array(), array(), $form_html_id);
     $this->assertText('The clicked button is button1.', '$form_state[\'triggering_element\'] set to first button.');
     $this->assertText('Submit handler for form_test_clicked_button executed.', 'Form submit handler executed.');
   }
@@ -93,12 +93,12 @@ function testAttemptAccessControlBypass() {
 
     // Submit the form with 'button1=button1' in the POST data, which someone
     // trying to get around security safeguards could easily do. We have to do
-    // a little trickery here, to work around the safeguards in drupalPost(): by
+    // a little trickery here, to work around the safeguards in drupalPostForm(): by
     // renaming the text field that is in the form to 'button1', we can get the
     // data we want into $_POST.
     $elements = $this->xpath('//form[@id="' . $form_html_id . '"]//input[@name="text"]');
     $elements[0]['name'] = 'button1';
-    $this->drupalPost(NULL, array('button1' => 'button1'), NULL, array(), array(), $form_html_id);
+    $this->drupalPostForm(NULL, array('button1' => 'button1'), NULL, array(), array(), $form_html_id);
 
     // Ensure that $form_state['triggering_element'] was not set to the
     // restricted button. Do this with both a negative and positive assertion,
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/UrlTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/UrlTest.php
index c931d45..ccfb52e 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/UrlTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/UrlTest.php
@@ -38,21 +38,21 @@ function testFormUrl() {
     $edit = array();
     $edit['url'] = 'http://';
     $edit['url_required'] = ' ';
-    $this->drupalPost('form-test/url', $edit, 'Submit');
+    $this->drupalPostForm('form-test/url', $edit, 'Submit');
     $this->assertRaw(t('The URL %url is not valid.', array('%url' => 'http://')));
     $this->assertRaw(t('!name field is required.', array('!name' => 'Required URL')));
 
     $edit = array();
     $edit['url'] = "\n";
     $edit['url_required'] = 'http://example.com/   ';
-    $values = drupal_json_decode($this->drupalPost('form-test/url', $edit, 'Submit'));
+    $values = drupal_json_decode($this->drupalPostForm('form-test/url', $edit, 'Submit'));
     $this->assertIdentical($values['url'], '');
     $this->assertEqual($values['url_required'], 'http://example.com/');
 
     $edit = array();
     $edit['url'] = 'http://foo.bar.example.com/';
     $edit['url_required'] = 'http://drupal.org/node/1174630?page=0&foo=bar#new';
-    $values = drupal_json_decode($this->drupalPost('form-test/url', $edit, 'Submit'));
+    $values = drupal_json_decode($this->drupalPostForm('form-test/url', $edit, 'Submit'));
     $this->assertEqual($values['url'], $edit['url']);
     $this->assertEqual($values['url_required'], $edit['url_required']);
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/ValidationTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/ValidationTest.php
index 0038e45..099f3f8 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/ValidationTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/ValidationTest.php
@@ -39,7 +39,7 @@ function testValidate() {
     $edit = array(
       'name' => 'element_validate',
     );
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
     $this->assertFieldByName('name', '#value changed by #element_validate', 'Form element #value was altered.');
     $this->assertText('Name value: value changed by form_set_value() in #element_validate', 'Form element value in $form_state was altered.');
 
@@ -48,7 +48,7 @@ function testValidate() {
     $edit = array(
       'name' => 'validate',
     );
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
     $this->assertFieldByName('name', '#value changed by #validate', 'Form element #value was altered.');
     $this->assertText('Name value: value changed by form_set_value() in #validate', 'Form element value in $form_state was altered.');
 
@@ -57,12 +57,12 @@ function testValidate() {
     $edit = array(
       'name' => 'element_validate_access',
     );
-    $this->drupalPost(NULL, $edit, 'Save');
+    $this->drupalPostForm(NULL, $edit, 'Save');
     $this->assertNoFieldByName('name', 'Form element was hidden.');
     $this->assertText('Name value: element_validate_access', 'Value for inaccessible form element exists.');
 
     // Verify that value for inaccessible form element persists.
-    $this->drupalPost(NULL, array(), 'Save');
+    $this->drupalPostForm(NULL, array(), 'Save');
     $this->assertNoFieldByName('name', 'Form element was hidden.');
     $this->assertText('Name value: element_validate_access', 'Value for inaccessible form element exists.');
   }
@@ -101,29 +101,29 @@ function testValidateLimitErrors() {
     // #limit_validation_errors) and ensure that the title field is not
     // validated, but the #element_validate handler for the 'test' field
     // is triggered.
-    $this->drupalPost($path, $edit, t('Partial validate'));
+    $this->drupalPostForm($path, $edit, t('Partial validate'));
     $this->assertNoText(t('!name field is required.', array('!name' => 'Title')));
     $this->assertText('Test element is invalid');
 
     // Edge case of #limit_validation_errors containing numeric indexes: same
     // thing with the 'Partial validate (numeric index)' button and the
     // 'test_numeric_index' field.
-    $this->drupalPost($path, $edit, t('Partial validate (numeric index)'));
+    $this->drupalPostForm($path, $edit, t('Partial validate (numeric index)'));
     $this->assertNoText(t('!name field is required.', array('!name' => 'Title')));
     $this->assertText('Test (numeric index) element is invalid');
 
     // Ensure something like 'foobar' isn't considered "inside" 'foo'.
-    $this->drupalPost($path, $edit, t('Partial validate (substring)'));
+    $this->drupalPostForm($path, $edit, t('Partial validate (substring)'));
     $this->assertNoText(t('!name field is required.', array('!name' => 'Title')));
     $this->assertText('Test (substring) foo element is invalid');
 
     // Ensure not validated values are not available to submit handlers.
-    $this->drupalPost($path, array('title' => '', 'test' => 'valid'), t('Partial validate'));
+    $this->drupalPostForm($path, array('title' => '', 'test' => 'valid'), t('Partial validate'));
     $this->assertText('Only validated values appear in the form values.');
 
     // Now test full form validation and ensure that the #element_validate
     // handler is still triggered.
-    $this->drupalPost($path, $edit, t('Full validate'));
+    $this->drupalPostForm($path, $edit, t('Full validate'));
     $this->assertText(t('!name field is required.', array('!name' => 'Title')));
     $this->assertText('Test element is invalid');
   }
@@ -141,7 +141,7 @@ function testPatternValidation() {
       'textfield' => 'invalid',
       'tel' => 'valid',
     );
-    $this->drupalPost('form-test/pattern', $edit, 'Submit');
+    $this->drupalPostForm('form-test/pattern', $edit, 'Submit');
     $this->assertRaw($textfield_error);
     $this->assertNoRaw($tel_error);
     $this->assertNoRaw($password_error);
@@ -152,7 +152,7 @@ function testPatternValidation() {
       'tel' => '818937',
       'password' => '0100110',
     );
-    $this->drupalPost('form-test/pattern', $edit, 'Submit');
+    $this->drupalPostForm('form-test/pattern', $edit, 'Submit');
     $this->assertNoRaw($textfield_error);
     $this->assertRaw($tel_error);
     $this->assertNoRaw($password_error);
@@ -162,7 +162,7 @@ function testPatternValidation() {
       'textfield' => '',
       'tel' => '',
     );
-    $this->drupalPost('form-test/pattern', $edit, 'Submit');
+    $this->drupalPostForm('form-test/pattern', $edit, 'Submit');
     $this->assertNoRaw($textfield_error);
     $this->assertNoRaw($tel_error);
     $this->assertNoRaw($password_error);
@@ -171,7 +171,7 @@ function testPatternValidation() {
     $edit = array(
       'password' => $this->randomName(),
     );
-    $this->drupalPost('form-test/pattern', $edit, 'Submit');
+    $this->drupalPostForm('form-test/pattern', $edit, 'Submit');
     $this->assertNoRaw($textfield_error);
     $this->assertNoRaw($tel_error);
     $this->assertRaw($password_error);
@@ -183,7 +183,7 @@ function testPatternValidation() {
       'tel' => '',
       'url' => 'http://www.example.com/',
     );
-    $this->drupalPost('form-test/pattern', $edit, 'Submit');
+    $this->drupalPostForm('form-test/pattern', $edit, 'Submit');
     $this->assertNoRaw(t('%name field is not in the right format.', array('%name' => 'Client side validation')));
   }
 
@@ -198,7 +198,7 @@ function testCustomRequiredError() {
 
     // Verify that a custom #required error can be set.
     $edit = array();
-    $this->drupalPost('form-test/validate-required', $edit, 'Submit');
+    $this->drupalPostForm('form-test/validate-required', $edit, 'Submit');
 
     foreach (element_children($form) as $key) {
       if (isset($form[$key]['#required_error'])) {
@@ -218,7 +218,7 @@ function testCustomRequiredError() {
       'checkboxes[foo]' => TRUE,
       'select' => 'foo',
     );
-    $this->drupalPost('form-test/validate-required', $edit, 'Submit');
+    $this->drupalPostForm('form-test/validate-required', $edit, 'Submit');
 
     foreach (element_children($form) as $key) {
       if (isset($form[$key]['#required_error'])) {
diff --git a/core/modules/system/lib/Drupal/system/Tests/Installer/InstallerTranslationTest.php b/core/modules/system/lib/Drupal/system/Tests/Installer/InstallerTranslationTest.php
index 29abf30..d7433ee 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Installer/InstallerTranslationTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Installer/InstallerTranslationTest.php
@@ -82,7 +82,7 @@ protected function setUp() {
     $this->writeSettings($settings);
 
     // Submit the installer with German language.
-    $this->drupalPost($GLOBALS['base_url'] . '/core/install.php', array('langcode' => 'de'), 'Save and continue');
+    $this->drupalPostForm($GLOBALS['base_url'] . '/core/install.php', array('langcode' => 'de'), 'Save and continue');
 
     // On the following page where installation profile is being selected the
     // interface should be already translated, so there is no "Set up database"
@@ -99,10 +99,10 @@ protected function setUp() {
     $submit_value = (string) current($this->xpath('//input[@type="submit"]/@value'));
 
     // Submit the minimal profile installation.
-    $this->drupalPost(NULL, array('profile' => 'minimal'), $submit_value);
+    $this->drupalPostForm(NULL, array('profile' => 'minimal'), $submit_value);
 
     // Submit the next step.
-    $this->drupalPost(NULL, array(), $submit_value);
+    $this->drupalPostForm(NULL, array(), $submit_value);
 
     // Reload config directories.
     include $this->public_files_directory . '/settings.php';
diff --git a/core/modules/system/lib/Drupal/system/Tests/InstallerTest.php b/core/modules/system/lib/Drupal/system/Tests/InstallerTest.php
index 2c4ead8..df8cec1 100644
--- a/core/modules/system/lib/Drupal/system/Tests/InstallerTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/InstallerTest.php
@@ -79,7 +79,7 @@ protected function setUp() {
     $this->writeSettings($settings);
 
     $this->drupalGet($GLOBALS['base_url'] . '/core/install.php?langcode=en&profile=minimal');
-    $this->drupalPost(NULL, array(), 'Save and continue');
+    $this->drupalPostForm(NULL, array(), 'Save and continue');
     // Reload config directories.
     include $this->public_files_directory . '/settings.php';
     $prefix = substr($this->public_files_directory, strlen(conf_path() . '/files/'));
diff --git a/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php b/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php
index 5be7001..9c5d2a8 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php
@@ -273,14 +273,14 @@ function testBreadCrumbs() {
       'link_title' => 'Root',
       'link_path' => 'node',
     );
-    $this->drupalPost("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
     $menu_links = entity_load_multiple_by_properties('menu_link', array('link_title' => 'Root'));
     $link = reset($menu_links);
 
     $edit = array(
       'menu[parent]' => $link['menu_name'] . ':' . $link['mlid'],
     );
-    $this->drupalPost('node/' . $parent->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $parent->id() . '/edit', $edit, t('Save and keep published'));
     $expected = array(
       "node" => $link['link_title'],
     );
@@ -306,7 +306,7 @@ function testBreadCrumbs() {
     $edit = array(
       "field_tags[$langcode]" => implode(',', array_keys($tags)),
     );
-    $this->drupalPost('node/' . $parent->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalPostForm('node/' . $parent->id() . '/edit', $edit, t('Save and keep published'));
 
     // Put both terms into a hierarchy Drupal » Breadcrumbs. Required for both
     // the menu links and the terms itself, since taxonomy_term_page() resets
@@ -320,7 +320,7 @@ function testBreadCrumbs() {
         $edit = array(
           'parent[]' => array($parent_tid),
         );
-        $this->drupalPost("taxonomy/term/{$term->id()}/edit", $edit, t('Save'));
+        $this->drupalPostForm("taxonomy/term/{$term->id()}/edit", $edit, t('Save'));
       }
       $parent_tid = $term->id();
     }
@@ -332,7 +332,7 @@ function testBreadCrumbs() {
         'link_path' => "taxonomy/term/{$term->id()}",
         'parent' => "$menu:{$parent_mlid}",
       );
-      $this->drupalPost("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
+      $this->drupalPostForm("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
       $menu_links = entity_load_multiple_by_properties('menu_link', array('link_title' => $edit['link_title'], 'link_path' => $edit['link_path']));
       $tags[$name]['link'] = reset($menu_links);
       $tags[$name]['link']['link_path'] = $edit['link_path'];
@@ -431,7 +431,7 @@ function testBreadCrumbs() {
       'link_title' => 'User',
       'link_path' => 'user',
     );
-    $this->drupalPost("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
     $menu_links_user = entity_load_multiple_by_properties('menu_link', array('link_title' => $edit['link_title'], 'link_path' => $edit['link_path']));
     $link_user = reset($menu_links_user);
 
@@ -439,7 +439,7 @@ function testBreadCrumbs() {
       'link_title' => $this->admin_user->getUsername() . ' link',
       'link_path' => 'user/' . $this->admin_user->id(),
     );
-    $this->drupalPost("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/manage/$menu/add", $edit, t('Save'));
     $menu_links_admin_user = entity_load_multiple_by_properties('menu_link', array('link_title' => $edit['link_title'], 'link_path' => $edit['link_path']));
     $link_admin_user = reset($menu_links_admin_user);
 
@@ -465,7 +465,7 @@ function testBreadCrumbs() {
     $edit = array(
       'parent' => "$menu:{$link_user['mlid']}",
     );
-    $this->drupalPost("admin/structure/menu/item/{$link_admin_user['mlid']}/edit", $edit, t('Save'));
+    $this->drupalPostForm("admin/structure/menu/item/{$link_admin_user['mlid']}/edit", $edit, t('Save'));
 
     $this->drupalLogout();
     $trail = $home;
diff --git a/core/modules/system/lib/Drupal/system/Tests/Module/DependencyTest.php b/core/modules/system/lib/Drupal/system/Tests/Module/DependencyTest.php
index 59dc6a2..7fc2b1c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Module/DependencyTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Module/DependencyTest.php
@@ -26,7 +26,7 @@ function testEnableWithoutDependency() {
     // Attempt to enable Content Translation without Language enabled.
     $edit = array();
     $edit['modules[Multilingual][content_translation][enable]'] = 'content_translation';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertText(t('Some required modules must be enabled'), 'Dependency required.');
 
     $this->assertModules(array('content_translation', 'language'), FALSE);
@@ -34,7 +34,7 @@ function testEnableWithoutDependency() {
     // Assert that the language tables weren't enabled.
     $this->assertTableCount('language', FALSE);
 
-    $this->drupalPost(NULL, NULL, t('Continue'));
+    $this->drupalPostForm(NULL, NULL, t('Continue'));
     $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
 
     $this->assertModules(array('content_translation', 'language'), TRUE);
@@ -60,11 +60,11 @@ function testMissingModules() {
 
     // Verify that the module is forced to be disabled when submitting
     // the module page.
-    $this->drupalPost('admin/modules', array(), t('Save configuration'));
+    $this->drupalPostForm('admin/modules', array(), t('Save configuration'));
     $this->assertText(t('The @module module is missing, so the following module will be disabled: @depends.', array('@module' => '_missing_dependency', '@depends' => 'System dependency test')), 'The module missing dependencies will be disabled.');
 
     // Confirm.
-    $this->drupalPost(NULL, NULL, t('Continue'));
+    $this->drupalPostForm(NULL, NULL, t('Continue'));
 
     // Verify that the module has been disabled.
     $this->assertModules(array('system_dependencies_test'), FALSE);
@@ -112,7 +112,7 @@ function testEnableRequirementsFailureDependency() {
     $edit = array();
     $edit['modules[Testing][requirements1_test][enable]'] = 'requirements1_test';
     $edit['modules[Testing][requirements2_test][enable]'] = 'requirements2_test';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
 
     // Makes sure the modules were NOT installed.
     $this->assertText(t('Requirements 1 Test failed requirements'), 'Modules status has been updated.');
@@ -146,7 +146,7 @@ function testModuleEnableOrder() {
     // is correct.
     $edit = array();
     $edit['modules[Core][forum][enable]'] = 'forum';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertModules(array('forum'), FALSE);
     $this->assertText(t('You must enable the History, Taxonomy, Options, Number, Comment, Datetime, Ban, PHP Filter modules to install Forum.'));
     $edit['modules[Core][history][enable]'] = 'history';
@@ -157,7 +157,7 @@ function testModuleEnableOrder() {
     $edit['modules[Core][datetime][enable]'] = 'datetime';
     $edit['modules[Core][ban][enable]'] = 'ban';
     $edit['modules[Core][php][enable]'] = 'php';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertModules(array('forum', 'ban', 'php', 'datetime', 'comment', 'history', 'taxonomy', 'options', 'number'), TRUE);
 
     // Check the actual order which is saved by module_test_modules_enabled().
@@ -171,16 +171,16 @@ function testModuleEnableOrder() {
   function testUninstallDependents() {
     // Enable the forum module.
     $edit = array('modules[Core][forum][enable]' => 'forum');
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
-    $this->drupalPost(NULL, array(), t('Continue'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, array(), t('Continue'));
     $this->assertModules(array('forum'), TRUE);
 
     // Disable forum and comment. Both should now be installed but disabled.
     $edit = array('modules[Core][forum][enable]' => FALSE);
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertModules(array('forum'), FALSE);
     $edit = array('modules[Core][comment][enable]' => FALSE);
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertModules(array('comment'), FALSE);
 
     // Check that the taxonomy module cannot be uninstalled.
@@ -191,12 +191,12 @@ function testUninstallDependents() {
     // Uninstall the forum module, and check that taxonomy now can also be
     // uninstalled.
     $edit = array('uninstall[forum]' => 'forum');
-    $this->drupalPost('admin/modules/uninstall', $edit, t('Uninstall'));
-    $this->drupalPost(NULL, NULL, t('Uninstall'));
+    $this->drupalPostForm('admin/modules/uninstall', $edit, t('Uninstall'));
+    $this->drupalPostForm(NULL, NULL, t('Uninstall'));
     $this->assertText(t('The selected modules have been uninstalled.'), 'Modules status has been updated.');
     $edit = array('uninstall[comment]' => 'comment');
-    $this->drupalPost('admin/modules/uninstall', $edit, t('Uninstall'));
-    $this->drupalPost(NULL, NULL, t('Uninstall'));
+    $this->drupalPostForm('admin/modules/uninstall', $edit, t('Uninstall'));
+    $this->drupalPostForm(NULL, NULL, t('Uninstall'));
     $this->assertText(t('The selected modules have been uninstalled.'), 'Modules status has been updated.');
   }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Module/EnableDisableTest.php b/core/modules/system/lib/Drupal/system/Tests/Module/EnableDisableTest.php
index 8458bc7..6dbd89b 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Module/EnableDisableTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Module/EnableDisableTest.php
@@ -94,11 +94,11 @@ function testEnableDisable() {
         $edit = array();
         $package = $module->info['package'];
         $edit['modules[' . $package . '][' . $name . '][enable]'] = $name;
-        $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+        $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
         // Handle the case where modules were installed along with this one and
         // where we therefore hit a confirmation screen.
         if (count($modules_to_enable) > 1) {
-          $this->drupalPost(NULL, array(), t('Continue'));
+          $this->drupalPostForm(NULL, array(), t('Continue'));
         }
         $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
 
@@ -168,7 +168,7 @@ function testEnableDisable() {
     foreach ($modules as $name => $module) {
       $edit['modules[' . $module->info['package'] . '][' . $name . '][enable]'] = $name;
     }
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
   }
 
@@ -185,7 +185,7 @@ function assertSuccessfulDisableAndUninstall($module, $package = 'Core') {
     // Disable the module.
     $edit = array();
     $edit['modules[' . $package . '][' . $module . '][enable]'] = FALSE;
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
     $this->assertModules(array($module), FALSE);
 
@@ -204,8 +204,8 @@ function assertSuccessfulDisableAndUninstall($module, $package = 'Core') {
     // Uninstall the module.
     $edit = array();
     $edit['uninstall[' . $module . ']'] = $module;
-    $this->drupalPost('admin/modules/uninstall', $edit, t('Uninstall'));
-    $this->drupalPost(NULL, NULL, t('Uninstall'));
+    $this->drupalPostForm('admin/modules/uninstall', $edit, t('Uninstall'));
+    $this->drupalPostForm(NULL, NULL, t('Uninstall'));
     $this->assertText(t('The selected modules have been uninstalled.'), 'Modules status has been updated.');
     $this->assertModules(array($module), FALSE);
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Module/HookRequirementsTest.php b/core/modules/system/lib/Drupal/system/Tests/Module/HookRequirementsTest.php
index 1572f5d..c43cdfe 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Module/HookRequirementsTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Module/HookRequirementsTest.php
@@ -28,7 +28,7 @@ function testHookRequirementsFailure() {
     // Attempt to install the requirements1_test module.
     $edit = array();
     $edit['modules[Testing][requirements1_test][enable]'] = 'requirements1_test';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
 
     // Makes sure the module was NOT installed.
     $this->assertText(t('Requirements 1 Test failed requirements'), 'Modules status has been updated.');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php b/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php
index 3454c1e..0a0fd18 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php
@@ -53,7 +53,7 @@ function testUrlAlter() {
 
     // Test adding an alias via the UI.
     $edit = array('source' => "user/$uid/edit", 'alias' => 'alias/test2');
-    $this->drupalPost('admin/config/search/path/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
     $this->assertText(t('The alias has been saved.'));
     $this->drupalGet('alias/test2');
     $this->assertResponse('200', 'The path alias gets resolved correctly');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Session/SessionHttpsTest.php b/core/modules/system/lib/Drupal/system/Tests/Session/SessionHttpsTest.php
index 657138d..87cd97b 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Session/SessionHttpsTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Session/SessionHttpsTest.php
@@ -54,14 +54,14 @@ protected function testHttpsSession() {
     $form = $this->xpath('//form[@id="user-login-form"]');
     $form[0]['action'] = $this->httpsUrl('user');
     $edit = array('name' => $user->getUsername(), 'pass' => $user->pass_raw);
-    $this->drupalPost(NULL, $edit, t('Log in'));
+    $this->drupalPostForm(NULL, $edit, t('Log in'));
 
     // Test a second concurrent session.
     $this->curlClose();
     $this->drupalGet('user');
     $form = $this->xpath('//form[@id="user-login-form"]');
     $form[0]['action'] = $this->httpsUrl('user');
-    $this->drupalPost(NULL, $edit, t('Log in'));
+    $this->drupalPostForm(NULL, $edit, t('Log in'));
 
     // Check secure cookie on secure page.
     $this->assertTrue($this->cookies[$secure_session_name]['secure'], 'The secure cookie has the secure attribute');
@@ -97,7 +97,7 @@ protected function testHttpsSession() {
     $form = $this->xpath('//form[@id="user-login-form"]');
     $form[0]['action'] = $this->httpUrl('user');
     $edit = array('name' => $user->getUsername(), 'pass' => $user->pass_raw);
-    $this->drupalPost(NULL, $edit, t('Log in'));
+    $this->drupalPostForm(NULL, $edit, t('Log in'));
     $this->drupalGet($this->httpUrl('admin/config'));
     $this->assertResponse(200);
     $sid = $this->cookies[$insecure_session_name]['value'];
@@ -155,7 +155,7 @@ protected function testHttpsSession() {
       'name' => $user->getUsername(),
       'pass' => $user->pass_raw,
     );
-    $this->drupalPost(NULL, $edit, t('Log in'));
+    $this->drupalPostForm(NULL, $edit, t('Log in'));
     // Check secure cookie on secure page.
     $this->assertTrue($this->cookies[$secure_session_name]['secure'], 'The secure cookie has the secure attribute');
     // Check insecure cookie on secure page.
@@ -206,7 +206,7 @@ protected function testHttpsSession() {
     $this->drupalGet('user');
     $form = $this->xpath('//form[@id="user-login-form"]');
     $form[0]['action'] = $this->httpsUrl('user');
-    $this->drupalPost(NULL, $edit, t('Log in'));
+    $this->drupalPostForm(NULL, $edit, t('Log in'));
 
     // Test that the user is also authenticated on the insecure site.
     $this->drupalGet("user/" . $user->id() . "/edit");
diff --git a/core/modules/system/lib/Drupal/system/Tests/Session/SessionTest.php b/core/modules/system/lib/Drupal/system/Tests/Session/SessionTest.php
index 427ad70..278c77e 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Session/SessionTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Session/SessionTest.php
@@ -65,7 +65,7 @@ function testSessionSaveRegenerate() {
       'name' => $user->getUsername(),
       'pass' => $user->pass_raw
     );
-    $this->drupalPost('user', $edit, t('Log in'));
+    $this->drupalPostForm('user', $edit, t('Log in'));
     $this->drupalGet('user');
     $pass = $this->assertText($user->getUsername(), format_string('Found name: %name', array('%name' => $user->getUsername())), 'User login');
     $this->_logged_in = $pass;
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/AccessDeniedTest.php b/core/modules/system/lib/Drupal/system/Tests/System/AccessDeniedTest.php
index 0e047ec..915e3e8 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/AccessDeniedTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/AccessDeniedTest.php
@@ -51,7 +51,7 @@ function testAccessDenied() {
     $edit = array(
       'site_403' => 'user/' . $this->admin_user->id(),
     );
-    $this->drupalPost('admin/config/system/site-information', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/site-information', $edit, t('Save configuration'));
 
     // Enable the user login block.
     $this->drupalPlaceBlock('user_login_block', array('machine_name' => 'login'));
@@ -67,7 +67,7 @@ function testAccessDenied() {
     $edit = array(
       'site_403' => '',
     );
-    $this->drupalPost('admin/config/system/site-information', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/site-information', $edit, t('Save configuration'));
 
     // Logout and check that the user login block is shown on default 403 pages.
     $this->drupalLogout();
@@ -82,7 +82,7 @@ function testAccessDenied() {
     $edit = array(
       'region' => -1,
     );
-    $this->drupalPost('admin/structure/block/manage/stark.login', $edit, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/manage/stark.login', $edit, t('Save block'));
 
     // Check that we can log in from the 403 page.
     $this->drupalLogout();
@@ -90,7 +90,7 @@ function testAccessDenied() {
       'name' => $this->admin_user->getUsername(),
       'pass' => $this->admin_user->pass_raw,
     );
-    $this->drupalPost('admin/config/system/site-information', $edit, t('Log in'));
+    $this->drupalPostForm('admin/config/system/site-information', $edit, t('Log in'));
 
     // Check that we're still on the same page.
     $this->assertText(t('Site information'));
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/CronRunTest.php b/core/modules/system/lib/Drupal/system/Tests/System/CronRunTest.php
index 5e35a15..320b642 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/CronRunTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/CronRunTest.php
@@ -75,7 +75,7 @@ function testAutomaticCron() {
     // Disable the cron threshold through the interface.
     $admin_user = $this->drupalCreateUser(array('administer site configuration'));
     $this->drupalLogin($admin_user);
-    $this->drupalPost('admin/config/system/cron', array('cron_safe_threshold' => 0), t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/cron', array('cron_safe_threshold' => 0), t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'));
     $this->drupalLogout();
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/DateFormatsLanguageTest.php b/core/modules/system/lib/Drupal/system/Tests/System/DateFormatsLanguageTest.php
index e17c709..2b63cc9 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/DateFormatsLanguageTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/DateFormatsLanguageTest.php
@@ -49,14 +49,14 @@ function testLocalizeDateFormats() {
     $edit = array(
       'predefined_langcode' => 'fr',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // Set language negotiation.
     $language_type = Language::TYPE_INTERFACE;
     $edit = array(
       "{$language_type}[enabled][language-url]" => TRUE,
     );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
 
     // Add new date format for French.
     $edit = array(
@@ -65,7 +65,7 @@ function testLocalizeDateFormats() {
       'date_format_pattern' => 'd.m.Y - H:i',
       'locales[]' => array('fr'),
     );
-    $this->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
+    $this->drupalPostForm('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
 
     // Add new date format for English.
     $edit = array(
@@ -74,7 +74,7 @@ function testLocalizeDateFormats() {
       'date_format_pattern' => 'j M Y - g:ia',
       'locales[]' => array('en'),
     );
-    $this->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
+    $this->drupalPostForm('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
 
     // Configure date formats.
     $this->drupalGet('admin/config/regional/date-time/locale');
@@ -84,7 +84,7 @@ function testLocalizeDateFormats() {
       'date_format_medium' => 'example_style_fr',
       'date_format_short' => 'example_style_fr',
     );
-    $this->drupalPost('admin/config/regional/date-time/locale/fr/edit', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/date-time/locale/fr/edit', $edit, t('Save configuration'));
     $this->assertText(t('Configuration saved.'), 'French date formats updated.');
 
     $edit = array(
@@ -92,7 +92,7 @@ function testLocalizeDateFormats() {
       'date_format_medium' => 'example_style_en',
       'date_format_short' => 'example_style_en',
     );
-    $this->drupalPost('admin/config/regional/date-time/locale/en/edit', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/date-time/locale/en/edit', $edit, t('Save configuration'));
     $this->assertText(t('Configuration saved.'), 'English date formats updated.');
 
     // Create node content.
@@ -107,7 +107,7 @@ function testLocalizeDateFormats() {
     $this->assertText($french_date, 'French date format appears');
 
     // Make sure we can reset dates back to default.
-    $this->drupalPost('admin/config/regional/date-time/locale/en/reset', array(), t('Reset'));
+    $this->drupalPostForm('admin/config/regional/date-time/locale/en/reset', array(), t('Reset'));
     $this->drupalGet('node/' . $node->id());
     $this->assertNoText($english_date, 'English date format does not appear');
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
index c644f3a..423276c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
@@ -90,7 +90,7 @@ function testDateFormatConfiguration() {
       'label' => $name,
       'date_format_pattern' => $date_format,
     );
-    $this->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
+    $this->drupalPostForm('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
     $this->assertEqual($this->getUrl(), url('admin/config/regional/date-time', array('absolute' => TRUE)), 'Correct page redirection.');
     $this->assertText(t('Custom date format added.'), 'Date format added confirmation message appears.');
     $this->assertText($date_format_id, 'Custom date format appears in the date format list.');
@@ -102,13 +102,13 @@ function testDateFormatConfiguration() {
     $edit = array(
       'date_format_pattern' => 'Y m',
     );
-    $this->drupalPost($this->getUrl(), $edit, t('Save format'));
+    $this->drupalPostForm($this->getUrl(), $edit, t('Save format'));
     $this->assertEqual($this->getUrl(), url('admin/config/regional/date-time', array('absolute' => TRUE)), 'Correct page redirection.');
     $this->assertText(t('Custom date format updated.'), 'Custom date format successfully updated.');
 
     // Delete custom date format.
     $this->clickLink(t('Delete'));
-    $this->drupalPost('admin/config/regional/date-time/formats/manage/' . $date_format_id . '/delete', array(), t('Remove'));
+    $this->drupalPostForm('admin/config/regional/date-time/formats/manage/' . $date_format_id . '/delete', array(), t('Remove'));
     $this->assertEqual($this->getUrl(), url('admin/config/regional/date-time', array('absolute' => TRUE)), 'Correct page redirection.');
     $this->assertText(t('Removed date format ' . $name), 'Custom date format removed.');
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/FrontPageTest.php b/core/modules/system/lib/Drupal/system/Tests/System/FrontPageTest.php
index d26a3a4..94fb323 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/FrontPageTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/FrontPageTest.php
@@ -56,12 +56,12 @@ function testDrupalIsFrontPage() {
 
     // Change the front page to an invalid path.
     $edit = array('site_frontpage' => 'kittens');
-    $this->drupalPost('admin/config/system/site-information', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/site-information', $edit, t('Save configuration'));
     $this->assertText(t("The path '@path' is either invalid or you do not have access to it.", array('@path' => $edit['site_frontpage'])));
 
     // Change the front page to a valid path.
     $edit['site_frontpage'] = $this->node_path;
-    $this->drupalPost('admin/config/system/site-information', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/site-information', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'The front page path has been saved.');
 
     $this->drupalGet('');
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/MainContentFallbackTest.php b/core/modules/system/lib/Drupal/system/Tests/System/MainContentFallbackTest.php
index ae39a10..ece4539 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/MainContentFallbackTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/MainContentFallbackTest.php
@@ -54,7 +54,7 @@ function testMainContentFallback() {
     $edit = array();
     // Disable the block module.
     $edit['modules[Core][block][enable]'] = FALSE;
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
     $this->rebuildContainer();
     $this->assertFalse(module_exists('block'), 'Block module disabled.');
@@ -88,7 +88,7 @@ function testMainContentFallback() {
     $this->drupalLogin($this->admin_user);
     $edit = array();
     $edit['modules[Core][block][enable]'] = 'block';
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertText(t('The configuration options have been saved.'), 'Modules status has been updated.');
     $this->rebuildContainer();
     $this->assertTrue(module_exists('block'), 'Block module re-enabled.');
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/PageNotFoundTest.php b/core/modules/system/lib/Drupal/system/Tests/System/PageNotFoundTest.php
index 107d9c7..b248ff7 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/PageNotFoundTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/PageNotFoundTest.php
@@ -39,7 +39,7 @@ function testPageNotFound() {
     $edit = array(
       'site_404' => 'user/' . $this->admin_user->id(),
     );
-    $this->drupalPost('admin/config/system/site-information', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/site-information', $edit, t('Save configuration'));
 
     $this->drupalGet($this->randomName(10));
     $this->assertText($this->admin_user->getUsername(), 'Found the custom 404 page');
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/PageTitleTest.php b/core/modules/system/lib/Drupal/system/Tests/System/PageTitleTest.php
index d5fead5..43c5786 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/PageTitleTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/PageTitleTest.php
@@ -78,7 +78,7 @@ function testTitleTags() {
       "body[$langcode][0][value]" => '!SimpleTest! test body' . $this->randomName(200),
     );
     // Create the node with HTML in the title.
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     $node = $this->drupalGetNodeByTitle($edit["title"]);
     $this->assertNotNull($node, 'Node created and found in database');
@@ -103,14 +103,14 @@ function testTitleXSS() {
       'toggle_main_menu'      => TRUE,
       'toggle_secondary_menu' => TRUE,
     );
-    $this->drupalPost('admin/appearance/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/appearance/settings', $edit, t('Save configuration'));
 
     // Set title and slogan.
     $edit = array(
       'site_name'    => $title,
       'site_slogan'  => $slogan,
     );
-    $this->drupalPost('admin/config/system/site-information', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/system/site-information', $edit, t('Save configuration'));
 
     // Load frontpage.
     $this->drupalGet('');
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/SiteMaintenanceTest.php b/core/modules/system/lib/Drupal/system/Tests/System/SiteMaintenanceTest.php
index 52a4ab0..1cb582a 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/SiteMaintenanceTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/SiteMaintenanceTest.php
@@ -52,7 +52,7 @@ function testSiteMaintenance() {
     $edit = array(
       'maintenance_mode' => 1,
     );
-    $this->drupalPost('admin/config/development/maintenance', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/development/maintenance', $edit, t('Save configuration'));
 
     $admin_message = t('Operating in maintenance mode. <a href="@url">Go online.</a>', array('@url' => url('admin/config/development/maintenance')));
     $user_message = t('Operating in maintenance mode.');
@@ -82,7 +82,7 @@ function testSiteMaintenance() {
       'name' => $this->user->getUsername(),
       'pass' => $this->user->pass_raw,
     );
-    $this->drupalPost(NULL, $edit, t('Log in'));
+    $this->drupalPostForm(NULL, $edit, t('Log in'));
     $this->assertText($user_message);
 
     // Log in administrative user and configure a custom site offline message.
@@ -95,7 +95,7 @@ function testSiteMaintenance() {
     $edit = array(
       'maintenance_mode_message' => $offline_message,
     );
-    $this->drupalPost(NULL, $edit, t('Save configuration'));
+    $this->drupalPostForm(NULL, $edit, t('Save configuration'));
 
     // Logout and verify that custom site offline message is displayed.
     $this->drupalLogout();
@@ -110,13 +110,13 @@ function testSiteMaintenance() {
     $edit = array(
       'name' => $this->user->getUsername(),
     );
-    $this->drupalPost('user/password', $edit, t('E-mail new password'));
+    $this->drupalPostForm('user/password', $edit, t('E-mail new password'));
     $mails = $this->drupalGetMails();
     $start = strpos($mails[0]['body'], 'user/reset/'. $this->user->id());
     $path = substr($mails[0]['body'], $start, 66 + strlen($this->user->id()));
 
     // Log in with temporary login link.
-    $this->drupalPost($path, array(), t('Log in'));
+    $this->drupalPostForm($path, array(), t('Log in'));
     $this->assertText($user_message);
   }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php b/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php
index d3476f7..bf04900 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php
@@ -81,7 +81,7 @@ function testThemeSettings() {
         'default_logo' => FALSE,
         'logo_path' => $input,
       );
-      $this->drupalPost('admin/appearance/settings', $edit, t('Save configuration'));
+      $this->drupalPostForm('admin/appearance/settings', $edit, t('Save configuration'));
       $this->assertNoText('The custom logo path is invalid.');
       $this->assertFieldByName('logo_path', $expected['form']);
 
@@ -151,7 +151,7 @@ function testThemeSettings() {
         'default_logo' => FALSE,
         'logo_path' => $path,
       );
-      $this->drupalPost(NULL, $edit, t('Save configuration'));
+      $this->drupalPostForm(NULL, $edit, t('Save configuration'));
       $this->assertText('The custom logo path is invalid.');
     }
 
@@ -161,7 +161,7 @@ function testThemeSettings() {
       'logo_path' => '',
       'files[logo_upload]' => drupal_realpath($file->uri),
     );
-    $this->drupalPost('admin/appearance/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/appearance/settings', $edit, t('Save configuration'));
 
     $fields = $this->xpath($this->constructFieldXpath('name', 'logo_path'));
     $uploaded_filename = 'public://' . $fields[0]['value'];
@@ -185,7 +185,7 @@ function testAdministrationTheme() {
       'admin_theme' => 'seven',
       'use_admin_theme' => TRUE,
     );
-    $this->drupalPost('admin/appearance', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/appearance', $edit, t('Save configuration'));
 
     $this->drupalGet('admin/config');
     $this->assertRaw('core/themes/seven', 'Administration theme used on an administration page.');
@@ -203,7 +203,7 @@ function testAdministrationTheme() {
     $edit = array(
       'use_admin_theme' => FALSE,
     );
-    $this->drupalPost('admin/appearance', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/appearance', $edit, t('Save configuration'));
 
     $this->drupalGet('admin/config');
     $this->assertRaw('core/themes/seven', 'Administration theme used on an administration page.');
@@ -219,7 +219,7 @@ function testAdministrationTheme() {
       'admin_theme' => '0',
       'use_admin_theme' => FALSE,
     );
-    $this->drupalPost('admin/appearance', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/appearance', $edit, t('Save configuration'));
 
     $this->drupalGet('admin');
     $this->assertRaw('core/themes/bartik', 'Site default theme used on administration page.');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Theme/TwigTransTest.php b/core/modules/system/lib/Drupal/system/Tests/Theme/TwigTransTest.php
index 6d87db5..48d1e1f 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Theme/TwigTransTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Theme/TwigTransTest.php
@@ -81,7 +81,7 @@ protected function setUp() {
 
     // Assign Lolspeak (xx) to be the default language.
     $edit = array('site_default_language' => 'xx');
-    $this->drupalPost('admin/config/regional/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/regional/settings', $edit, t('Save configuration'));
 
     // Reset the static cache of the language list.
     drupal_static_reset('language_list');
@@ -236,7 +236,7 @@ protected function installLanguages() {
         );
 
         // Install the language in Drupal.
-        $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+        $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
         $this->assertRaw('"edit-languages-' . $langcode . '-weight"', 'Language code found.');
 
         // Import the custom .po contents for the language.
@@ -247,7 +247,7 @@ protected function installLanguages() {
           'langcode' => $langcode,
           'customized' => TRUE,
         );
-        $this->drupalPost('admin/config/regional/translate/import', $options, t('Import'));
+        $this->drupalPostForm('admin/config/regional/translate/import', $options, t('Import'));
         drupal_unlink($filename);
       }
     }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php b/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php
index 65981f1..6102a70 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php
@@ -80,7 +80,7 @@ function testRequirements() {
     // If there are no requirements warnings or errors, we expect to be able to
     // go through the update process uninterrupted.
     $this->drupalGet($this->update_url, array('external' => TRUE));
-    $this->drupalPost(NULL, array(), t('Continue'));
+    $this->drupalPostForm(NULL, array(), t('Continue'));
     $this->assertText(t('No pending updates.'), 'End of update process was reached.');
     // Confirm that all caches were cleared.
     $this->assertText(t('hook_cache_flush() invoked for update_script_test.module.'), 'Caches were cleared when there were no requirements warnings or errors.');
@@ -97,8 +97,8 @@ function testRequirements() {
     $this->assertText('This is a requirements warning provided by the update_script_test module.');
     $this->clickLink('try again');
     $this->assertNoText('This is a requirements warning provided by the update_script_test module.');
-    $this->drupalPost(NULL, array(), t('Continue'));
-    $this->drupalPost(NULL, array(), 'Apply pending updates');
+    $this->drupalPostForm(NULL, array(), t('Continue'));
+    $this->drupalPostForm(NULL, array(), 'Apply pending updates');
     $this->assertText(t('The update_script_test_update_8000() update was executed successfully.'), 'End of update process was reached.');
     // Confirm that all caches were cleared.
     $this->assertText(t('hook_cache_flush() invoked for update_script_test.module.'), 'Caches were cleared after resolving a requirements warning and applying updates.');
@@ -108,7 +108,7 @@ function testRequirements() {
     $this->assertText('This is a requirements warning provided by the update_script_test module.');
     $this->clickLink('try again');
     $this->assertNoText('This is a requirements warning provided by the update_script_test module.');
-    $this->drupalPost(NULL, array(), t('Continue'));
+    $this->drupalPostForm(NULL, array(), t('Continue'));
     $this->assertText(t('No pending updates.'), 'End of update process was reached.');
     // Confirm that all caches were cleared.
     $this->assertText(t('hook_cache_flush() invoked for update_script_test.module.'), 'Caches were cleared after applying updates and re-running the script.');
@@ -143,7 +143,7 @@ function testThemeSystem() {
   function testNoUpdateFunctionality() {
     // Click through update.php with 'administer software updates' permission.
     $this->drupalLogin($this->update_user);
-    $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE));
+    $this->drupalPostForm($this->update_url, array(), t('Continue'), array('external' => TRUE));
     $this->assertText(t('No pending updates.'));
     $this->assertNoLink('Administration pages');
     $this->assertNoLinkByHref('update.php', 0);
@@ -153,7 +153,7 @@ function testNoUpdateFunctionality() {
     // Click through update.php with 'access administration pages' permission.
     $admin_user = $this->drupalCreateUser(array('administer software updates', 'access administration pages'));
     $this->drupalLogin($admin_user);
-    $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE));
+    $this->drupalPostForm($this->update_url, array(), t('Continue'), array('external' => TRUE));
     $this->assertText(t('No pending updates.'));
     $this->assertLink('Administration pages');
     $this->assertNoLinkByHref('update.php', 1);
@@ -168,8 +168,8 @@ function testSuccessfulUpdateFunctionality() {
     drupal_set_installed_schema_version('update_script_test', drupal_get_installed_schema_version('update_script_test') - 1);
     // Click through update.php with 'administer software updates' permission.
     $this->drupalLogin($this->update_user);
-    $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE));
-    $this->drupalPost(NULL, array(), t('Apply pending updates'));
+    $this->drupalPostForm($this->update_url, array(), t('Continue'), array('external' => TRUE));
+    $this->drupalPostForm(NULL, array(), t('Apply pending updates'));
     $this->assertText('Updates were attempted.');
     $this->assertLink('site');
     $this->assertNoLink('Administration pages');
@@ -183,8 +183,8 @@ function testSuccessfulUpdateFunctionality() {
     // 'access site reports' permissions.
     $admin_user = $this->drupalCreateUser(array('administer software updates', 'access administration pages', 'access site reports'));
     $this->drupalLogin($admin_user);
-    $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE));
-    $this->drupalPost(NULL, array(), t('Apply pending updates'));
+    $this->drupalPostForm($this->update_url, array(), t('Continue'), array('external' => TRUE));
+    $this->drupalPostForm(NULL, array(), t('Apply pending updates'));
     $this->assertText('Updates were attempted.');
     $this->assertLink('logged');
     $this->assertLink('Administration pages');
diff --git a/core/modules/system/lib/Drupal/system/Tests/Upgrade/BlockUpgradePathTest.php b/core/modules/system/lib/Drupal/system/Tests/Upgrade/BlockUpgradePathTest.php
index bde6f60..79ff2a9 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Upgrade/BlockUpgradePathTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Upgrade/BlockUpgradePathTest.php
@@ -46,7 +46,7 @@ public function testBlockUpgradeTitleLength() {
       'machine_name' => strtolower($this->randomName(8)),
       'region' => 'sidebar_first',
     );
-    $this->drupalPost('admin/structure/block/add/system_powered_by_block/' . \Drupal::config('system.theme')->get('default'), $settings, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/system_powered_by_block/' . \Drupal::config('system.theme')->get('default'), $settings, t('Save block'));
     $this->assertText($settings['settings[label]'], 'Block with title longer than 64 characters successfully created.');
 
     // Try to add a block with a title over 255 characters.
@@ -55,7 +55,7 @@ public function testBlockUpgradeTitleLength() {
       'machine_name' => strtolower($this->randomName(8)),
       'region' => 'sidebar_first',
     );
-    $this->drupalPost('admin/structure/block/add/system_powered_by_block/' . \Drupal::config('system.theme')->get('default'), $settings, t('Save block'));
+    $this->drupalPostForm('admin/structure/block/add/system_powered_by_block/' . \Drupal::config('system.theme')->get('default'), $settings, t('Save block'));
 
     // Confirm that the custom block cannot be created with title longer than
     // the maximum number of characters.
diff --git a/core/modules/system/lib/Drupal/system/Tests/Upgrade/FieldUpgradePathTest.php b/core/modules/system/lib/Drupal/system/Tests/Upgrade/FieldUpgradePathTest.php
index 13793c6..85e57e6 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Upgrade/FieldUpgradePathTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Upgrade/FieldUpgradePathTest.php
@@ -281,7 +281,7 @@ function testFieldUpgradeToConfig() {
       'title' => 'Node after CMI conversion',
       'body[und][0][value]' => $value,
     );
-    $this->drupalPost('node/add/article', $edit, 'Save and publish');
+    $this->drupalPostForm('node/add/article', $edit, 'Save and publish');
     $this->assertText($value);
   }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Upgrade/FilterFormatUpgradePathTest.php b/core/modules/system/lib/Drupal/system/Tests/Upgrade/FilterFormatUpgradePathTest.php
index 4c082ee..9c472ff 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Upgrade/FilterFormatUpgradePathTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Upgrade/FilterFormatUpgradePathTest.php
@@ -84,7 +84,7 @@ public function testFilterFormatUpgrade() {
     // Editing and saving the format should drop the missing filter.
     $this->drupalGet('admin/config/content/formats/manage/format_two');
     $this->assertRaw(t('The %filter filter is missing, and will be removed once this format is saved.', array('%filter' => 'missing_filter')));
-    $this->drupalPost(NULL, array(), t('Save configuration'));
+    $this->drupalPostForm(NULL, array(), t('Save configuration'));
     filter_formats_reset();
     $two = entity_load('filter_format', 'format_two');
     $this->assertFalse($two->filters()->has('missing_filter'));
diff --git a/core/modules/system/lib/Drupal/system/Tests/Upgrade/UpgradePathTestBase.php b/core/modules/system/lib/Drupal/system/Tests/Upgrade/UpgradePathTestBase.php
index 6efed12..680efe5 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Upgrade/UpgradePathTestBase.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Upgrade/UpgradePathTestBase.php
@@ -263,7 +263,7 @@ protected function performUpgrade($register_errors = TRUE) {
     $this->rebuildContainer();
 
     // Continue.
-    $this->drupalPost(NULL, array(), t('Continue'));
+    $this->drupalPostForm(NULL, array(), t('Continue'));
     if (!$this->assertResponse(200)) {
       throw new \Exception('POST to continue update.php did not return HTTP 200 status.');
     }
@@ -277,7 +277,7 @@ protected function performUpgrade($register_errors = TRUE) {
     }
 
     // Go!
-    $this->drupalPost(NULL, array(), t('Apply pending updates'));
+    $this->drupalPostForm(NULL, array(), t('Apply pending updates'));
     if (!$this->assertResponse(200)) {
       throw new \Exception('POST to update.php to apply pending updates did not return HTTP 200 status.');
     }
@@ -306,7 +306,7 @@ protected function performUpgrade($register_errors = TRUE) {
 
     // Check if there still are pending updates.
     $this->getUpdatePhp();
-    $this->drupalPost(NULL, array(), t('Continue'));
+    $this->drupalPostForm(NULL, array(), t('Continue'));
     if (!$this->assertText(t('No pending updates.'), 'No pending updates at the end of the update process.')) {
       throw new \Exception('update.php still shows pending updates after execution.');
     }
diff --git a/core/modules/system/tests/modules/ajax_test/ajax_test.module b/core/modules/system/tests/modules/ajax_test/ajax_test.module
index e358018..962b3bb 100644
--- a/core/modules/system/tests/modules/ajax_test/ajax_test.module
+++ b/core/modules/system/tests/modules/ajax_test/ajax_test.module
@@ -200,8 +200,8 @@ function ajax_test_dialog() {
  * Form builder: Renders buttons with #ajax['dialog'].
  */
 function ajax_test_dialog_form($form, &$form_state) {
-  // In order to use WebTestBase::drupalPostAJAX() to POST from a link, we need
-  // to have a dummy field we can set in WebTestBase::drupalPost() else it won't
+  // In order to use WebTestBase::drupalPostAjaxForm() to POST from a link, we need
+  // to have a dummy field we can set in WebTestBase::drupalPostForm() else it won't
   // submit anything.
   $form['textfield'] = array(
     '#type' => 'hidden'
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/LegacyTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/LegacyTest.php
index 3758df7..b3ffc03 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/LegacyTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/LegacyTest.php
@@ -45,7 +45,7 @@ function testTaxonomyLegacyNode() {
     $edit['date[time]'] = $date->format('H:i:s');
     $edit["body[$langcode][0][value]"] = $this->randomName();
     $edit["field_tags[$langcode]"] = $this->randomName();
-    $this->drupalPost('node/add/article', $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
     // Checks that the node has been saved.
     $node = $this->drupalGetNodeByTitle($edit['title']);
     $this->assertEqual($node->getCreatedTime(), $date->getTimestamp(), 'Legacy node was saved with the right date.');
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php
index 905cc14..119d9d1 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php
@@ -83,21 +83,21 @@ function testTaxonomyRss() {
     $edit = array(
       "display_modes_custom[rss]" => '1',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Change the format to 'RSS category'.
     $this->drupalGet("admin/structure/types/manage/article/display/rss");
     $edit = array(
       "fields[taxonomy_" . $this->vocabulary->id() . "][type]" => 'taxonomy_term_reference_rss_category',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Post an article.
     $edit = array();
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit["title"] = $this->randomName();
     $edit[$this->field_name . '[' . $langcode . '][]'] = $term1->id();
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
 
     // Check that the term is displayed when the RSS feed is viewed.
     $this->drupalGet('rss.xml');
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyTermIndentationTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyTermIndentationTest.php
index 59970c4..7722a16 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyTermIndentationTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyTermIndentationTest.php
@@ -52,7 +52,7 @@ function testTermIndentation() {
     );
 
     // Submit the edited form and check for HTML indentation element presence.
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->get('vid'), $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->get('vid'), $edit, t('Save'));
     $this->assertPattern('|<div class="indentation">&nbsp;</div>|');
   }
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php
index 4cfb173..d61787d 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php
@@ -94,7 +94,7 @@ function testTaxonomyTermFieldMultipleVocabularies() {
       'name' => $this->randomName(),
       "{$this->field_name}[$langcode][]" => array($term1->id(), $term2->id()),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created.');
@@ -139,6 +139,6 @@ function testTaxonomyTermFieldMultipleVocabularies() {
       'name' => $this->randomName(),
       "{$this->field_name}[$langcode][]" => array($term1->id()),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
   }
 }
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php
index 1fee5c3..79e860d 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php
@@ -113,7 +113,7 @@ function testTaxonomyTermFieldWidgets() {
       'name' => $this->randomName(),
       "{$this->field_name}[$langcode]" => array($term->id()),
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)));
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php
index 240b19c..0cbfef1 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php
@@ -110,7 +110,7 @@ function testTaxonomyIndex() {
     $edit["body[$langcode][0][value]"] = $this->randomName();
     $edit["{$this->field_name_1}[$langcode][]"] = $term_1->id();
     $edit["{$this->field_name_2}[$langcode][]"] = $term_1->id();
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
 
     // Check that the term is indexed, and only once.
     $node = $this->drupalGetNodeByTitle($edit["title"]);
@@ -122,7 +122,7 @@ function testTaxonomyIndex() {
 
     // Update the article to change one term.
     $edit["{$this->field_name_1}[$langcode][]"] = $term_2->id();
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
 
     // Check that both terms are indexed.
     $index_count = db_query('SELECT COUNT(*) FROM {taxonomy_index} WHERE nid = :nid AND tid = :tid', array(
@@ -138,7 +138,7 @@ function testTaxonomyIndex() {
 
     // Update the article to change another term.
     $edit["{$this->field_name_2}[$langcode][]"] = $term_2->id();
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
 
     // Check that only one term is indexed.
     $index_count = db_query('SELECT COUNT(*) FROM {taxonomy_index} WHERE nid = :nid AND tid = :tid', array(
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php
index 1c1a23f..6cac09c 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php
@@ -49,7 +49,7 @@ function testTermLanguage() {
     $edit = array(
       'default_language[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
 
     // Add a term.
     $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
@@ -60,7 +60,7 @@ function testTermLanguage() {
       'name' => $this->randomName(),
       'langcode' => 'aa',
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $terms = taxonomy_term_load_multiple_by_name($edit['name']);
     $term = reset($terms);
     $this->assertEqual($term->language()->id, $edit['langcode']);
@@ -71,7 +71,7 @@ function testTermLanguage() {
 
     // Change the language of the term.
     $edit['langcode'] = 'bb';
-    $this->drupalPost('taxonomy/term/' . $term->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('taxonomy/term/' . $term->id() . '/edit', $edit, t('Save'));
 
     // Check again that on the edit page the language is correct.
     $this->drupalGet('taxonomy/term/' . $term->id() . '/edit');
@@ -85,7 +85,7 @@ function testDefaultTermLanguage() {
       'default_language[langcode]' => 'bb',
       'default_language[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
     $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
     $this->assertOptionSelected('edit-langcode', 'bb');
 
@@ -94,7 +94,7 @@ function testDefaultTermLanguage() {
       'default_language[langcode]' => 'current_interface',
       'default_language[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
     $this->drupalGet('aa/admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
     $this->assertOptionSelected('edit-langcode', 'aa');
     $this->drupalGet('bb/admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
@@ -112,7 +112,7 @@ function testDefaultTermLanguage() {
       'default_language[langcode]' => 'site_default',
       'default_language[language_show]' => TRUE,
     );
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/edit', $edit, t('Save'));
     $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
     $this->assertOptionSelected('edit-langcode', 'cc');
   }
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php
index 53e65b4..68a933c 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php
@@ -77,7 +77,7 @@ function testTaxonomyTermHierarchy() {
     // Edit $term2, setting $term1 as parent.
     $edit = array();
     $edit['parent[]'] = array($term1->id());
-    $this->drupalPost('taxonomy/term/' . $term2->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('taxonomy/term/' . $term2->id() . '/edit', $edit, t('Save'));
 
     // Check the hierarchy.
     $children = taxonomy_term_load_children($term1->id());
@@ -115,7 +115,7 @@ function testTaxonomyNode() {
     $edit["title"] = $this->randomName();
     $edit["body[$langcode][0][value]"] = $this->randomName();
     $edit[$this->instance['field_name'] . '[' . $langcode . '][]'] = $term1->id();
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
 
     // Check that the term is displayed when the node is viewed.
     $node = $this->drupalGetNodeByTitle($edit["title"]);
@@ -124,20 +124,20 @@ function testTaxonomyNode() {
 
     $this->clickLink(t('Edit'));
     $this->assertText($term1->label(), 'Term is displayed when editing the node.');
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $this->assertText($term1->label(), 'Term is displayed after saving the node with no changes.');
 
     // Edit the node with a different term.
     $edit[$this->instance['field_name'] . '[' . $langcode . '][]'] = $term2->id();
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
 
     $this->drupalGet('node/' . $node->id());
     $this->assertText($term2->label(), 'Term is displayed when viewing the node.');
 
     // Preview the node.
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Preview'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Preview'));
     $this->assertNoUniqueText($term2->label(), 'Term is displayed when previewing the node.');
-    $this->drupalPost(NULL, NULL, t('Preview'));
+    $this->drupalPostForm(NULL, NULL, t('Preview'));
     $this->assertNoUniqueText($term2->label(), 'Term is displayed when previewing the node again.');
   }
 
@@ -175,7 +175,7 @@ function testNodeTermCreationAndDeletion() {
     $this->assertRaw('placeholder="Start typing here."');
 
     // Preview and verify the terms appear but are not created.
-    $this->drupalPost(NULL, $edit, t('Preview'));
+    $this->drupalPostForm(NULL, $edit, t('Preview'));
     foreach ($terms as $term) {
       $this->assertText($term, 'The term appears on the node preview');
     }
@@ -186,7 +186,7 @@ function testNodeTermCreationAndDeletion() {
     taxonomy_terms_static_reset();
 
     // Save, creating the terms.
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
     $this->assertRaw(t('@type %title has been created.', array('@type' => t('Article'), '%title' => $edit["title"])), 'The node was created successfully.');
     foreach ($terms as $term) {
       $this->assertText($term, 'The term was saved and appears on the node page.');
@@ -200,11 +200,11 @@ function testNodeTermCreationAndDeletion() {
     }
 
     // Delete term 1 from the term edit page.
-    $this->drupalPost('taxonomy/term/' . $term_objects['term1']->id() . '/edit', array(), t('Delete'));
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm('taxonomy/term/' . $term_objects['term1']->id() . '/edit', array(), t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
 
     // Delete term 2 from the term delete page.
-    $this->drupalPost('taxonomy/term/' . $term_objects['term2']->id() . '/delete', array(), t('Delete'));
+    $this->drupalPostForm('taxonomy/term/' . $term_objects['term2']->id() . '/delete', array(), t('Delete'));
     $term_names = array($term_objects['term3']->label(), $term_objects['term4']->label());
 
     // Get the node.
@@ -299,7 +299,7 @@ function testTermInterface() {
     $edit['parent[]'] = array(0);
 
     // Create the term to edit.
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add', $edit, t('Save'));
 
     $terms = taxonomy_term_load_multiple_by_name($edit['name']);
     $term = reset($terms);
@@ -322,7 +322,7 @@ function testTermInterface() {
     );
 
     // Edit the term.
-    $this->drupalPost('taxonomy/term/' . $term->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('taxonomy/term/' . $term->id() . '/edit', $edit, t('Save'));
 
     // Check that the term is still present at admin UI after edit.
     $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id());
@@ -350,8 +350,8 @@ function testTermInterface() {
     $this->drupalGet('taxonomy/term/' . $term->id() . '/feed');
 
     // Delete the term.
-    $this->drupalPost('taxonomy/term/' . $term->id() . '/edit', array(), t('Delete'));
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm('taxonomy/term/' . $term->id() . '/edit', array(), t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
 
     // Assert that the term no longer exists.
     $this->drupalGet('taxonomy/term/' . $term->id());
@@ -393,7 +393,7 @@ function testTermReorder() {
       'terms[tid:' . $term1->id() . ':0][term][depth]' => 0,
       'terms[tid:' . $term1->id() . ':0][weight]' => 2,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     drupal_static_reset('taxonomy_get_tree');
     drupal_static_reset('taxonomy_get_treeparent');
@@ -403,9 +403,9 @@ function testTermReorder() {
     $this->assertEqual($terms[1]->parents, array($term2->id()), 'Term 3 was made a child of term 2.');
     $this->assertEqual($terms[2]->tid, $term1->id(), 'Term 1 was moved below term 2.');
 
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->id(), array(), t('Reset to alphabetical'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id(), array(), t('Reset to alphabetical'));
     // Submit confirmation form.
-    $this->drupalPost(NULL, array(), t('Reset to alphabetical'));
+    $this->drupalPostForm(NULL, array(), t('Reset to alphabetical'));
 
     drupal_static_reset('taxonomy_get_tree');
     drupal_static_reset('taxonomy_get_treeparent');
@@ -431,7 +431,7 @@ function testTermMultipleParentsInterface() {
       'parent[]' => array(0, $parent->id()),
     );
     // Save the new term.
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add', $edit, t('Save'));
 
     // Check that the term was successfully created.
     $terms = taxonomy_term_load_multiple_by_name($edit['name']);
@@ -525,13 +525,13 @@ function testReSavingTags() {
     $edit["title"] = $this->randomName(8);
     $edit["body[$langcode][0][value]"] = $this->randomName(16);
     $edit[$this->instance['field_name'] . '[' . $langcode . ']'] = $term->label();
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
 
     // Check that the term is displayed when editing and saving the node with no
     // changes.
     $this->clickLink(t('Edit'));
     $this->assertRaw($term->label(), 'Term is displayed when editing the node.');
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $this->assertRaw($term->label(), 'Term is displayed after saving the node with no changes.');
   }
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php
index d785f2f..cd64c82 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php
@@ -76,13 +76,13 @@ function testTaxonomyTokenReplacement() {
     $edit = array();
     $edit['name'] = '<blink>Blinking Text</blink>';
     $edit['parent[]'] = array($term1->id());
-    $this->drupalPost('taxonomy/term/' . $term2->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('taxonomy/term/' . $term2->id() . '/edit', $edit, t('Save'));
 
     // Create node with term2.
     $edit = array();
     $node = $this->drupalCreateNode(array('type' => 'article'));
     $edit[$this->field_name . '[' . $this->langcode . '][]'] = $term2->id();
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
 
     // Generate and test sanitized tokens for term1.
     $tests = array();
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php
index cb4a2a8..745dfcf 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php
@@ -60,7 +60,7 @@ function testVocabularyLanguage() {
     $edit['description'] = $this->randomName();
     $edit['langcode'] = 'aa';
     $edit['vid'] = $vid;
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Check the language on the edit page.
     $this->drupalGet('admin/structure/taxonomy/manage/' . $vid . '/edit');
@@ -69,7 +69,7 @@ function testVocabularyLanguage() {
     // Change the language and save again.
     $edit['langcode'] = 'bb';
     unset($edit['vid']);
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Check again the language on the edit page.
     $this->drupalGet('admin/structure/taxonomy/manage/' . $vid . '/edit');
@@ -89,7 +89,7 @@ function testVocabularyDefaultLanguageForTerms() {
       'default_language[language_show]' => TRUE,
     );
     $vid = $edit['vid'];
-    $this->drupalPost('admin/structure/taxonomy/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/add', $edit, t('Save'));
 
     // Check that the vocabulary was actually created.
     $this->drupalGet('admin/structure/taxonomy/manage/' . $edit['vid'] . '/edit');
@@ -109,7 +109,7 @@ function testVocabularyDefaultLanguageForTerms() {
       'default_language[langcode]' => 'aa',
       'default_language[language_show]' => FALSE,
     );
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $vid . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $vid . '/edit', $edit, t('Save'));
 
     // And check again the settings and also the interface.
     $language_settings = language_get_default_configuration('taxonomy_term', $vid);
@@ -126,7 +126,7 @@ function testVocabularyDefaultLanguageForTerms() {
       'default_language[langcode]' => 'authors_default',
       'default_language[language_show]' => FALSE,
     );
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $vid . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $vid . '/edit', $edit, t('Save'));
 
     // Check that we have the new settings.
     $new_settings = language_get_default_configuration('taxonomy_term', $vid);
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyPermissionsTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyPermissionsTest.php
index e127dbb..9b4611d 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyPermissionsTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyPermissionsTest.php
@@ -43,7 +43,7 @@ function testVocabularyPermissionsTaxonomyTerm() {
     $edit = array();
     $edit['name'] = $this->randomName();
 
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('Created new term %name.', array('%name' => $edit['name'])), 'Term created successfully.');
 
     $terms = taxonomy_term_load_multiple_by_name($edit['name']);
@@ -55,7 +55,7 @@ function testVocabularyPermissionsTaxonomyTerm() {
     $this->assertText($edit['name'], 'Edit taxonomy term form opened successfully.');
 
     $edit['name'] = $this->randomName();
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('Updated term %name.', array('%name' => $edit['name'])), 'Term updated successfully.');
 
     // Delete the vocabulary.
@@ -63,7 +63,7 @@ function testVocabularyPermissionsTaxonomyTerm() {
     $this->assertRaw(t('Are you sure you want to delete the term %name?', array('%name' => $edit['name'])), 'Delete taxonomy term form opened successfully.');
 
     // Confirm deletion.
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
     $this->assertRaw(t('Deleted term %name.', array('%name' => $edit['name'])), 'Term deleted.');
 
     // Test as user with "edit" permissions.
@@ -83,7 +83,7 @@ function testVocabularyPermissionsTaxonomyTerm() {
     $this->assertText($term->name->value, 'Edit taxonomy term form opened successfully.');
 
     $edit['name'] = $this->randomName();
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('Updated term %name.', array('%name' => $edit['name'])), 'Term updated successfully.');
 
     // Delete the vocabulary.
@@ -110,7 +110,7 @@ function testVocabularyPermissionsTaxonomyTerm() {
     $this->assertRaw(t('Are you sure you want to delete the term %name?', array('%name' => $term->label())), 'Delete taxonomy term form opened successfully.');
 
     // Confirm deletion.
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
     $this->assertRaw(t('Deleted term %name.', array('%name' => $term->label())), 'Term deleted.');
 
     // Test as user without proper permissions.
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyTest.php
index 413e2cc..f7d3f0e 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyTest.php
@@ -41,7 +41,7 @@ function testVocabularyInterface() {
     $edit['name'] = $this->randomName();
     $edit['description'] = $this->randomName();
     $edit['vid'] = $vid;
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('Created new vocabulary %name.', array('%name' => $edit['name'])), 'Vocabulary created successfully.');
 
     // Edit the vocabulary.
@@ -50,18 +50,18 @@ function testVocabularyInterface() {
     $this->clickLink(t('edit vocabulary'));
     $edit = array();
     $edit['name'] = $this->randomName();
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->drupalGet('admin/structure/taxonomy');
     $this->assertText($edit['name'], 'Vocabulary found in the vocabulary overview listing.');
 
     // Try to submit a vocabulary with a duplicate machine name.
     $edit['vid'] = $vid;
-    $this->drupalPost('admin/structure/taxonomy/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/add', $edit, t('Save'));
     $this->assertText(t('The machine-readable name is already in use. It must be unique.'));
 
     // Try to submit an invalid machine name.
     $edit['vid'] = '!&^%';
-    $this->drupalPost('admin/structure/taxonomy/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/add', $edit, t('Save'));
     $this->assertText(t('The machine-readable name must contain only lowercase letters, numbers, and underscores.'));
 
     // Ensure that vocabulary titles are escaped properly.
@@ -69,7 +69,7 @@ function testVocabularyInterface() {
     $edit['name'] = 'Don\'t Panic';
     $edit['description'] = $this->randomName();
     $edit['vid'] = 'don_t_panic';
-    $this->drupalPost('admin/structure/taxonomy/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/add', $edit, t('Save'));
 
     $site_name = \Drupal::config('system.site')->get('name');
     $this->assertTitle(t('Don\'t Panic | @site-name', array('@site-name' => $site_name)));
@@ -93,7 +93,7 @@ function testTaxonomyAdminChangingWeights() {
       $edit['vocabularies[' . $key . '][weight]'] = $weight;
     }
     // Saving the new weights via the interface.
-    $this->drupalPost('admin/structure/taxonomy', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy', $edit, t('Save'));
 
     // Load the vocabularies from the database.
     $this->container->get('entity.manager')->getStorageController('taxonomy_vocabulary')->resetCache();
@@ -132,7 +132,7 @@ function testTaxonomyAdminDeletingVocabulary() {
       'name' => $this->randomName(),
       'vid' => $vid,
     );
-    $this->drupalPost('admin/structure/taxonomy/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/taxonomy/add', $edit, t('Save'));
     $this->assertText(t('Created new vocabulary'), 'New vocabulary was created.');
 
     // Check the created vocabulary.
@@ -142,12 +142,12 @@ function testTaxonomyAdminDeletingVocabulary() {
 
     // Delete the vocabulary.
     $edit = array();
-    $this->drupalPost('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/edit', $edit, t('Delete'));
+    $this->drupalPostForm('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/edit', $edit, t('Delete'));
     $this->assertRaw(t('Are you sure you want to delete the vocabulary %name?', array('%name' => $vocabulary->name)), '[confirm deletion] Asks for confirmation.');
     $this->assertText(t('Deleting a vocabulary will delete all the terms in it. This action cannot be undone.'), '[confirm deletion] Inform that all terms will be deleted.');
 
     // Confirm deletion.
-    $this->drupalPost(NULL, NULL, t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
     $this->assertRaw(t('Deleted vocabulary %name.', array('%name' => $vocabulary->name)), 'Vocabulary deleted.');
     $this->container->get('entity.manager')->getStorageController('taxonomy_vocabulary')->resetCache();
     $this->assertFalse(entity_load('taxonomy_vocabulary', $vid), 'Vocabulary not found.');
diff --git a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php b/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php
index 8e290ba..799e9d3 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php
+++ b/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php
@@ -91,7 +91,7 @@ function testTelephoneField() {
       "field_telephone[und][0][value]" => "123456789",
     );
 
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw('<a href="tel:123456789">', 'A telephone link is provided on the article node page.');
 
     // Add number with a space in it. Need to ensure it is stripped on output.
@@ -100,7 +100,7 @@ function testTelephoneField() {
       "field_telephone[und][0][value]" => "1234 56789",
     );
 
-    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
     $this->assertRaw('<a href="tel:123456789">', 'Telephone link is output with whitespace removed.');
   }
 }
diff --git a/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php b/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
index 229615f..f6f201a 100644
--- a/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
+++ b/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
@@ -134,7 +134,7 @@ function _testTextfieldWidgets($field_type, $widget_type) {
       'name' => $this->randomName(),
       "{$this->field_name}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created');
@@ -191,7 +191,7 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
     $this->drupalLogin($this->admin_user);
     foreach (filter_formats() as $format) {
       if (!$format->isFallbackFormat()) {
-        $this->drupalPost('admin/config/content/formats/manage/' . $format->format . '/disable', array(), t('Disable'));
+        $this->drupalPostForm('admin/config/content/formats/manage/' . $format->format . '/disable', array(), t('Disable'));
       }
     }
     $this->drupalLogin($this->web_user);
@@ -209,7 +209,7 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
       'name' => $this->randomName(),
       "{$this->field_name}[$langcode][0][value]" => $value,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     preg_match('|entity_test/manage/(\d+)/edit|', $this->url, $match);
     $id = $match[1];
     $this->assertText(t('entity_test @id has been created.', array('@id' => $id)), 'Entity was created');
@@ -229,7 +229,7 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
       'format' => drupal_strtolower($this->randomName()),
       'name' => $this->randomName(),
     );
-    $this->drupalPost('admin/config/content/formats/add', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/content/formats/add', $edit, t('Save configuration'));
     filter_formats_reset();
     $this->checkPermissions(array(), TRUE);
     $format = entity_load('filter_format', $edit['format']);
@@ -252,7 +252,7 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
       'name' => $this->randomName(),
       "{$this->field_name}[$langcode][0][format]" => $format_id,
     );
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertText(t('entity_test @id has been updated.', array('@id' => $id)), 'Entity was updated');
 
     // Display the entity.
diff --git a/core/modules/toolbar/lib/Drupal/toolbar/Tests/ToolbarMenuTranslationTest.php b/core/modules/toolbar/lib/Drupal/toolbar/Tests/ToolbarMenuTranslationTest.php
index 949d565..7bfa0f2 100644
--- a/core/modules/toolbar/lib/Drupal/toolbar/Tests/ToolbarMenuTranslationTest.php
+++ b/core/modules/toolbar/lib/Drupal/toolbar/Tests/ToolbarMenuTranslationTest.php
@@ -45,7 +45,7 @@ function testToolbarClasses() {
 
     // Add Spanish.
     $edit['predefined_langcode'] = $langcode;
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
     // The menu item 'Structure' in the toolbar will be translated.
     $menu_item = 'Structure';
@@ -59,7 +59,7 @@ function testToolbarClasses() {
       'langcode' => $langcode,
       'translation' => 'untranslated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     // Make sure will be able to translate the menu item.
     $this->assertNoText('No strings available.', 'Search found the menu item as untranslated.');
 
@@ -74,7 +74,7 @@ function testToolbarClasses() {
     $edit = array(
       $lid => $menu_item_translated,
     );
-    $this->drupalPost('admin/config/regional/translate', $edit, t('Save translations'));
+    $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
 
     // Search for the translated menu item.
     $search = array(
@@ -82,7 +82,7 @@ function testToolbarClasses() {
       'langcode' => $langcode,
       'translation' => 'translated',
     );
-    $this->drupalPost('admin/config/regional/translate', $search, t('Filter'));
+    $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
     // Make sure the menu item string was translated.
     $this->assertText($menu_item_translated, 'Search found the menu item as translated: ' . $menu_item_translated . '.');
 
diff --git a/core/modules/tracker/lib/Drupal/tracker/Tests/TrackerTest.php b/core/modules/tracker/lib/Drupal/tracker/Tests/TrackerTest.php
index b11df97..03c6099 100644
--- a/core/modules/tracker/lib/Drupal/tracker/Tests/TrackerTest.php
+++ b/core/modules/tracker/lib/Drupal/tracker/Tests/TrackerTest.php
@@ -113,7 +113,7 @@ function testTrackerUser() {
       'subject' => $this->randomName(),
       'comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]' => $this->randomName(20),
     );
-    $this->drupalPost('comment/reply/' . $other_published_my_comment->id(), $comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $other_published_my_comment->id(), $comment, t('Save'));
 
     $this->drupalGet('user/' . $this->user->id() . '/track');
     $this->assertNoText($unpublished->label(), "Unpublished nodes do not show up in the users's tracker listing.");
@@ -124,7 +124,7 @@ function testTrackerUser() {
     // Verify that unpublished comments are removed from the tracker.
     $admin_user = $this->drupalCreateUser(array('post comments', 'administer comments', 'access user profiles'));
     $this->drupalLogin($admin_user);
-    $this->drupalPost('comment/1/edit', array('status' => COMMENT_NOT_PUBLISHED), t('Save'));
+    $this->drupalPostForm('comment/1/edit', array('status' => COMMENT_NOT_PUBLISHED), t('Save'));
     $this->drupalGet('user/' . $this->user->id() . '/track');
     $this->assertNoText($other_published_my_comment->label(), 'Unpublished comments are not counted on the tracker listing.');
   }
@@ -174,7 +174,7 @@ function testTrackerNewComments() {
       'comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]' => $this->randomName(20),
     );
     // The new comment is automatically viewed by the current user.
-    $this->drupalPost('comment/reply/' . $node->id(), $comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $node->id(), $comment, t('Save'));
 
     $this->drupalLogin($this->other_user);
     $this->drupalGet('tracker');
@@ -189,7 +189,7 @@ function testTrackerNewComments() {
     // If the comment is posted in the same second as the last one then Drupal
     // can't tell the difference, so we wait one second here.
     sleep(1);
-    $this->drupalPost('comment/reply/' . $node->id(), $comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $node->id(), $comment, t('Save'));
 
     $this->drupalLogin($this->user);
     $this->drupalGet('tracker');
@@ -219,7 +219,7 @@ function testTrackerCronIndexing() {
       'subject' => $this->randomName(),
       'comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]' => $this->randomName(20),
     );
-    $this->drupalPost('comment/reply/' . $nodes[3]->id(), $comment, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $nodes[3]->id(), $comment, t('Save'));
 
     // Start indexing backwards from node 3.
     \Drupal::state()->set('tracker.index_nid', 3);
@@ -275,7 +275,7 @@ function testTrackerAdminUnpublish() {
       'action' => 'node_unpublish_action',
       'node_bulk_form[0]' => $node->id(),
     );
-    $this->drupalPost('admin/content', $edit, t('Apply'));
+    $this->drupalPostForm('admin/content', $edit, t('Apply'));
 
     $this->drupalGet('tracker');
     $this->assertText(t('No content available.'), 'Node is displayed on the tracker listing pages.');
diff --git a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
index 072b3df..0020bfd 100644
--- a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
+++ b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
@@ -54,7 +54,7 @@ function setUp() {
     // translation.
     $this->drupalGet('admin/structure/types/manage/page');
     $edit = array('language_configuration[language_show]' => TRUE, 'node_type_language_translation_enabled' => TRUE);
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')), 'Basic page content type has been updated.');
 
     // Enable the language switcher block.
@@ -77,9 +77,9 @@ function testContentTranslation() {
     // Unpublish the original node to check that this has no impact on the
     // translation overview page, publish it again afterwards.
     $this->drupalLogin($this->admin_user);
-    $this->drupalPost('node/' . $node->id() . '/edit', array(), t('Save and unpublish'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', array(), t('Save and unpublish'));
     $this->drupalGet('node/' . $node->id() . '/translate');
-    $this->drupalPost('node/' . $node->id() . '/edit', array(), t('Save and publish'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', array(), t('Save and publish'));
     $this->drupalLogin($this->translator);
 
     // Check that the "add translation" link uses a localized path.
@@ -110,7 +110,7 @@ function testContentTranslation() {
     $langcode = Language::LANGCODE_NOT_SPECIFIED;
     $edit["title"] = $this->randomName();
     $edit["body[$langcode][0][value]"] = $this->randomName();
-    $this->drupalPost('node/add/page', $edit, t('Save'), array('query' => array('translation' => $node->id(), 'language' => 'es')));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'), array('query' => array('translation' => $node->id(), 'language' => 'es')));
     $duplicate = $this->drupalGetNodeByTitle($edit["title"]);
     $this->assertEqual($duplicate->tnid->value, 0, 'The node does not have a tnid.');
 
@@ -120,7 +120,7 @@ function testContentTranslation() {
     $edit = array();
     $edit["body[$langcode][0][value]"] = $node_body;
     $edit['translation[retranslate]'] = TRUE;
-    $this->drupalPost('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
     $this->assertRaw(t('Basic page %title has been updated.', array('%title' => $node_title)), 'Original node updated.');
 
     // Check to make sure that interface shows translation as outdated.
@@ -131,7 +131,7 @@ function testContentTranslation() {
     $edit = array();
     $edit["body[$langcode][0][value]"] = $this->randomName();
     $edit['translation[status]'] = FALSE;
-    $this->drupalPost('node/' . $node_translation->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('node/' . $node_translation->id() . '/edit', $edit, t('Save'));
     $this->assertRaw(t('Basic page %title has been updated.', array('%title' => $node_translation_title)), 'Translated node updated.');
 
     // Confirm that language neutral is an option for translators when there are
@@ -144,7 +144,7 @@ function testContentTranslation() {
     // Leave just one language installed and check that the translation overview
     // page is still accessible.
     $this->drupalLogin($this->admin_user);
-    $this->drupalPost('admin/config/regional/language/delete/es', array(), t('Delete'));
+    $this->drupalPostForm('admin/config/regional/language/delete/es', array(), t('Delete'));
     $this->drupalLogin($this->translator);
     $this->drupalGet('node/' . $node->id() . '/translate');
     $this->assertRaw(t('Translations of %title', array('%title' => $node->label())), 'Translation overview page available with only one language enabled.');
@@ -171,7 +171,7 @@ function testLanguageSwitchLinks() {
     // Unpublish the Spanish translation to check that the related language
     // switch link is not shown.
     $this->drupalLogin($this->admin_user);
-    $this->drupalPost('node/' . $translation_es->id() . '/edit', array(), t('Save and unpublish'));
+    $this->drupalPostForm('node/' . $translation_es->id() . '/edit', array(), t('Save and unpublish'));
     $this->drupalLogin($this->translator);
     $this->assertLanguageSwitchLinks($node, $translation_es, FALSE);
 
@@ -179,9 +179,9 @@ function testLanguageSwitchLinks() {
     // negotiation is configured.
     $this->drupalLogin($this->admin_user);
     $edit = array('language_interface[enabled][language-url]' => FALSE);
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
     $this->resetCaches();
-    $this->drupalPost('node/' . $translation_es->id() . '/edit', array(), t('Save and publish'));
+    $this->drupalPostForm('node/' . $translation_es->id() . '/edit', array(), t('Save and publish'));
     $this->drupalLogin($this->translator);
     $this->assertLanguageSwitchLinks($node, $translation_es, TRUE, 'node');
   }
@@ -232,7 +232,7 @@ function testLanguageSwitcherBlockIntegration() {
     // untouched only for new nodes.
     $this->drupalLogin($this->admin_user);
     $edit = array('language_configuration[language_show]' => FALSE, 'node_type_language_translation_enabled' => FALSE);
-    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
     $this->drupalLogin($this->translator);
 
     // Existing translations trigger alterations even if translation support is
@@ -317,7 +317,7 @@ function addLanguage($langcode) {
       // Doesn't have language installed so add it.
       $edit = array();
       $edit['predefined_langcode'] = $langcode;
-      $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
+      $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
 
       // Make sure we are not using a stale list.
       drupal_static_reset('language_list');
@@ -355,7 +355,7 @@ function createPage($title, $body, $langcode = NULL) {
     if (!empty($langcode)) {
       $edit['langcode'] = $langcode;
     }
-    $this->drupalPost('node/add/page', $edit, t('Save'));
+    $this->drupalPostForm('node/add/page', $edit, t('Save'));
     $this->assertRaw(t('Basic page %title has been created.', array('%title' => $title)), 'Basic page created.');
 
     // Check to make sure the node was created.
@@ -390,7 +390,7 @@ function createTranslation(EntityInterface $node, $title, $body, $langcode) {
     $edit = array();
     $edit["title"] = $title;
     $edit[$body_key] = $body;
-    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Save'));
     $this->assertRaw(t('Basic page %title has been created.', array('%title' => $title)), 'Translation created.');
 
     // Check to make sure that translation was successful.
diff --git a/core/modules/update/lib/Drupal/update/Tests/UpdateUploadTest.php b/core/modules/update/lib/Drupal/update/Tests/UpdateUploadTest.php
index 73a7b9c..e19fd06 100644
--- a/core/modules/update/lib/Drupal/update/Tests/UpdateUploadTest.php
+++ b/core/modules/update/lib/Drupal/update/Tests/UpdateUploadTest.php
@@ -47,7 +47,7 @@ public function testUploadModule() {
       'files[project_upload]' => $invalidArchiveFile->uri,
     );
     // This also checks that the correct archive extensions are allowed.
-    $this->drupalPost('admin/modules/install', $edit, t('Install'));
+    $this->drupalPostForm('admin/modules/install', $edit, t('Install'));
     $this->assertText(t('Only files with the following extensions are allowed: @archive_extensions.', array('@archive_extensions' => archiver_get_extensions())),'Only valid archives can be uploaded.');
 
     // Check to ensure an existing module can't be reinstalled. Also checks that
@@ -57,7 +57,7 @@ public function testUploadModule() {
     $edit = array(
       'files[project_upload]' => $validArchiveFile,
     );
-    $this->drupalPost('admin/modules/install', $edit, t('Install'));
+    $this->drupalPostForm('admin/modules/install', $edit, t('Install'));
     $this->assertText(t('@module_name is already installed.', array('@module_name' => 'AAA Update test')), 'Existing module was extracted and not reinstalled.');
   }
 
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php b/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php
index 05e5f53..865878a 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php
@@ -84,7 +84,7 @@ function testDisabledAccountLink() {
     $edit = array(
       (string) $input[0] => FALSE,
     );
-    $this->drupalPost('admin/structure/menu/manage/account', $edit, t('Save'));
+    $this->drupalPostForm('admin/structure/menu/manage/account', $edit, t('Save'));
 
     // Get the homepage.
     $this->drupalGet('<front>');
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php b/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php
index 077eeed..1f28492 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php
@@ -84,7 +84,7 @@ function testUserAdmin() {
     $edit = array();
     $edit['action'] = 'user_block_user_action';
     $edit['user_bulk_form[1]'] = TRUE;
-    $this->drupalPost('admin/people', $edit, t('Apply'));
+    $this->drupalPostForm('admin/people', $edit, t('Apply'));
     $account = user_load($user_c->id(), TRUE);
     $this->assertTrue($account->isBlocked(), 'User C blocked');
 
@@ -98,7 +98,7 @@ function testUserAdmin() {
     $editunblock = array();
     $editunblock['action'] = 'user_unblock_user_action';
     $editunblock['user_bulk_form[1]'] = TRUE;
-    $this->drupalPost('admin/people', $editunblock, t('Apply'));
+    $this->drupalPostForm('admin/people', $editunblock, t('Apply'));
     $account = user_load($user_c->id(), TRUE);
     $this->assertTrue($account->isActive(), 'User C unblocked');
     $this->assertMail("to", $account->getEmail(), "Activation mail sent to user C");
@@ -106,10 +106,10 @@ function testUserAdmin() {
     // Test blocking and unblocking another user from /user/[uid]/edit form and sending of activation mail
     $user_d = $this->drupalCreateUser(array());
     $account1 = user_load($user_d->id(), TRUE);
-    $this->drupalPost('user/' . $account1->id() . '/edit', array('status' => 0), t('Save'));
+    $this->drupalPostForm('user/' . $account1->id() . '/edit', array('status' => 0), t('Save'));
     $account1 = user_load($user_d->id(), TRUE);
     $this->assertTrue($account1->isBlocked(), 'User D blocked');
-    $this->drupalPost('user/' . $account1->id() . '/edit', array('status' => TRUE), t('Save'));
+    $this->drupalPostForm('user/' . $account1->id() . '/edit', array('status' => TRUE), t('Save'));
     $account1 = user_load($user_d->id(), TRUE);
     $this->assertTrue($account1->isActive(), 'User D unblocked');
     $this->assertMail("to", $account1->getEmail(), "Activation mail sent to user D");
@@ -145,7 +145,7 @@ function testNotificationEmailAddress() {
     $edit = array();
     $edit['name'] = $name = $this->randomName();
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $subject = 'Account details for ' . $edit['name'] . ' at ' . $system->get('name') . ' (pending admin approval)';
     // Ensure that admin notification mail is sent to the configured
     // Notification E-mail address.
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserBlocksTests.php b/core/modules/user/lib/Drupal/user/Tests/UserBlocksTests.php
index 165b042..1693374 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserBlocksTests.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserBlocksTests.php
@@ -56,7 +56,7 @@ function testUserLoginBlock() {
     $edit = array();
     $edit['name'] = $user->getUsername();
     $edit['pass'] = $user->pass_raw;
-    $this->drupalPost('admin/people/permissions', $edit, t('Log in'));
+    $this->drupalPostForm('admin/people/permissions', $edit, t('Log in'));
     $this->assertNoText(t('User login'), 'Logged in.');
 
     // Check that we are still on the same page.
@@ -64,14 +64,14 @@ function testUserLoginBlock() {
 
     // Now, log out and repeat with a non-403 page.
     $this->drupalLogout();
-    $this->drupalPost('filter/tips', $edit, t('Log in'));
+    $this->drupalPostForm('filter/tips', $edit, t('Log in'));
     $this->assertNoText(t('User login'), 'Logged in.');
     $this->assertPattern('!<title.*?' . t('Compose tips') . '.*?</title>!', 'Still on the same page after login for allowed page');
 
     // Check that the user login block is not vulnerable to information
     // disclosure to third party sites.
     $this->drupalLogout();
-    $this->drupalPost('http://example.com/', $edit, t('Log in'), array('external' => FALSE));
+    $this->drupalPostForm('http://example.com/', $edit, t('Log in'), array('external' => FALSE));
     // Check that we remain on the site after login.
     $this->assertEqual(url('user/' . $user->id(), array('absolute' => TRUE)), $this->getUrl(), 'Redirected to user profile page after login from the frontpage');
   }
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserCancelTest.php b/core/modules/user/lib/Drupal/user/Tests/UserCancelTest.php
index af8d8c9..5dad5d4 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserCancelTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserCancelTest.php
@@ -92,7 +92,7 @@ function testUserCancelUid1() {
       'action' => 'user_cancel_user_action',
       'user_bulk_form[0]' => TRUE,
     );
-    $this->drupalPost('admin/people', $edit, t('Apply'));
+    $this->drupalPostForm('admin/people', $edit, t('Apply'));
 
     // Verify that uid 1's account was not cancelled.
     $user1 = user_load(1, TRUE);
@@ -115,11 +115,11 @@ function testUserCancelInvalid() {
     $node = $this->drupalCreateNode(array('uid' => $account->id()));
 
     // Attempt to cancel account.
-    $this->drupalPost('user/' . $account->id() . '/edit', NULL, t('Cancel account'));
+    $this->drupalPostForm('user/' . $account->id() . '/edit', NULL, t('Cancel account'));
 
     // Confirm account cancellation.
     $timestamp = time();
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('A confirmation request to cancel your account has been sent to your e-mail address.'), 'Account cancellation request mailed message displayed.');
 
     // Attempt bogus account cancellation request confirmation.
@@ -156,7 +156,7 @@ function testUserBlock() {
 
     // Attempt to cancel account.
     $this->drupalGet('user/' . $account->id() . '/edit');
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('Are you sure you want to cancel your account?'), 'Confirmation form to cancel account displayed.');
     $this->assertText(t('Your account will be blocked and you will no longer be able to log in. All of your content will remain attributed to your user name.'), 'Informs that all content will be remain as is.');
     $this->assertNoText(t('Select the method to cancel the account above.'), 'Does not allow user to select account cancellation method.');
@@ -164,7 +164,7 @@ function testUserBlock() {
     // Confirm account cancellation.
     $timestamp = time();
 
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('A confirmation request to cancel your account has been sent to your e-mail address.'), 'Account cancellation request mailed message displayed.');
 
     // Confirm account cancellation request.
@@ -196,13 +196,13 @@ function testUserBlockUnpublish() {
 
     // Attempt to cancel account.
     $this->drupalGet('user/' . $account->id() . '/edit');
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('Are you sure you want to cancel your account?'), 'Confirmation form to cancel account displayed.');
     $this->assertText(t('Your account will be blocked and you will no longer be able to log in. All of your content will be hidden from everyone but administrators.'), 'Informs that all content will be unpublished.');
 
     // Confirm account cancellation.
     $timestamp = time();
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('A confirmation request to cancel your account has been sent to your e-mail address.'), 'Account cancellation request mailed message displayed.');
 
     // Confirm account cancellation request.
@@ -246,13 +246,13 @@ function testUserAnonymize() {
 
     // Attempt to cancel account.
     $this->drupalGet('user/' . $account->id() . '/edit');
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('Are you sure you want to cancel your account?'), 'Confirmation form to cancel account displayed.');
     $this->assertRaw(t('Your account will be removed and all account information deleted. All of your content will be assigned to the %anonymous-name user.', array('%anonymous-name' => \Drupal::config('user.settings')->get('anonymous'))), 'Informs that all content will be attributed to anonymous account.');
 
     // Confirm account cancellation.
     $timestamp = time();
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('A confirmation request to cancel your account has been sent to your e-mail address.'), 'Account cancellation request mailed message displayed.');
 
     // Confirm account cancellation request.
@@ -294,8 +294,8 @@ function testUserDelete() {
     $edit['subject'] = $this->randomName(8);
     $edit['comment_body[' . $langcode . '][0][value]'] = $this->randomName(16);
 
-    $this->drupalPost('comment/reply/' . $node->id(), $edit, t('Preview'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm('comment/reply/' . $node->id(), $edit, t('Preview'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $this->assertText(t('Your comment has been posted.'));
     $comments = entity_load_multiple_by_properties('comment', array('subject' => $edit['subject']));
     $comment = reset($comments);
@@ -312,13 +312,13 @@ function testUserDelete() {
 
     // Attempt to cancel account.
     $this->drupalGet('user/' . $account->id() . '/edit');
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('Are you sure you want to cancel your account?'), 'Confirmation form to cancel account displayed.');
     $this->assertText(t('Your account will be removed and all account information deleted. All of your content will also be deleted.'), 'Informs that all content will be deleted.');
 
     // Confirm account cancellation.
     $timestamp = time();
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertText(t('A confirmation request to cancel your account has been sent to your e-mail address.'), 'Account cancellation request mailed message displayed.');
 
     // Confirm account cancellation request.
@@ -350,12 +350,12 @@ function testUserCancelByAdmin() {
 
     // Delete regular user.
     $this->drupalGet('user/' . $account->id() . '/edit');
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertRaw(t('Are you sure you want to cancel the account %name?', array('%name' => $account->getUsername())), 'Confirmation form to cancel account displayed.');
     $this->assertText(t('Select the method to cancel the account above.'), 'Allows to select account cancellation method.');
 
     // Confirm deletion.
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertRaw(t('%name has been deleted.', array('%name' => $account->getUsername())), 'User deleted.');
     $this->assertFalse(user_load($account->id()), 'User is not found in the database.');
   }
@@ -378,12 +378,12 @@ function testUserWithoutEmailCancelByAdmin() {
 
     // Delete regular user without e-mail address.
     $this->drupalGet('user/' . $account->id() . '/edit');
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertRaw(t('Are you sure you want to cancel the account %name?', array('%name' => $account->getUsername())), 'Confirmation form to cancel account displayed.');
     $this->assertText(t('Select the method to cancel the account above.'), 'Allows to select account cancellation method.');
 
     // Confirm deletion.
-    $this->drupalPost(NULL, NULL, t('Cancel account'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel account'));
     $this->assertRaw(t('%name has been deleted.', array('%name' => $account->getUsername())), 'User deleted.');
     $this->assertFalse(user_load($account->id()), 'User is not found in the database.');
   }
@@ -414,14 +414,14 @@ function testMassUserCancelByAdmin() {
     for ($i = 0; $i <= 4; $i++) {
       $edit['user_bulk_form[' . $i . ']'] = TRUE;
     }
-    $this->drupalPost('admin/people', $edit, t('Apply'));
+    $this->drupalPostForm('admin/people', $edit, t('Apply'));
     $this->assertText(t('Are you sure you want to cancel these user accounts?'), 'Confirmation form to cancel accounts displayed.');
     $this->assertText(t('When cancelling these accounts'), 'Allows to select account cancellation method.');
     $this->assertText(t('Require e-mail confirmation to cancel account.'), 'Allows to send confirmation mail.');
     $this->assertText(t('Notify user when account is canceled.'), 'Allows to send notification mail.');
 
     // Confirm deletion.
-    $this->drupalPost(NULL, NULL, t('Cancel accounts'));
+    $this->drupalPostForm(NULL, NULL, t('Cancel accounts'));
     $status = TRUE;
     foreach ($users as $account) {
       $status = $status && (strpos($this->content, t('%name has been deleted.', array('%name' => $account->getUsername()))) !== FALSE);
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserCreateFailMailTest.php b/core/modules/user/lib/Drupal/user/Tests/UserCreateFailMailTest.php
index be4fb7b..6909667 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserCreateFailMailTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserCreateFailMailTest.php
@@ -47,7 +47,7 @@ protected function testUserAdd() {
       'pass[pass2]' => $pass,
       'notify' => TRUE,
     );
-    $this->drupalPost('admin/people/create', $edit, t('Create new account'));
+    $this->drupalPostForm('admin/people/create', $edit, t('Create new account'));
 
     $this->assertText(t('Unable to send e-mail. Contact the site administrator if the problem persists.'));
     $this->assertNoText(t('A welcome message with further instructions has been e-mailed to the new user @name.', array('@name' => $edit['name'])));
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php b/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php
index 8458886..8d13347 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php
@@ -102,7 +102,7 @@ protected function testUserAdd() {
         'pass[pass2]' => $pass,
         'notify' => $notify,
       );
-      $this->drupalPost('admin/people/create', $edit, t('Create new account'));
+      $this->drupalPostForm('admin/people/create', $edit, t('Create new account'));
 
       if ($notify) {
         $this->assertText(t('A welcome message with further instructions has been e-mailed to the new user @name.', array('@name' => $edit['name'])), 'User created');
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserEditTest.php b/core/modules/user/lib/Drupal/user/Tests/UserEditTest.php
index 548c0c7..105fdea 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserEditTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserEditTest.php
@@ -33,42 +33,42 @@ function testUserEdit() {
 
     // Test that error message appears when attempting to use a non-unique user name.
     $edit['name'] = $user2->getUsername();
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertRaw(t('The name %name is already taken.', array('%name' => $edit['name'])));
 
     // Check that filling out a single password field does not validate.
     $edit = array();
     $edit['pass[pass1]'] = '';
     $edit['pass[pass2]'] = $this->randomName();
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertText(t("The specified passwords do not match."), 'Typing mismatched passwords displays an error message.');
 
     $edit['pass[pass1]'] = $this->randomName();
     $edit['pass[pass2]'] = '';
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertText(t("The specified passwords do not match."), 'Typing mismatched passwords displays an error message.');
 
     // Test that the error message appears when attempting to change the mail or
     // pass without the current password.
     $edit = array();
     $edit['mail'] = $this->randomName() . '@new.example.com';
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertRaw(t("Your current password is missing or incorrect; it's required to change the %name.", array('%name' => t('E-mail address'))));
 
     $edit['current_pass'] = $user1->pass_raw;
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertRaw(t("The changes have been saved."));
 
     // Test that the user must enter current password before changing passwords.
     $edit = array();
     $edit['pass[pass1]'] = $new_pass = $this->randomName();
     $edit['pass[pass2]'] = $new_pass;
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertRaw(t("Your current password is missing or incorrect; it's required to change the %name.", array('%name' => t('Password'))));
 
     // Try again with the current password.
     $edit['current_pass'] = $user1->pass_raw;
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertRaw(t("The changes have been saved."));
 
     // Make sure the user can log in with their new password.
@@ -82,11 +82,11 @@ function testUserEdit() {
     $this->drupalLogin($user1);
 
     $config->set('password_strength', TRUE)->save();
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertRaw(t('Password strength:'), 'The password strength indicator is displayed.');
 
     $config->set('password_strength', FALSE)->save();
-    $this->drupalPost("user/" . $user1->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", $edit, t('Save'));
     $this->assertNoRaw(t('Password strength:'), 'The password strength indicator is not displayed.');
   }
 
@@ -102,7 +102,7 @@ function testUserWithoutEmailEdit() {
     // This user has no e-mail address.
     $user1->mail = '';
     $user1->save();
-    $this->drupalPost("user/" . $user1->id() . "/edit", array('mail' => ''), t('Save'));
+    $this->drupalPostForm("user/" . $user1->id() . "/edit", array('mail' => ''), t('Save'));
     $this->assertRaw(t("The changes have been saved."));
   }
 }
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php b/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php
index 3647e69..151ba88 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php
@@ -34,7 +34,7 @@ function testUserEditedOwnAccount() {
     // Change own username.
     $edit = array();
     $edit['name'] = $this->randomName();
-    $this->drupalPost('user/' . $account->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('user/' . $account->id() . '/edit', $edit, t('Save'));
 
     // Log out.
     $this->drupalLogout();
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php
index 1363824..dbf80e4 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php
@@ -47,7 +47,7 @@ function testLocalUserCreation() {
     $edit = array(
       'language_interface[enabled][language-url]' => TRUE,
     );
-    $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
+    $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
     $this->assertText(t('Language negotiation configuration saved.'), 'Set language negotiation.');
 
     // Check if the language selector is available on admin/people/create and
@@ -65,7 +65,7 @@ function testLocalUserCreation() {
       'pass[pass2]' => $username,
     );
 
-    $this->drupalPost($langcode . '/admin/people/create', $edit, t('Create new account'));
+    $this->drupalPostForm($langcode . '/admin/people/create', $edit, t('Create new account'));
 
     $user = user_load_by_name($username);
     $this->assertEqual($user->getPreferredLangcode(), $langcode, 'New user has correct preferred language set.');
@@ -83,7 +83,7 @@ function testLocalUserCreation() {
       'mail' => $this->randomName(4) . '@example.com',
     );
 
-    $this->drupalPost($langcode . '/user/register', $edit, t('Create new account'));
+    $this->drupalPostForm($langcode . '/user/register', $edit, t('Create new account'));
 
     $user = user_load_by_name($username);
     $this->assertEqual($user->getPreferredLangcode(), $langcode, 'New user has correct preferred language set.');
@@ -104,7 +104,7 @@ function testLocalUserCreation() {
       'pass[pass2]' => $user->pass_raw,
     );
 
-    $this->drupalPost($user_edit, $edit, t('Save'));
+    $this->drupalPostForm($user_edit, $edit, t('Save'));
 
     $this->drupalLogin($user);
     $this->drupalGet($user_edit);
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserLanguageTest.php b/core/modules/user/lib/Drupal/user/Tests/UserLanguageTest.php
index e2adf72..17e48c6 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserLanguageTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserLanguageTest.php
@@ -52,7 +52,7 @@ function testUserLanguageConfiguration() {
       'name' => $name,
       'direction' => '0',
     );
-    $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language'));
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
     $this->drupalLogout();
 
     // Login as normal user and edit account settings.
@@ -67,7 +67,7 @@ function testUserLanguageConfiguration() {
     $edit = array(
       'preferred_langcode' => $langcode,
     );
-    $this->drupalPost($path, $edit, t('Save'));
+    $this->drupalPostForm($path, $edit, t('Save'));
     // Ensure form was submitted successfully.
     $this->assertText(t('The changes have been saved.'), 'Changes were saved.');
     // Check if language was changed.
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserLoginTest.php b/core/modules/user/lib/Drupal/user/Tests/UserLoginTest.php
index fa657c9..1b75930 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserLoginTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserLoginTest.php
@@ -145,7 +145,7 @@ function assertFailedLogin($account, $flood_trigger = NULL) {
       'name' => $account->getUsername(),
       'pass' => $account->pass_raw,
     );
-    $this->drupalPost('user', $edit, t('Log in'));
+    $this->drupalPostForm('user', $edit, t('Log in'));
     $this->assertNoFieldByXPath("//input[@name='pass' and @value!='']", NULL, 'Password value attribute is blank.');
     if (isset($flood_trigger)) {
       if ($flood_trigger == 'user') {
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserPasswordResetTest.php b/core/modules/user/lib/Drupal/user/Tests/UserPasswordResetTest.php
index 3a11909..f8635fd 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserPasswordResetTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserPasswordResetTest.php
@@ -57,14 +57,14 @@ function testUserPasswordReset() {
     $this->drupalGet('user/password');
 
     $edit = array('name' => $this->randomName(32));
-    $this->drupalPost(NULL, $edit, t('E-mail new password'));
+    $this->drupalPostForm(NULL, $edit, t('E-mail new password'));
 
     $this->assertText(t('Sorry, @name is not recognized as a username or an e-mail address.', array('@name' => $edit['name'])), 'Validation error message shown when trying to request password for invalid account.');
     $this->assertEqual(count($this->drupalGetMails(array('id' => 'user_password_reset'))), 0, 'No e-mail was sent when requesting a password for an invalid account.');
 
     // Reset the password by username via the password reset page.
     $edit['name'] = $this->account->getUsername();
-    $this->drupalPost(NULL, $edit, t('E-mail new password'));
+    $this->drupalPostForm(NULL, $edit, t('E-mail new password'));
 
      // Verify that the user was sent an e-mail.
     $this->assertMail('to', $this->account->getEmail(), 'Password e-mail sent to user.');
@@ -79,7 +79,7 @@ function testUserPasswordReset() {
     $this->assertText(t('This login can be used only once.'), 'Found warning about one-time login.');
 
     // Check successful login.
-    $this->drupalPost(NULL, NULL, t('Log in'));
+    $this->drupalPostForm(NULL, NULL, t('Log in'));
     $this->assertLink(t('Log out'));
     $this->assertTitle(t('@name | @site', array('@name' => $this->account->getUsername(), '@site' => \Drupal::config('system.site')->get('name'))), 'Logged in using password reset link.');
 
@@ -93,7 +93,7 @@ function testUserPasswordReset() {
     // Count email messages before to compare with after.
     $before = count($this->drupalGetMails(array('id' => 'user_password_reset')));
     $edit['name'] = $this->account->getEmail();
-    $this->drupalPost(NULL, $edit, t('E-mail new password'));
+    $this->drupalPostForm(NULL, $edit, t('E-mail new password'));
     $this->assertTrue( count($this->drupalGetMails(array('id' => 'user_password_reset'))) === $before + 1, 'E-mail sent when requesting password reset using e-mail address.');
 
     // Create a password reset link as if the request time was 60 seconds older than the allowed limit.
@@ -126,7 +126,7 @@ public function testUserResetPasswordTextboxFilled() {
       'name' => $this->randomName(),
       'pass' => $this->randomName(),
     );
-    $this->drupalPost('user', $edit, t('Log in'));
+    $this->drupalPostForm('user', $edit, t('Log in'));
     $this->assertRaw(t('Sorry, unrecognized username or password. <a href="@password">Have you forgotten your password?</a>',
       array('@password' => url('user/password', array('query' => array('name' => $edit['name']))))));
     unset($edit['pass']);
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php b/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php
index 857f0b6..48ce623 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php
@@ -45,7 +45,7 @@ function testUserPermissionChanges() {
     $this->assertFalse(user_access('administer nodes', $account), 'User does not have "administer nodes" permission.');
     $edit = array();
     $edit[$rid . '[administer nodes]'] = TRUE;
-    $this->drupalPost('admin/people/permissions', $edit, t('Save permissions'));
+    $this->drupalPostForm('admin/people/permissions', $edit, t('Save permissions'));
     $this->assertText(t('The changes have been saved.'), 'Successful save message displayed.');
     $storage_controller = $this->container->get('entity.manager')->getStorageController('user_role');
     $storage_controller->resetCache();
@@ -55,7 +55,7 @@ function testUserPermissionChanges() {
     $this->assertTrue(user_access('access user profiles', $account), 'User has "access user profiles" permission.');
     $edit = array();
     $edit[$rid . '[access user profiles]'] = FALSE;
-    $this->drupalPost('admin/people/permissions', $edit, t('Save permissions'));
+    $this->drupalPostForm('admin/people/permissions', $edit, t('Save permissions'));
     $this->assertText(t('The changes have been saved.'), 'Successful save message displayed.');
     $storage_controller->resetCache();
     $this->assertFalse(user_access('access user profiles', $account), 'User no longer has "access user profiles" permission.');
@@ -71,7 +71,7 @@ function testAdministratorRole() {
     // Set the user's role to be the administrator role.
     $edit = array();
     $edit['user_admin_role'] = $this->rid;
-    $this->drupalPost('admin/config/people/accounts', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/config/people/accounts', $edit, t('Save configuration'));
 
     // Enable aggregator module and ensure the 'administer news feeds'
     // permission is assigned by default.
@@ -79,7 +79,7 @@ function testAdministratorRole() {
     $edit['modules[Core][aggregator][enable]'] = TRUE;
     // Aggregator depends on file module, enable that as well.
     $edit['modules[Core][file][enable]'] = TRUE;
-    $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/modules', $edit, t('Save configuration'));
     $this->assertTrue(user_access('administer news feeds', $this->admin_user), 'The permission was automatically assigned to the administrator role');
   }
 
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php b/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php
index 4b79760..f6dc0e0 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php
@@ -65,8 +65,8 @@ function testCreateDeletePicture() {
 
     // Delete the picture.
     $edit = array();
-    $this->drupalPost('user/' . $this->web_user->id() . '/edit', $edit, t('Remove'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm('user/' . $this->web_user->id() . '/edit', $edit, t('Remove'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     // Call system_cron() to clean up the file. Make sure the timestamp
     // of the file is older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
@@ -113,7 +113,7 @@ function testPictureOnNodeComment() {
     $edit = array(
       'comment_body[' . Language::LANGCODE_NOT_SPECIFIED . '][0][value]' => $this->randomString(),
     );
-    $this->drupalPost('comment/reply/' . $node->id(), $edit, t('Save'));
+    $this->drupalPostForm('comment/reply/' . $node->id(), $edit, t('Save'));
     $this->assertRaw(file_uri_target($file->getFileUri()), 'User picture found on comment.');
 
     // Disable user pictures on comments and nodes.
@@ -131,7 +131,7 @@ function testPictureOnNodeComment() {
    */
   function saveUserPicture($image) {
     $edit = array('files[user_picture_und_0]' => drupal_realpath($image->uri));
-    $this->drupalPost('user/' . $this->web_user->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('user/' . $this->web_user->id() . '/edit', $edit, t('Save'));
 
     // Load actual user data from database.
     $account = user_load($this->web_user->id(), TRUE);
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php
index 0318e74..5b5ce26 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php
@@ -42,7 +42,7 @@ function testRegistrationWithEmailVerification() {
     $edit = array();
     $edit['name'] = $name = $this->randomName();
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $this->assertText(t('A welcome message with further instructions has been sent to your e-mail address.'), 'User registered successfully.');
     $accounts = entity_load_multiple_by_properties('user', array('name' => $name, 'mail' => $mail));
     $new_user = reset($accounts);
@@ -53,7 +53,7 @@ function testRegistrationWithEmailVerification() {
     $edit = array();
     $edit['name'] = $name = $this->randomName();
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $this->container->get('entity.manager')->getStorageController('user')->resetCache();
     $accounts = entity_load_multiple_by_properties('user', array('name' => $name, 'mail' => $mail));
     $new_user = reset($accounts);
@@ -76,13 +76,13 @@ function testRegistrationWithoutEmailVerification() {
     // Try entering a mismatching password.
     $edit['pass[pass1]'] = '99999.0';
     $edit['pass[pass2]'] = '99999';
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $this->assertText(t('The specified passwords do not match.'), 'Typing mismatched passwords displays an error message.');
 
     // Enter a correct password.
     $edit['pass[pass1]'] = $new_pass = $this->randomName();
     $edit['pass[pass2]'] = $new_pass;
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $this->container->get('entity.manager')->getStorageController('user')->resetCache();
     $accounts = entity_load_multiple_by_properties('user', array('name' => $name, 'mail' => $mail));
     $new_user = reset($accounts);
@@ -96,7 +96,7 @@ function testRegistrationWithoutEmailVerification() {
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
     $edit['pass[pass1]'] = $pass = $this->randomName();
     $edit['pass[pass2]'] = $pass;
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $this->assertText(t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.'), 'Users are notified of pending approval');
 
     // Try to login before administrator approval.
@@ -104,7 +104,7 @@ function testRegistrationWithoutEmailVerification() {
       'name' => $name,
       'pass' => $pass,
     );
-    $this->drupalPost('user/login', $auth, t('Log in'));
+    $this->drupalPostForm('user/login', $auth, t('Log in'));
     $this->assertText(t('The username @name has not been activated or is blocked.', array('@name' => $name)), 'User cannot login yet.');
 
     // Activate the new account.
@@ -115,11 +115,11 @@ function testRegistrationWithoutEmailVerification() {
     $edit = array(
       'status' => 1,
     );
-    $this->drupalPost('user/' . $new_user->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('user/' . $new_user->id() . '/edit', $edit, t('Save'));
     $this->drupalLogout();
 
     // Login after administrator approval.
-    $this->drupalPost('user/login', $auth, t('Log in'));
+    $this->drupalPostForm('user/login', $auth, t('Log in'));
     $this->assertText(t('Member for'), 'User can log in after administrator approval.');
   }
 
@@ -139,13 +139,13 @@ function testRegistrationEmailDuplicates() {
     $edit['mail'] = $duplicate_user->getEmail();
 
     // Attempt to create a new account using an existing e-mail address.
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->getEmail())), 'Supplying an exact duplicate email address displays an error message');
 
     // Attempt to bypass duplicate email registration validation by adding spaces.
     $edit['mail'] = '   ' . $duplicate_user->getEmail() . '   ';
 
-    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $this->drupalPostForm('user/register', $edit, t('Create new account'));
     $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->getEmail())), 'Supplying a duplicate email address with added whitespace displays an error message');
   }
 
@@ -173,7 +173,7 @@ function testRegistrationDefaultValues() {
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
     $edit['pass[pass1]'] = $new_pass = $this->randomName();
     $edit['pass[pass2]'] = $new_pass;
-    $this->drupalPost(NULL, $edit, t('Create new account'));
+    $this->drupalPostForm(NULL, $edit, t('Create new account'));
 
     // Check user fields.
     $accounts = entity_load_multiple_by_properties('user', array('name' => $name, 'mail' => $mail));
@@ -232,17 +232,17 @@ function testRegistrationWithUserFields() {
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
     // Missing input in required field.
     $edit['test_user_field[und][0][value]'] = '';
-    $this->drupalPost(NULL, $edit, t('Create new account'));
+    $this->drupalPostForm(NULL, $edit, t('Create new account'));
     $this->assertRaw(t('@name field is required.', array('@name' => $instance->label())), 'Field validation error was correctly reported.');
     // Invalid input.
     $edit['test_user_field[und][0][value]'] = '-1';
-    $this->drupalPost(NULL, $edit, t('Create new account'));
+    $this->drupalPostForm(NULL, $edit, t('Create new account'));
     $this->assertRaw(t('%name does not accept the value -1.', array('%name' => $instance->label())), 'Field validation error was correctly reported.');
 
     // Submit with valid data.
     $value = rand(1, 255);
     $edit['test_user_field[und][0][value]'] = $value;
-    $this->drupalPost(NULL, $edit, t('Create new account'));
+    $this->drupalPostForm(NULL, $edit, t('Create new account'));
     // Check user fields.
     $accounts = entity_load_multiple_by_properties('user', array('name' => $name, 'mail' => $mail));
     $new_user = reset($accounts);
@@ -258,19 +258,19 @@ function testRegistrationWithUserFields() {
       $edit = array();
       $edit['test_user_field[und][0][value]'] = $value;
       if ($js == 'js') {
-        $this->drupalPostAJAX(NULL, $edit, 'test_user_field_add_more');
-        $this->drupalPostAJAX(NULL, $edit, 'test_user_field_add_more');
+        $this->drupalPostAjaxForm(NULL, $edit, 'test_user_field_add_more');
+        $this->drupalPostAjaxForm(NULL, $edit, 'test_user_field_add_more');
       }
       else {
-        $this->drupalPost(NULL, $edit, t('Add another item'));
-        $this->drupalPost(NULL, $edit, t('Add another item'));
+        $this->drupalPostForm(NULL, $edit, t('Add another item'));
+        $this->drupalPostForm(NULL, $edit, t('Add another item'));
       }
       // Submit with three values.
       $edit['test_user_field[und][1][value]'] = $value + 1;
       $edit['test_user_field[und][2][value]'] = $value + 2;
       $edit['name'] = $name = $this->randomName();
       $edit['mail'] = $mail = $edit['name'] . '@example.com';
-      $this->drupalPost(NULL, $edit, t('Create new account'));
+      $this->drupalPostForm(NULL, $edit, t('Create new account'));
       // Check user fields.
       $accounts = entity_load_multiple_by_properties('user', array('name' => $name, 'mail' => $mail));
       $new_user = reset($accounts);
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserRoleAdminTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRoleAdminTest.php
index 1493829..ba2a4b3 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserRoleAdminTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserRoleAdminTest.php
@@ -39,7 +39,7 @@ function testRoleAdministration() {
     // correctly distinguish between role names and IDs.)
     $role_name = '123';
     $edit = array('label' => $role_name, 'id' => $role_name);
-    $this->drupalPost('admin/people/roles/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/people/roles/add', $edit, t('Save'));
     $this->assertRaw(t('Role %label has been added.', array('%label' => 123)));
     $role = entity_load('user_role', $role_name);
     $this->assertTrue(is_object($role), 'The role was successfully retrieved from the database.');
@@ -48,21 +48,21 @@ function testRoleAdministration() {
     $this->assertEqual($role->langcode, $default_langcode);
 
     // Try adding a duplicate role.
-    $this->drupalPost('admin/people/roles/add', $edit, t('Save'));
+    $this->drupalPostForm('admin/people/roles/add', $edit, t('Save'));
     $this->assertRaw(t('The machine-readable name is already in use. It must be unique.'), 'Duplicate role warning displayed.');
 
     // Test renaming a role.
     $old_name = $role_name;
     $role_name = '456';
     $edit = array('label' => $role_name);
-    $this->drupalPost("admin/people/roles/manage/{$role->id()}", $edit, t('Save'));
+    $this->drupalPostForm("admin/people/roles/manage/{$role->id()}", $edit, t('Save'));
     $this->assertRaw(t('Role %label has been updated.', array('%label' => $role_name)));
     $new_role = entity_load('user_role', $old_name);
     $this->assertEqual($new_role->label(), $role_name, 'The role name has been successfully changed.');
 
     // Test deleting a role.
-    $this->drupalPost("admin/people/roles/manage/{$role->id()}", array(), t('Delete'));
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm("admin/people/roles/manage/{$role->id()}", array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     $this->assertRaw(t('Role %label has been deleted.', array('%label' => $role_name)));
     $this->assertNoLinkByHref("admin/people/roles/manage/{$role->id()}", 'Role edit link removed.');
     $this->assertFalse(entity_load('user_role', $role_name), 'A deleted role can no longer be loaded.');
@@ -95,7 +95,7 @@ function testRoleWeightOrdering() {
       $saved_rids[] = $role->id;
       $weight--;
     }
-    $this->drupalPost('admin/people/roles', $edit, t('Save order'));
+    $this->drupalPostForm('admin/people/roles', $edit, t('Save order'));
     $this->assertText(t('The role settings have been updated.'), 'The role settings form submitted successfully.');
 
     // Load up the user roles with the new weights.
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserRolesAssignmentTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRolesAssignmentTest.php
index e47f5cf..b9cd7f8 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserRolesAssignmentTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserRolesAssignmentTest.php
@@ -38,13 +38,13 @@ function testAssignAndRemoveRole()  {
     $account = $this->drupalCreateUser();
 
     // Assign the role to the user.
-    $this->drupalPost('user/' . $account->id() . '/edit', array("roles[$rid]" => $rid), t('Save'));
+    $this->drupalPostForm('user/' . $account->id() . '/edit', array("roles[$rid]" => $rid), t('Save'));
     $this->assertText(t('The changes have been saved.'));
     $this->assertFieldChecked('edit-roles-' . $rid, 'Role is assigned.');
     $this->userLoadAndCheckRoleAssigned($account, $rid);
 
     // Remove the role from the user.
-    $this->drupalPost('user/' . $account->id() . '/edit', array("roles[$rid]" => FALSE), t('Save'));
+    $this->drupalPostForm('user/' . $account->id() . '/edit', array("roles[$rid]" => FALSE), t('Save'));
     $this->assertText(t('The changes have been saved.'));
     $this->assertNoFieldChecked('edit-roles-' . $rid, 'Role is removed from user.');
     $this->userLoadAndCheckRoleAssigned($account, $rid, FALSE);
@@ -64,7 +64,7 @@ function testCreateUserWithRole() {
       'pass[pass2]' => $pass,
       "roles[$rid]" => $rid,
     );
-    $this->drupalPost('admin/people/create', $edit, t('Create new account'));
+    $this->drupalPostForm('admin/people/create', $edit, t('Create new account'));
     $this->assertText(t('Created a new user account for !name.', array('!name' => $edit['name'])));
     // Get the newly added user.
     $account = user_load_by_name($edit['name']);
@@ -74,7 +74,7 @@ function testCreateUserWithRole() {
     $this->userLoadAndCheckRoleAssigned($account, $rid);
 
     // Remove the role again.
-    $this->drupalPost('user/' . $account->id() . '/edit', array("roles[$rid]" => FALSE), t('Save'));
+    $this->drupalPostForm('user/' . $account->id() . '/edit', array("roles[$rid]" => FALSE), t('Save'));
     $this->assertText(t('The changes have been saved.'));
     $this->assertNoFieldChecked('edit-roles-' . $rid, 'Role is removed from user.');
     $this->userLoadAndCheckRoleAssigned($account, $rid, FALSE);
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserSearchTest.php b/core/modules/user/lib/Drupal/user/Tests/UserSearchTest.php
index f255241..d643f30 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserSearchTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserSearchTest.php
@@ -34,7 +34,7 @@ function testUserSearch() {
     $this->drupalLogin($user1);
     $keys = $user1->getEmail();
     $edit = array('keys' => $keys);
-    $this->drupalPost('search/user/', $edit, t('Search'));
+    $this->drupalPostForm('search/user/', $edit, t('Search'));
     $this->assertNoText($keys);
     $this->drupalLogout();
 
@@ -42,7 +42,7 @@ function testUserSearch() {
     $this->drupalLogin($user2);
     $keys = $user2->getEmail();
     $edit = array('keys' => $keys);
-    $this->drupalPost('search/user/', $edit, t('Search'));
+    $this->drupalPostForm('search/user/', $edit, t('Search'));
     $this->assertText($keys);
 
     // Create a blocked user.
@@ -53,14 +53,14 @@ function testUserSearch() {
     // Verify that users with "administer users" permissions can see blocked
     // accounts in search results.
     $edit = array('keys' => $blocked_user->getUsername());
-    $this->drupalPost('search/user/', $edit, t('Search'));
+    $this->drupalPostForm('search/user/', $edit, t('Search'));
     $this->assertText($blocked_user->getUsername(), 'Blocked users are listed on the user search results for users with the "administer users" permission.');
 
     // Verify that users without "administer users" permissions do not see
     // blocked accounts in search results.
     $this->drupalLogin($user1);
     $edit = array('keys' => $blocked_user->getUsername());
-    $this->drupalPost('search/user/', $edit, t('Search'));
+    $this->drupalPostForm('search/user/', $edit, t('Search'));
     $this->assertNoText($blocked_user->getUsername(), 'Blocked users are hidden from the user search results.');
 
     $this->drupalLogout();
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php b/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php
index 5a8cd0e..05352a8 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php
@@ -95,7 +95,7 @@ function testUserSignature() {
     $edit = array(
       'signature[value]' => $signature_text,
     );
-    $this->drupalPost('user/' . $this->web_user->id() . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('user/' . $this->web_user->id() . '/edit', $edit, t('Save'));
 
     // Verify that values were stored.
     $this->assertFieldByName('signature[value]', $edit['signature[value]'], 'Submitted signature text found.');
@@ -105,8 +105,8 @@ function testUserSignature() {
     $edit = array();
     $edit['subject'] = $this->randomName(8);
     $edit['comment_body[' . $langcode . '][0][value]'] = $this->randomName(16);
-    $this->drupalPost('comment/reply/' . $node->id(), $edit, t('Preview'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm('comment/reply/' . $node->id(), $edit, t('Preview'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     // Get the comment ID. (This technique is the same one used in the Comment
     // module's CommentTestBase test case.)
@@ -117,7 +117,7 @@ function testUserSignature() {
     // that the comment text itself is not filtered at all.
     $this->drupalLogin($this->admin_user);
     $edit['comment_body[' . $langcode . '][0][format]'] = $this->full_html_format->format;
-    $this->drupalPost('comment/' . $comment_id . '/edit', $edit, t('Save'));
+    $this->drupalPostForm('comment/' . $comment_id . '/edit', $edit, t('Save'));
 
     // Assert that the signature did not make it through unfiltered.
     $this->drupalGet('node/' . $node->id());
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php b/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php
index 8189fcb..956a257 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php
@@ -60,7 +60,7 @@ function testUserTimeZone() {
     $edit = array();
     $edit['mail'] = $web_user->getEmail();
     $edit['timezone'] = 'America/Santiago';
-    $this->drupalPost("user/" . $web_user->id() . "/edit", $edit, t('Save'));
+    $this->drupalPostForm("user/" . $web_user->id() . "/edit", $edit, t('Save'));
     $this->assertText(t('The changes have been saved.'), 'Time zone changed to Santiago time.');
 
     // Confirm date format and time zone.
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserValidateCurrentPassCustomFormTest.php b/core/modules/user/lib/Drupal/user/Tests/UserValidateCurrentPassCustomFormTest.php
index d8cd059..43b6856 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserValidateCurrentPassCustomFormTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserValidateCurrentPassCustomFormTest.php
@@ -57,7 +57,7 @@ function testUserValidateCurrentPassCustomForm() {
     $edit = array();
     $edit['user_form_test_field'] = $this->accessUser->getUsername();
     $edit['current_pass'] = $this->accessUser->pass_raw;
-    $this->drupalPost('user_form_test_current_password/' . $this->accessUser->id(), $edit, t('Test'));
+    $this->drupalPostForm('user_form_test_current_password/' . $this->accessUser->id(), $edit, t('Test'));
     $this->assertText(t('The password has been validated and the form submitted successfully.'));
   }
 }
diff --git a/core/modules/user/lib/Drupal/user/Tests/Views/BulkFormTest.php b/core/modules/user/lib/Drupal/user/Tests/Views/BulkFormTest.php
index 68e8b47..2dd9f08 100644
--- a/core/modules/user/lib/Drupal/user/Tests/Views/BulkFormTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/Views/BulkFormTest.php
@@ -39,7 +39,7 @@ public function testBulkForm() {
     $edit = array(
       'action' => 'user_block_user_action',
     );
-    $this->drupalPost('test-user-bulk-form', $edit, t('Apply'));
+    $this->drupalPostForm('test-user-bulk-form', $edit, t('Apply'));
     // @todo Validation errors are only shown on page refresh.
     $this->drupalGet('test-user-bulk-form');
     $this->assertText(t('No users selected.'));
@@ -55,7 +55,7 @@ public function testBulkForm() {
       'user_bulk_form[1]' => TRUE,
       'action' => 'user_add_role_action.' . $role,
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the user and check their roles.
     $account = entity_load('user', $account->id(), TRUE);
     $this->assertTrue($account->hasRole($role), 'The user now has the custom role.');
@@ -64,7 +64,7 @@ public function testBulkForm() {
       'user_bulk_form[1]' => TRUE,
       'action' => 'user_remove_role_action.' . $role,
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the user and check their roles.
     $account = entity_load('user', $account->id(), TRUE);
     $this->assertFalse($account->hasRole($role), 'The user no longer has the custom role.');
@@ -76,7 +76,7 @@ public function testBulkForm() {
       'user_bulk_form[1]' => TRUE,
       'action' => 'user_block_user_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     // Re-load the user and check their status.
     $account = entity_load('user', $account->id(), TRUE);
     $this->assertTrue($account->isBlocked(), 'The user is blocked.');
@@ -96,7 +96,7 @@ public function testBulkForm() {
       'user_bulk_form[0]' => TRUE,
       'action' => 'user_block_user_action',
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $anonymous_account = user_load(0);
     $this->assertTrue($anonymous_account->isBlocked(), 'Ensure the anonymous user got blocked.');
   }
diff --git a/core/modules/user/lib/Drupal/user/Tests/Views/HandlerFilterUserNameTest.php b/core/modules/user/lib/Drupal/user/Tests/Views/HandlerFilterUserNameTest.php
index 45f77b3..5910726 100644
--- a/core/modules/user/lib/Drupal/user/Tests/Views/HandlerFilterUserNameTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/Views/HandlerFilterUserNameTest.php
@@ -110,7 +110,7 @@ public function testAdminUserInterface() {
     $edit = array(
       'options[value]' => implode(', ', $users)
     );
-    $this->drupalPost($path, $edit, t('Apply'));
+    $this->drupalPostForm($path, $edit, t('Apply'));
     $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users)));
     $this->assertText($message);
 
@@ -122,7 +122,7 @@ public function testAdminUserInterface() {
       'options[value]' => implode(', ', $users)
     );
     $users = array($users[0]);
-    $this->drupalPost($path, $edit, t('Apply'));
+    $this->drupalPostForm($path, $edit, t('Apply'));
     $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users)));
     $this->assertRaw($message);
 
@@ -132,7 +132,7 @@ public function testAdminUserInterface() {
     $edit = array(
       'options[value]' => implode(', ', $users)
     );
-    $this->drupalPost($path, $edit, t('Apply'));
+    $this->drupalPostForm($path, $edit, t('Apply'));
     $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users)));
     $this->assertNoRaw($message);
   }
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
index d7313b2..edabed8 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
@@ -70,12 +70,12 @@ public function testUI() {
       $edit_path = 'admin/structure/views/nojs/config-item/test_example_area/default/' . $type .'/test_example';
 
       // First setup an empty label.
-      $this->drupalPost($edit_path, array(), t('Apply'));
+      $this->drupalPostForm($edit_path, array(), t('Apply'));
       $this->assertText('Test Example area');
 
       // Then setup a no empty label.
       $labels[$type] = $this->randomName();
-      $this->drupalPost($edit_path, array('options[admin_label]' => $labels[$type]), t('Apply'));
+      $this->drupalPostForm($edit_path, array('options[admin_label]' => $labels[$type]), t('Apply'));
       // Make sure that the new label appears on the site.
       $this->assertText($labels[$type]);
 
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/FilterDateTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/FilterDateTest.php
index c7ff7fc..782f51d 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Handler/FilterDateTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/FilterDateTest.php
@@ -159,7 +159,7 @@ protected function _testUiValidation() {
     $edit = array();
     // Generate a definitive wrong value, which should be checked by validation.
     $edit['options[value][value]'] = $this->randomString() . '-------';
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->assertText(t('Invalid date format.'), 'Make sure that validation is runned and the invalidate date format is identified.');
   }
 
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerTest.php
index 03a2b7f..c825215 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/HandlerTest.php
@@ -85,7 +85,7 @@ function testFilterInOperatorUi() {
     $edit = array(
       'options[expose][reduce]' => TRUE,
     );
-    $this->drupalPost($path, $edit, t('Apply'));
+    $this->drupalPostForm($path, $edit, t('Apply'));
     $this->drupalGet($path);
     $this->assertFieldByName('options[expose][reduce]', TRUE);
   }
@@ -270,7 +270,7 @@ public function testRelationshipUI() {
     $this->assertEqual($options, $expected_options);
 
     // Remove the relationship and take sure no relationship option appears.
-    $this->drupalPost('admin/structure/views/nojs/config-item/test_handler_relationships/default/relationship/nid', array(), t('Remove'));
+    $this->drupalPostForm('admin/structure/views/nojs/config-item/test_handler_relationships/default/relationship/nid', array(), t('Remove'));
     $this->drupalGet($handler_options_path);
     $this->assertNoFieldByName($relationship_name, 'Make sure that no relationship option is available');
   }
diff --git a/core/modules/views/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php b/core/modules/views/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php
index 9bf03a3..f1639d2 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Plugin/ArgumentDefaultTest.php
@@ -94,7 +94,7 @@ function testArgumentDefaultNoOptions() {
     $edit = array(
       'options[default_argument_type]' => $argument_type,
     );
-    $this->drupalPost('admin/structure/views/nojs/config-item/test_argument_default_current_user/default/argument/uid', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/config-item/test_argument_default_current_user/default/argument/uid', $edit, t('Apply'));
 
     // Note, the undefined index error has two spaces after it.
     $error = array(
diff --git a/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php b/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php
index 42cb67a..e740189 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayFeedTest.php
@@ -68,12 +68,12 @@ public function testFeedUI() {
     $this->assertEqual($options, array('default', 'page'), 'Make sure all displays appears as expected.');
 
     // Post and save this and check the output.
-    $this->drupalPost('admin/structure/views/nojs/display/test_feed_display/feed_1/displays', array('displays[page]' => 'page'), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_feed_display/feed_1/displays', array('displays[page]' => 'page'), t('Apply'));
     $this->drupalGet('admin/structure/views/view/test_feed_display/edit/feed_1');
     $this->assertFieldByXpath('//*[@id="views-feed-1-displays"]', 'Page');
 
     // Add the default display, so there should now be multiple displays.
-    $this->drupalPost('admin/structure/views/nojs/display/test_feed_display/feed_1/displays', array('displays[default]' => 'default'), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_feed_display/feed_1/displays', array('displays[default]' => 'default'), t('Apply'));
     $this->drupalGet('admin/structure/views/view/test_feed_display/edit/feed_1');
     $this->assertFieldByXpath('//*[@id="views-feed-1-displays"]', 'Multiple displays');
   }
diff --git a/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayTest.php b/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayTest.php
index a106d38..e38132c 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Plugin/DisplayTest.php
@@ -126,7 +126,7 @@ public function testDisplayPlugin() {
     $this->clickLink('Test option title');
 
     $this->randomString = $this->randomString();
-    $this->drupalPost(NULL, array('test_option' => $this->randomString), t('Apply'));
+    $this->drupalPostForm(NULL, array('test_option' => $this->randomString), t('Apply'));
 
     // Check the new value has been saved by checking the UI summary text.
     $this->drupalGet('admin/structure/views/view/test_view/edit/display_test_1');
diff --git a/core/modules/views/lib/Drupal/views/Tests/Plugin/PagerTest.php b/core/modules/views/lib/Drupal/views/Tests/Plugin/PagerTest.php
index 75436c4..db3fb04 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Plugin/PagerTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Plugin/PagerTest.php
@@ -49,11 +49,11 @@ public function testStorePagerSettings() {
     $edit = array(
       'pager[type]' => 'full',
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/default/pager', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/default/pager', $edit, t('Apply'));
     $edit = array(
       'pager_options[items_per_page]' => 20,
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/default/pager_options', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/default/pager_options', $edit, t('Apply'));
     $this->assertText('20 items');
 
     // Change type and check whether the type is new type is stored.
@@ -61,7 +61,7 @@ public function testStorePagerSettings() {
     $edit = array(
       'pager[type]' => 'mini',
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/default/pager', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/default/pager', $edit, t('Apply'));
     $this->drupalGet('admin/structure/views/view/test_view/edit');
     $this->assertText('Mini', 'Changed pager plugin, should change some text');
 
@@ -76,36 +76,36 @@ public function testStorePagerSettings() {
     $edit = array(
       'pager[type]' => 'full',
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_store_pager_settings/default/pager', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_store_pager_settings/default/pager', $edit, t('Apply'));
     $this->drupalGet('admin/structure/views/view/test_store_pager_settings/edit');
     $this->assertText('Full');
 
     $edit = array(
       'pager_options[items_per_page]' => 20,
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_store_pager_settings/default/pager_options', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_store_pager_settings/default/pager_options', $edit, t('Apply'));
     $this->assertText('20 items');
 
     // add new display and test the settings again, by override it.
     $edit = array( );
     // Add a display and override the pager settings.
-    $this->drupalPost('admin/structure/views/view/test_store_pager_settings/edit', $edit, t('Add Page'));
+    $this->drupalPostForm('admin/structure/views/view/test_store_pager_settings/edit', $edit, t('Add Page'));
     $edit = array(
       'override[dropdown]' => 'page_1',
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_store_pager_settings/page_1/pager', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_store_pager_settings/page_1/pager', $edit, t('Apply'));
 
     $edit = array(
       'pager[type]' => 'mini',
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_store_pager_settings/page_1/pager', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_store_pager_settings/page_1/pager', $edit, t('Apply'));
     $this->drupalGet('admin/structure/views/view/test_store_pager_settings/edit');
     $this->assertText('Mini', 'Changed pager plugin, should change some text');
 
     $edit = array(
       'pager_options[items_per_page]' => 10,
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_store_pager_settings/default/pager_options', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_store_pager_settings/default/pager_options', $edit, t('Apply'));
     $this->assertText('10 items', 'The default value has been changed.');
     $this->drupalGet('admin/structure/views/view/test_store_pager_settings/edit/page_1');
     $this->assertText('20 items', 'The original value remains unchanged.');
diff --git a/core/modules/views/lib/Drupal/views/Tests/ViewAjaxTest.php b/core/modules/views/lib/Drupal/views/Tests/ViewAjaxTest.php
index 68fdaae..d8728d1 100644
--- a/core/modules/views/lib/Drupal/views/Tests/ViewAjaxTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/ViewAjaxTest.php
@@ -44,16 +44,11 @@ public function testAjaxView() {
     $data['view_name'] = 'test_ajax_view';
     $data['view_display_id'] = 'test_ajax_view';
 
-    $post = 'view_name=test_ajax_view&view_display_id=page_1';
-    $response = $this->curlExec(array(
-      CURLOPT_URL => url('views/ajax', array('absolute' => TRUE)),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post,
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
+    $post = array(
+      'view_name' => 'test_ajax_view',
+      'view_display_id' => 'page_1',
+    );
+    $response = $this->drupalPost('views/ajax', 'application/json', $post);
     $data = Json::decode($response);
 
     // Ensure that the view insert command is part of the result.
diff --git a/core/modules/views/lib/Drupal/views/Tests/Wizard/BasicTest.php b/core/modules/views/lib/Drupal/views/Tests/Wizard/BasicTest.php
index 42e2c80..0c82483 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Wizard/BasicTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Wizard/BasicTest.php
@@ -34,7 +34,7 @@ function testViewsWizardAndListing() {
     $view1['id'] = strtolower($this->randomName(16));
     $view1['description'] = $this->randomName(16);
     $view1['page[create]'] = FALSE;
-    $this->drupalPost('admin/structure/views/add', $view1, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view1, t('Save and edit'));
     $this->assertResponse(200);
     $this->drupalGet('admin/structure/views');
     $this->assertText($view1['label']);
@@ -61,7 +61,7 @@ function testViewsWizardAndListing() {
     $view2['page[path]'] = $this->randomName(16);
     $view2['page[feed]'] = 1;
     $view2['page[feed_properties][path]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view2, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view2, t('Save and edit'));
     $this->drupalGet($view2['page[path]']);
     $this->assertResponse(200);
 
@@ -105,7 +105,7 @@ function testViewsWizardAndListing() {
     $view3['page[path]'] = $this->randomName(16);
     $view3['block[create]'] = 1;
     $view3['block[title]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view3, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view3, t('Save and edit'));
     $this->drupalGet($view3['page[path]']);
     $this->assertResponse(200);
 
@@ -163,7 +163,7 @@ public function testWizardDefaultValues() {
     $view['id'] = $random_id;
     $view['description'] = $this->randomName(16);
     $view['page[create]'] = FALSE;
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     // Make sure the plugin types that should not have empty options don't have.
     // Test against all values is unit tested.
diff --git a/core/modules/views/lib/Drupal/views/Tests/Wizard/ItemsPerPageTest.php b/core/modules/views/lib/Drupal/views/Tests/Wizard/ItemsPerPageTest.php
index 275b4f4..0d60891 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Wizard/ItemsPerPageTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Wizard/ItemsPerPageTest.php
@@ -53,7 +53,7 @@ function testItemsPerPage() {
     $view['block[create]'] = 1;
     $view['block[title]'] = $this->randomName(16);
     $view['block[items_per_page]'] = 3;
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
     $this->drupalGet($view['page[path]']);
     $this->assertResponse(200);
 
diff --git a/core/modules/views/lib/Drupal/views/Tests/Wizard/MenuTest.php b/core/modules/views/lib/Drupal/views/Tests/Wizard/MenuTest.php
index 5903552..f294a89 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Wizard/MenuTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Wizard/MenuTest.php
@@ -35,7 +35,7 @@ function testMenus() {
     $view['page[link]'] = 1;
     $view['page[link_properties][menu_name]'] = 'main';
     $view['page[link_properties][title]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     // Make sure there is a link to the view from the front page (where we
     // expect the main menu to display).
diff --git a/core/modules/views/lib/Drupal/views/Tests/Wizard/SortingTest.php b/core/modules/views/lib/Drupal/views/Tests/Wizard/SortingTest.php
index 20839b5..13b20d3 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Wizard/SortingTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Wizard/SortingTest.php
@@ -39,7 +39,7 @@ function testSorting() {
     $view1['page[create]'] = 1;
     $view1['page[title]'] = $this->randomName(16);
     $view1['page[path]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view1, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view1, t('Save and edit'));
     $this->drupalGet($view1['page[path]']);
     $this->assertResponse(200);
 
@@ -64,7 +64,7 @@ function testSorting() {
     $view2['page[create]'] = 1;
     $view2['page[title]'] = $this->randomName(16);
     $view2['page[path]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view2, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view2, t('Save and edit'));
     $this->drupalGet($view2['page[path]']);
     $this->assertResponse(200);
 
diff --git a/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php b/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php
index c7ec4e0..7a99760 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php
@@ -113,14 +113,14 @@ function testTaggedWith() {
     $edit = array();
     $edit['title'] = $node_tag1_title = $this->randomName();
     $edit[$tag_field] = 'tag1';
-    $this->drupalPost($node_add_path, $edit, t('Save'));
+    $this->drupalPostForm($node_add_path, $edit, t('Save'));
     $edit = array();
     $edit['title'] = $node_tag1_tag2_title = $this->randomName();
     $edit[$tag_field] = 'tag1, tag2';
-    $this->drupalPost($node_add_path, $edit, t('Save'));
+    $this->drupalPostForm($node_add_path, $edit, t('Save'));
     $edit = array();
     $edit['title'] = $node_no_tags_title = $this->randomName();
-    $this->drupalPost($node_add_path, $edit, t('Save'));
+    $this->drupalPostForm($node_add_path, $edit, t('Save'));
 
     // Create a view that filters by taxonomy term "tag1". It should show only
     // the two nodes from above that are tagged with "tag1".
@@ -128,7 +128,7 @@ function testTaggedWith() {
     // First select the node type and update the form so the correct tag field
     // is used.
     $view1['show[type]'] = $this->node_type_with_tags->type;
-    $this->drupalPost('admin/structure/views/add', $view1, t('Update "of type" choice'));
+    $this->drupalPostForm('admin/structure/views/add', $view1, t('Update "of type" choice'));
     // Now resubmit the entire form to the same URL.
     $view1['label'] = $this->randomName(16);
     $view1['id'] = strtolower($this->randomName(16));
@@ -137,7 +137,7 @@ function testTaggedWith() {
     $view1['page[create]'] = 1;
     $view1['page[title]'] = $this->randomName(16);
     $view1['page[path]'] = $this->randomName(16);
-    $this->drupalPost(NULL, $view1, t('Save and edit'));
+    $this->drupalPostForm(NULL, $view1, t('Save and edit'));
     // Visit the page and check that the nodes we expect are present and the
     // ones we don't expect are absent.
     $this->drupalGet($view1['page[path]']);
@@ -150,7 +150,7 @@ function testTaggedWith() {
     // the one node from above that is tagged with "tag2".
     $view2 = array();
     $view2['show[type]'] = $this->node_type_with_tags->type;
-    $this->drupalPost('admin/structure/views/add', $view2, t('Update "of type" choice'));
+    $this->drupalPostForm('admin/structure/views/add', $view2, t('Update "of type" choice'));
     $this->assertResponse(200);
     $view2['label'] = $this->randomName(16);
     $view2['id'] = strtolower($this->randomName(16));
@@ -159,7 +159,7 @@ function testTaggedWith() {
     $view2['page[create]'] = 1;
     $view2['page[title]'] = $this->randomName(16);
     $view2['page[path]'] = $this->randomName(16);
-    $this->drupalPost(NULL, $view2, t('Save and edit'));
+    $this->drupalPostForm(NULL, $view2, t('Save and edit'));
     $this->assertResponse(200);
     $this->drupalGet($view2['page[path]']);
     $this->assertNoText($node_tag1_title);
@@ -180,10 +180,10 @@ function testTaggedWithByNodeType() {
     $this->drupalGet('admin/structure/views/add');
     $this->assertFieldByXpath($tags_xpath);
     $view['show[type]'] = $this->node_type_with_tags->type;
-    $this->drupalPost('admin/structure/views/add', $view, t('Update "of type" choice'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Update "of type" choice'));
     $this->assertFieldByXpath($tags_xpath);
     $view['show[type]'] = $this->node_type_without_tags->type;
-    $this->drupalPost(NULL, $view, t('Update "of type" choice'));
+    $this->drupalPostForm(NULL, $view, t('Update "of type" choice'));
     $this->assertNoFieldByXpath($tags_xpath);
 
     // If we add an instance of the tagging field to the second node type, the
@@ -198,10 +198,10 @@ function testTaggedWithByNodeType() {
       ->save();
 
     $view['show[type]'] = $this->node_type_with_tags->type;
-    $this->drupalPost('admin/structure/views/add', $view, t('Update "of type" choice'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Update "of type" choice'));
     $this->assertFieldByXpath($tags_xpath);
     $view['show[type]'] = $this->node_type_without_tags->type;
-    $this->drupalPost(NULL, $view, t('Update "of type" choice'));
+    $this->drupalPostForm(NULL, $view, t('Update "of type" choice'));
     $this->assertFieldByXpath($tags_xpath);
   }
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/AnalyzeTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/AnalyzeTest.php
index b86e4ae..14cf275 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/AnalyzeTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/AnalyzeTest.php
@@ -64,7 +64,7 @@ function testAnalyzeBasic() {
     }
 
     // This redirects the user back to the main views edit page.
-    $this->drupalPost(NULL, array(), t('Ok'));
+    $this->drupalPostForm(NULL, array(), t('Ok'));
   }
 
 }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/CachedDataUITest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/CachedDataUITest.php
index c802d5e..6d39784 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/CachedDataUITest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/CachedDataUITest.php
@@ -39,7 +39,7 @@ public function testCacheData() {
 
     $this->drupalGet('admin/structure/views/view/test_view/edit');
     // Make sure we have 'changes' to the view.
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/default/title', array(), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/default/title', array(), t('Apply'));
     $this->assertText('You have unsaved changes.');
     $this->assertEqual($temp_store->getMetadata('test_view')->owner, $views_admin_user_uid, 'View cache has been saved.');
 
@@ -50,13 +50,13 @@ public function testCacheData() {
     $this->assertEqual($temp_store->getMetadata('test_view')->owner, $views_admin_user_uid, 'The view is locked.');
 
     // Cancel the view edit and make sure the cache is deleted.
-    $this->drupalPost(NULL, array(), t('Cancel'));
+    $this->drupalPostForm(NULL, array(), t('Cancel'));
     $this->assertEqual($temp_store->getMetadata('test_view'), NULL, 'User tempstore data has been removed.');
     // Test we are redirected to the view listing page.
     $this->assertUrl('admin/structure/views', array(), 'Redirected back to the view listing page.');
 
     // Login with another user and make sure the view is locked and break.
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/default/title', array(), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/default/title', array(), t('Apply'));
     $this->drupalLogin($this->adminUser);
 
     $this->drupalGet('admin/structure/views/view/test_view/edit');
@@ -65,12 +65,12 @@ public function testCacheData() {
     // Break the lock.
     $this->clickLink(t('break this lock'));
     // Test we can save the view.
-    $this->drupalPost('admin/structure/views/view/test_view/edit', array(), t('Save'));
+    $this->drupalPostForm('admin/structure/views/view/test_view/edit', array(), t('Save'));
     $this->assertRaw(t('The view %view has been saved.', array('%view' => 'Test view')));
 
     // Test that a deleted view has no tempstore data.
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/default/title', array(), t('Apply'));
-    $this->drupalPost('admin/structure/views/view/test_view/delete', array(), t('Delete'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/default/title', array(), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/view/test_view/delete', array(), t('Delete'));
     // No view tempstore data should be returned for this view after deletion.
     $this->assertEqual($temp_store->getMetadata('test_view'), NULL, 'View tempstore data has been removed after deletion.');
   }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/CustomBooleanTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/CustomBooleanTest.php
index 7d40e72..ae17b19 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/CustomBooleanTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/CustomBooleanTest.php
@@ -96,10 +96,10 @@ public function testCustomOption() {
         'options[type_custom_true]' => $values['true'],
         'options[type_custom_false]' => $values['false'],
       );
-      $this->drupalPost('admin/structure/views/nojs/config-item/test_view/default/field/age', $options, 'Apply');
+      $this->drupalPostForm('admin/structure/views/nojs/config-item/test_view/default/field/age', $options, 'Apply');
 
       // Save the view.
-      $this->drupalPost('admin/structure/views/view/test_view', array(), 'Save');
+      $this->drupalPostForm('admin/structure/views/view/test_view', array(), 'Save');
 
       $view = views_get_view('test_view');
       $output = $view->preview();
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DefaultViewsTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DefaultViewsTest.php
index 92ee4b4..607cfc1 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DefaultViewsTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DefaultViewsTest.php
@@ -56,15 +56,15 @@ function testDefaultViews() {
     // displayed.
     $new_title = $this->randomName(16);
     $edit = array('title' => $new_title);
-    $this->drupalPost('admin/structure/views/nojs/display/glossary/page_1/title', $edit, t('Apply'));
-    $this->drupalPost('admin/structure/views/view/glossary/edit/page_1', array(), t('Save'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/glossary/page_1/title', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/view/glossary/edit/page_1', array(), t('Save'));
     $this->drupalGet('glossary');
     $this->assertResponse(200);
     $this->assertText($new_title);
 
     // Save another view in the UI.
-    $this->drupalPost('admin/structure/views/nojs/display/archive/page_1/title', array(), t('Apply'));
-    $this->drupalPost('admin/structure/views/view/archive/edit/page_1', array(), t('Save'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/archive/page_1/title', array(), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/view/archive/edit/page_1', array(), t('Save'));
 
     // Check there is an enable link. i.e. The view has not been enabled after
     // editing.
@@ -76,7 +76,7 @@ function testDefaultViews() {
     // $this->drupalGet('admin/structure/views');
     // $this->assertLink(t('Revert'));
     // $this->assertLinkByHref($revert_href);
-    // $this->drupalPost($revert_href, array(), t('Revert'));
+    // $this->drupalPostForm($revert_href, array(), t('Revert'));
     // $this->drupalGet('glossary');
     // $this->assertNoText($new_title);
 
@@ -87,14 +87,14 @@ function testDefaultViews() {
       'id' => 'clone_of_glossary',
     );
     $this->assertTitle(t('Clone of @label | @site-name', array('@label' => 'Glossary', '@site-name' => \Drupal::config('system.site')->get('name'))));
-    $this->drupalPost(NULL, $edit, t('Clone'));
+    $this->drupalPostForm(NULL, $edit, t('Clone'));
     $this->assertUrl('admin/structure/views/view/clone_of_glossary', array(), 'The normal cloning name schema is applied.');
 
     // Clone a view and set a custom name.
     $this->drupalGet('admin/structure/views');
     $this->clickViewsOperationLink(t('Clone'), '/glossary');
     $random_name = strtolower($this->randomName());
-    $this->drupalPost(NULL, array('id' => $random_name), t('Clone'));
+    $this->drupalPostForm(NULL, array('id' => $random_name), t('Clone'));
     $this->assertUrl("admin/structure/views/view/$random_name", array(), 'The custom view name got saved.');
 
     // Now disable the view, and make sure it stops appearing on the main view
@@ -116,7 +116,7 @@ function testDefaultViews() {
     $this->drupalGet('admin/structure/views');
     $this->clickViewsOperationLink(t('Delete'), '/glossary/');
     // Submit the confirmation form.
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
     // Ensure the view is no longer listed.
     $this->assertUrl('admin/structure/views');
     $this->assertNoLinkByHref($edit_href);
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayAttachmentTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayAttachmentTest.php
index 3c03f05..b57f5e8 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayAttachmentTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayAttachmentTest.php
@@ -44,19 +44,19 @@ public function testAttachmentUI() {
     }
 
     // Save the attachments and test the value on the view.
-    $this->drupalPost($attachment_display_url, array('displays[page_1]' => 1), t('Apply'));
+    $this->drupalPostForm($attachment_display_url, array('displays[page_1]' => 1), t('Apply'));
     $result = $this->xpath('//a[@id = :id]', array(':id' => 'views-attachment-1-displays'));
     $this->assertEqual($result[0]->attributes()->title, t('Page'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = views_get_view('test_attachment_ui');
     $view->initDisplay();
     $this->assertEqual(array_keys(array_filter($view->displayHandlers->get('attachment_1')->getOption('displays'))), array('page_1'), 'The attached displays got saved as expected');
 
-    $this->drupalPost($attachment_display_url, array('displays[default]' => 1, 'displays[page_1]' => 1), t('Apply'));
+    $this->drupalPostForm($attachment_display_url, array('displays[default]' => 1, 'displays[page_1]' => 1), t('Apply'));
     $result = $this->xpath('//a[@id = :id]', array(':id' => 'views-attachment-1-displays'));
     $this->assertEqual($result[0]->attributes()->title, t('Multiple displays'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = views_get_view('test_attachment_ui');
     $view->initDisplay();
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayExtenderUITest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayExtenderUITest.php
index c04f8a5..9515b4b 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayExtenderUITest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayExtenderUITest.php
@@ -41,9 +41,9 @@ public function testDisplayExtenderUI() {
     $this->assertLinkByHref($display_option_url, 0, 'Make sure the option defined by the test display extender appears in the UI.');
 
     $random_text = $this->randomName();
-    $this->drupalPost($display_option_url, array('test_extender_test_option' => $random_text), t('Apply'));
+    $this->drupalPostForm($display_option_url, array('test_extender_test_option' => $random_text), t('Apply'));
     $this->assertLink($random_text);
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $view = views_get_view($view->storage->id());
     $view->initDisplay();
     $this->assertEqual($view->display_handler->getOption('test_extender_test_option'), $random_text, 'Make sure that the display extender option got saved.');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayPath.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayPath.php
index 8f63b66..8a1fe8d 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayPath.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayPath.php
@@ -33,13 +33,13 @@ public function testPathUI() {
     $this->drupalGet('admin/structure/views/view/test_view');
 
     // Add a new page display and check the appearing text.
-    $this->drupalPost(NULL, array(), 'Add Page');
+    $this->drupalPostForm(NULL, array(), 'Add Page');
     $this->assertText(t('No path is set'), 'The right text appears if no path was set.');
     $this->assertNoLink(t('View @display', array('@display' => 'page')), 'No view page link found on the page.');
 
     // Save a path and make sure the summary appears as expected.
     $random_path = $this->randomName();
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/page_1/path', array('path' => $random_path), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/page_1/path', array('path' => $random_path), t('Apply'));
     $this->assertText('/' . $random_path, 'The custom path appears in the summary.');
     $this->assertLink(t('View @display', array('@display' => 'Page')), 0, 'view page link found on the page.');
   }
@@ -49,9 +49,9 @@ public function testPathUI() {
    */
   public function testDeleteWithNoPath() {
     $this->drupalGet('admin/structure/views/view/test_view');
-    $this->drupalPost(NULL, array(), t('Add Page'));
-    $this->drupalPost(NULL, array(), t('Delete Page'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Add Page'));
+    $this->drupalPostForm(NULL, array(), t('Delete Page'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $this->assertRaw(t('The view %view has been saved.', array('%view' => 'Test view')));
   }
 
@@ -63,16 +63,16 @@ public function testMenuOptions() {
     $this->drupalGet('admin/structure/views/view/test_view');
 
     // Add a new page display.
-    $this->drupalPost(NULL, array(), 'Add Page');
+    $this->drupalPostForm(NULL, array(), 'Add Page');
     // Save a path.
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/page_1/path', array('path' => $this->randomString()), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/page_1/path', array('path' => $this->randomString()), t('Apply'));
     $this->drupalGet('admin/structure/views/view/test_view');
 
-    $this->drupalPost('admin/structure/views/nojs/display/test_view/page_1/menu', array('menu[type]' => 'default tab', 'menu[title]' => 'Test tab title'), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/page_1/menu', array('menu[type]' => 'default tab', 'menu[title]' => 'Test tab title'), t('Apply'));
     $this->assertResponse(200);
     $this->assertUrl('admin/structure/views/nojs/display/test_view/page_1/tab_options');
 
-    $this->drupalPost(NULL, array('tab_options[type]' => 'tab', 'tab_options[title]' => $this->randomString()), t('Apply'));
+    $this->drupalPostForm(NULL, array('tab_options[type]' => 'tab', 'tab_options[title]' => $this->randomString()), t('Apply'));
     $this->assertResponse(200);
     $this->assertUrl('admin/structure/views/view/test_view/edit/page_1');
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php
index 7d827f9..4f700cf 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php
@@ -52,7 +52,7 @@ public function randomView(array $view = array()) {
 
     $view += $default;
 
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     return $default;
   }
@@ -71,7 +71,7 @@ public function testRemoveDisplay() {
     $this->assertFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-delete', 'Delete Page', 'Make sure there is a delete button on the page display.');
 
     // Delete the page, so we can test the undo process.
-    $this->drupalPost($path_prefix . '/page_1', array(), 'Delete Page');
+    $this->drupalPostForm($path_prefix . '/page_1', array(), 'Delete Page');
     $this->assertFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-undo-delete', 'Undo delete of Page', 'Make sure there a undo button on the page display after deleting.');
     $element = $this->xpath('//a[contains(@href, :href) and contains(@class, :class)]', array(':href' => $path_prefix . '/page_1', ':class' => 'views-display-deleted-link'));
     $this->assertTrue(!empty($element), 'Make sure the display link is marked as to be deleted.');
@@ -80,13 +80,13 @@ public function testRemoveDisplay() {
     $this->assertTrue(!empty($element), 'Make sure the display link is marked as to be deleted.');
 
     // Undo the deleting of the display.
-    $this->drupalPost($path_prefix . '/page_1', array(), 'Undo delete of Page');
+    $this->drupalPostForm($path_prefix . '/page_1', array(), 'Undo delete of Page');
     $this->assertNoFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-undo-delete', 'Undo delete of Page', 'Make sure there is no undo button on the page display after reverting.');
     $this->assertFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-delete', 'Delete Page', 'Make sure there is a delete button on the page display after the reverting.');
 
     // Now delete again and save the view.
-    $this->drupalPost($path_prefix . '/page_1', array(), 'Delete Page');
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm($path_prefix . '/page_1', array(), 'Delete Page');
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $this->assertNoLinkByHref($path_prefix . '/page_1', 'Make sure there is no display tab for the deleted display.');
   }
@@ -105,7 +105,7 @@ public function testAddDisplay() {
     $this->drupalGet($path_prefix);
 
     // Add a new display.
-    $this->drupalPost(NULL, array(), 'Add Page');
+    $this->drupalPostForm(NULL, array(), 'Add Page');
     $this->assertLinkByHref($path_prefix . '/page_1', 0, 'Make sure after adding a display the new display appears in the UI');
 
     $this->assertNoLink('Master*', 0, 'Make sure the master display is not marked as changed.');
@@ -132,8 +132,8 @@ public function testReorderDisplay() {
       'displays[page_1][weight]' => 2,
       'displays[block_1][weight]' => 1
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = views_get_view($view['id']);
     $displays = $view->storage->get('display');
@@ -159,24 +159,24 @@ public function testCloneDisplay() {
     $path_prefix = 'admin/structure/views/view/' . $view['id'] .'/edit';
 
     $this->drupalGet($path_prefix);
-    $this->drupalPost(NULL, array(), 'Clone Page');
+    $this->drupalPostForm(NULL, array(), 'Clone Page');
     $this->assertLinkByHref($path_prefix . '/page_2', 0, 'Make sure after cloning the new display appears in the UI');
     $this->assertUrl($path_prefix . '/page_2', array(), 'The user got redirected to the new display.');
 
     // Set the title and override the css classes.
     $random_title = $this->randomName();
     $random_css = $this->randomName();
-    $this->drupalPost("admin/structure/views/nojs/display/{$view['id']}/page_2/title", array('title' => $random_title), t('Apply'));
-    $this->drupalPost("admin/structure/views/nojs/display/{$view['id']}/page_2/css_class", array('override[dropdown]' => 'page_2', 'css_class' => $random_css), t('Apply'));
+    $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_2/title", array('title' => $random_title), t('Apply'));
+    $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_2/css_class", array('override[dropdown]' => 'page_2', 'css_class' => $random_css), t('Apply'));
 
     // Clone as a different display type.
-    $this->drupalPost(NULL, array(), 'Clone as Block');
+    $this->drupalPostForm(NULL, array(), 'Clone as Block');
     $this->assertLinkByHref($path_prefix . '/block_1', 0, 'Make sure after cloning the new display appears in the UI');
     $this->assertUrl($path_prefix . '/block_1', array(), 'The user got redirected to the new display.');
     $this->assertText(t('Block settings'));
     $this->assertNoText(t('Page settings'));
 
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $view = views_get_view($view['id']);
     $view->initDisplay();
 
@@ -203,12 +203,12 @@ public function testDisableDisplay() {
 
     $this->assertFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-disable', '', 'Make sure the disable button is visible.');
     $this->assertNoFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-enable', '', 'Make sure the enable button is not visible.');
-    $this->drupalPost(NULL, array(), 'Disable Page');
+    $this->drupalPostForm(NULL, array(), 'Disable Page');
     $this->assertTrue($this->xpath('//div[contains(@class, :class)]', array(':class' => 'views-display-disabled')), 'Make sure the disabled display css class appears once the display is marked as such.');
 
     $this->assertNoFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-disable', '', 'Make sure the disable button is not visible.');
     $this->assertFieldById('edit-displays-settings-settings-content-tab-content-details-top-actions-enable', '', 'Make sure the enable button is visible.');
-    $this->drupalPost(NULL, array(), 'Enable Page');
+    $this->drupalPostForm(NULL, array(), 'Enable Page');
     $this->assertFalse($this->xpath('//div[contains(@class, :class)]', array(':class' => 'views-display-disabled')), 'Make sure the disabled display css class does not appears once the display is enabled again.');
   }
 
@@ -264,7 +264,7 @@ public function testLinkDisplay() {
     // Test setting the link display in the UI form.
     $path = 'admin/structure/views/view/test_display/edit/block_1';
     $link_display_path = 'admin/structure/views/nojs/display/test_display/block_1/link_display';
-    $this->drupalPost($link_display_path, array('link_display' => 'page_1'), t('Apply'));
+    $this->drupalPostForm($link_display_path, array('link_display' => 'page_1'), t('Apply'));
     // The form redirects to the master display.
     $this->drupalGet($path);
 
@@ -272,7 +272,7 @@ public function testLinkDisplay() {
     $this->assertEqual($result[0], 'Page', 'Make sure that the link option summary shows the right linked display.');
 
     $link_display_path = 'admin/structure/views/nojs/display/test_display/block_1/link_display';
-    $this->drupalPost($link_display_path, array('link_display' => 'custom_url'), t('Apply'));
+    $this->drupalPostForm($link_display_path, array('link_display' => 'custom_url'), t('Apply'));
     // The form redirects to the master display.
     $this->drupalGet($path);
 
@@ -294,16 +294,8 @@ public function testPageContextualLinks() {
 
     // Get server-rendered contextual links.
     // @see \Drupal\contextual\Tests\ContextualDynamicContextTest:renderContextualLinks()
-    $post = urlencode('ids[0]') . '=' . urlencode($id);
-    $response = $this->curlExec(array(
-      CURLOPT_URL => url('contextual/render', array('absolute' => TRUE, 'query' => array('destination' => 'test-display'))),
-      CURLOPT_POST => TRUE,
-      CURLOPT_POSTFIELDS => $post,
-      CURLOPT_HTTPHEADER => array(
-        'Accept: application/json',
-        'Content-Type: application/x-www-form-urlencoded',
-      ),
-    ));
+    $post = array('ids[0]' => $id);
+    $response = $this->drupalPost('contextual/render', 'application/json', $post, array('query' => array('destination' => 'test-display')));
     $this->assertResponse(200);
     $json = drupal_json_decode($response);
     $this->assertIdentical($json[$id], '<ul class="contextual-links"><li class="views-ui-edit odd first last"><a href="' . base_path() . 'admin/structure/views/view/test_display/edit/page_1?destination=test-display">Edit view</a></li></ul>');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/ExposedFormUITest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/ExposedFormUITest.php
index 9024d36..0df5845 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/ExposedFormUITest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/ExposedFormUITest.php
@@ -58,7 +58,7 @@ function testExposedAdminUi() {
     $this->assertFieldById('edit-options-value-article', '', 'Checkbox for Article exists');
 
     // Click the Expose filter button.
-    $this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type', $edit, t('Expose filter'));
+    $this->drupalPostForm('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type', $edit, t('Expose filter'));
     // Check the label of the expose button.
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide filter'));
     // Check the label of the grouped exposed button
@@ -73,12 +73,12 @@ function testExposedAdminUi() {
     // Check the validations of the filter handler.
     $edit = array();
     $edit['options[expose][identifier]'] = '';
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->assertText(t('The identifier is required if the filter is exposed.'));
 
     $edit = array();
     $edit['options[expose][identifier]'] = 'value';
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->assertText(t('This identifier is not allowed.'));
 
     // Now check the sort criteria.
@@ -88,7 +88,7 @@ function testExposedAdminUi() {
 
     // Click the Grouped Filters button.
     $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
-    $this->drupalPost(NULL, array(), t('Grouped filters'));
+    $this->drupalPostForm(NULL, array(), t('Grouped filters'));
 
     // After click on 'Grouped Filters', the standard operator and value should
     // not be displayed.
@@ -113,7 +113,7 @@ function testExposedAdminUi() {
     $edit["options[group_info][group_items][3][title]"] = 'Is Page and Article';
     $edit["options[group_info][group_items][3][value][article]"] = TRUE;
     $edit["options[group_info][group_items][3][value][page]"] = TRUE;
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
 
     // Select the empty operator, so the empty value should not trigger a form
     // error.
@@ -121,7 +121,7 @@ function testExposedAdminUi() {
     $edit = array();
     $edit["options[group_info][group_items][1][title]"] = $this->randomName();
     $edit["options[group_info][group_items][1][operator]"] = 'empty';
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->assertUrl('admin/structure/views/view/test_exposed_admin_ui/edit/default', array(), 'Validation did not run for the empty operator.');
     // Test the validation error message text is not shown.
     $this->assertNoText(t('The value is required if title for this item is defined.'));
@@ -139,12 +139,12 @@ function testExposedAdminUi() {
     $edit["options[group_info][group_items][3][title]"] = 'Is Page and Article';
     $edit["options[group_info][group_items][3][value][article]"] = TRUE;
     $edit["options[group_info][group_items][3][value][page]"] = TRUE;
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->assertRaw(t('The title is required if value for this item is defined.'), 'Group items should have a title');
 
     // Un-expose the filter.
     $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
-    $this->drupalPost(NULL, array(), t('Hide filter'));
+    $this->drupalPostForm(NULL, array(), t('Hide filter'));
 
     // After Un-exposing the filter, Operator and Value should be shown again.
     $this->assertFieldById('edit-options-operator-in', '', 'Operator In exists after hide filter');
@@ -154,7 +154,7 @@ function testExposedAdminUi() {
 
     // Click the Expose sort button.
     $edit = array();
-    $this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created', $edit, t('Expose sort'));
+    $this->drupalPostForm('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created', $edit, t('Expose sort'));
     // Check the label of the expose button.
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide sort'));
     $this->assertFieldById('edit-options-expose-label', '', 'Make sure a label field is shown');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/FieldUITest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/FieldUITest.php
index e5b6d74..725ccd9 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/FieldUITest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/FieldUITest.php
@@ -40,7 +40,7 @@ public function testFieldUI() {
 
     // Hides the field and check whether the hidden label is appended.
     $edit_handler_url = 'admin/structure/views/nojs/config-item/test_view/default/field/name';
-    $this->drupalPost($edit_handler_url, array('options[exclude]' => TRUE), t('Apply'));
+    $this->drupalPostForm($edit_handler_url, array('options[exclude]' => TRUE), t('Apply'));
 
     $this->assertText('Views test: Name (Name) [' . t('hidden') . ']');
   }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/FilterBooleanWebTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/FilterBooleanWebTest.php
index 4463ef1..d78a4a0 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/FilterBooleanWebTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/FilterBooleanWebTest.php
@@ -33,10 +33,10 @@ public static function getInfo() {
    * Tests the filter boolean UI.
    */
   public function testFilterBooleanUI() {
-    $this->drupalPost('admin/structure/views/nojs/add-item/test_view/default/filter', array('name[views_test_data.status]' => TRUE), t('Add and configure @handler', array('@handler' => t('filter criteria'))));
+    $this->drupalPostForm('admin/structure/views/nojs/add-item/test_view/default/filter', array('name[views_test_data.status]' => TRUE), t('Add and configure @handler', array('@handler' => t('filter criteria'))));
 
-    $this->drupalPost(NULL, array(), t('Expose filter'));
-    $this->drupalPost(NULL, array(), t('Grouped filters'));
+    $this->drupalPostForm(NULL, array(), t('Expose filter'));
+    $this->drupalPostForm(NULL, array(), t('Grouped filters'));
 
     $edit = array();
     $edit['options[group_info][group_items][1][title]'] = 'Published';
@@ -49,7 +49,7 @@ public function testFilterBooleanUI() {
     $edit['options[group_info][group_items][3][operator]'] = '!=';
     $edit['options[group_info][group_items][3][value]'] = 1;
 
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
 
     $this->drupalGet('admin/structure/views/nojs/config-item/test_view/default/filter/status');
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/GroupByTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/GroupByTest.php
index 14d14b0..cffcfc3 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/GroupByTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/GroupByTest.php
@@ -42,15 +42,15 @@ function testGroupBySave() {
     $edit = array(
       'group_by' => TRUE,
     );
-    $this->drupalPost('admin/structure/views/nojs/display/test_views_groupby_save/default/group_by', $edit, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_views_groupby_save/default/group_by', $edit, t('Apply'));
 
     $this->assertLinkByHref($edit_groubpy_url, 0, 'Aggregation link found.');
 
     // Change the groupby type in the UI.
-    $this->drupalPost($edit_groubpy_url, array('options[group_type]' => 'count'), t('Apply'));
+    $this->drupalPostForm($edit_groubpy_url, array('options[group_type]' => 'count'), t('Apply'));
     $this->assertLink('COUNT(Views test: ID) (ID)', 0, 'The count setting is displayed in the UI');
 
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = $this->container->get('entity.manager')->getStorageController('view')->load('test_views_groupby_save');
     $display = $view->getDisplay('default');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/HandlerTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/HandlerTest.php
index 3be7896..7ff3747 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/HandlerTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/HandlerTest.php
@@ -82,24 +82,24 @@ public function testUICRUD() {
 
       // Area handler types need to use a different handler.
       if (in_array($type, array('header', 'footer', 'empty'))) {
-        $this->drupalPost($add_handler_url, array('name[views.area]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
+        $this->drupalPostForm($add_handler_url, array('name[views.area]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
         $id = 'area';
         $edit_handler_url = "admin/structure/views/nojs/config-item/test_view_empty/default/$type/$id";
       }
       elseif ($type == 'relationship') {
-        $this->drupalPost($add_handler_url, array('name[views_test_data.uid]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
+        $this->drupalPostForm($add_handler_url, array('name[views_test_data.uid]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
         $id = 'uid';
         $edit_handler_url = "admin/structure/views/nojs/config-item/test_view_empty/default/$type/$id";
       }
       else {
-        $this->drupalPost($add_handler_url, array('name[views_test_data.job]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
+        $this->drupalPostForm($add_handler_url, array('name[views_test_data.job]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
         $id = 'job';
         $edit_handler_url = "admin/structure/views/nojs/config-item/test_view_empty/default/$type/$id";
       }
 
       $this->assertUrl($edit_handler_url, array(), 'The user got redirected to the handler edit form.');
       $random_label = $this->randomName();
-      $this->drupalPost(NULL, array('options[admin_label]' => $random_label), t('Apply'));
+      $this->drupalPostForm(NULL, array('options[admin_label]' => $random_label), t('Apply'));
 
       $this->assertUrl('admin/structure/views/view/test_view_empty/edit/default', array(), 'The user got redirected to the views edit form.');
 
@@ -108,16 +108,16 @@ public function testUICRUD() {
       $this->assertTrue(isset($links[0]), 'The handler edit link has the right label');
 
       // Save the view and have a look whether the handler was added as expected.
-      $this->drupalPost(NULL, array(), t('Save'));
+      $this->drupalPostForm(NULL, array(), t('Save'));
       $view = $this->container->get('entity.manager')->getStorageController('view')->load('test_view_empty');
       $display = $view->getDisplay('default');
       $this->assertTrue(isset($display['display_options'][$type_info['plural']][$id]), 'Ensure the field was added to the view itself.');
 
       // Remove the item and check that it's removed
-      $this->drupalPost($edit_handler_url, array(), t('Remove'));
+      $this->drupalPostForm($edit_handler_url, array(), t('Remove'));
       $this->assertNoLinkByHref($edit_handler_url, 0, 'The handler edit link does not appears in the UI after removing.');
 
-      $this->drupalPost(NULL, array(), t('Save'));
+      $this->drupalPostForm(NULL, array(), t('Save'));
       $view = $this->container->get('entity.manager')->getStorageController('view')->load('test_view_empty');
       $display = $view->getDisplay('default');
       $this->assertFalse(isset($display['display_options'][$type_info['plural']][$id]), 'Ensure the field was removed from the view itself.');
@@ -126,19 +126,19 @@ public function testUICRUD() {
     // Test adding a field of the user table using the uid relationship.
     $type_info = $handler_types['relationship'];
     $add_handler_url = "admin/structure/views/nojs/add-item/test_view_empty/default/relationship";
-    $this->drupalPost($add_handler_url, array('name[views_test_data.uid]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
+    $this->drupalPostForm($add_handler_url, array('name[views_test_data.uid]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
 
     $add_handler_url = "admin/structure/views/nojs/add-item/test_view_empty/default/field";
     $type_info = $handler_types['field'];
-    $this->drupalPost($add_handler_url, array('name[users.signature]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
+    $this->drupalPostForm($add_handler_url, array('name[users.signature]' => TRUE), t('Add and configure @handler', array('@handler' => $type_info['ltitle'])));
     $id = 'signature';
     $edit_handler_url = "admin/structure/views/nojs/config-item/test_view_empty/default/field/$id";
 
     $this->assertUrl($edit_handler_url, array(), 'The user got redirected to the handler edit form.');
     $this->assertFieldByName('options[relationship]', 'uid', 'Ensure the relationship select is filled with the UID relationship.');
-    $this->drupalPost(NULL, array(), t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Apply'));
 
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
     $view = $this->container->get('entity.manager')->getStorageController('view')->load('test_view_empty');
     $display = $view->getDisplay('default');
     $this->assertTrue(isset($display['display_options'][$type_info['plural']][$id]), 'Ensure the field was added to the view itself.');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/OverrideDisplaysTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/OverrideDisplaysTest.php
index ee26506..70ca78e 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/OverrideDisplaysTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/OverrideDisplaysTest.php
@@ -32,7 +32,7 @@ function testOverrideDisplays() {
     $view['page[path]'] = $this->randomName(16);
     $view['block[create]'] = 1;
     $view_path = $view['page[path]'];
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     // Configure its title. Since the page and block both started off with the
     // same (empty) title in the views wizard, we expect the wizard to have set
@@ -41,8 +41,8 @@ function testOverrideDisplays() {
     $edit = array();
     $edit['title'] = $original_title = $this->randomName(16);
     $edit['override[dropdown]'] = 'default';
-    $this->drupalPost("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply'));
-    $this->drupalPost("admin/structure/views/view/{$view['id']}/edit/page_1", array(), t('Save'));
+    $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply'));
+    $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/page_1", array(), t('Save'));
 
     // Add a node that will appear in the view, so that the block will actually
     // be displayed.
@@ -69,8 +69,8 @@ function testOverrideDisplays() {
     $edit = array();
     $edit['title'] = $new_title = $this->randomName(16);
     $edit['override[dropdown]'] = 'page_1';
-    $this->drupalPost("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply'));
-    $this->drupalPost("admin/structure/views/view/{$view['id']}/edit/page_1", array(), t('Save'));
+    $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply'));
+    $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/page_1", array(), t('Save'));
     $this->drupalGet($view_path);
     $this->assertResponse(200);
     $this->assertText($new_title);
@@ -94,7 +94,7 @@ function testWizardMixedDefaultOverriddenDisplays() {
     $view['page[feed_properties][path]'] = $this->randomName(16);
     $view['block[create]'] = 1;
     $view['block[title]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     // Add a node that will appear in the view, so that the block will actually
     // be displayed.
@@ -135,8 +135,8 @@ function testWizardMixedDefaultOverriddenDisplays() {
     // the feed's title also, but not the block.
     $edit = array();
     $edit['title'] = $new_default_title = $this->randomName(16);
-    $this->drupalPost("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply'));
-    $this->drupalPost("admin/structure/views/view/{$view['id']}/edit/page_1", array(), t('Save'));
+    $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply'));
+    $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/page_1", array(), t('Save'));
     $this->drupalGet($view['page[path]']);
     $this->assertResponse(200);
     $this->assertText($new_default_title);
@@ -156,8 +156,8 @@ function testWizardMixedDefaultOverriddenDisplays() {
     // the block title only, and leave the defaults alone.
     $edit = array();
     $edit['title'] = $new_block_title = $this->randomName(16);
-    $this->drupalPost("admin/structure/views/nojs/display/{$view['id']}/block_1/title", $edit, t('Apply'));
-    $this->drupalPost("admin/structure/views/view/{$view['id']}/edit/block_1", array(), t('Save'));
+    $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/block_1/title", $edit, t('Apply'));
+    $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/block_1", array(), t('Save'));
     $this->drupalGet($view['page[path]']);
     $this->assertResponse(200);
     $this->assertText($new_default_title);
@@ -184,7 +184,7 @@ function testRevertAllDisplays() {
     $view['page[path]'] = $this->randomName(16);
     $view['block[create]'] = 1;
     $view['block[title]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     // Revert the title of the block back to the default ones, but submit some
     // new values to be sure that the new value is not stored.
@@ -192,8 +192,8 @@ function testRevertAllDisplays() {
     $edit['title'] = $new_block_title = $this->randomName();
     $edit['override[dropdown]'] = 'default_revert';
 
-    $this->drupalPost("admin/structure/views/nojs/display/{$view['id']}/block_1/title", $edit, t('Apply'));
-    $this->drupalPost("admin/structure/views/view/{$view['id']}/edit/block_1", array(), t('Save'));
+    $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/block_1/title", $edit, t('Apply'));
+    $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/block_1", array(), t('Save'));
     $this->assertText($view['page[title]']);
   }
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/PreviewTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/PreviewTest.php
index 6ed0640..3884f9b 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/PreviewTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/PreviewTest.php
@@ -34,12 +34,12 @@ protected function testPreviewContextual() {
     module_enable(array('contextual'));
     $this->drupalGet('admin/structure/views/view/test_preview/edit');
     $this->assertResponse(200);
-    $this->drupalPost(NULL, $edit = array(), t('Update preview'));
+    $this->drupalPostForm(NULL, $edit = array(), t('Update preview'));
 
     $elements = $this->xpath('//div[@id="views-live-preview"]//ul[contains(@class, :ul-class)]/li[contains(@class, :li-class)]', array(':ul-class' => 'contextual-links', ':li-class' => 'filter-add'));
     $this->assertEqual(count($elements), 1, 'The contextual link to add a new field is shown.');
 
-    $this->drupalPost(NULL, $edit = array('view_args' => '100'), t('Update preview'));
+    $this->drupalPostForm(NULL, $edit = array('view_args' => '100'), t('Update preview'));
 
     // Test that area text and exposed filters are present and rendered.
     $this->assertFieldByName('id', NULL, 'ID exposed filter field found.');
@@ -55,19 +55,19 @@ function testPreviewUI() {
     $this->drupalGet('admin/structure/views/view/test_preview/edit');
     $this->assertResponse(200);
 
-    $this->drupalPost(NULL, $edit = array(), t('Update preview'));
+    $this->drupalPostForm(NULL, $edit = array(), t('Update preview'));
 
     $elements = $this->xpath('//div[@class = "view-content"]/div[contains(@class, views-row)]');
     $this->assertEqual(count($elements), 5);
 
     // Filter just the first result.
-    $this->drupalPost(NULL, $edit = array('view_args' => '1'), t('Update preview'));
+    $this->drupalPostForm(NULL, $edit = array('view_args' => '1'), t('Update preview'));
 
     $elements = $this->xpath('//div[@class = "view-content"]/div[contains(@class, views-row)]');
     $this->assertEqual(count($elements), 1);
 
     // Filter for no results.
-    $this->drupalPost(NULL, $edit = array('view_args' => '100'), t('Update preview'));
+    $this->drupalPostForm(NULL, $edit = array('view_args' => '100'), t('Update preview'));
 
     $elements = $this->xpath('//div[@class = "view-content"]/div[contains(@class, views-row)]');
     $this->assertEqual(count($elements), 0);
@@ -199,7 +199,7 @@ public function testPreviewWithPagersUI() {
    */
   protected function getPreviewAJAX($view_name, $panel_id, $row_count) {
     $this->drupalGet('admin/structure/views/view/' . $view_name . '/preview/' . $panel_id);
-    $result = $this->drupalPostAJAX(NULL, array(), array('op' => t('Update preview')));
+    $result = $this->drupalPostAjaxForm(NULL, array(), array('op' => t('Update preview')));
     $this->assertPreviewAJAX($result, $row_count);
   }
 
@@ -217,7 +217,7 @@ protected function clickPreviewLinkAJAX($url, $row_count) {
       'wrapper' => 'views-preview-wrapper',
       'method' => 'replaceWith',
     );
-    $result = $this->drupalPostAJAX(NULL, array(), NULL, NULL, array(), array(), NULL, $ajax_settings);
+    $result = $this->drupalPostAjaxForm(NULL, array(), NULL, NULL, array(), array(), NULL, $ajax_settings);
     $this->assertPreviewAJAX($result, $row_count);
   }
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/QueryTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/QueryTest.php
index 33d69cd..64d9a72 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/QueryTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/QueryTest.php
@@ -47,8 +47,8 @@ public function testQueryUI() {
     // Save some query settings.
     $query_settings_path = "admin/structure/views/nojs/display/test_view/default/query";
     $random_value = $this->randomName();
-    $this->drupalPost($query_settings_path, array('query[options][test_setting]' => $random_value), t('Apply'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm($query_settings_path, array('query[options][test_setting]' => $random_value), t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     // Check that the settings are saved into the view itself.
     $view = views_get_view('test_view');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/RearrangeFieldsTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/RearrangeFieldsTest.php
index e745ec5..e691418 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/RearrangeFieldsTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/RearrangeFieldsTest.php
@@ -69,7 +69,7 @@ public function testRearrangeFields() {
 
     // Checks that a field is not deleted if a value is not passed back.
     $fields = array();
-    $this->drupalPost('admin/structure/views/nojs/rearrange/' . $view_name . '/default/field', $fields, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/rearrange/' . $view_name . '/default/field', $fields, t('Apply'));
     $this->assertFieldOrder($view_name, $this->getViewFields($view_name));
 
     // Checks that revers the new field order is respected.
@@ -78,7 +78,7 @@ public function testRearrangeFields() {
     foreach ($reversedFields as $delta => $field) {
       $fields['fields[' . $field . '][weight]'] = $delta;
     }
-    $this->drupalPost('admin/structure/views/nojs/rearrange/' . $view_name . '/default/field', $fields, t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/rearrange/' . $view_name . '/default/field', $fields, t('Apply'));
     $this->assertFieldOrder($view_name, $reversedFields);
   }
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/RedirectTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/RedirectTest.php
index d67c6fb..d13edf9 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/RedirectTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/RedirectTest.php
@@ -37,7 +37,7 @@ public function testRedirect() {
     $random_destination = $this->randomName();
     $edit_path = "admin/structure/views/view/$view_name/edit";
 
-    $this->drupalPost($edit_path, array(), t('Save') , array('query' => array('destination' => $random_destination)));
+    $this->drupalPostForm($edit_path, array(), t('Save') , array('query' => array('destination' => $random_destination)));
     $this->assertUrl($random_destination, array(), 'Make sure the user got redirected to the expected page defined in the destination.');
 
     // Setup a view with a certain page display path. If you change the path
@@ -51,8 +51,8 @@ public function testRedirect() {
     $edit_path = "admin/structure/views/view/$view_name/edit";
     $path_edit_path = "admin/structure/views/nojs/display/$view_name/page_1/path";
 
-    $this->drupalPost($path_edit_path, array('path' => $new_path), t('Apply'));
-    $this->drupalPost($edit_path, array(), t('Save'), array('query' => array('destination' => 'test-redirect-view')));
+    $this->drupalPostForm($path_edit_path, array('path' => $new_path), t('Apply'));
+    $this->drupalPostForm($edit_path, array(), t('Save'), array('query' => array('destination' => 'test-redirect-view')));
     $this->assertUrl($new_path, array(), 'Make sure the user got redirected to the expected page after changing the url of a page display.');
   }
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/RowUITest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/RowUITest.php
index 0ad9f80..79e9812 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/RowUITest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/RowUITest.php
@@ -45,17 +45,17 @@ public function testRowUI() {
     $edit = array(
       'row' => 'test_row'
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->assertFieldByName('row_options[test_option]', NULL, 'Make sure the custom settings form from the test plugin appears.');
     $random_name = $this->randomName();
     $edit = array(
       'row_options[test_option]' => $random_name
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->drupalGet($row_options_url);
     $this->assertFieldByName('row_options[test_option]', $random_name, 'Make sure the custom settings form field has the expected value stored.');
 
-    $this->drupalPost($view_edit_url, array(), t('Save'));
+    $this->drupalPostForm($view_edit_url, array(), t('Save'));
     $this->assertLink(t('Test row plugin'), 0, 'Make sure the test row plugin is shown in the UI');
 
     $view = views_get_view($view_name);
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/SettingsTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/SettingsTest.php
index 4b18104..d7e4da0 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/SettingsTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/SettingsTest.php
@@ -41,7 +41,7 @@ function testEditUI() {
     $edit = array(
       'ui_show_master_display' => TRUE,
     );
-    $this->drupalPost('admin/structure/views/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/structure/views/settings', $edit, t('Save configuration'));
 
     $view = array();
     $view['label'] = $this->randomName(16);
@@ -50,7 +50,7 @@ function testEditUI() {
     $view['page[create]'] = TRUE;
     $view['page[title]'] = $this->randomName(16);
     $view['page[path]'] = $this->randomName(16);
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     // Configure to not always show the master display.
     // If you have a view without a page or block the master display should be
@@ -58,15 +58,15 @@ function testEditUI() {
     $edit = array(
       'ui_show_master_display' => FALSE,
     );
-    $this->drupalPost('admin/structure/views/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/structure/views/settings', $edit, t('Save configuration'));
 
     $view['page[create]'] = FALSE;
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     // Create a view with an additional display, so master should be hidden.
     $view['page[create]'] = TRUE;
     $view['id'] = strtolower($this->randomName());
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
     $this->assertNoLink(t('Master'));
 
@@ -77,42 +77,42 @@ function testEditUI() {
     $edit = array(
       'ui_show_display_embed' => TRUE,
     );
-    $this->drupalPost('admin/structure/views/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/structure/views/settings', $edit, t('Save configuration'));
 
     $view['id'] = strtolower($this->randomName());
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
     $this->assertFieldById('edit-displays-top-add-display-embed');
 
     $edit = array(
       'ui_show_display_embed' => FALSE,
     );
-    $this->drupalPost('admin/structure/views/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/structure/views/settings', $edit, t('Save configuration'));
     views_invalidate_cache();
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
     $this->assertNoFieldById('edit-displays-top-add-display-embed');
 
     // Configure to hide/show the sql at the preview.
     $edit = array(
       'ui_show_sql_query_enabled' => FALSE,
     );
-    $this->drupalPost('admin/structure/views/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/structure/views/settings', $edit, t('Save configuration'));
 
     $view['id'] = strtolower($this->randomName());
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
-    $this->drupalPost(NULL, array(), t('Update preview'));
+    $this->drupalPostForm(NULL, array(), t('Update preview'));
     $xpath = $this->xpath('//div[@class="views-query-info"]/pre');
     $this->assertEqual(count($xpath), 0, 'The views sql is hidden.');
 
     $edit = array(
       'ui_show_sql_query_enabled' => TRUE,
     );
-    $this->drupalPost('admin/structure/views/settings', $edit, t('Save configuration'));
+    $this->drupalPostForm('admin/structure/views/settings', $edit, t('Save configuration'));
 
     $view['id'] = strtolower($this->randomName());
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
 
-    $this->drupalPost(NULL, array(), t('Update preview'));
+    $this->drupalPostForm(NULL, array(), t('Update preview'));
     $xpath = $this->xpath('//div[@class="views-query-info"]//pre');
     $this->assertEqual(count($xpath), 1, 'The views sql is shown.');
     $this->assertFalse(strpos($xpath[0], 'db_condition_placeholder') !== FALSE, 'No placeholders are shown in the views sql.');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/StorageTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/StorageTest.php
index 24582db..bd047b7 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/StorageTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/StorageTest.php
@@ -54,8 +54,8 @@ public function testDetails() {
       'langcode' => 'fr',
     );
 
-    $this->drupalPost("admin/structure/views/nojs/edit-details/$view_name/default", $edit, t('Apply'));
-    $this->drupalPost(NULL, array(), t('Save'));
+    $this->drupalPostForm("admin/structure/views/nojs/edit-details/$view_name/default", $edit, t('Apply'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
 
     $view = views_get_view($view_name);
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/StyleUITest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/StyleUITest.php
index 82a481b..3e37ab6 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/StyleUITest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/StyleUITest.php
@@ -45,17 +45,17 @@ public function testStyleUI() {
     $edit = array(
       'style' => 'test_style'
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->assertFieldByName('style_options[test_option]', NULL, 'Make sure the custom settings form from the test plugin appears.');
     $random_name = $this->randomName();
     $edit = array(
       'style_options[test_option]' => $random_name
     );
-    $this->drupalPost(NULL, $edit, t('Apply'));
+    $this->drupalPostForm(NULL, $edit, t('Apply'));
     $this->drupalGet($style_options_url);
     $this->assertFieldByName('style_options[test_option]', $random_name, 'Make sure the custom settings form field has the expected value stored.');
 
-    $this->drupalPost($view_edit_url, array(), t('Save'));
+    $this->drupalPostForm($view_edit_url, array(), t('Save'));
     $this->assertLink(t('Test style plugin'), 0, 'Make sure the test style plugin is shown in the UI');
 
     $view = views_get_view($view_name);
@@ -66,8 +66,8 @@ public function testStyleUI() {
 
     // Test that fields are working correctly in the UI for style plugins when
     // a field row plguin is selected.
-    $this->drupalPost("admin/structure/views/view/$view_name/edit", array(), 'Add Page');
-    $this->drupalPost("admin/structure/views/nojs/display/$view_name/page_1/row", array('row' => 'fields'), t('Apply'));
+    $this->drupalPostForm("admin/structure/views/view/$view_name/edit", array(), 'Add Page');
+    $this->drupalPostForm("admin/structure/views/nojs/display/$view_name/page_1/row", array('row' => 'fields'), t('Apply'));
     // If fields are being used this text will not be shown.
     $this->assertNoText(t('The selected style or row format does not utilize fields.'));
   }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewEditTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewEditTest.php
index db74ae0..fe12b2b 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewEditTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewEditTest.php
@@ -38,7 +38,7 @@ public function testDeleteLink() {
 
     $this->clickLink(t('Delete view'));
     $this->assertUrl('admin/structure/views/view/test_view/delete');
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPostForm(NULL, array(), t('Delete'));
 
     $this->assertUrl('admin/structure/views');
     $view = $this->container->get('plugin.manager.entity')->getStorageController('view')->load('test_view');
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewsUITourTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewsUITourTest.php
index c15e2ca..899e08a 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewsUITourTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/ViewsUITourTest.php
@@ -53,7 +53,7 @@ public function testViewsUiTourTips() {
     $view['page[create]'] = 1;
     $view['page[path]'] = $this->randomName(16);
     $view_path = $view['page[path]'];
-    $this->drupalPost('admin/structure/views/add', $view, t('Save and edit'));
+    $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
     $this->assertTourTips();
   }
 
diff --git a/core/profiles/standard/lib/Drupal/standard/Tests/StandardTest.php b/core/profiles/standard/lib/Drupal/standard/Tests/StandardTest.php
index d416dd6..31fa0fe 100644
--- a/core/profiles/standard/lib/Drupal/standard/Tests/StandardTest.php
+++ b/core/profiles/standard/lib/Drupal/standard/Tests/StandardTest.php
@@ -38,7 +38,7 @@ function testStandard() {
     $this->drupalLogin($admin);
     // Configure the block.
     $this->drupalGet('admin/structure/block/add/system_menu_block:main/bartik');
-    $this->drupalPost(NULL, array(
+    $this->drupalPostForm(NULL, array(
       'region' => 'sidebar_first',
       'machine_name' => 'main_navigation',
     ), t('Save block'));
