Skip to content

Commit b1dabef

Browse files
authored
Preserve state labels in plugin output (#1366)
- Keep bracketed state labels as text inside plugin output (state-ball replacements) - Hide the text visually while preserving the existing state-ball styling Nice when copy&pasting plugin output to a code agent. --------- Co-authored-by: Fabian Salomon <4098510+fsalomon@users.noreply.github.com>
1 parent b7dc502 commit b1dabef

2 files changed

Lines changed: 26 additions & 17 deletions

File tree

library/Icingadb/Util/PluginOutput.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ class PluginOutput extends HtmlString
3434
protected const TEXT_REPLACEMENTS = [
3535
"\t",
3636
"\n",
37-
'<span class="state-ball ball-size-m state-ok"></span>',
38-
'<span class="state-ball ball-size-m state-warning"></span>',
39-
'<span class="state-ball ball-size-m state-critical"></span>',
40-
'<span class="state-ball ball-size-m state-unknown"></span>',
41-
'<span class="state-ball ball-size-m state-up"></span>',
42-
'<span class="state-ball ball-size-m state-down"></span>',
43-
'<span class="state-ball ball-size-m state-info"></span>',
37+
'<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span>',
38+
'<span class="state-ball ball-size-m state-warning"><i class="sr-only">[WARNING]</i></span>',
39+
'<span class="state-ball ball-size-m state-critical"><i class="sr-only">[CRITICAL]</i></span>',
40+
'<span class="state-ball ball-size-m state-unknown"><i class="sr-only">[UNKNOWN]</i></span>',
41+
'<span class="state-ball ball-size-m state-up"><i class="sr-only">[UP]</i></span>',
42+
'<span class="state-ball ball-size-m state-down"><i class="sr-only">[DOWN]</i></span>',
43+
'<span class="state-ball ball-size-m state-info"><i class="sr-only">[INFO]</i></span>',
4444
'@@@@@@'
4545
];
4646

test/php/library/Icingadb/Util/PluginOutputTest.php

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ public function testRenderTextWithStates(): void
3838
INPUT;
3939

4040
$expectedOutput = <<<'EXPECTED_OUTPUT'
41-
<span class="state-ball ball-size-m state-ok"></span> Dummy state
42-
\_ <span class="state-ball ball-size-m state-ok"></span> Fake &quot;state&quot;
43-
\_ <span class="state-ball ball-size-m state-warning"></span> Fake state again
41+
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy state
42+
\_ <span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Fake &quot;state&quot;
43+
\_ <span class="state-ball ball-size-m state-warning"><i class="sr-only">[WARNING]</i></span> Fake state again
4444
EXPECTED_OUTPUT;
4545

4646
$this->checkOutput($expectedOutput, $input);
@@ -55,7 +55,7 @@ public function testRenderTextWithStatesAndCharacterLimit(): void
5555
INPUT;
5656

5757
$expectedOutput = <<<'EXPECTED_OUTPUT'
58-
<span class="state-ball ball-size-m state-ok"></span> Dummy
58+
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy
5959
EXPECTED_OUTPUT;
6060

6161
$this->checkOutput($expectedOutput, $input, 10);
@@ -86,9 +86,9 @@ public function testRenderTextWithHtmlAndStates(): void
8686

8787
$expectedOutput = <<<'EXPECTED_OUTPUT'
8888
Hello <h3>World</h3>, this "is" a <strong>test</strong>.
89-
<span class="state-ball ball-size-m state-ok"></span> Dummy state
90-
\_ <span class="state-ball ball-size-m state-ok"></span> Fake "state"
91-
\_ <span class="state-ball ball-size-m state-warning"></span> Fake state again
89+
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy state
90+
\_ <span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Fake "state"
91+
\_ <span class="state-ball ball-size-m state-warning"><i class="sr-only">[WARNING]</i></span> Fake state again
9292
text <span> ends </span> here
9393
EXPECTED_OUTPUT;
9494

@@ -106,7 +106,7 @@ public function testRenderTextWithHtmlIncludingStatesAndSpecialChars(): void
106106

107107
$expectedOutput = <<<'EXPECTED_OUTPUT'
108108
Hello <h3>World</h3>, this "is" a <strong>test</strong>.
109-
<span class="state-ball ball-size-m state-ok"></span> Dummy state
109+
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy state
110110
special chars: !@#$%^&amp;*()_+{}|:"&lt;&gt;?`-=[]\;',&#8203;./
111111
text <span> ends </span> here
112112
EXPECTED_OUTPUT;
@@ -149,7 +149,11 @@ public function testTextStatusTags(): void
149149
$l = strtolower($s);
150150

151151
$input = sprintf('[%s] Test', $s);
152-
$expectedOutput = sprintf('<span class="state-ball ball-size-m state-%s"></span> Test', $l);
152+
$expectedOutput = sprintf(
153+
'<span class="state-ball ball-size-m state-%s"><i class="sr-only">[%s]</i></span> Test',
154+
$l,
155+
$s
156+
);
153157

154158
$this->checkOutput($expectedOutput, $input);
155159

@@ -167,7 +171,12 @@ public function testHtmlStatusTags(): void
167171
$l = strtolower($s);
168172

169173
$input = sprintf('%s [%s] Test', $dummyHtml, $s);
170-
$expectedOutput = sprintf('%s <span class="state-ball ball-size-m state-%s"></span> Test', $dummyHtml, $l);
174+
$expectedOutput = sprintf(
175+
'%s <span class="state-ball ball-size-m state-%s"><i class="sr-only">[%s]</i></span> Test',
176+
$dummyHtml,
177+
$l,
178+
$s
179+
);
171180

172181
$this->checkOutput($expectedOutput, $input);
173182

0 commit comments

Comments
 (0)