From b79a9917c1f226606815d8f1ecbbe9209eec1eee Mon Sep 17 00:00:00 2001 From: Max Larkin Date: Fri, 16 Aug 2024 16:17:10 +0100 Subject: [PATCH] MDL-82812 tool_brickfield: Ignore fa icons --- .../common/checks/i_is_not_used.php | 18 ++++++++++++++++-- .../common/checks/i_is_not_used_test.php | 13 +++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/admin/tool/brickfield/classes/local/htmlchecker/common/checks/i_is_not_used.php b/admin/tool/brickfield/classes/local/htmlchecker/common/checks/i_is_not_used.php index a9a7799b32a06..9277fcc99d64d 100644 --- a/admin/tool/brickfield/classes/local/htmlchecker/common/checks/i_is_not_used.php +++ b/admin/tool/brickfield/classes/local/htmlchecker/common/checks/i_is_not_used.php @@ -16,7 +16,7 @@ namespace tool_brickfield\local\htmlchecker\common\checks; -use tool_brickfield\local\htmlchecker\common\brickfield_accessibility_tag_test; +use tool_brickfield\local\htmlchecker\common\brickfield_accessibility_test; /** * Brickfield accessibility HTML checker library. @@ -28,11 +28,25 @@ * @copyright 2020 onward: Brickfield Education Labs, www.brickfield.ie * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class i_is_not_used extends brickfield_accessibility_tag_test { +class i_is_not_used extends brickfield_accessibility_test { /** @var int The default severity code for this test. */ public $defaultseverity = \tool_brickfield\local\htmlchecker\brickfield_accessibility::BA_TEST_SEVERE; /** @var string The tag this test will fire on. */ public $tag = 'i'; + + /** + * Check for any i elements and flag them as errors + * while allowing font awesome icons to be used. + */ + public function check(): void { + foreach ($this->get_all_elements('i') as $element) { + // Ensure this is not a font awesome icon with aria-hidden. + if (strpos($element->getAttribute('class'), 'fa-') !== false && $element->getAttribute('aria-hidden') == 'true') { + continue; + } + $this->add_report($element); + } + } } diff --git a/admin/tool/brickfield/tests/local/htmlchecker/common/checks/i_is_not_used_test.php b/admin/tool/brickfield/tests/local/htmlchecker/common/checks/i_is_not_used_test.php index 29bea3ea8be22..2dc1a01d74f21 100644 --- a/admin/tool/brickfield/tests/local/htmlchecker/common/checks/i_is_not_used_test.php +++ b/admin/tool/brickfield/tests/local/htmlchecker/common/checks/i_is_not_used_test.php @@ -30,6 +30,8 @@ /** * Class i_is_not_used_testcase + * + * @coversDefaultClass \tool_brickfield\local\htmlchecker\common\checks\i_is_not_used */ class i_is_not_used_test extends all_checks { /** @var string Check type */ @@ -71,4 +73,15 @@ public function test_check() { $results = $this->get_checker_results($this->htmlpass); $this->assertEmpty($results); } + + /** + * Test for font awesome icon + * + * @covers ::check + */ + public function test_fa_icon(): void { + $html = '
Hello there
'; + $results = $this->get_checker_results($html); + $this->assertCount(2, $results); + } }