MDL-82212 behat: Display error when deprecated icons are found

A check for deprecated icons has been integrated into Behat tests.
This check can be disabled by adding the --no-icon-deprecations flag
to the Behat initialization command.
This commit is contained in:
Sara Arjona
2024-08-21 07:05:14 +02:00
parent 9f63a03d93
commit c77a0dad13
6 changed files with 81 additions and 24 deletions
@@ -0,0 +1,7 @@
issueNumber: MDL-82212
notes:
tool_behat:
- message: >-
Behat tests are now checking for deprecated icons. This check can be
disabled by using the --no-icon-deprecations option in the behat CLI.
type: improved
+11 -7
View File
@@ -54,6 +54,7 @@ list($options, $unrecognized) = cli_get_params(
'composer-upgrade' => true,
'composer-self-update' => true,
'scss-deprecations' => false,
'no-icon-deprecations' => false,
),
array(
'j' => 'parallel',
@@ -70,18 +71,20 @@ Behat utilities to initialise behat tests
Usage:
php init.php [--parallel=value [--maxruns=value] [--fromrun=value --torun=value]]
[--no-axe] [--scss-deprecations] [-o | --optimize-runs] [-a | --add-core-features-to-theme]
[--no-axe] [--scss-deprecations] [--no-icon-deprecations] [-o | --optimize-runs]
[-a | --add-core-features-to-theme]
[--no-composer-self-update] [--no-composer-upgrade]
[--disable-composer]
[--help]
Options:
-j, --parallel Number of parallel behat run to initialise
-m, --maxruns Max parallel processes to be executed at one time
--fromrun Execute run starting from (Used for parallel runs on different vms)
--torun Execute run till (Used for parallel runs on different vms)
--no-axe Disable axe accessibility tests.
--scss-deprecations Enable SCSS deprecation checks.
-j, --parallel Number of parallel behat run to initialise
-m, --maxruns Max parallel processes to be executed at one time
--fromrun Execute run starting from (Used for parallel runs on different vms)
--torun Execute run till (Used for parallel runs on different vms)
--no-axe Disable axe accessibility tests.
--scss-deprecations Enable SCSS deprecation checks.
--no-icon-deprecations Disable icon deprecation checks.
-o, --optimize-runs
Split features with specified tags in all parallel runs.
@@ -134,6 +137,7 @@ if ($options['parallel'] && $options['parallel'] > 1) {
'add-core-features-to-theme',
'axe',
'scss-deprecations',
'no-icon-deprecations',
];
foreach ($cmdoptionsforsinglerun as $option) {
+12 -9
View File
@@ -59,6 +59,7 @@ list($options, $unrecognized) = cli_get_params(
'add-core-features-to-theme' => false,
'axe' => true,
'scss-deprecations' => false,
'no-icon-deprecations' => false,
),
array(
'h' => 'help',
@@ -74,18 +75,20 @@ $help = "
Behat utilities to manage the test environment
Usage:
php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--no-axe|--scss-deprecations|--help]
php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps]
[--no-axe|--scss-deprecations|--no-icon-deprecations|--help]
[--parallel=value [--maxruns=value]]
Options:
--install Installs the test environment for acceptance tests
--drop Drops the database tables and the dataroot contents
--enable Enables test environment and updates tests list
--disable Disables test environment
--diag Get behat test environment status code
--updatesteps Update feature step file.
--no-axe Disable axe accessibility tests.
--scss-deprecations Enable SCSS deprecation checks.
--install Installs the test environment for acceptance tests
--drop Drops the database tables and the dataroot contents
--enable Enables test environment and updates tests list
--disable Disables test environment
--diag Get behat test environment status code
--updatesteps Update feature step file.
--no-axe Disable axe accessibility tests.
--scss-deprecations Enable SCSS deprecation checks.
--no-icon-deprecations Disable icon deprecation checks.
-j, --parallel Number of parallel behat run operation
-m, --maxruns Max parallel processes to be executed at one time.
+13 -8
View File
@@ -54,6 +54,7 @@ list($options, $unrecognized) = cli_get_params(
'add-core-features-to-theme' => false,
'axe' => true,
'scss-deprecations' => false,
'no-icon-deprecations' => false,
),
array(
'h' => 'help',
@@ -74,14 +75,15 @@ Usage:
php util_single_run.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--help]
Options:
--install Installs the test environment for acceptance tests
--drop Drops the database tables and the dataroot contents
--enable Enables test environment and updates tests list
--disable Disables test environment
--diag Get behat test environment status code
--updatesteps Update feature step file.
--no-axe Disable axe accessibility tests.
--scss-deprecations Enable SCSS deprecation checks.
--install Installs the test environment for acceptance tests
--drop Drops the database tables and the dataroot contents
--enable Enables test environment and updates tests list
--disable Disables test environment
--diag Get behat test environment status code
--updatesteps Update feature step file.
--no-axe Disable axe accessibility tests.
--scss-deprecations Enable SCSS deprecation checks.
--no-icon-deprecations Disable icon deprecation checks.
-o, --optimize-runs Split features with specified tags in all parallel runs.
-a, --add-core-features-to-theme Add all core features to specified theme's
@@ -194,6 +196,9 @@ if ($options['install']) {
// Define whether to run Behat with SCSS deprecation checks.
behat_config_manager::set_behat_run_config_value('scss-deprecations', $options['scss-deprecations']);
// Define whether to run Behat with icon deprecation checks.
behat_config_manager::set_behat_run_config_value('no-icon-deprecations', $options['no-icon-deprecations']);
// Enable test mode.
$timestart = microtime(true);
mtrace('Creating Behat configuration ...', '');
+36
View File
@@ -1049,6 +1049,39 @@ EOF;
}
}
/**
* Internal step definition to find deprecated icons.
*
* Part of behat_hooks class as is part of the testing framework, is auto-executed
* after each step so no features will splicitly use it.
*
* @throws Exception Unknown type, depending on what we caught in the hook or basic \Exception.
* @see Moodle\BehatExtension\Tester\MoodleStepTester
*/
public function look_for_deprecated_icons() {
if (behat_config_manager::get_behat_run_config_value('no-icon-deprecations')) {
return;
}
if (!$this->running_javascript()) {
return;
}
// Look for any DOM element with deprecated icon.
$js = <<<EOF
[...document.querySelectorAll('.icon.deprecated')].some(
deprecatedicon => true
);
EOF;
if ($this->evaluate_script($js)) {
throw new \Exception(html_entity_decode(
"Deprecated icon in use. Enable \$CFG->debugdisplay for detailed debugging information in the console",
ENT_COMPAT,
));
}
}
/**
* Converts HTML tags to line breaks to display the info in CLI
*
@@ -1090,6 +1123,9 @@ EOF;
// Look for deprecated styles.
$this->look_for_deprecated_styles();
// Look for deprecated icons.
$this->look_for_deprecated_icons();
}
/**
+2
View File
@@ -519,11 +519,13 @@ class behat_util extends testing_util {
$accessibility = empty(behat_config_manager::get_behat_run_config_value('axe')) ? 'No' : 'Yes';
$scssdeprecations = empty(behat_config_manager::get_behat_run_config_value('scss-deprecations')) ? 'No' : 'Yes';
$icondeprecations = empty(behat_config_manager::get_behat_run_config_value('no-icon-deprecations')) ? 'Yes' : 'No';
$siteinfo .= <<<EOF
Run optional tests:
- Accessibility: {$accessibility}
- SCSS deprecations: {$scssdeprecations}
- Icon deprecations: {$icondeprecations}
EOF;