|
17 | 17 | <link rel="stylesheet" href="third_party/normalize.min.css" /> |
18 | 18 | <script src="third_party/jquery/jquery-3.3.1.min.js"></script> |
19 | 19 | <style> |
| 20 | + :root { |
| 21 | + color-scheme: light dark; |
| 22 | + |
| 23 | + --fg-color: #000; |
| 24 | + --bg-color: #fff; |
| 25 | + --border-color: #888; |
| 26 | + |
| 27 | + --results-fg-color: gray; |
| 28 | + --node-description-fg-color: #gray; |
| 29 | + --node-hover-bg-color: rgba(0, 0, 0, 0.1); |
| 30 | + |
| 31 | + --testcaselogbtn-bg-color: #eee; |
| 32 | + --subtree-border-color: #ddd; |
| 33 | + --subtree-hover-left-border-color: #000; |
| 34 | + --multicase-border-color: #55f; |
| 35 | + --testcase-border-color: #bbf; |
| 36 | + --testcase-bg-color: #bbb; |
| 37 | + |
| 38 | + --testcase-data-status-fail-bg-color: #fdd; |
| 39 | + --testcase-data-status-warn-bg-color: #ffb; |
| 40 | + --testcase-data-status-pass-bg-color: #cfc; |
| 41 | + --testcase-data-status-skip-bg-color: #eee; |
| 42 | + |
| 43 | + --testcase-logs-bg-color: #white; |
| 44 | + --testcase-log-odd-bg-color: #fff; |
| 45 | + --testcase-log-even-bg-color: #f8f8f8; |
| 46 | + --testcase-log-text-fg-color: #666; |
| 47 | + --testcase-log-text-first-line-fg-color: #000; |
| 48 | + --button-image-filter: none; |
| 49 | + } |
| 50 | + @media (prefers-color-scheme: dark) { |
| 51 | + :root { |
| 52 | + --fg-color: #fff; |
| 53 | + --bg-color: #000; |
| 54 | + --border-color: #888; |
| 55 | + |
| 56 | + --results-fg-color: #aaa; |
| 57 | + --node-description-fg-color: #aaa; |
| 58 | + --node-hover-bg-color: rgba(255, 255, 255, 0.1); |
| 59 | + |
| 60 | + --testcaselogbtn-bg-color: #666; |
| 61 | + --subtree-border-color: #444; |
| 62 | + --subtree-hover-left-border-color: #FFF; |
| 63 | + --multicase-border-color: #338; |
| 64 | + --testcase-border-color: #55a; |
| 65 | + --testcase-bg-color: #888; |
| 66 | + |
| 67 | + --testcase-data-status-fail-bg-color: #400; |
| 68 | + --testcase-data-status-warn-bg-color: #660; |
| 69 | + --testcase-data-status-pass-bg-color: #040; |
| 70 | + --testcase-data-status-skip-bg-color: #444; |
| 71 | + |
| 72 | + --testcase-logs-bg-color: #black; |
| 73 | + --testcase-log-odd-bg-color: #000; |
| 74 | + --testcase-log-even-bg-color: #080808; |
| 75 | + --testcase-log-text-fg-color: #aaa; |
| 76 | + --testcase-log-text-first-line-fg-color: #fff; |
| 77 | + --button-image-filter: invert(100%); |
| 78 | + } |
| 79 | + } |
20 | 80 | body { |
21 | 81 | font-family: monospace; |
22 | 82 | min-width: 400px; |
|
31 | 91 | height: 1.2em; |
32 | 92 | vertical-align: middle; |
33 | 93 | } |
| 94 | + input[type=button], |
| 95 | + button { |
| 96 | + cursor: pointer; |
| 97 | + } |
34 | 98 | .logo { |
35 | 99 | height: 1.2em; |
36 | 100 | float: left; |
|
45 | 109 | } |
46 | 110 |
|
47 | 111 | #resultsVis { |
48 | | - border-right: 1px solid gray; |
| 112 | + border-right: 1px solid var(--results-fg-color); |
49 | 113 | } |
50 | 114 |
|
51 | 115 | /* tree nodes */ |
|
56 | 120 | padding: 0px 2px 0px 1px; |
57 | 121 | } |
58 | 122 | .nodeheader:hover { |
59 | | - background: rgba(0, 0, 0, 0.1); |
| 123 | + background: var(--node-hover-bg-color); |
60 | 124 | } |
61 | 125 | .subtreerun, |
62 | 126 | .leafrun, |
63 | 127 | .nodelink, |
64 | 128 | .collapsebtn, |
65 | 129 | .testcaselogbtn { |
66 | | - display: inline-block; |
| 130 | + display: inline-flex; |
67 | 131 | flex-shrink: 0; |
68 | 132 | flex-grow: 0; |
| 133 | + justify-content: center; |
| 134 | + align-items: center; |
| 135 | + text-decoration: none; |
69 | 136 | vertical-align: top; |
70 | | - background-color: #eee; |
| 137 | + color: var(--fg-color); |
| 138 | + background-color: var(--testcaselogbtn-bg-color); |
71 | 139 | background-repeat: no-repeat; |
72 | 140 | background-position: center; |
73 | | - border: 1px solid #888; |
| 141 | + border: 1px solid var(--border-color); |
| 142 | + } |
| 143 | + .subtreerun::before, |
| 144 | + .leafrun::before, |
| 145 | + .nodelink::before, |
| 146 | + .collapsebtn::before, |
| 147 | + .testcaselogbtn::before { |
| 148 | + content: ""; |
| 149 | + width: 100%; |
| 150 | + height: 100%; |
| 151 | + background-repeat: no-repeat; |
| 152 | + background-position: center; |
| 153 | + filter: var(--button-image-filter); |
74 | 154 | } |
75 | 155 | @media (pointer: fine) { |
76 | 156 | .subtreerun, |
|
96 | 176 | height: 36px; |
97 | 177 | } |
98 | 178 | } |
99 | | - .subtreerun { |
| 179 | + .subtreerun::before { |
100 | 180 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAB5JREFUCNdjOMDAsIGBoYeBoZmBoaEBRPaARQ4wAABTfwX/l/WQvgAAAABJRU5ErkJggg==); |
101 | 181 | } |
102 | | - .leafrun { |
| 182 | + .leafrun::before { |
103 | 183 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAANklEQVQoU2NkYGD4zwABjFAagwJJwBTBJDEUY1OEoRifIrhiYhSBHYvuJnSHM5LtJry+wxlOAGPTCQmAB/WwAAAAAElFTkSuQmCC); |
104 | 184 | } |
105 | | - .nodelink { |
| 185 | + .nodelink::before { |
106 | 186 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAACRJREFUCNdjYGBg+P+BoUGAYesFhj4BhvsFDPYNDHwMCMTAAACqJwbp3VgbrAAAAABJRU5ErkJggg==); |
107 | 187 | } |
108 | 188 | .nodetitle { |
|
123 | 203 | } |
124 | 204 | .nodedescription { |
125 | 205 | margin: 0 0 0 1em; |
126 | | - color: gray; |
| 206 | + color: var(--node-description-fg-color); |
127 | 207 | white-space: pre-wrap; |
128 | 208 | font-size: 80%; |
129 | 209 | } |
|
135 | 215 | padding: 3px 0 0 3px; |
136 | 216 | border-width: 1px 0 0; |
137 | 217 | border-style: solid; |
138 | | - border-color: #ddd; |
| 218 | + border-color: var(--subtree-border-color); |
139 | 219 | } |
140 | 220 | .subtree::before { |
141 | 221 | float: right; |
142 | 222 | margin-right: 3px; |
143 | 223 | } |
144 | 224 | .subtree[data-status='fail'], .subtree[data-status='passfail'] { |
145 | | - background: linear-gradient(90deg, #fdd, #fdd 16px, #fff 16px); |
| 225 | + background: linear-gradient(90deg, var(--testcase-data-status-fail-bg-color), var(--testcase-data-status-fail-bg-color) 16px, var(--bg-color) 16px); |
146 | 226 | } |
147 | 227 | .subtree[data-status='fail']::before { |
148 | 228 | content: "⛔" |
149 | 229 | } |
150 | 230 | .subtree[data-status='pass'] { |
151 | | - background: linear-gradient(90deg, #cfc, #cfc 16px, #fff 16px); |
| 231 | + background: linear-gradient(90deg, var(--testcase-data-status-pass-bg-color), var(--testcase-data-status-pass-bg-color) 16px, var(--bg-color) 16px); |
152 | 232 | } |
153 | 233 | .subtree[data-status='pass']::before { |
154 | 234 | content: "✔" |
|
157 | 237 | content: "✔/⛔" |
158 | 238 | } |
159 | 239 | .subtree:hover { |
160 | | - border-left-color: #000; |
| 240 | + border-left-color: var(--subtree-hover-left-border-color); |
161 | 241 | } |
162 | 242 | .subtree.multifile > .subtreechildren > .subtree.multitest, |
163 | 243 | .subtree.multifile > .subtreechildren > .subtree.multicase { |
164 | 244 | border-width: 2px 0 0 1px; |
165 | | - border-color: #55f; |
| 245 | + border-color: var(--multicase-border-color); |
166 | 246 | } |
167 | 247 | .subtree.multitest > .subtreechildren > .subtree.multicase, |
168 | 248 | .subtree.multitest > .subtreechildren > .testcase { |
169 | 249 | border-width: 2px 0 0 1px; |
170 | | - border-color: #bbf; |
| 250 | + border-color: var(--testcase-border-color); |
171 | 251 | } |
172 | 252 | .subtreechildren { |
173 | 253 | margin-left: 9px; |
|
179 | 259 | padding: 3px; |
180 | 260 | border-width: 1px 0 0 0; |
181 | 261 | border-style: solid; |
182 | | - border-color: gray; |
183 | | - background: #bbb; |
| 262 | + border-color: var(--border-color); |
| 263 | + background: var(--testcase-bg-color); |
184 | 264 | } |
185 | 265 | .testcase:first-child { |
186 | 266 | margin-top: 3px; |
|
190 | 270 | margin-top: -1.1em; |
191 | 271 | } |
192 | 272 | .testcase[data-status='fail'] { |
193 | | - background: #fdd; |
| 273 | + background: var(--testcase-data-status-fail-bg-color); |
194 | 274 | } |
195 | 275 | .testcase[data-status='fail']::after { |
196 | 276 | content: "⛔" |
197 | 277 | } |
198 | 278 | .testcase[data-status='warn'] { |
199 | | - background: #ffb; |
| 279 | + background: var(--testcase-data-status-warn-bg-color); |
200 | 280 | } |
201 | 281 | .testcase[data-status='warn']::after { |
202 | 282 | content: "⚠" |
203 | 283 | } |
204 | 284 | .testcase[data-status='pass'] { |
205 | | - background: #cfc; |
| 285 | + background: var(--testcase-data-status-pass-bg-color); |
206 | 286 | } |
207 | 287 | .testcase[data-status='pass']::after { |
208 | 288 | content: "✔" |
209 | 289 | } |
210 | 290 | .testcase[data-status='skip'] { |
211 | | - background: #eee; |
| 291 | + background: var(--testcase-data-status-skip-bg-color); |
212 | 292 | } |
213 | 293 | .testcase .nodequery { |
214 | 294 | font-weight: normal; |
|
224 | 304 | width: calc(100% - 6px); |
225 | 305 | border-width: 0 0px 0 1px; |
226 | 306 | border-style: solid; |
227 | | - border-color: gray; |
228 | | - background: white; |
| 307 | + border-color: var(--border-color); |
| 308 | + background: var(--testcase-logs-bg-color); |
229 | 309 | } |
230 | 310 | .testcaselog { |
231 | 311 | display: flex; |
232 | 312 | } |
233 | 313 | .testcaselog:nth-child(odd) { |
234 | | - background: #fff; |
| 314 | + background: var(--testcase-log-odd-bg-color); |
235 | 315 | } |
236 | 316 | .testcaselog:nth-child(even) { |
237 | | - background: #f8f8f8; |
| 317 | + background: var(--testcase-log-even-bg-color); |
238 | 318 | } |
239 | | - .testcaselogbtn { |
240 | | - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAACRJREFUCNdjYGBg+H+AwUGBwV+BQUGAQX0CiNQQYFABk8ogLgBsYQUt2gNKPwAAAABJRU5ErkJggg==); |
| 319 | + .testcaselogbtn::before { |
| 320 | + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAACRJREFUCNdjYGBg+H+AwUGBwV+BQUGAQX0CiNQQYFABk8ogLgBsYQUt2gNKPwAAAABJRU5ErkJggg==); |
241 | 321 | } |
242 | 322 | .testcaselogtext { |
243 | 323 | flex: 1 0; |
244 | 324 | font-size: 10pt; |
245 | 325 | white-space: pre-wrap; |
246 | 326 | word-break: break-word; |
247 | 327 | margin: 0; |
248 | | - color: #666; |
| 328 | + color: var(--testcase-log-text-fg-color) |
249 | 329 | } |
250 | 330 | .testcaselogtext::first-line { |
251 | | - color: #000; |
| 331 | + color: var(--testcase-log-text-first-line-fg-color); |
252 | 332 | } |
253 | 333 |
|
254 | 334 | @media only screen and (max-width: 600px) { |
|
0 commit comments