| import './index'; |
| |
| import { $, $$ } from 'common-sk/modules/dom'; |
| import fetchMock from 'fetch-mock'; |
| |
| import { |
| eventPromise, |
| setQueryString, |
| expectQueryStringToEqual, |
| setUpElementUnderTest, |
| } from '../../../infra-sk/modules/test_util'; |
| import { clusterDiffJSON } from './test_data'; |
| import { testOnlySetSettings } from '../settings'; |
| |
| describe('cluster-page-sk', () => { |
| const newInstance = setUpElementUnderTest('cluster-page-sk'); |
| |
| // Instantiate page; wait for RPCs to complete and for the page to render. |
| const loadClusterPageSk = async () => { |
| const endTask = eventPromise('end-task'); |
| const instance = newInstance(); |
| await endTask; |
| return instance; |
| }; |
| |
| beforeEach(async () => { |
| testOnlySetSettings({ |
| defaultCorpus: 'infra', |
| }); |
| // Clear out any query params we might have to not mess with our current state. |
| // This page always requires a grouping to be set. |
| setQueryString('?grouping=some-test'); |
| |
| // These are the default RPC calls when the page loads. |
| fetchMock.get('/json/v1/clusterdiff?head=true' |
| + '&include=false&neg=false&pos=false&query=name%3Dsome-test' |
| + '&source_type=infra&unt=false', clusterDiffJSON); |
| fetchMock.get('/json/v1/paramset', clusterDiffJSON.paramsetsUnion); |
| }); |
| |
| afterEach(() => { |
| // Completely remove the mocking which allows each test |
| // to be able to mess with the mocked routes w/o impacting other tests. |
| fetchMock.reset(); |
| }); |
| |
| describe('RPC calls', () => { |
| let clusterPageSk; |
| beforeEach(async () => { |
| clusterPageSk = await loadClusterPageSk(); |
| // Wait for initial page load to finish. |
| await fetchMock.flush(true); |
| }); |
| |
| afterEach(async () => { |
| // Make sure all subsequent RPC calls happen. |
| await fetchMock.flush(true); |
| }); |
| |
| it('removes corpus and test name from the paramset', () => { |
| expect(clusterPageSk._paramset).to.deep.equal({ |
| ext: ['png'], |
| gpu: ['AMD', 'nVidia'], |
| }); |
| expect(clusterPageSk._grouping).to.equal('some-test'); |
| }); |
| |
| it('changes what it fetches based on search controls', () => { |
| fetchMock.get('/json/v1/clusterdiff?head=false&include=true&neg=true&pos=true&' |
| + 'query=gpu%3DAMD%26name%3Dsome-test&source_type=some-other-corpus&unt=true', |
| clusterDiffJSON); |
| |
| // TODO(kjlubick, lovisolo) use the search-controls-sk PO when that lands. |
| clusterPageSk._searchControlsChanged(new CustomEvent('search-controls-sk-change', { |
| detail: { |
| corpus: 'some-other-corpus', |
| leftHandTraceFilter: { gpu: ['AMD'] }, |
| includePositiveDigests: true, |
| includeNegativeDigests: true, |
| includeUntriagedDigests: true, |
| includeDigestsNotAtHead: true, |
| includeIgnoredDigests: true, |
| }, |
| })); |
| |
| expectQueryStringToEqual( |
| '?corpus=some-other-corpus&grouping=some-test&include_ignored=true' |
| + '&left_filter=gpu%3DAMD&negative=true¬_at_head=true&positive=true&untriaged=true', |
| ); |
| }); |
| |
| it('makes an RPC for details when the selection is changed to one digest', () => { |
| fetchMock.get('/json/v1/details?corpus=infra' |
| + '&digest=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&test=some-test', { |
| 'these-details': 'do not matter for this test', |
| }); |
| |
| // In headless tests, the svg doesn't seem to be rendered, so we can't easily click or |
| // trigger organic selection-changed events. Thus, we trigger them artificially. |
| clusterPageSk._selectionChanged(new CustomEvent('selection-changed', { |
| detail: ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'], // valid, arbitrary digest |
| })); |
| }); |
| |
| it('makes an RPC for a diff when the selection is changed to two digests', () => { |
| fetchMock.get('/json/v1/diff?corpus=infra' |
| + '&left=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' |
| + '&right=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&test=some-test', { |
| 'these-details': 'do not matter for this test', |
| }); |
| |
| // In headless tests, the svg doesn't seem to be rendered, so we can't easily click or |
| // trigger organic selection-changed events. Thus, we trigger them artificially. |
| clusterPageSk._selectionChanged(new CustomEvent('selection-changed', { |
| detail: ['bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'], |
| })); |
| }); |
| }); |
| }); |