blob: d1dc3ba18947b05e1b7ffab1895aea91e11929cc [file] [log] [blame] [edit]
import './index';
import { expect } from 'chai';
import fetchMock from 'fetch-mock';
import { $$ } from '../../../infra-sk/modules/dom';
import { StatusSk } from './status-sk';
import { eventPromise, setUpElementUnderTest } from '../../../infra-sk/modules/test_util';
import { AlertsStatus } from '../../../perf/modules/json/index';
import { incrementalResponse0, SetupMocks } from '../rpc-mock';
import { SetTestSettings } from '../settings';
import { StatusResponse } from '../../../golden/modules/rpc_types';
import { GetClientCountsResponse, StatusData } from '../../../bugs-central/modules/json';
import {
treeStatusResp,
generalRoleResp,
gpuRoleResp,
androidRoleResp,
infraRoleResp,
} from '../tree-status-sk/test_data';
describe('status-sk', () => {
const newInstance = setUpElementUnderTest<StatusSk>('status-sk');
let element: StatusSk;
beforeEach(async () => {
SetTestSettings({
swarmingUrl: 'example.com/swarming',
treeStatusBaseUrl: 'https://example.com/treestatus',
logsUrlTemplate:
'https://ci.chromium.org/raw/build/logs.chromium.org/skia/TASKID/+/annotations',
taskSchedulerUrl: 'example.com/ts',
defaultRepo: 'skia',
repos: new Map([
['skia', 'https://skia.googlesource.com/skia/+show/'],
['infra', 'https://skia.googlesource.com/buildbot/+show/'],
['skcms', 'https://skia.googlesource.com/skcms/+show/'],
]),
});
fetchMock.getOnce('path:/loginstatus/', {});
fetchMock.getOnce('https://perf.skia.org/_/alerts/', <AlertsStatus>{
alerts: 5,
});
fetchMock.get('https://gold.skia.org/json/v2/trstatus', <StatusResponse>{
corpStatus: [
{ name: 'canvaskit', untriagedCount: 0 },
{ name: 'colorImage', untriagedCount: 0 },
{ name: 'gm', untriagedCount: 13 },
{ name: 'image', untriagedCount: 0 },
{ name: 'pathkit', untriagedCount: 0 },
{ name: 'skp', untriagedCount: 0 },
{ name: 'svg', untriagedCount: 27 },
],
});
fetchMock.getOnce('https://skia-infra-gold.skia.org/json/v2/trstatus', <StatusResponse>{
corpStatus: [{ name: 'infra', untriagedCount: 23 }],
});
fetchMock.getOnce('https://bugs-central.skia.org/get_client_counts', <GetClientCountsResponse>{
clients_to_status_data: {
Android: <StatusData>{
untriaged_count: 10,
link: 'www.test-link.com/test1',
},
Chromium: <StatusData>{
untriaged_count: 23,
link: 'www.test-link.com/test2',
},
Skia: <StatusData>{
untriaged_count: 104,
link: 'www.test-link.com/test3',
},
},
});
fetchMock.get('https://example.com/treestatus/skia/current', treeStatusResp);
fetchMock.get('https://example.com/treestatus/buildbot/current', treeStatusResp);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-gardener',
generalRoleResp
);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-gpu-gardener',
gpuRoleResp
);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-android-gardener',
androidRoleResp
);
fetchMock.get(
'https://chrome-ops-rotation-proxy.appspot.com/current/grotation:skia-infra-gardener',
infraRoleResp
);
Date.now = () => 1600883976659;
SetupMocks().expectGetIncrementalCommits(incrementalResponse0);
const ep = eventPromise('end-task');
element = newInstance();
await ep;
});
it('reacts to repo-changed', async () => {
expect($$('h1', element)).to.have.property('innerText', 'Status: Skia');
const repoSelector = $$('#repoSelector', element) as HTMLSelectElement;
repoSelector.value = 'infra';
const ep = eventPromise('end-task');
repoSelector.dispatchEvent(new Event('change', { bubbles: true }));
await ep;
expect($$('h1', element)).to.have.property('innerText', 'Status: Infra');
});
});