github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/webapp/components/test/wpt-metadata.html (about) 1 <!doctype html> 2 <html> 3 4 <head> 5 <meta charset="utf-8"> 6 <script src="../../node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script> 7 <script src="../../node_modules/wct-browser-legacy/browser.js"></script> 8 </head> 9 10 <body> 11 <test-fixture id="wpt-metadata-fixture"> 12 <template> 13 <wpt-metadata></wpt-metadata> 14 </template> 15 </test-fixture> 16 17 <script type="module"> 18 19 import '../wpt-metadata.js'; 20 suite('<wpt-metadata>', () => { 21 let appFixture = null; 22 setup(() => { 23 appFixture = fixture('wpt-metadata-fixture'); 24 }); 25 suite('compute display metadata', () => { 26 test('null case', () => { 27 appFixture.path = null; 28 appFixture.pendingMetadata = {}; 29 appFixture.mergedMetadata = {}; 30 assert.equal(appFixture.displayedMetadata, undefined); 31 }); 32 test('simple case', () => { 33 appFixture.searchResults = [{ test: '/foo.html' }]; 34 appFixture.pendingMetadata = {}; 35 appFixture.mergedMetadata = { 36 '/foo.html': [ 37 { 38 url: 'bug1', 39 product: 'chrome' 40 } 41 ] 42 }; 43 appFixture.path = '/'; 44 assert.equal(appFixture.displayedMetadata.length, 1); 45 assert.equal(appFixture.displayedMetadata[0].test, '/foo.html'); 46 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 47 assert.equal(appFixture.displayedMetadata[0].product, 'chrome'); 48 }); 49 test('simple case for labels', () => { 50 appFixture.searchResults = [{ test: '/foo.html' }]; 51 appFixture.pendingMetadata = {}; 52 appFixture.mergedMetadata = { 53 '/foo.html': [ 54 { 55 product: '', 56 url: '', 57 label: 'label1' 58 } 59 ] 60 }; 61 appFixture.path = '/'; 62 63 assert.deepEqual(appFixture.displayedMetadata, []); 64 assert.deepEqual(appFixture.labelMap, { '/foo.html': 'label1' }); 65 }); 66 test('simple case with different pending metadata tests', () => { 67 appFixture.searchResults = [{ test: '/foo.html' }]; 68 appFixture.pendingMetadata = { 69 '/bar.html': [ 70 { 71 url: 'bug2', 72 product: 'safari' 73 } 74 ] 75 }; 76 appFixture.mergedMetadata = { 77 '/foo.html': [ 78 { 79 url: 'bug1', 80 product: 'chrome' 81 } 82 ] 83 }; 84 appFixture.path = '/'; 85 assert.equal(appFixture.displayedMetadata.length, 1); 86 assert.equal(appFixture.displayedMetadata[0].test, '/foo.html'); 87 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 88 assert.equal(appFixture.displayedMetadata[0].product, 'chrome'); 89 }); 90 test('simple case with same pending metadata tests', () => { 91 appFixture.searchResults = [{ test: '/foo.html' }]; 92 appFixture.pendingMetadata = { 93 '/foo.html': [ 94 { 95 url: 'bug2', 96 product: 'chrome' 97 }, 98 { 99 url: 'bug3', 100 product: 'chrome' 101 } 102 ] 103 }; 104 appFixture.mergedMetadata = { 105 '/foo.html': [ 106 { 107 url: 'bug1', 108 product: 'chrome' 109 } 110 ] 111 }; 112 appFixture.path = '/'; 113 assert.equal(appFixture.displayedMetadata.length, 3); 114 assert.equal(appFixture.displayedMetadata[0].test, '/foo.html'); 115 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 116 assert.equal(appFixture.displayedMetadata[0].product, 'chrome'); 117 assert.equal(appFixture.displayedMetadata[1].test, '/foo.html'); 118 assert.equal(appFixture.displayedMetadata[1].url, 'https://bug2'); 119 assert.equal(appFixture.displayedMetadata[1].product, 'chrome'); 120 assert.equal(appFixture.displayedMetadata[2].test, '/foo.html'); 121 assert.equal(appFixture.displayedMetadata[2].url, 'https://bug3'); 122 assert.equal(appFixture.displayedMetadata[2].product, 'chrome'); 123 }); 124 test('simple case with subfolders', () => { 125 appFixture.searchResults = [{ test: '/abc.html' }, { test: '/ab/foo.html' }]; 126 appFixture.pendingMetadata = {}; 127 appFixture.mergedMetadata = { 128 '/ab/foo.html': [ 129 { 130 url: 'bug1', 131 product: 'chrome' 132 } 133 ], 134 '/abc.html': [ 135 { 136 url: 'bug2', 137 product: 'chrome' 138 } 139 ] 140 }; 141 appFixture.path = '/ab'; 142 assert.equal(appFixture.displayedMetadata.length, 1); 143 assert.equal(appFixture.displayedMetadata[0].test, '/ab/foo.html'); 144 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 145 assert.equal(appFixture.displayedMetadata[0].product, 'chrome'); 146 }); 147 test('simple case with same URLs', () => { 148 appFixture.searchResults = [{ test: '/foo.html' }]; 149 appFixture.pendingMetadata = {}; 150 appFixture.mergedMetadata = { 151 '/foo.html': [ 152 { 153 url: 'github1', 154 product: 'chrome' 155 }, 156 { 157 url: 'github1', 158 product: 'edge' 159 } 160 ] 161 }; 162 appFixture.path = '/'; 163 assert.equal(appFixture.displayedMetadata.length, 2); 164 assert.equal(appFixture.displayedMetadata[0].test, '/foo.html'); 165 assert.equal(appFixture.displayedMetadata[0].url, 'https://github1'); 166 assert.equal(appFixture.displayedMetadata[0].product, 'chrome'); 167 assert.equal(appFixture.displayedMetadata[1].test, '/foo.html'); 168 assert.equal(appFixture.displayedMetadata[1].url, 'https://github1'); 169 assert.equal(appFixture.displayedMetadata[1].product, 'edge'); 170 }); 171 test('simple case with wildcard', () => { 172 appFixture.searchResults = [{ test: '/foo/bar.html' }]; 173 appFixture.pendingMetadata = {}; 174 appFixture.mergedMetadata = { 175 '/foo/*': [ 176 { 177 url: 'bug1', 178 product: 'chrome' 179 } 180 ] 181 }; 182 appFixture.path = '/foo/bar.html'; 183 assert.equal(appFixture.displayedMetadata.length, 1); 184 assert.equal(appFixture.displayedMetadata[0].test, '/foo/*'); 185 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 186 assert.equal(appFixture.displayedMetadata[0].product, 'chrome'); 187 188 appFixture.path = '/foo'; 189 assert.equal(appFixture.displayedMetadata.length, 1); 190 assert.equal(appFixture.displayedMetadata[0].test, '/foo/*'); 191 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 192 assert.equal(appFixture.displayedMetadata[0].product, 'chrome'); 193 194 appFixture.path = '/foobar'; 195 assert.equal(appFixture.displayedMetadata.length, 0); 196 }); 197 test('wildcard without searchResults', () => { 198 appFixture.searchResults = [{ test: '/foo/bar/test1.html' }]; 199 appFixture.pendingMetadata = {}; 200 appFixture.mergedMetadata = { 201 '/foo/bar1/*': [ 202 { 203 url: 'bug1', 204 product: 'chrome' 205 } 206 ] 207 }; 208 appFixture.path = '/foo'; 209 210 assert.equal(appFixture.displayedMetadata.length, 0); 211 }); 212 test('exclude path', () => { 213 appFixture.searchResults = [{ test: '/foo/foo1.html' }, { test: '/bar/f.html' }]; 214 appFixture.pendingMetadata = {}; 215 appFixture.mergedMetadata = { 216 '/foo/foo1.html': [ 217 { 218 url: 'bug1', 219 product: 'chrome' 220 } 221 ], 222 '/bar/f.html': [ 223 { 224 url: 'bug2', 225 product: 'chrome' 226 } 227 ] 228 }; 229 appFixture.path = '/foo'; 230 assert.equal(appFixture.displayedMetadata.length, 1); 231 assert.equal(appFixture.displayedMetadata[0].test, '/foo/foo1.html'); 232 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 233 }); 234 test('complex case', () => { 235 appFixture.searchResults = [{ test: '/foo/foo1.html' }, { test: '/foo/bar.html' }, { test: '/foo/bar/foo1.html' }, { test: '/bar/foo.html' }]; 236 appFixture.pendingMetadata = {}; 237 appFixture.mergedMetadata = { 238 '/foo/foo1.html': [ 239 { 240 url: 'bug1', 241 product: 'chrome' 242 } 243 ], 244 '/foo/bar.html': [ 245 { 246 url: 'http://bug2', 247 product: 'safari' 248 }, 249 { 250 url: 'safari1', 251 product: 'safari' 252 } 253 ], 254 '/foo/bar/foo1.html': [ 255 { 256 url: 'https://bug3', 257 product: 'chrome' 258 } 259 ], 260 '/bar/foo.html': [ 261 { 262 url: 'bug4', 263 product: 'chrome' 264 } 265 ] 266 }; 267 appFixture.path = '/foo'; 268 assert.equal(appFixture.displayedMetadata.length, 4); 269 assert.equal(appFixture.displayedMetadata[0].test, '/foo/foo1.html'); 270 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 271 assert.equal(appFixture.displayedMetadata[1].test, '/foo/bar.html'); 272 assert.equal(appFixture.displayedMetadata[1].url, 'http://bug2'); 273 assert.equal(appFixture.displayedMetadata[2].test, '/foo/bar.html'); 274 assert.equal(appFixture.displayedMetadata[2].url, 'https://safari1'); 275 assert.equal(appFixture.displayedMetadata[3].test, '/foo/bar/foo1.html'); 276 assert.equal(appFixture.displayedMetadata[3].url, 'https://bug3'); 277 }); 278 test('check duplicates & empty', () => { 279 appFixture.searchResults = [{ test: '/foo.html' }, { test: '/bar.html' }]; 280 appFixture.pendingMetadata = {}; 281 appFixture.mergedMetadata = { 282 '/foo.html': [ 283 { url: 'bug1', product: 'chrome' }, 284 { url: 'bug1', product: 'chrome' }, 285 { url: 'bug1', product: 'chrome' } 286 ], 287 '/bar.html': [ 288 { url: '', product: 'chrome' }, 289 { url: 'bug2', product: 'chrome' }, 290 { url: '', product: 'chrome' } 291 ], 292 }; 293 appFixture.path = '/'; 294 assert.equal(appFixture.displayedMetadata.length, 2); 295 assert.equal(appFixture.displayedMetadata[0].test, '/foo.html'); 296 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug1'); 297 assert.equal(appFixture.displayedMetadata[1].test, '/bar.html'); 298 assert.equal(appFixture.displayedMetadata[1].url, 'https://bug2'); 299 }); 300 test('complex case with partial searchResults', () => { 301 appFixture.searchResults = [{ test: '/foo/bar/foo1.html' }]; 302 appFixture.pendingMetadata = {}; 303 appFixture.mergedMetadata = { 304 '/foo.html': [ 305 { url: 'bug1', product: 'chrome' } 306 ], 307 '/foo/bar.html': [ 308 { url: 'bug2', product: 'chrome' }, 309 { url: 'safari1', product: 'chrome' } 310 ], 311 '/foo/bar/foo1.html': [ 312 { url: 'bug3', product: 'chrome' } 313 ], 314 '/bar/foo.html': [ 315 { url: 'bug4', product: 'chrome' } 316 ] 317 }; 318 appFixture.path = '/foo'; 319 assert.equal(appFixture.displayedMetadata.length, 1); 320 assert.equal(appFixture.displayedMetadata[0].test, '/foo/bar/foo1.html'); 321 assert.equal(appFixture.displayedMetadata[0].url, 'https://bug3'); 322 }); 323 test('simple case for metadataMap', () => { 324 appFixture.searchResults = [{ test: '/foo.html' }]; 325 appFixture.pendingMetadata = {}; 326 appFixture.mergedMetadata = { 327 '/foo.html': [ 328 { 329 url: 'bug1', 330 product: 'chrome' 331 } 332 ] 333 }; 334 appFixture.path = '/'; 335 336 assert.equal(Object.keys(appFixture.metadataMap).length, 1); 337 const subtestMap = appFixture.metadataMap['/foo.htmlchrome']; 338 assert.equal(Object.keys(subtestMap).length, 1); 339 assert.equal(subtestMap['/'], 'https://bug1'); 340 }); 341 test('metadata with subtests for metadataMap', () => { 342 appFixture.searchResults = [{ test: '/foo.html' }]; 343 appFixture.pendingMetadata = {}; 344 appFixture.mergedMetadata = { 345 '/foo.html': [ 346 { 347 url: 'bug1', 348 product: 'chrome', 349 results: [{ subtest: 'a' }, { subtest: 'd' }] 350 }, 351 { 352 url: 'bug1', 353 product: 'chrome', 354 results: [{ subtest: 'c' }] 355 }, 356 { 357 url: 'bug2', 358 product: 'chrome', 359 results: [{ subtest: 'b' }] 360 } 361 ] 362 }; 363 appFixture.path = '/'; 364 365 assert.equal(Object.keys(appFixture.metadataMap).length, 1); 366 const subtestMap = appFixture.metadataMap['/foo.htmlchrome']; 367 assert.equal(Object.keys(subtestMap).length, 4); 368 assert.equal(subtestMap['a'], 'https://bug1'); 369 assert.equal(subtestMap['c'], 'https://bug1'); 370 assert.equal(subtestMap['d'], 'https://bug1'); 371 assert.equal(subtestMap['b'], 'https://bug2'); 372 }); 373 test('complex case for metadataMap', () => { 374 appFixture.searchResults = [{ test: '/foo/foo1.html' }, { test: '/foo/bar.html' }]; 375 appFixture.pendingMetadata = {}; 376 appFixture.mergedMetadata = { 377 '/foo/foo1.html': [ 378 { url: 'bug1', product: 'chrome', results: [{ subtest: 'a' }, { subtest: 'c' }] }, 379 { url: 'bug2', product: 'chrome', results: [{ subtest: 'b' }] }, 380 { url: 'bug3', product: 'chrome', results: [{ status: 'FAIL' }] }, 381 ], 382 '/foo/bar.html': [ 383 { url: 'bug1', product: 'safari', results: [{ subtest: 'a' }] } 384 ] 385 }; 386 appFixture.path = '/foo'; 387 388 assert.equal(Object.keys(appFixture.metadataMap).length, 2); 389 const fooSubtestMap = appFixture.metadataMap['/foo/foo1.htmlchrome']; 390 assert.equal(Object.keys(fooSubtestMap).length, 4); 391 assert.equal(fooSubtestMap['a'], 'https://bug1'); 392 assert.equal(fooSubtestMap['c'], 'https://bug1'); 393 assert.equal(fooSubtestMap['b'], 'https://bug2'); 394 assert.equal(fooSubtestMap['/'], 'https://bug3'); 395 const barSubtestMap = appFixture.metadataMap['/foo/bar.htmlsafari']; 396 assert.equal(barSubtestMap['a'], 'https://bug1'); 397 }); 398 }); 399 }); 400 </script> 401 </body> 402 403 </html>