MDL-67687 behat: Make axe tests optional
authorAndrew Nicols <andrew@nicols.co.uk>
Thu, 16 Jul 2020 04:09:27 +0000 (12:09 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Tue, 4 Aug 2020 10:56:57 +0000 (18:56 +0800)
admin/tool/behat/cli/init.php
admin/tool/behat/cli/util.php
admin/tool/behat/cli/util_single_run.php
lib/behat/classes/util.php
lib/tests/behat/behat_accessibility.php

index a5b6616..91a5d86 100644 (file)
@@ -49,6 +49,7 @@ list($options, $unrecognized) = cli_get_params(
         'torun'    => 0,
         'optimize-runs' => '',
         'add-core-features-to-theme' => false,
+        'axe'      => false,
     ),
     array(
         'j' => 'parallel',
@@ -71,6 +72,7 @@ Options:
 -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)
+--axe            Include axe accessibility tests
 
 -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
@@ -102,7 +104,10 @@ if ($options['parallel'] && $options['parallel'] > 1) {
     }
 } else {
     // Only sanitize options for single run.
-    $cmdoptionsforsinglerun = array('add-core-features-to-theme');
+    $cmdoptionsforsinglerun = [
+        'add-core-features-to-theme',
+        'axe',
+    ];
 
     foreach ($cmdoptionsforsinglerun as $option) {
         if (!empty($options[$option])) {
index 83a19af..e5f5ade 100644 (file)
@@ -54,6 +54,7 @@ list($options, $unrecognized) = cli_get_params(
         'torun'       => 0,
         'optimize-runs' => '',
         'add-core-features-to-theme' => false,
+        'axe'         => false,
     ),
     array(
         'h' => 'help',
@@ -69,7 +70,7 @@ $help = "
 Behat utilities to manage the test environment
 
 Usage:
-  php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--help] [--parallel=value [--maxruns=value]]
+  php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--axe|--help] [--parallel=value [--maxruns=value]]
 
 Options:
 --install      Installs the test environment for acceptance tests
@@ -78,6 +79,7 @@ Options:
 --disable      Disables test environment
 --diag         Get behat test environment status code
 --updatesteps  Update feature step file.
+--axe          Include axe accessibility tests
 
 -j, --parallel Number of parallel behat run operation
 -m, --maxruns Max parallel processes to be executed at one time.
index f0a3650..42b335c 100644 (file)
@@ -49,6 +49,7 @@ list($options, $unrecognized) = cli_get_params(
         'updatesteps' => false,
         'optimize-runs' => '',
         'add-core-features-to-theme' => false,
+        'axe'         => false,
     ),
     array(
         'h' => 'help',
@@ -75,6 +76,7 @@ Options:
 --disable        Disables test environment
 --diag           Get behat test environment status code
 --updatesteps    Update feature step file.
+--axe            Include axe accessibility tests
 
 -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
@@ -181,6 +183,9 @@ if ($options['install']) {
         behat_config_manager::set_behat_run_config_value('behatsiteenabled', 1);
     }
 
+    // Define whether to run Behat with axe tests.
+    behat_config_manager::set_behat_run_config_value('axe', $options['axe']);
+
     // Enable test mode.
     behat_util::start_test_mode($options['add-core-features-to-theme'], $options['optimize-runs'], $parallel, $run);
 
index b24ea48..aff5dcf 100644 (file)
@@ -491,4 +491,23 @@ class behat_util extends testing_util {
         $linecount = count(explode("\n", $formattedmessage));
         fwrite(STDOUT, str_repeat(cli_ansi_format("<cursor:down>"), $linecount - 1));
     }
+
+    /**
+     * Gets a text-based site version description.
+     *
+     * @return string The site info
+     */
+    public static function get_site_info() {
+        $siteinfo = parent::get_site_info();
+
+        $accessibility = empty(behat_config_manager::get_behat_run_config_value('axe')) ? 'No' : 'Yes';
+
+        $siteinfo .= <<<EOF
+Run optional tests:
+- Accessibility: {$accessibility}
+
+EOF;
+
+        return $siteinfo;
+    }
 }
index 32ff5fa..7aa8d42 100644 (file)
@@ -72,6 +72,10 @@ class behat_accessibility extends behat_base {
      * @param   array $extratags The list of tags, in addition to the standard tags, to run
      */
     protected function run_axe_for_tags(array $standardtags = [], array $extratags = []): void {
+        if (!behat_config_manager::get_behat_run_config_value('axe')) {
+            return;
+        }
+
         if (!$this->has_tag('accessibility')) {
             throw new DriverException(
                 'Accessibility tests using Axe must have the @accessibility tag on either the scenario or feature.'