class ConfigTranslationUiModulesTest

Same name in other branches
  1. 10 core/modules/config_translation/tests/src/Functional/ConfigTranslationUiModulesTest.php \Drupal\Tests\config_translation\Functional\ConfigTranslationUiModulesTest

Translate settings and entities to various languages.

@group config_translation

Hierarchy

Expanded class hierarchy of ConfigTranslationUiModulesTest

File

core/modules/config_translation/tests/src/Functional/ConfigTranslationUiModulesTest.php, line 20

Namespace

Drupal\Tests\config_translation\Functional
View source
class ConfigTranslationUiModulesTest extends ConfigTranslationUiTestBase {
    
    /**
     * Tests the contact form translation.
     */
    public function testContactConfigEntityTranslation() : void {
        $this->drupalLogin($this->adminUser);
        $this->drupalGet('admin/structure/contact');
        // Check for default contact form configuration entity from Contact module.
        $this->assertSession()
            ->linkByHrefExists('admin/structure/contact/manage/feedback');
        // Save default language configuration.
        $label = 'Send your feedback';
        $edit = [
            'label' => $label,
            'recipients' => 'sales@example.com,support@example.com',
            'reply' => 'Thank you for your mail',
        ];
        $this->drupalGet('admin/structure/contact/manage/feedback');
        $this->submitForm($edit, 'Save');
        // Ensure translation link is present.
        $translation_base_url = 'admin/structure/contact/manage/feedback/translate';
        $this->assertSession()
            ->linkByHrefExists($translation_base_url);
        // Make sure translate tab is present.
        $this->drupalGet('admin/structure/contact/manage/feedback');
        $this->assertSession()
            ->linkExists('Translate contact form');
        // Visit the form to confirm the changes.
        $this->drupalGet('contact/feedback');
        $this->assertSession()
            ->pageTextContains($label);
        foreach ($this->langcodes as $langcode) {
            $this->drupalGet($translation_base_url);
            $this->assertSession()
                ->linkExists('Translate contact form');
            // 'Add' link should be present for $langcode translation.
            $translation_page_url = "{$translation_base_url}/{$langcode}/add";
            $this->assertSession()
                ->linkByHrefExists($translation_page_url);
            // Make sure original text is present on this page.
            $this->drupalGet($translation_page_url);
            $this->assertSession()
                ->pageTextContains($label);
            // Update translatable fields.
            $edit = [
                'translation[config_names][contact.form.feedback][label]' => 'Website feedback - ' . $langcode,
                'translation[config_names][contact.form.feedback][reply]' => 'Thank you for your mail - ' . $langcode,
            ];
            // Save language specific version of form.
            $this->drupalGet($translation_page_url);
            $this->submitForm($edit, 'Save translation');
            // Expect translated values in language specific file.
            $override = \Drupal::languageManager()->getLanguageConfigOverride($langcode, 'contact.form.feedback');
            $expected = [
                'label' => 'Website feedback - ' . $langcode,
                'reply' => 'Thank you for your mail - ' . $langcode,
            ];
            $this->assertEquals($expected, $override->get());
            // Check for edit, delete links (and no 'add' link) for $langcode.
            $this->assertSession()
                ->linkByHrefNotExists("{$translation_base_url}/{$langcode}/add");
            $this->assertSession()
                ->linkByHrefExists("{$translation_base_url}/{$langcode}/edit");
            $this->assertSession()
                ->linkByHrefExists("{$translation_base_url}/{$langcode}/delete");
            // Visit language specific version of form to check label.
            $this->drupalGet($langcode . '/contact/feedback');
            $this->assertSession()
                ->pageTextContains('Website feedback - ' . $langcode);
            // Submit feedback.
            $edit = [
                'subject[0][value]' => 'Test subject',
                'message[0][value]' => 'Test message',
            ];
            $this->submitForm($edit, 'Send message');
        }
        // Now that all language translations are present, check translation and
        // original text all appear in any translated page on the translation
        // forms.
        foreach ($this->langcodes as $langcode) {
            $langcode_prefixes = array_merge([
                '',
            ], $this->langcodes);
            foreach ($langcode_prefixes as $langcode_prefix) {
                $this->drupalGet(ltrim("{$langcode_prefix}/{$translation_base_url}/{$langcode}/edit", '/'));
                $this->assertSession()
                    ->fieldValueEquals('translation[config_names][contact.form.feedback][label]', 'Website feedback - ' . $langcode);
                $this->assertSession()
                    ->pageTextContains($label);
            }
        }
        // We get all emails so no need to check inside the loop.
        $captured_emails = $this->getMails();
        // Check language specific auto reply text in email body.
        foreach ($captured_emails as $email) {
            if ($email['id'] == 'contact_page_autoreply') {
                // Trim because we get an added newline for the body.
                $this->assertEquals('Thank you for your mail - ' . $email['langcode'], trim($email['body']));
            }
        }
        // Test that delete links work and operations perform properly.
        foreach ($this->langcodes as $langcode) {
            $language = \Drupal::languageManager()->getLanguage($langcode)
                ->getName();
            $this->drupalGet("{$translation_base_url}/{$langcode}/delete");
            $this->assertSession()
                ->pageTextContains("Are you sure you want to delete the {$language} translation of {$label} contact form?");
            // Assert link back to list page to cancel delete is present.
            $this->assertSession()
                ->linkByHrefExists($translation_base_url);
            $this->submitForm([], 'Delete');
            $this->assertSession()
                ->pageTextContains("{$language} translation of {$label} contact form was deleted");
            $this->assertSession()
                ->linkByHrefExists("{$translation_base_url}/{$langcode}/add");
            $this->assertSession()
                ->linkByHrefNotExists("translation_base_url/{$langcode}/edit");
            $this->assertSession()
                ->linkByHrefNotExists("{$translation_base_url}/{$langcode}/delete");
            // Expect no language specific file present anymore.
            $override = \Drupal::languageManager()->getLanguageConfigOverride($langcode, 'contact.form.feedback');
            $this->assertTrue($override->isNew());
        }
        // Check configuration page with translator user. Should have no access.
        $this->drupalLogout();
        $this->drupalLogin($this->translatorUser);
        $this->drupalGet('admin/structure/contact/manage/feedback');
        $this->assertSession()
            ->statusCodeEquals(403);
        // While translator can access the translation page, the edit link is not
        // present due to lack of permissions.
        $this->drupalGet($translation_base_url);
        $this->assertSession()
            ->linkNotExists('Edit');
        // Check 'Add' link for French.
        $this->assertSession()
            ->linkByHrefExists("{$translation_base_url}/fr/add");
    }
    
    /**
     * Tests the views translation interface.
     */
    public function testViewsTranslationUI() : void {
        $this->drupalLogin($this->adminUser);
        $description = 'All content promoted to the front page.';
        $human_readable_name = 'Frontpage';
        $display_settings_default = 'Default';
        $display_options_default = '(Empty)';
        $translation_base_url = 'admin/structure/views/view/frontpage/translate';
        $this->drupalGet($translation_base_url);
        // Check 'Add' link of French to visit add page.
        $this->assertSession()
            ->linkByHrefExists("{$translation_base_url}/fr/add");
        $this->clickLink('Add');
        // Make sure original text is present on this page.
        $this->assertSession()
            ->pageTextContains($description);
        $this->assertSession()
            ->pageTextContains($human_readable_name);
        // Update Views Fields for French.
        $edit = [
            'translation[config_names][views.view.frontpage][description]' => $description . " FR",
            'translation[config_names][views.view.frontpage][label]' => $human_readable_name . " FR",
            'translation[config_names][views.view.frontpage][display][default][display_title]' => $display_settings_default . " FR",
            'translation[config_names][views.view.frontpage][display][default][display_options][title]' => $display_options_default . " FR",
        ];
        $this->drupalGet("{$translation_base_url}/fr/add");
        $this->submitForm($edit, 'Save translation');
        $this->assertSession()
            ->pageTextContains('Successfully saved French translation.');
        // Check for edit, delete links (and no 'add' link) for French language.
        $this->assertSession()
            ->linkByHrefNotExists("{$translation_base_url}/fr/add");
        $this->assertSession()
            ->linkByHrefExists("{$translation_base_url}/fr/edit");
        $this->assertSession()
            ->linkByHrefExists("{$translation_base_url}/fr/delete");
        // Check translation saved proper.
        $this->drupalGet("{$translation_base_url}/fr/edit");
        $this->assertSession()
            ->fieldValueEquals('translation[config_names][views.view.frontpage][description]', $description . " FR");
        $this->assertSession()
            ->fieldValueEquals('translation[config_names][views.view.frontpage][label]', $human_readable_name . " FR");
        $this->assertSession()
            ->fieldValueEquals('translation[config_names][views.view.frontpage][display][default][display_title]', $display_settings_default . " FR");
        $this->assertSession()
            ->fieldValueEquals('translation[config_names][views.view.frontpage][display][default][display_options][title]', $display_options_default . " FR");
    }
    
    /**
     * Tests the translation of field and field storage configuration.
     */
    public function testFieldConfigTranslation() : void {
        // Add a test field which has a translatable field setting and a
        // translatable field storage setting.
        $field_name = $this->randomMachineName();
        $field_storage = FieldStorageConfig::create([
            'field_name' => $field_name,
            'entity_type' => 'entity_test',
            'type' => 'test_field',
        ]);
        $translatable_storage_setting = $this->randomString();
        $field_storage->setSetting('translatable_storage_setting', $translatable_storage_setting);
        $field_storage->save();
        $bundle = $this->randomMachineName();
        entity_test_create_bundle($bundle);
        $field = FieldConfig::create([
            'field_name' => $field_name,
            'entity_type' => 'entity_test',
            'bundle' => $bundle,
        ]);
        $translatable_field_setting = $this->randomString();
        $field->setSetting('translatable_field_setting', $translatable_field_setting);
        $field->save();
        $this->drupalLogin($this->translatorUser);
        $this->drupalGet("/entity_test/structure/{$bundle}/fields/entity_test.{$bundle}.{$field_name}/translate");
        $this->clickLink('Add');
        $this->assertSession()
            ->pageTextContains('Translatable field setting');
        $this->assertSession()
            ->assertEscaped($translatable_field_setting);
        $this->assertSession()
            ->pageTextContains('Translatable storage setting');
        $this->assertSession()
            ->assertEscaped($translatable_storage_setting);
    }
    
    /**
     * Tests the translation of a boolean field settings.
     */
    public function testBooleanFieldConfigTranslation() : void {
        // Add a test boolean field.
        $field_name = $this->randomMachineName();
        FieldStorageConfig::create([
            'field_name' => $field_name,
            'entity_type' => 'entity_test',
            'type' => 'boolean',
        ])->save();
        $bundle = $this->randomMachineName();
        entity_test_create_bundle($bundle);
        $field = FieldConfig::create([
            'field_name' => $field_name,
            'entity_type' => 'entity_test',
            'bundle' => $bundle,
        ]);
        $on_label = 'On label (with <em>HTML</em> & things)';
        $field->setSetting('on_label', $on_label);
        $off_label = 'Off label (with <em>HTML</em> & things)';
        $field->setSetting('off_label', $off_label);
        $field->save();
        $this->drupalLogin($this->translatorUser);
        $this->drupalGet("/entity_test/structure/{$bundle}/fields/entity_test.{$bundle}.{$field_name}/translate");
        $this->clickLink('Add');
        // Checks the text of details summary element that surrounds the translation
        // options.
        $this->assertSession()
            ->responseContains(Html::escape(strip_tags($on_label)) . ' Boolean settings');
        // Checks that the correct on and off labels appear on the form.
        $this->assertSession()
            ->assertEscaped($on_label);
        $this->assertSession()
            ->assertEscaped($off_label);
    }
    
    /**
     * Tests text_format translation.
     */
    public function testTextFormatTranslation() : void {
        $this->drupalLogin($this->adminUser);
        
        /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
        $config_factory = $this->container
            ->get('config.factory');
        $expected = [
            'value' => '<p><strong>Hello World</strong></p>',
            'format' => 'plain_text',
        ];
        $actual = $config_factory->get('config_translation_test.content')
            ->getOriginal('content', FALSE);
        $this->assertEquals($expected, $actual);
        $translation_base_url = 'admin/config/media/file-system/translate';
        $this->drupalGet($translation_base_url);
        // 'Add' link should be present for French translation.
        $translation_page_url = "{$translation_base_url}/fr/add";
        $this->assertSession()
            ->linkByHrefExists($translation_page_url);
        $this->drupalGet($translation_page_url);
        // Assert that changing the text format is not possible, even for an
        // administrator.
        $this->assertSession()
            ->fieldNotExists('translation[config_names][config_translation_test.content][content][format]');
        // Update translatable fields.
        $edit = [
            'translation[config_names][config_translation_test.content][content][value]' => '<p><strong>Hello World</strong> - FR</p>',
        ];
        // Save language specific version of form.
        $this->drupalGet($translation_page_url);
        $this->submitForm($edit, 'Save translation');
        // Get translation and check we've got the right value.
        $expected = [
            'value' => '<p><strong>Hello World</strong> - FR</p>',
            'format' => 'plain_text',
        ];
        $this->container
            ->get('language.config_factory_override')
            ->setLanguage(new Language([
            'id' => 'fr',
        ]));
        $actual = $config_factory->get('config_translation_test.content')
            ->get('content');
        $this->assertEquals($expected, $actual);
        // Change the text format of the source configuration and verify that the
        // text format of the translation does not change because that could lead to
        // security vulnerabilities.
        $config_factory->getEditable('config_translation_test.content')
            ->set('content.format', 'full_html')
            ->save();
        $actual = $config_factory->get('config_translation_test.content')
            ->get('content');
        // The translation should not have changed, so re-use $expected.
        $this->assertEquals($expected, $actual);
        // Because the text is now in a text format that the translator does not
        // have access to, the translator should not be able to translate it.
        $translation_page_url = "{$translation_base_url}/fr/edit";
        $this->drupalLogin($this->translatorUser);
        $this->drupalGet($translation_page_url);
        $this->assertDisabledTextarea('edit-translation-config-names-config-translation-testcontent-content-value');
        $this->submitForm([], 'Save translation');
        // Check that submitting the form did not update the text format of the
        // translation.
        $actual = $config_factory->get('config_translation_test.content')
            ->get('content');
        $this->assertEquals($expected, $actual);
        // The administrator must explicitly change the text format.
        $this->drupalLogin($this->adminUser);
        $edit = [
            'translation[config_names][config_translation_test.content][content][format]' => 'full_html',
        ];
        $this->drupalGet($translation_page_url);
        $this->submitForm($edit, 'Save translation');
        $expected = [
            'value' => '<p><strong>Hello World</strong> - FR</p>',
            'format' => 'full_html',
        ];
        $actual = $config_factory->get('config_translation_test.content')
            ->get('content');
        $this->assertEquals($expected, $actual);
    }
    
    /**
     * Tests field translation for node fields.
     */
    public function testNodeFieldTranslation() : void {
        NodeType::create([
            'type' => 'article',
            'name' => 'Article',
        ])->save();
        $field_name = 'translatable_field';
        $field_storage = FieldStorageConfig::create([
            'field_name' => $field_name,
            'entity_type' => 'node',
            'type' => 'text',
        ]);
        $field_storage->setSetting('translatable_storage_setting', 'translatable_storage_setting');
        $field_storage->save();
        $field = FieldConfig::create([
            'field_name' => $field_name,
            'entity_type' => 'node',
            'bundle' => 'article',
        ]);
        $field->save();
        $this->drupalLogin($this->translatorUser);
        $this->drupalGet("/entity_test/structure/article/fields/node.article.{$field_name}/translate");
        $this->clickLink('Add');
        $form_values = [
            'translation[config_names][field.field.node.article.translatable_field][description]' => 'FR Help text.',
            'translation[config_names][field.field.node.article.translatable_field][label]' => 'FR label',
        ];
        $this->submitForm($form_values, 'Save translation');
        $this->assertSession()
            ->pageTextContains('Successfully saved French translation.');
        // Check that the translations are saved.
        $this->clickLink('Edit');
        $this->assertSession()
            ->responseContains('FR label');
    }
    
    /**
     * Test translation save confirmation message.
     */
    public function testMenuTranslationWithoutChange() : void {
        $this->drupalLogin($this->adminUser);
        $this->drupalGet('admin/structure/menu/manage/main/translate/tyv/add');
        $this->submitForm([], 'Save translation');
        $this->assertSession()
            ->pageTextContains('Tuvan translation was not added. To add a translation, you must modify the configuration.');
        $this->drupalGet('admin/structure/menu/manage/main/translate/tyv/add');
        $edit = [
            'translation[config_names][system.menu.main][label]' => 'Main navigation Translation',
            'translation[config_names][system.menu.main][description]' => 'Site section links Translation',
        ];
        $this->submitForm($edit, 'Save translation');
        $this->assertSession()
            ->pageTextContains('Successfully saved Tuvan translation.');
    }

}

Members

Title Sort descending Modifiers Object type Summary Member alias Overriden Title Overrides
AssertMailTrait::assertMail protected function Asserts that the most recently sent email message has the given value.
AssertMailTrait::assertMailPattern protected function Asserts that the most recently sent email message has the pattern in it.
AssertMailTrait::assertMailString protected function Asserts that the most recently sent email message has the string in it.
AssertMailTrait::getMails protected function Gets an array containing all emails sent during this test case.
BlockCreationTrait::placeBlock protected function Creates a block instance based on default settings. Aliased as: drupalPlaceBlock
BrowserHtmlDebugTrait::$htmlOutputBaseUrl protected property The Base URI to use for links to the output files.
BrowserHtmlDebugTrait::$htmlOutputClassName protected property Class name for HTML output logging.
BrowserHtmlDebugTrait::$htmlOutputCounter protected property Counter for HTML output logging.
BrowserHtmlDebugTrait::$htmlOutputCounterStorage protected property Counter storage for HTML output logging.
BrowserHtmlDebugTrait::$htmlOutputDirectory protected property Directory name for HTML output logging.
BrowserHtmlDebugTrait::$htmlOutputEnabled protected property HTML output enabled.
BrowserHtmlDebugTrait::$htmlOutputTestId protected property HTML output test ID.
BrowserHtmlDebugTrait::formatHtmlOutputHeaders protected function Formats HTTP headers as string for HTML output logging.
BrowserHtmlDebugTrait::getHtmlOutputHeaders protected function Returns headers in HTML output format. 1
BrowserHtmlDebugTrait::getResponseLogHandler protected function Provides a Guzzle middleware handler to log every response received.
BrowserHtmlDebugTrait::htmlOutput protected function Logs a HTML output message in a text file.
BrowserHtmlDebugTrait::initBrowserOutputFile protected function Creates the directory to store browser output.
BrowserTestBase::$baseUrl protected property The base URL.
BrowserTestBase::$configImporter protected property The config importer that can be used in a test.
BrowserTestBase::$customTranslations protected property An array of custom translations suitable for SettingsEditor::rewrite().
BrowserTestBase::$mink protected property Mink session manager.
BrowserTestBase::$minkDefaultDriverArgs protected property Mink default driver params.
BrowserTestBase::$minkDefaultDriverClass protected property Mink class for the default driver to use. 1
BrowserTestBase::$originalContainer protected property The original container.
BrowserTestBase::$originalShutdownCallbacks protected property The original array of shutdown function callbacks.
BrowserTestBase::$profile protected property The profile to install as a basis for testing. 41
BrowserTestBase::$timeLimit protected property Time limit in seconds for the test.
BrowserTestBase::$translationFilesDirectory protected property The translation file directory for the test environment.
BrowserTestBase::cleanupEnvironment protected function Clean up the test environment.
BrowserTestBase::config protected function Configuration accessor for tests. Returns non-overridden configuration.
BrowserTestBase::filePreDeleteCallback public static function Ensures test files are deletable.
BrowserTestBase::getDefaultDriverInstance protected function Gets an instance of the default Mink driver.
BrowserTestBase::getDrupalSettings protected function Gets the JavaScript drupalSettings variable for the currently-loaded page. 1
BrowserTestBase::getHttpClient protected function Obtain the HTTP client for the system under test.
BrowserTestBase::getMinkDriverArgs protected function Gets the Mink driver args from an environment variable. 1
BrowserTestBase::getOptions protected function Helper function to get the options of select field.
BrowserTestBase::getSession public function Returns Mink session.
BrowserTestBase::getSessionCookies protected function Get session cookies from current session.
BrowserTestBase::getTestMethodCaller protected function Retrieves the current calling line in the class under test. Overrides BrowserHtmlDebugTrait::getTestMethodCaller
BrowserTestBase::initFrontPage protected function Visits the front page when initializing Mink. 3
BrowserTestBase::initMink protected function Initializes Mink sessions. 1
BrowserTestBase::installDrupal public function Installs Drupal into the test site. 2
BrowserTestBase::registerSessions protected function Registers additional Mink sessions.
BrowserTestBase::setUpAppRoot protected function Sets up the root application path.
BrowserTestBase::setUpBeforeClass public static function 1
BrowserTestBase::tearDown protected function 3
BrowserTestBase::translatePostValues protected function Transforms a nested array into a flat array suitable for submitForm().
BrowserTestBase::xpath protected function Performs an xpath search on the contents of the internal browser.
BrowserTestBase::__construct public function 1
BrowserTestBase::__sleep public function Prevents serializing any properties.
ConfigTestTrait::configImporter protected function Returns a ConfigImporter object to import test configuration.
ConfigTestTrait::copyConfig protected function Copies configuration objects from source storage to target storage.
ConfigTranslationUiModulesTest::testBooleanFieldConfigTranslation public function Tests the translation of a boolean field settings.
ConfigTranslationUiModulesTest::testContactConfigEntityTranslation public function Tests the contact form translation.
ConfigTranslationUiModulesTest::testFieldConfigTranslation public function Tests the translation of field and field storage configuration.
ConfigTranslationUiModulesTest::testMenuTranslationWithoutChange public function Test translation save confirmation message.
ConfigTranslationUiModulesTest::testNodeFieldTranslation public function Tests field translation for node fields.
ConfigTranslationUiModulesTest::testTextFormatTranslation public function Tests text_format translation.
ConfigTranslationUiModulesTest::testViewsTranslationUI public function Tests the views translation interface.
ConfigTranslationUiTestBase::$adminUser protected property Administrator user for tests.
ConfigTranslationUiTestBase::$defaultTheme protected property The theme to install as the default for testing. Overrides BrowserTestBase::$defaultTheme
ConfigTranslationUiTestBase::$langcodes protected property Languages to enable.
ConfigTranslationUiTestBase::$localeStorage protected property String translation storage object.
ConfigTranslationUiTestBase::$modules protected static property Modules to install. Overrides BrowserTestBase::$modules
ConfigTranslationUiTestBase::$translatorUser protected property Translator user for tests.
ConfigTranslationUiTestBase::assertDisabledTextarea protected function Asserts that a textarea with a given ID has been disabled from editing.
ConfigTranslationUiTestBase::getPoFile public function Helper function that returns a .po file with a given number of plural forms.
ConfigTranslationUiTestBase::getTranslation protected function Gets translation from locale storage.
ConfigTranslationUiTestBase::setSiteInformation protected function Sets site name and slogan for default language, helps in tests.
ConfigTranslationUiTestBase::setUp protected function Overrides BrowserTestBase::setUp
ContentTypeCreationTrait::createContentType protected function Creates a custom content type based on default settings. Aliased as: drupalCreateContentType 1
ExpectDeprecationTrait::expectDeprecation public function Adds an expected deprecation.
ExpectDeprecationTrait::getCallableName private static function Returns a callable as a string suitable for inclusion in a message.
ExpectDeprecationTrait::setUpErrorHandler public function Sets up the test error handler.
ExpectDeprecationTrait::tearDownErrorHandler public function Tears down the test error handler.
ExtensionListTestTrait::getModulePath protected function Gets the path for the specified module.
ExtensionListTestTrait::getThemePath protected function Gets the path for the specified theme.
FunctionalTestSetupTrait::$apcuEnsureUniquePrefix protected property The flag to set &#039;apcu_ensure_unique_prefix&#039; setting. 1
FunctionalTestSetupTrait::$classLoader protected property The class loader to use for installation and initialization of setup.
FunctionalTestSetupTrait::$rootUser protected property The &quot;#1&quot; admin user.
FunctionalTestSetupTrait::$usesSuperUserAccessPolicy protected property Set to TRUE to make user 1 a super user. 8
FunctionalTestSetupTrait::doInstall protected function Execute the non-interactive installer. 1
FunctionalTestSetupTrait::getDatabaseTypes protected function Returns all supported database driver installer objects.
FunctionalTestSetupTrait::initConfig protected function Initialize various configurations post-installation. 1
FunctionalTestSetupTrait::initKernel protected function Initializes the kernel after installation.
FunctionalTestSetupTrait::initSettings protected function Initialize settings created during install.
FunctionalTestSetupTrait::initUserSession protected function Initializes user 1 for the site to be installed.
FunctionalTestSetupTrait::installDefaultThemeFromClassProperty protected function Installs the default theme defined by `static::$defaultTheme` when needed. 1
FunctionalTestSetupTrait::installModulesFromClassProperty protected function Install modules defined by `static::$modules`. 1
FunctionalTestSetupTrait::installParameters protected function Returns the parameters that will be used when the test installs Drupal. 8
FunctionalTestSetupTrait::prepareEnvironment protected function Prepares the current environment for running the test. 29
FunctionalTestSetupTrait::prepareRequestForGenerator protected function Creates a mock request and sets it on the generator.
FunctionalTestSetupTrait::prepareSettings protected function Prepares site settings and services before installation. 4
FunctionalTestSetupTrait::rebuildAll protected function Resets and rebuilds the environment after setup.
FunctionalTestSetupTrait::rebuildContainer protected function Rebuilds \Drupal::getContainer().
FunctionalTestSetupTrait::resetAll protected function Resets all data structures after having enabled new modules.
FunctionalTestSetupTrait::setContainerParameter protected function Changes parameters in the services.yml file.
FunctionalTestSetupTrait::setupBaseUrl protected function Sets up the base URL based upon the environment variable.
FunctionalTestSetupTrait::writeSettings protected function Rewrites the settings.php file of the test site. 1
NodeCreationTrait::createNode protected function Creates a node based on default settings. Aliased as: drupalCreateNode
NodeCreationTrait::getNodeByTitle public function Get a node from the database based on its title. Aliased as: drupalGetNodeByTitle
RandomGeneratorTrait::getRandomGenerator protected function Gets the random generator for the utility methods.
RandomGeneratorTrait::randomMachineName protected function Generates a unique random string containing letters and numbers.
RandomGeneratorTrait::randomObject public function Generates a random PHP object.
RandomGeneratorTrait::randomString public function Generates a pseudo-random string of ASCII characters of codes 32 to 126.
RefreshVariablesTrait::refreshVariables protected function Refreshes in-memory configuration and state information. 2
SessionTestTrait::$sessionName protected property The name of the session cookie.
SessionTestTrait::generateSessionName protected function Generates a session cookie name.
SessionTestTrait::getSessionName protected function Returns the session name in use on the child site.
StorageCopyTrait::replaceStorageContents protected static function Copy the configuration from one storage to another and remove stale items.
TestRequirementsTrait::getDrupalRoot protected static function Returns the Drupal root directory.
TestSetupTrait::$configSchemaCheckerExclusions protected static property An array of config object names that are excluded from schema checking. 3
TestSetupTrait::$container protected property The dependency injection container used in the test.
TestSetupTrait::$databasePrefix protected property The database prefix of this test run.
TestSetupTrait::$kernel protected property The DrupalKernel instance used in the test.
TestSetupTrait::$originalSite protected property The site directory of the original parent site.
TestSetupTrait::$privateFilesDirectory protected property The private file directory for the test environment.
TestSetupTrait::$publicFilesDirectory protected property The public file directory for the test environment.
TestSetupTrait::$root protected property The app root.
TestSetupTrait::$siteDirectory protected property The site directory of this test run.
TestSetupTrait::$strictConfigSchema protected property Set to TRUE to strict check all configuration saved. 4
TestSetupTrait::$tempFilesDirectory protected property The temporary file directory for the test environment.
TestSetupTrait::$testId protected property The test run ID.
TestSetupTrait::changeDatabasePrefix protected function Changes the database connection to the prefixed one.
TestSetupTrait::getConfigSchemaExclusions protected function Gets the config schema exclusions for this test.
TestSetupTrait::prepareDatabasePrefix protected function Generates a database prefix for running tests. 1
UiHelperTrait::$loggedInUser protected property The current user logged in using the Mink controlled browser.
UiHelperTrait::$maximumMetaRefreshCount protected property The number of meta refresh redirects to follow, or NULL if unlimited.
UiHelperTrait::$metaRefreshCount protected property The number of meta refresh redirects followed during ::drupalGet().
UiHelperTrait::$useOneTimeLoginLinks protected property Use one-time login links instead of submitting the login form. 3
UiHelperTrait::assertSession public function Returns WebAssert object. 1
UiHelperTrait::buildUrl protected function Builds an absolute URL from a system path or a URL object.
UiHelperTrait::checkForMetaRefresh protected function Checks for meta refresh tag and if found call drupalGet() recursively.
UiHelperTrait::click protected function Clicks the element with the given CSS selector.
UiHelperTrait::clickLink protected function Follows a link by complete name.
UiHelperTrait::cssSelect protected function Searches elements using a CSS selector in the raw content.
UiHelperTrait::cssSelectToXpath protected function Translates a CSS expression to its XPath equivalent.
UiHelperTrait::drupalGet protected function Retrieves a Drupal path or an absolute path. 3
UiHelperTrait::drupalLogin protected function Logs in a user using the Mink controlled browser.
UiHelperTrait::drupalLogout protected function Logs a user out of the Mink controlled browser and confirms.
UiHelperTrait::drupalResetSession protected function Resets the current active session back to Anonymous session.
UiHelperTrait::drupalUserIsLoggedIn protected function Returns whether a given user account is logged in.
UiHelperTrait::getAbsoluteUrl protected function Takes a path and returns an absolute path.
UiHelperTrait::getTextContent protected function Retrieves the plain-text content from the current page.
UiHelperTrait::getUrl protected function Get the current URL from the browser.
UiHelperTrait::isTestUsingGuzzleClient protected function Determines if test is using DrupalTestBrowser.
UiHelperTrait::prepareRequest protected function Prepare for a request to testing site. 1
UiHelperTrait::submitForm protected function Fills and submits a form.
UserCreationTrait::checkPermissions protected function Checks whether a given list of permission names is valid.
UserCreationTrait::createAdminRole protected function Creates an administrative role.
UserCreationTrait::createRole protected function Creates a role with specified permissions. Aliased as: drupalCreateRole
UserCreationTrait::createUser protected function Create a user with a given set of permissions. Aliased as: drupalCreateUser
UserCreationTrait::grantPermissions protected function Grant permissions to a user role.
UserCreationTrait::setCurrentUser protected function Switch the current logged in user.
UserCreationTrait::setUpCurrentUser protected function Creates a random user account and sets it as current user.
XdebugRequestTrait::extractCookiesFromRequest protected function Adds xdebug cookies, from request setup.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.