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>