drupalCreateUser([ 'administer site configuration', 'administer languages', 'access administration pages', 'administer permissions', ]); $this->drupalLogin($admin_user); } /** * Test for machine name transliteration functionality. * * @dataProvider machineNameInputOutput */ public function testMachineNameTransliterations($langcode, $input, $output): void { $page = $this->getSession()->getPage(); if ($langcode !== 'en') { ConfigurableLanguage::createFromLangcode($langcode)->save(); } $this->config('system.site')->set('default_langcode', $langcode)->save(); $this->rebuildContainer(); $this->drupalGet("/admin/people/roles/add"); $page->find('css', '[data-drupal-selector="edit-label"]')->setValue($input); $this->assertSession()->elementTextEquals('css', 'span.machine-name-value', $output); } /** * Data for the testMachineNameTransliterations. * * @return array * An array of arrays, where each sub-array contains a language code, * input string, and the expected transliterated output string. */ public static function machineNameInputOutput(): array { return [ // cSpell:disable ['en', 'Bob', 'bob'], ['en', 'Äwesome', 'awesome'], ['de', 'Äwesome', 'aewesome'], ['da', 'äöüåøhello', 'aouaaoehello'], ['fr', 'ц', 'c'], ['fr', 'ᐑ', 'wii'], // This test is not working with chromedriver as '𐌰𐌸' chars are not // accepted. // ['en', '𐌰𐌸', '__'], ['en', 'Ä Ö Ü Å Ø äöüåøhello', 'a_o_u_a_o_aouaohello'], ['de', 'Ä Ö Ü Å Ø äöüåøhello', 'ae_oe_ue_a_o_aeoeueaohello'], ['de', ']URY&m_G^;', 'ury_m_g'], ['da', 'Ä Ö Ü Å Ø äöüåøhello', 'a_o_u_aa_oe_aouaaoehello'], ['kg', 'ц', 'ts'], ['en', ' Hello Abventor! ', 'hello_abventor'], // cSpell:enable ]; } }